原文链接:http://www.ncnynl.com/archives/201611/1095.html
Turtlebot入门教程-激光雷达(Rplidar)gmapping构建地图
说明
介绍Turtlebot搭载激光雷达(Rplidar)通过gmapping构建地图
准备
测试环境ubuntu14.04 + indigo
已安装Turtlebot包,具体安装:deb包安装|源码安装
依赖包:
Turtlebot应用包,https://github.com/ncnynl/turtlebot_apps.git
激光雷达rplidar一代驱动,https://github.com/ncnynl/rplidar_ros.git
步骤
建立工作空间(也可以利用现有的),编译包
$ mkdir -p ~/turtlebot_ws/src
$ cd ~/turtlebot_ws/src
## 激光雷达rplidar一代驱动
$ git clone https://github.com/ncnynl/rplidar_ros.git
## turtlebot建图依赖包
$ git clone https://github.com/turtlebot/turtlebot_apps
#编译
$ cd ~/turtlebot_ws
$ catkin_make
添加环境变量,在~/.bashrc最后添加一行:
$ source /home/ubu/turtlebot_ws/devel/setup.bash
刷新配置
$ source ~/.bashrc
或
$ rospack profile
创建激光雷达(Rplidar)的串口别名
确认idVendor和idProduct,ID后面的部分idVendor:idProduct
$ lsusb
Bus 001 Device 006: ID 10c4:ea60
新建 /etc/udev/rules.d/rplidar.rules文件,内容如下:(别名为rplidar,实际名称为:/dev/rplidar)
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="rplidar"
增加当前用户对串口的默认访问权限:
$ sudo usermod -a -G dialout 用户名
使UDEV配置生效:(使串口的默认访问权限生效,需要重启机器)
$ sudo service udev reload
$ sudo service udev restart
制作雷达驱动启动文件
复制rplidar.launch到rplidar-laser.launch,并增加TF定义
$ roscd turtlebot_navigation
$ mkdir -p laser/driver
$ sudo cp ~/turtlebot_ws/src/rplidar_ros/launch/rplidar.launch laser/driver/rplidar_laser.launch
打开rplidar_laser.launch,并修改
$ rosed turtlebot_navigation rplidar_laser.launch
检查frame_id是否指定为laser
查看serial_port是否指定正确端口,使用别名
检查端口:,设置好别名,或直接端口/dev/ttyUSB0
增加TF:
修改为args="0.0 0.0 0.18 0 0.0 0.0 为自己的实际安装位置。详情查看,static_transform_publisher部分
static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
这里我假设底盘的中心点为0,雷达放在机器人托盘中心位置,X为0,高度为18CM,Z为0.18m
TF的单位使用米的,测量单位是CM
完整代码如下:
检查turtlebot_navigation包
增加rplidar_gmapping_demo.launch文件,用于启动gmapping.
$ roscd turtlebot_navigation
$ touch launch/rplidar_gmapping_demo.launch
$ rosed launch/rplidar_gmapping_demo.launch
输入内容:
设置laser_type为rplidar.
增加rplidar_gmapping.launch.xml文件,执行gmapping建图
$ roscd turtlebot_navigation
$ touch launch/includes/gmapping/rplidar_gmapping.launch.xml
$ rosed launch/includes/gmapping/rplidar_gmapping.launch.xml
输入内容:
make the starting size small for the benefit of the Android client's memory...
-->
测试激光雷达gmapping构建地图
上网本新开端口,打开roscore
$ roscore
上网本新开端口,启动turtlebot
$ roslaunch turtlebot_bringup minimal.launch
上网本新开端口,启动gmapping,用于构建地图
$ roslaunch turtlebot_navigation rplidar_gmapping_demo.launch
工作机或上网本新开端口,启动键盘操作Turtlebot
$ roslaunch turtlebot_teleop keyboard_teleop.launch
工作机或上网本新开端口,启动rviz,实时查看建图情况
$ roslaunch turtlebot_rviz_launchers view_navigation.launch
构建地图结束保存地图
上网本新开端口,建立目录,保存地图
$ mkdir -p ~/map
$ rosrun map_server map_saver -f ~/map/rplidar_gmapping
$ ls ~/map #查看内容,包含rplidar_gmapping.pgm rplidar_gmapping.yaml
查看地图,已经生成rplidar_gmapping.pgm文件,可以用图像浏览器(gimp, eog, gthumb, 等等)打开查看。
利用地图进行AMCL