第一步:安裝Octomap及其在Rviz中的插件
sudo apt-get install ros-kinetic-octomap-ros
sudo apt-get install ros-kinetic-octomap-msgs
sudo apt-get install ros-kinetic-octomap-server
sudo apt-get install ros-kinetic-octomap-rviz-plugins
or
sudo apt-get install ros-kinetic-octomap
第二步:啓動iai_kinect2的kinect2_bridge節點
roslaunch kinect2_bridge kinect2_bridge.launch publish_tf:=true #最後一個參數必須要,否則發佈的點雲數據沒有tf座標系,在rviz中是無法查看到的
第三步:啓動Octomap_server節點,將點雲話題/kinect2/qhd/points
中的數據轉換成octomap話題/octomap_full
中的八叉樹數據。
相關的啓動文件內容如下:
octomap_display.launch
<launch>
<node pkg="octomap_server" type="octomap_server_node" name="octomap_server">
<!-- resolution in meters per pixel -->
<param name="resolution" value="0.1" />
<!-- name of the fixed frame -->
<param name="frame_id" type="string" value="/kinect2_link" />
<!-- max range / depth resolution of the kinect in meter -->
<param name="sensor_model/max_range" value="50.0" />
<param name="latch" value="true" />
<!-- max/min height for occupancy map, should be in meters -->
<param name="pointcloud_max_z" value="1000" />
<param name="pointcloud_min_z" value="0" />
<!-- topic from where pointcloud2 messages are subscribed -->
<remap from="cloud_in" to="/kinect2/qhd/points" />
</node>
</launch>
roslaunch octomap_display.launch
第四步:啓動Rviz,在Displays面板中添加PointCloud2和OccupancyGrid插件,將Global Options中的Fixed Frame設置成kinect2_link
,將PointCloud2的Topic設置成kinect2/qhd/points
,將OccupancyGrid的Topic設置成/octomap_full
即可。
點雲數據
與上面點雲數據對應的Octomap數據
總結:獲取了實時點雲和octomap數據之後就可構建環境障礙物,實現運動規劃。還可先訂閱點雲話題得到點雲數據,濾波分割後再發布,再訂閱濾波、分割後點雲數據給Octomap_server節點,從而得到更加有效的Octomap環境地圖。
參考資料:
http://wiki.ros.org/octomap_server?distro=kinetic
http://wiki.ros.org/octomap