turtlebot2+激光雷达

turtlebot的程序默认搭载xtion或kinect深度摄像头。现在我们把它修改为激光雷达。市面上可选的激光雷达有:Hokuyo、Sick和Rplidar。我们以Rplidar为例进行讲解。

创建turtlebot工作空间

下载

mkdir -p  ~/turtlebot/src
cd   ~/turtlebot/src
git clone https://github.com/turtlebot/turtlebot.git
git clone https://github.com/robopeak/rplidar_ros.git

编译

cd  ~/turtlebot
catkin_make

安装turtlebot-navigation

sudo apt-get install ros-indigo-turtlebot-navigation

刷新配置

source ~/turtlebot/devel/setup.bash

修改文件

参考:http://wiki.ros.org/turtlebot/Tutorials/hydro/Adding%20a%20Hokuyo%20laser%20to%20your%20Turtlebot

turtlebot description

接下来需要把Rplidar添加turtlebot坐标系下。 首先需要知道Rplidar和turtlebot的坐标系。
Rplidar的坐标系:三角形的电机为X轴的正向,顺时针90度为Y轴的正向,因为是二维激光,没有Z轴。
turtlebot坐标系:左手原则, 前方(带碰撞挡板)X轴的正向,顺时针90度为Y轴的正向,朝上为Z轴的正向。
我们安装Rplidar的方法: 把Rplidar固定在turtlebot上方的最中心的位置,Rplidar三角形电机的朝向和turtlebot 前方碰撞挡板的中心位置一致,测量Rplidar和turtlebot底座的高度为40cm。

在turtlebot_description/urdf/turtlebot_library.urdf.xacro的</robot>标签之前加入如下内容

 <joint name="laser" type="fixed">
    <origin xyz="0.00 0.00 0.40" rpy="0 0 0" />
    <parent link="base_link" />
    <child link="base_laser_link" />
  </joint>

  <link name="base_laser_link">
    <visual>
      <geometry>
        <box size="0.00 0.05 0.06" />
      </geometry>
      <material name="Green" />
    </visual>
    <inertial>
      <mass value="0.000001" />
      <origin xyz="0 0 0" />
      <inertia ixx="0.0001" ixy="0.0" ixz="0.0" iyy="0.0001" iyz="0.0" izz="0.0001" />
    </inertial>
  </link>

注意:Rplidar的安装位置并不唯一, 如果修改安装位置,laser的joint中origin的参数值

3dsensor.launch

在turtlebot_bringup/launch/3dsensor.launch中把

  <arg name="scan_topic" default="scan"/>

修改为

 <arg name="scan_topic" default="kinect_scan"/>

minimal.launch

在minimal.launch中</launch> 之前,加入如下内容

  <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
  <param name="serial_port"         type="string" value="/dev/ttyUSB1"/>  
  <param name="serial_baudrate"     type="int"    value="115200"/>
  <param name="frame_id"            type="string" value="base_laser_link"/>
  <param name="inverted"            type="bool"   value="false"/>
  <param name="angle_compensate"    type="bool"   value="true"/>
  </node>

gmapping_demo.launch

在turtlebot_navigation/launch/gmapping_demo.launch 删掉如下内容

 <include file="$(find turtlebot_bringup)/launch/3dsensor.launch">
    <arg name="rgb_processing" value="false" />
    <arg name="depth_registration" value="false" />
    <arg name="depth_processing" value="false" />

    <arg name="scan_topic" value="/scan" />
  </include>

运行

roslaunch turtlebot_bringup minimal.launch
roslaunch turtlebot_navigation gmapping_demo.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch

用下面命令控制turtlebot移动

roslaunch turtlebot_teleop keyboard_teleop.launch

保存地图到/tmp目录下

rosrun map_server map_saver -f /tmp/test_map

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