turtlebot(hydro)学习笔记四:turtlebot上hokuyo UTM-30LX激光扫描仪的添加及导航

来源:互联网 发布:数据库的数据模型是指 编辑:程序博客网 时间:2024/06/09 19:41

Hokuyo Laser添加到Turtlebot

1、udev配置

1)进入/etc/udev/rules.d目录,新建一个50-laser.rules文件,添加以下内容到该文件:KERNEL=="ttyACM[0-9]*", MODE="0777"

(2)重启udev以使之前添加的.rules文件生效:

$sudo  /etc/init.d/udev  restart

3)插入激光扫描仪,并检测设备权限:

$ ls -al /dev/ttyACM0 ,如果显示 crw-rw-- -- 1 root dialout…….

则输入$ sudo chmod a+rw /dev/ttyACM0,再查看权限应该如下:

crw-rw-rw- 1 root dialout 166……

2、新建一个catkin空间并添加turtlebot程序包

1)回到home目录下,新建一个hydro空间:

$cd

$mkdir hydro 

$cd hydro

$mkdir src

$cd src

2)下载turtlebot程序包到src目录

$ git clone https://github.com/turtlebot/turtlebot.git

3)编译程序包

$cd ..   回到hydro目录才能执行catkin_make

$catkin_make

$source  ~/hydro/devel/setup.bash

4)修改 .bashrc文件【.bashrc文件在home目录下】

$cd

$gedit .bashrc

 用#符号注释掉文件末尾 source /opt/ros/hydro/setup.bash

并添加另一条 source  ~/hydro/devel/setup.bash

修改好过后执行: $source  ~/.bashrc

3、修改turtlebot_description目录下的内容

$roscd turtlebot_description

$gedit ./urdf/turtlebot_library.urdf.xacro

在文件末尾处</robot>标签前面添加以下内容:

<joint name="laser" type="fixed">

    <origin xyz="-0.005 0.00 0.360" rpy="3.14159 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>

4修改turtlebot_bringup下面的launch文件

1)3dsenser.launch,将<arg name="scan_topic" default="scan" />修改为

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

注:经过对比实验,我们也测试过不修改这一步,实验结论:这个修改对我们第二步用laser做地图创建应该没有影响。

2)minimal.launch,在文件末尾</launch>标签之前添加以下内容:

<node name="laser_driver" pkg="hokuyo_node" type="hokuyo_node">

   <param name="frame_id" value="base_laser_link" />

 </node>

5安装hokuyo运行节点

sudo apt-get install ros-hydro-hokuyo-node

 

二、利用hokuyo laser创建地图步骤

【接下来步骤跟之前的地图创建步骤一样,只是对minimal.launch文件的修改,是我们可以利用hokuyo laser来创建地图】

1$roslaunch turtlebot_bringup minimal.launch

2、$roslaunch turtlebot_navigation gmapping_demo.launch

3、$roslaunch turtlebot_rviz_launchers view_navigation.launch

4、$roslaunch turtlebot_teleop keyboard_teleop.launch

5、地图构建完成之后保存 :

$rosrun map_server map_saver -f /tmp/my_map  

注意:在地图保存完之前不要关闭gmapping.launch

 

三、已知地图下的自动导航

1、运行上一步中已经保存好的地图

$roslaunch  turtlebot_navigation amcl_demo.launch map_file:=/tmp/my_map.ymal

2、$roslaunch turtlebot_rviz_launchers view_navigation.launch

开始的时候turtlebot 不知道他自己在地图的什么位置,所以我们要指示给他他的初始位置和面向

2.1 点击“2D Pose Estimate”按钮

2.2 点击地图上turtlebot所在的位置然后拉箭头到turtlebot面向的方向。你将看到很多绿色箭头的集合表明了turtlebot 所在的位置。绿色的激光扫描直线代表turtlebot 看到的墙。如果上诉特征没有出现请重复这一步骤。

2.3 发送目标

2.3.1 点击“2D Nav Goal”按钮

2.3.2 点击地图上任意一点你想让turtlebot 去的地方然后选择箭头的朝向来确定turtlebot的面向

如果你想在turtlebot 到达目标停止turtlebot,可以将他当前所在

的位置发送给他。

1 0