Gazebo环境下使用turtlebot建立环境octomap地图

octomap是一种空间概率地图,可以使用方格来表示周围的环境,就像“我的世界”游戏里表示的那样,优点是地图计算速度快,内存占用少,可以调整地图的分辨率等等,与平面二维地图相比,octomap所记录的环境信息是三维的,是实现vSlam的一种方式,这里展示一个小小的示例例程:在gazebo仿真环境下,使用turtlebot仿真机器人,通过机器人身上的kinect传感器采集点云数据,建立octomap地图,最终在rviz环境下观察地图的效果。
Gazebo环境下使用turtlebot建立环境octomap地图_第1张图片
操作系统:ubuntu16.04
ROS版本:kinetic
Gazebo版本:7.14

需要安装的软件
1、gazebo7.x
2、turtlebot在ros下的仿真功能包

sudo apt-get install ros-kinetic-turtlebot-simulator

3、octomap在ros下的功能包

sudo apt-get install ros-kinetic-octomap*

启动步骤

1、启动turtlebot在gazebo下的仿真程序

roslaunch turtlebot_gazebo turtlebot_world.launch

2、启动octomap_server的launch文件

roslaunch ~/catkin_oct/src/launch/display.launch   //这个路径自己制定,只要能找到display.launch文件

该launch文件的内容如下

<launch>
  <node pkg="octomap_server" type="octomap_server_node" name="octomap_server">

    
    <param name="resolution" value="0.1" />

    
    <param name="frame_id" type="string" value="odom" />

    
    <param name="sensor_model/max_range" value="10.0" />
    <param name="latch" value="false" />

    
    <param name="pointcloud_max_z" value="500" />
    <param name="pointcloud_min_z" value="0" />

    
    <remap from="cloud_in" to="/camera/depth/points" />

  node>
launch>

红色部分需要特别注意,octomap之所以能够建立octomap地图是通过点云数据,而此处的点云数据是有turtlebot仿真中的kinect提供的/camera/depth/points点云。

为了能够得到正确的地图,固定坐标系要设置为map、odom这类全局坐标系,而这个坐标系也是与turtlebot仿真程序里对应的。

3、启动turtlebot的键盘遥控节点

roslaunch turtlebot_telop keyboard_teleop.launch

此时你可以使用键盘控制gazebo环境下的turtlebot四处转一转。

4、启动rviz并显示机器人模型和occupancygrid视图

rosrun rviz rviz

此时rviz下应该是一个默认的启动画面,还看不到你建立的地图。
调整Displays面板的几个选项即可:
1、Fixed frame 选择 odom;
2、点击Add按钮,添加OccupancyGrid视图,这个选项之所以存在是因为之前安装了octomap的相关组件,其中包括一个octomap在rviz下的插件。视图出现后在话题一栏选择octomap_binary话题即可。

Gazebo环境下使用turtlebot建立环境octomap地图_第2张图片
配置好rviz的视图后,应该就能看的建立的octomap地图了,对比一下gazebo下的仿真环境,建立的地图与仿真环境下的模型世界是吻合的。

Gazebo环境下使用turtlebot建立环境octomap地图_第3张图片
Gazebo环境下使用turtlebot建立环境octomap地图_第4张图片

你可能感兴趣的:(机器人,ROS,octomap,gazebo,turtlebot)