[转载]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,内容如下:


[转载]turtlebot2+激光雷达_第1张图片


修改~/turtlebot_ws/src/turtlebot_apps/turtlebot_navigation/launch/includes/gmapping.launch.xml,内容如下:


[转载]turtlebot2+激光雷达_第2张图片
[转载]turtlebot2+激光雷达_第3张图片

运行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


[转载]turtlebot2+激光雷达_第4张图片


2.创建文件~/turtlebot_ws/src/rosbag/gmapping_bag.launch

[转载]turtlebot2+激光雷达_第5张图片

使用方法

在一个终端运行下面程序控制底盘的移动

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的标签之前加入如下内容


[转载]turtlebot2+激光雷达_第6张图片

你可能感兴趣的:([转载]turtlebot2+激光雷达)