说明:下面的步骤将octomap、octomap_server、octomap_ros、octomap_msgs等功能包的源码(cpp、.h等)进行了集中,使其在一个工作空间中(并与ros系统的功能包不冲突),这样就能够方便点击查看任何函数、任何变量的定义了(如,用vscode点击函数可以看到其定义并可以跳转)
目录
(3)放入octomap、octomap-msgs、octomap-ros包的头文件
1 下载备用
(1)下载octomap源码:
参考之前写的:
这里需要注意一下octomap版本问题,具体看链接
octomap(0):octomap源码编译安装与demo运行_biter0088的博客-CSDN博客
(2)下载octomap_mapping源码:
github链接为octomap_mapping:https://github.com/OctoMap/octomap_mappingoctomap_server包含在octomap_mapping里面:
官方给的版本参考如下,这里我用的是ubuntu18,对应下载kinetic-devel版本
ROS stack for mapping with OctoMap, contains the octomap_server package.
The main branch for ROS1 Kinetic, Melodic, and Noetic is kinetic-devel.####我的版本meng
The main branch for ROS2 Foxy and newer is ros2.
下载:
git clone https://github.com/OctoMap/octomap_mapping.git
(3)下载octomap的其他包
sudo apt-get install ros-melodic-octomap \
ros-melodic-octomap-msgs \
ros-melodic-octomap-ros \
ros-melodic-octomap-rviz-plugins
(4)移除系统自带的octomap_server
下面这条命令只移除octomap_server这个包,如果没有安装可以包可以不用管(保险起见还是运行一下)
sudo apt-get remove ros-melodic-octomap-server
2 搭建octomap工作空间
(1)创建工作空间
工作空间名称自拟,这个名称表明是用octomap进行建图
cd xx
mkdir -p octomap_mapping_ws/src
(2)放入octomap_mapping包
将1下载的(2)octomap_mapping 放入src中:
(3)放入octomap、octomap-msgs、octomap-ros包的头文件
在目录:/opt/ros/melodic/include下找到这三个包
可以看出这三个目录下都是.h的头文件
直接将这三个文件夹拷贝到:xxx/octomap_mapping_ws/src/octomap_mapping/octomap_server/include目录下,并改名称,这里在后面加上了_move
(4)拷贝octomap的源码
将1(1)中下载的源码(xxx/octomap/octomap/src)中的所有内容,如下:
拷贝到octomap_server源码处(/octomap_mapping_ws/src/octomap_mapping/octomap_server/src),拷贝后的效果如下
3 修改头文件名称
用vscode打开整个工作空间,进行全部替换,使用
"<octomap_move/"替换"<octomap/";
"<octomap_msgs_move/"替换"<octomap_msgs/";
"<octomap_ros_move/"替换"<octomap_ros/";
一个示例如下:
4 编译运行:
cd xxx/octomap_mapping_ws
catkin_make
roslaunch octomap_server octomap_mapping.launch
注:箭头指的地方只是传感器数据还没有进来,一般情况下不影响程序使用