Turtlebot2激光雷达(Hokuyo)gmapping构建地图

**激光雷达(Hokuyo)gmapping构建地图ubuntu16.04 +kinetic

1、在GitHub下载turtlebot_apps和hokuyo_node两个功能包**
Turtlebot应用包,https://github.com/ncnynl/turtlebot_apps.git
激光雷达Hokuyo node驱动,https://github.com/ncnynl/hokuyo_node.git
测试型号:hokuyo UTM-30LX
*2、建立工作空间,初始化

$ mkdir -p  ~/turtlebot_ws/src
$ catkin_init_workspace

3、将下载turtlebot_apps和hokuyo_node两个功能包复制到创建的工作空间的src路径下,,编译功能包*

$ cd  ~/turtlebot_ws
$ catkin_make

4、添加环境变量,在~/.bashrc最后添加一行:

$ gedit ~/.bashrc
$ source /home/用户名/turtlebot_ws/devel/setup.bash

刷新配置

$ source ~/.bashrc   

$ rospack profile

5、创建激光雷达的串口别名

确认idVendor和idProduct,ID后面的部分idVendor:idProduct

$ lsusb
Bus 001 Device 006: ID 15d1:0000

**6、*新建 /etc/udev/rules.d/hokuyo.rules文件,内容如下:(别名为hokuyo,实际名称为:/dev/hokuyo)
KERNEL=="ttyACM[0-9]", ACTION==“add”, ATTRS{idVendor}==“15d1”, MODE=“0666”, GROUP=“dialout”, SYMLINK+="hokuyo"

增加当前用户对串口的默认访问权限:

$ sudo usermod -a -G dialout 用户名

使UDEV配置生效:(使串口的默认访问权限生效,需要重启机器)

$ sudo service udev reload
$ sudo service udev restart

7、制作雷达驱动启动文件

$ roscd turtlebot_navigation   #此路径必须为/turtlebot_ws/src/turtlebot_apps/turtlebot_navigation 
$ mkdir -p laser/driver
$ sudo cp ~/turtlebot_ws/src/hokuyo_node/hokuyo_test.launch laser/driver/hokuyo_laser.launch

**8、打开hokuyo_laser.launch,

$ rosed turtlebot_navigation hokuyo_laser.launch   #若无法打开表明刷新环境有问题

9、复制如下代码:(若上面一句命令不能找到文件,直接打开功能包下的hokuyo_laser.launch文件复制代码)

<launch>
  <node name="hokuyo" pkg="hokuyo_node" type="hokuyo_node" respawn="false" output="screen">

  <!-- Starts up faster, but timestamps will be inaccurate. --> 
  <param name="calibrate_time" type="bool" value="false"/> 

  <!-- Set the port to connect to here -->
  <param name="port" type="string" value="/dev/hokuyo"/> 
  <param name="frame_id"  type="string" value="laser"/>
  <param name="intensity" type="bool" value="false"/>
  </node>

  <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.0 0.0 0.18 0 0.0 0.0 base_link laser 100"/>
</launch>

10、检查turtlebot_navigation包

增加hokuyo_gmapping_demo.launch文件,用于启动gmapping.

$ roscd  turtlebot_navigation
$ touch  launch/hokuyo_gmapping_demo.launch
$ rosed  launch/hokuyo_gmapping_demo.launch

输入内容:(和第九步操作类似)

<launch>

  <!-- Define laser type-->
  <arg name="laser_type" default="hokuyo" />

  <!-- laser driver -->
  <include file="$(find turtlebot_navigation)/laser/driver/$(arg laser_type)_laser.launch" />

  <!-- Gmapping -->
  <arg name="custom_gmapping_launch_file" default="$(find turtlebot_navigation)/launch/includes/gmapping/$(arg laser_type)_gmapping.launch.xml"/>
  <include file="$(arg custom_gmapping_launch_file)"/>

  <!-- Move base -->
  <include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml"/>


</launch>*

11、增加hokuyo_gmapping.launch.xml文件,执行gmapping建图(和第九步操作类似)*

$ roscd  turtlebot_navigation 
$ touch launch/includes/gmapping/hokuyo_gmapping.launch.xml  
$ rosed launch/includes/gmapping/hokuyo_gmapping.launch.xml

输入内容:

<launch>
  <arg name="scan_topic"  default="scan" />
  <arg name="base_frame"  default="base_footprint"/>
  <arg name="odom_frame"  default="odom"/>

  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    <param name="base_frame" value="$(arg base_frame)"/>
    <param name="odom_frame" value="$(arg odom_frame)"/>
    <param name="map_update_interval" value="5.0"/>
    <param name="maxUrange" value="6.0"/>
    <param name="maxRange" value="8.0"/>
    <param name="sigma" value="0.05"/>
    <param name="kernelSize" value="1"/>
    <param name="lstep" value="0.05"/>
    <param name="astep" value="0.05"/>
    <param name="iterations" value="5"/>
    <param name="lsigma" value="0.075"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="0"/>
    <param name="minimumScore" value="200"/>
    <param name="srr" value="0.01"/>
    <param name="srt" value="0.02"/>
    <param name="str" value="0.01"/>
    <param name="stt" value="0.02"/>
    <param name="linearUpdate" value="0.5"/>
    <param name="angularUpdate" value="0.436"/>
    <param name="temporalUpdate" value="-1.0"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="80"/>
  <!--
    <param name="xmin" value="-50.0"/>
    <param name="ymin" value="-50.0"/>
    <param name="xmax" value="50.0"/>
    <param name="ymax" value="50.0"/>
  make the starting size small for the benefit of the Android client's memory...
  -->
    <param name="xmin" value="-1.0"/>
    <param name="ymin" value="-1.0"/>
    <param name="xmax" value="1.0"/>
    <param name="ymax" value="1.0"/>

    <param name="delta" value="0.05"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.01"/>
    <param name="lasamplerange" value="0.005"/>
    <param name="lasamplestep" value="0.005"/>
    <remap from="scan" to="$(arg scan_topic)"/>
  </node>
</launch>

12、建议重新编译工作空间并source,然后测试激光雷达gmapping构建地图

打开终端

$ roscore

另开终端,启动turtlebot

$ roslaunch turtlebot_bringup minimal.launch

再新开终端,启动gmapping,用于构建地图(若出现没有此launch文件等,表明工作空间source不成功)

$ roslaunch turtlebot_navigation hokuyo_gmapping_demo.launch

新开终端,启动键盘操作Turtlebot

$ roslaunch turtlebot_teleop keyboard_teleop.launch 

再新开端口,启动rviz,即可实时查看建图情况

$ roslaunch turtlebot_rviz_launchers view_navigation.launch

13、构建地图结束保存地图

新开终端,建立目录(自我选择或者操作下面默认路径),保存地图

$ mkdir -p ~/map
$ rosrun map_server map_saver -f ~/map/hokuyo_gmapping
$ ls ~/map   #查看内容,包含hokuyo_gmapping.pgm  hokuyo_gmapping.yaml


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值