繼續,由surfelmapping建立的點云生成octomap八叉樹柵格地圖
一、安裝OctomapServer 建圖包
安裝插件
sudo apt-get install ros-melodic-octomap-ros
sudo apt-get install ros-melodic-octomap-msgs
sudo apt-get install ros-melodic-octomap-server
sudo apt-get install ros-melodic-octomap-rviz-plugins
編譯OctomapServer 建圖包?
cd ~/catkin_ws/src
git clone https://github.com/OctoMap/octomap_mapping.git
cd ..
catkin_make
但是我們通過點云轉octomap需要的是pointcloud2類型,所以我們需要先把pointcloud轉換為pointcloud2,源碼地址如下:源碼
cd ~/catkin_ws/src
git clone https://github.com/1332927388/pcl2octomap.git
cd ..
catkin_make
將point_cloud_converter.launch的內容改為以下:
<launch><node pkg="point_cloud_converter" name="point_cloud_converter" type="point_cloud_converter_node" ><remap from="points_in" to="/vins_estimator/point_cloud"/><remap from="points2_out" to="/points" /></node>
</launch>
修改octomap_server/launch中的octomap_mapping.launch中的point ,將兩個文件寫在一起,修改后如下:
<launch><node pkg="point_cloud_converter" name="point_cloud_converter" type="point_cloud_converter_node" ><remap from="points_in" to="/vins_estimator/point_cloud"/><remap from="points2_out" to="/points" /></node><node pkg="octomap_server" type="octomap_server_node" name="octomap_server"><param name="resolution" value="0.05" /><!-- fixed map frame (set to 'map' if SLAM or localization running!) --><param name="frame_id" type="string" value="world" /><!-- maximum range to integrate (speedup!) --><param name="sensor_model/max_range" value="5.0" /><!-- data source to integrate (PointCloud2) --><remap from="cloud_in" to="/surfel_fusion/rgb_pointcloud" /></node>
</launch>
二、開始運行
啟動相機:
roslaunch realsense2_camera stereo-imu.launch
開啟跟蹤節點:
rosrun vins vins_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
開啟閉環:
rosrun loop_fusion loop_fusion_node ~/catkin_ws/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml
啟動 Surfel Fusion
roslaunch surfel_fusion vins_realsense.launch
啟動八叉樹建圖
roslaunch octomap_server octomap_mapping.launch
在rviz中添加occupancygrid,并選擇/octomap_full話題,即可看到八叉樹地圖,如下: