[转载]turtlebot2+激光雷达
FBI Warnin:按照该篇操作在ros kinetic 上没有成功!!!
原文链接:http://blog.csdn.net/eaibot/article/details/51219032
turtlebot的程序默认搭载xtion或kinect深度摄像头。现在我们把它修改为激光雷达。市面上可选的激光雷达有:Hokuyo、Sick和Rplidar 一代。我们以Rplidar为例进行讲解。
创建turtlebot工作空间
安装依赖包
sudo apt-getinstall ros-indigo-joy
sudo apt-getinstall ros-indigo-turtlebot-msgs
sudo apt-getinstall ros-indigo-turtlebot
sudo apt-getinstall ros-indigo-yocs-velocity-smoother
sudo apt-getinstall ros-indigo-turtlebot-rviz-launchers
下载源码包
mkdir -p ~/turtlebot_ws/src
cd ~/turtlebot_ws/src
## 激光雷达rplidar 一代驱动
git clone https://github.com/robopeak/rplidar_ros.git
cd rplidar_ros
git checkout 1.0.1
## turtlebot建图依赖包
git clone https://github.com/turtlebot/turtlebot_apps
git clone https://github.com/ros-perception/slam_gmapping
git clone https://github.com/ros-perception/openslam_gmapping
git clone https://github.com/ros-planning/navigation.gi
编译
cd ~/turtlebot_ws
catkin_make
添加环境变量
在~/.bashrc最后添加一行:
source /home/harney/turtlebot_ws/devel/setup.bash
然后刷新配置
source ~/.bashrc
串口访问全限
创建turtlebot的串口别名
新建/etc/udev/rules.d/57-kobuki.rules,内容如下:
KERNEL=="ttyUSB*", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", MODE:="0666", GROUP:="dialout", SYMLINK+="rplidar"="kobuki"
增加当前用户对串口的默认访问权限:
$ sudo usermod -a -G dialout 用户名
使UDEV配置生效:(使串口的默认访问权限生效,需要重启机器)
$ sudo service udev reload
$ sudo service udev restart
修改文件
修改~/turtlebot_ws/src/turtlebot_apps/turtlebot_navigation/launch/gmapping_demo.launch,内容如下:
修改~/turtlebot_ws/src/turtlebot_apps/turtlebot_navigation/launch/includes/gmapping.launch.xml,内容如下:
运行launch,创建地图
进行控制机器人行走进行制图
roslaunch turtlebot_navigation gmapping_demo.launch
roslaunch turtlebot_teleop keyboard_teleop.launch
建好地图之后我们将map保存
rosrun map_server map_saver -f 地图的保持位置
通过下面命令查看实时地图绘制
roslaunch turtlebot_rviz_launchers view_navigation.launch
如果通过远程查看实时地图绘制,除了在终端指定ROS_MASTER_URI的IP外,还需在/etc/hosts为ros的master主机和远程机器相互配置对方的ip和对应的主机名。
export ROS_MASTER_URI=http://192.168.xx.xx:11311
我们也可以录制数据包用于后续建图使用。
方法如下:
1.创建文件~/turtlebot_ws/src/rosbag/recore_bag.launch
2.创建文件~/turtlebot_ws/src/rosbag/gmapping_bag.launch
使用方法
在一个终端运行下面程序控制底盘的移动
cd~/turtlebot_ws/src/rosbagroslaunch recore_bag.launch
在另一个终端运行下面程序记录数据
rosrun rosbag record -a
录制完成后,用CTL+C取消结束数据的记录
最后,修改对应的bag文件,根据录的rosbag进行gmapping生成地图
cd ~/turtlebot_ws/src/rosbag
roslaunch gmapping_bag.launch
———-其他的说明——————–
如何确定Rplidar和turtlebot的坐标关系
Rplidar的坐标系:三角形的电机为X轴的正向,顺时针90度为Y轴的正向,因为是二维激光,没有Z轴。
turtlebot坐标系:右手原则, 前方(带碰撞挡板)X轴的正向,逆时针90度为Y轴的正向,朝上为Z轴的正向。
由于Rplidar的坐标系和turtlebot坐标系不一致,所以需要沿X轴做180度旋转。
我们安装Rplidar的方法: 把Rplidar固定在turtlebot上方的最中心的位置,Rplidar三角形电机的朝向和turtlebot 前方碰撞挡板的中心位置一致,测量Rplidar和turtlebot底座的高度为20cm。
发布Rplidar和turtlebot的坐标关系有两种方式:
方式一:
方式二:
在turtlebot_description/urdf/turtlebot_library.urdf.xacro的标签之前加入如下内容