• OctoMap
    • 安装
    • 运行仿真

    OctoMap

    官网英文原文地址:http://dev.px4.io/simulation-gazebo-octomap.html

    OctoMap库实现了一个三维占据栅格地图的方法。本文介绍如何在RotorS仿真中使用它。

    安装

    需要预先安装ROS,Gazebo和Rotors Simulator插件,按照Rotors Simulator中的指南安装这些。

    接着,安装OctoMap库

    1. sudo apt-get install ros-indigo-octomap ros-indigo-octomap-mapping
    2. rosdep install octomap_mapping
    3. rosmake octomap_mapping

    现在,打开~/catkin_ws/src/rotors_simulator/rotors_gazebo/CMakeLists.txt并在文件底部添加下面内容:

    1. find_package(octomap REQUIRED)
    2. include_directories(${OCTOMAP_INCLUDE_DIRS})
    3. link_libraries(${OCTOMAP_LIBRARIES})

    打开~/catkin_ws/src/rotors_simulator/rotors_gazebo/package.xml添加下面内容:

    1. <build_depend>octomap</build_depend>
    2. <run_depend>octomap</run_depend>

    执行下面两行

    提示:第一行是将默认的shell编辑器(vim)修改为gedit。推荐不熟悉vim的用户使用,如果熟悉的话,可以忽略。

    1. export EDITOR='gedit'
    2. rosed octomap_server octomap_tracking_server.launch

    将下面两行

    1. <param name="frame_id" type="string" value="map" />
    2. ...
    3. <!--remap from="cloud_in" to="/rgbdslam/batch_clouds" /-->

    修改为

    1. <param name="frame_id" type="string" value="world" />
    2. ...
    3. <remap from="cloud_in" to="/firefly/vi_sensor/camera_depth/depth/points" />

    运行仿真

    现在,在三个不同的终端窗口中执行下面三行。这将打开Gazebo,Rviz和octomap服务器。

    1. roslaunch rotors_gazebo mav_hovering_example_with_vi_sensor.launch mav_name:=firefly
    2. rviz
    3. roslaunch octomap_server octomap_tracking_server.launch

    在Rviz窗口的左上方,修改域Fixed Frame,将map改为world,然后在窗口左下方单击add按钮并选择MarkerArray,最后双击MarkerArray,并将Marker Topic/free_cells_vis_array修改为/occupied_cells_vis_array

    现在,你应该看到地面的一部分。

    在Gazebo窗口的红色旋翼飞行器前方插入一个立方体,此时你应该可以在Rviz中看到它。

    octo