转载:
https://www.jianshu.com/p/4277243c786d
https://www.ncnynl.com/archives/201705/1556.html
参考文献:
Turtlebot及相关软件安装
实现gmapping建图
实现AMCL自主导航
材料:
1. Turtlebot底盘
2. Rplidar A2雷达
3. ubuntu16.04 + ROS kinect笔记本电脑
$ sudo apt-get update
$ sudo apt-get install ros-kinetic-turtlebot
$ mkdir -p ~/turbot_ws/src
$ cd ~/turbot_ws/src
$ git clone https://github.com/ncnynl/turbot
$ cd ..
$ catkin_make
$ cd ~/turbot_ws/src
$ git clone https://github.com/ncnynl/turtlebot_apps
$ cd ..
$ catkin_make
安装完Turtlebot底盘驱动后,来测试一下电脑是否可以驱动底盘
1.4.1 检查端口:
检查是否有kobuki端口,打开一个终端:
$ ls /dev/kobuki
如果没有显示,则执行:
$ rosrun kobuki_ftdi create_udev_rules
重新拔插底盘的USB串口线,在执行上面的检查语句,则可看到有kobuki端口显示
1.4.2 底盘启动测试:
启动底盘
$ roslaunch turbot_bringup minimal.launch
执行命令后,会听到一串开机音乐
新终端,执行命令
$ rosrun turbot_tools test_move
成功执行命令后,小车向前缓慢移动,按Ctrl + C 即可中止
$ cd ~/turbot_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
驱动里提供了三个 launch 文件,检验雷达的话用 rplidar.launch 即可
$ roslaunch rplidar_ros rplidar.launch
可以观察到雷达开始旋转扫描,之后可以先关闭
$ roslaunch turbot_tools rplidar.launch
$ roslaunch turbot_tools test_rplidar.launch
可以看到在打开的RVIZ界面上有雷达扫描的点云图形
Gmapping建图
启动底盘
$ roslaunch turbot_bringup minimal.launch
启动gmapping,用于构建地图
$ roslaunch turbot_slam laser_gmapping_demo.launch
启动rviz,实时查看建图情况
$ roslaunch turbot_rviz nav.launch
启动键盘
$ roslaunch turbot_teleop keyboard.launch
将鼠标聚焦到键盘控制界面上,使用键盘控制底盘前后运动,完成建图工作。
保存地图
$ rosrun map_server map_saver -f ~/map/rplidar_a2_gmapping
$ ls ~/map
可以查看到map文件夹下有两个文件,一个是.pgm文件,另一个是.yaml文件。可以打开.pgm文件查看建成的地图。
启动底盘
$ roslaunch turbot_bringup minimal.launch
启动amcl, 并指定地图
$ roslaunch turbot_slam laser_amcl_demo.launch map_file:=/home/ubuntu(你的用户名)/map/rplidar_a2_gmapping.yaml
启动rviz
$ roslaunch turbot_rviz nav.launch
打开rviz后,界面如下
初始化位置,选择2D Pose Estimate,标注机器人在地图上的位置和方向,按住鼠标左键拉向某个方向
设置目标位置,选择“2D Nav Goal”, 标注机器人将要到达地图上的位置和方向,按住鼠标左键拉向某个方向
机器人规划出一条路径,然后自动走向目标点