在论坛上学习了一位大神的帖子,按部就班,中间
1、一些准备工作
1.1安装Gazebo的模型,网上搜索即可。建议网盘下载,解压会比较有效率。
1.2 安装相关ROS包
安装turtlebot3相关的ROS包 这个得看自己的ros版本
$ sudo apt-get install ros-melodic-turtlebot3 ros-melodic-turtlebot3-description ros-melodic-turtlebot3-gazebo ros-melodic-turtlebot3-msgs ros-melodic-turtlebot3-slam ros-melodic-turtlebot3-teleop
安装SLAM相关的ROS包
目前激光SLAM的建图方法有很多中,turtlebot3支持gmapping、cartographer、hector、karto、frontier_exploration,
而ROS Melodic版本官方的软件源里只有karto
$ sudo apt-get install ros-melodic-slam-karto
使用gmapping的话需要编译源码安装,首先需要安装OpenSLAM:
$ git clone https://github.com/ros-perception/openslam_gmapping
$ mkdir build
$ cd build
$ sudo make install
$ sudo ldconfig
然后从GitHub下载gmapping的源码包,将其放在一个ROS工作空间下,使用catkin_make编译通过即可。
安装navigation相关的ROS包
$ sudo apt-get install ros-melodic-navigation
2、建图
$ export TURTLEBOT3_MODEL=burger
#每开一个新的终端都要设置一下这个环境变量,除了burger也可以是waffle或waffle_pi,这个export 也可以放在.bashrc文件里
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch
#这里也可以选择其他的环境,或者自己搭建一个虚拟环境
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
#建图时要切换到这个终端,用键盘控制turtlebot运动
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=karto
#这里也可以选择其他的slam方法
建图的过程如下图所示,左边为Gazebo的仿真模型,右边为Rviz中显示的建图效果:
地图建完以后一定要将地图保存下来,不然就白建了:
$ mkdir -p ~/maps/housemap
$ rosrun map_server map_saver -f ~/maps/housemap/housemap
3、导航
利用刚才构建的地图进行turtlebot的自主导航仿真实验:
$ roslaunch turtlebot3_gazebo turtlebot3_house.launch
$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=/home/jay/maps/housemap/housemap.yaml
接下来首先要做的是调整RViz中turtlebot在地图中的位姿,使其与Gazebo中turtlebot在环境中的位姿一致。做法是用鼠标选中RViz工具栏中的“2D Pose Estimate”,然后根据Gazebo中tuetlebot的位姿点击RViz地图中的相应位置,注意姿态也要相同。设置好turtlebot的初始位姿,其效果是这样的:
接下来我们就开始导航了,鼠标选择工具栏中的“2D Nav Goal”,在地图中任意设置一个目标位姿,turtlebot便会自动规划路径,然后慢悠悠地移动过去: