Turtlebot+Stage进行SLAM仿真(ROS Kinetic)

Stage介绍

Stage是Player/Stage项目的一个软件,是一种用于移动机器人和智能传感系统研究的仿真工具。

Stage在一个二维的位图环境下模拟移动机器人、传感器和障碍物等对象。Stage提供了多种传感器和执行器,包括声纳,激光扫描测距仪,色斑显示器,里程计,抓斗,防撞器/触须器以及移动机器人基座等。

Stage在设计中就考虑到了多智能体系统的问题,可以提供对多机器人系统的测试仿真。需要了解的是Stage只提供了真正简单,可计算的廉价的设备模式,而无法非常精密地仿真任何具体的设备终端。

安装依赖

首先可以尝试如下命令

sudo apt-get install ros-kinetic-turtlebot*

安装完成后尝试运行

export TURTLEBOT_STAGE_MAP_FILE="/opt/ros/kinetic/share/turtlebot_stage/maps/maze.yaml"
export TURTLEBOT_STAGE_WORLD_FILE="/opt/ros/kinetic/share/turtlebot_stage/maps/stage/maze.world"
roslaunch turtlebot_stage turtlebot_in_stage.launch

能够正常运行不报错即正常安装。

问题1:Rviz报错

No transform from [wheel_left_link] to [map]

原因:未安装 joint_state_publisher_gui 功能包

运行命令安装

sudo apt-get install ros-kinetic-joint-state-publisher-gui

参考:ROS问题—Rviz显示URDF模型时报错

启动Stage仿真环境

打开命令终端,和上节一样输入命令

roslaunch turtlebot_stage turtlebot_in_stage.launch

turtlebot_stage 仿真分别启动了以下ros包:

  • stage:仿真世界环境发布各种tf(transform)坐标关系,odom、base_scan等仿真数据

  • map_server:地图服务,加载其提供的仿真世界的地图

  • move_base:导航功能包,接收其他包的数据实现导航功能,调用A*、DWA实现路径规划

  • static map:静态地图

  • amcl:激光定位程序,通过粒子滤波算法实现机器人的实时定位

  • rviz view:Rviz可视化显示机器人状态、传感器数据、导航路线、costmap、设定导航目标点

启动后会显示三个窗口,分别是Stage、rviz和joint_state_publisher,参考:Turtlbot仿真之Stage

在rviz界面,点击菜单栏的【2D Nav Goal】 然后在图书中选择一个位置点击鼠标左键并拖到鼠标设定方向终点机器人的方向。

会发现机器人自动设定了全局路径,并启用DWA算法自动导航到设定的目标位置。

启动SLAM

通过键盘控制机器人

roslaunch turtlebot_teleop keyboard_teleop.launch

启动之后,看终端里的提示进行操作。u、i、o分别代表左转、前进、右转。