根据课程要求,本实验涉及的设备及软件环境如下:
这一步骤将使Turtlebot2机器人的底盘能够正常启动、运行,使之能进行移动。
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-turtlebot
$ makedir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/ncnynl/turbot
$ cd …
$ catkin_make
接下来的Gmapping建图实验主要用到其中的turbot_bringup turbot_slam turbot_rviz等功能包。
$ cd ~/catkin_ws/src
$ git clone https://github.com/ncnynl/turtlebot_apps
$ cd …
$ catkin_make
其中的turtlebot_navigation是本实验所需的关键功能包。
完成上面的软件安装并保证硬件端口连接的情况下,可以通过下面的命令检查kobuki端口连通情况:
$ ls /dev/kobuki
如果当前设备中未显示kobuki,则执行如下命令:
$ rosrun kobuki_ftdi create_udev_rules
并重新拔插底盘连接到笔记本的USB串口线,再次执行检查命令,可以看到显示有kobuki连接。
此后,执行如下命令启动底盘:
$ roslaunch turbot_bringup minimal.launch
如果底盘成功驱动,会播放一串开机音乐。
打开一个新终端,执行命令:
$ rosrun turbot_tools test_move
如果小车缓慢向前移动,则证明安装底盘驱动的步骤成功完成。
这一步骤将使机器人上的Rplidar A2激光雷达能够正常启动、运行,感知周围环境。
$ cd ~/catkin_ws/src
$ git clone https://github.com/robopeak/rplidar_ros
$ cd …
$ catkin_make
此步骤非常关键,忽略的话会导致雷达不能运行。执行命令:
$ sudo gedit /etc/udev/rules.d/70-ttyusb.rules
在打开的界面中输入如下内容并保存:
$ KERNEL==“ttyUSB[0-9]*”, MODE=“0666”
执行如下命令查看权限,包含两个 rw 即可:
$ ls -l /dev |grep ttyUSB*
执行如下命令,对工作空间路径、雷达别名进行配置:
$ echo “export TURTLEBOT_LASER_SENSOR=rplidar” >> ~/.bashrc
$ echo “source /home/ubu/turbot_ws/devel/setup.bash” >> ~/.bashrc
$ roscd rplidar_ros
$ ./scripts/create_udev_rules.sh
此前下载安装的雷达驱动中包含了3个launch文件,可以通过rplidar.launch测试雷达:
$ roslaunch rplidar_ros rplidar.launch
雷达开始旋转运行则证明安装成功。终止此进程之后,可以再通过turbot功能包测试雷达:
$ roslaunch turbot_tools rplidar.launch
$ roslaunch turbot_tools test_rplidar.launch
若Rviz可视化界面打开并呈现出雷达扫描的点云,则证明安装成功。
接下来调用功能包完成Gmapping手动二维建图,分别打开4个新终端执行如下命令:
1.启动机器人底盘:
$ roslaunch turbot_bringup minimal.launch
2.调用Gmapping算法,启动雷达、构建地图:
$ roslaunch turbot_slam laser_gmapping_demo.launch
3.启动rviz,可视化实时建图情况:
$ roslaunch turbot_rviz nav.launch
4.启动键盘控制(需要将光标聚焦到该终端),控制机器人移动建图:
$ roslaunch turbot_teleop keyboard.launch
将建好的地图保存到指定文件夹(如 ~/map):
$ rosrun map_server map_saver -f ~/map/rplidar_a2_gmapping
可以看到有两个后缀分别为.yaml和.pgm的文件在此位置。
基于Gmapping算法建图时,如果周围环境较为复杂,则其在Rviz界面中会呈现出大片杂乱的蓝紫色噪点,在导航等实验中极大地影响操作,因此后续我们尝试了Cartographer算法,它的实际效果很好。
Turtlebot及相关软件安装
实现gmapping建图(Rplidar A2版)
Turtlebot + Rplidar A2使用Gmapping建图与导航