当前位置:   article > 正文

速腾聚创rs_lidar_16(Robosense)使用gmapping建图_gmapping 手持雷达建图

gmapping 手持雷达建图

1、配置速腾聚创 rs_lidar_16雷达驱动

参考下面教程的第一步,Robosense16线雷达驱动安装

速腾聚创rs_lidar_16使用cartographer配置教程

2、使用pointcloud_to_laserscan包实现三维转二维

参考下面教程

使用pointcloud_to_laserscan包实现三维转二维

3、安装gmapping

3.1 安装依赖项

  1. sudo apt-get install libsdl1.2-dev
  2. sudo apt install libsdl-image1.2-dev

3.2 进入工作空间

cd ~/catkin_ws/src/

3.3 使用git clone 源码(如果git clone不成功,可以直接复制链接,到github下载源码,默认下载的是melodic版本,如果是Ubuntu 16.0系统,也可以)

  1. git clone https://github.com/ros-perception/openslam_gmapping.git
  2. git clone https://github.com/ros-perception/slam_gmapping.git
  3. git clone https://github.com/ros-planning/navigation.git
  4. git clone https://github.com/ros/geometry2.git
  5. git clone https://github.com/ros-planning/navigation_msgs.git

3.4 在工作空间(catkin_ws)中编译

catkin_make

#报错及解决

报错1:CMake Error at geometry2/tf2_bullet/CMakeLists.txt:11 (find_package): By not providing "Findbullet.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "bullet", but CMake did not find one.

解决:安装依赖项

sudo apt-get install libbullet-dev

报错2:关于c++11标准
解决:在src/文件下的CmakeLists.txt文件中加入关于c++11标

set( CMAKE_CXX_FLAGS "-std=c++11 -O3" )

报错3:Assertion 'beams<LASER_MAXBEAMS ' failed.

这是因为实际的激光扫描的点数较多,比设置的2048要多,所以,在文件目录openslam_gmapping/include/gmapping/scanmatcher/scanmatcher.h文件中,

#define LASER_MAXBEAMS 2048设置要比实际激光点数大即可(例如204800)。

修改完后需要重新编译。

到这一步后,理论上gmapping是安装完成了的,可以使用数据包验证一下。

3、安装laser_scan_matcher包

Ⅰ. Gmapping是基于滤波SLAM框架的常用开源SLAM算法,在ROS中使用Gmapping建图需要提供 Odometry(里程计信息)和laser(激光数据),但是只用一个激光雷达也可以进行Gmapping建图;

Ⅱ. 采用的方法就是使用 laser_scan_matcher 功能包。所述 laser_scan_matcher 功能包是增量激光扫描配准工具。该软件包允许扫描连续的 sensor_msgs / LaserScan 消息之间的匹配,并将估计的激光位置发布为 geometry_msgs / Pose2D 或 tf 变换。该包可以在没有其他传感器提供的任何测距估计的情况下使用。因此,它可以作为独立的里程计算器估算器。

Ⅲ. 到 https://github.com/ccny-ros-pkg/scan_tools.git 下载功能包,解压。将解压后功能包与激光雷达的功能包复制到你创建的 ROS 的工作区的src文件下,然后在工作区文件夹下编译。

  1. catkin_make
  2. rospack find laser_scan_matcher

Ⅳ. 然后,需要到 src →laser_scan_matcher →demo 文件中修改demo_gmapping.launch文件。
文件(修改后)如下:

  1. <!--
  2. Example launch file: uses laser_scan_matcher together with
  3. slam_gmapping
  4. -->
  5. <launch>
  6. #### set up data playback from bag #############################
  7. <param name="/use_sim_time" value="false"/>
  8. #### publish an example base_link -> laser transform ###########
  9. <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser"
  10. args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /rslidar 40" />
  11. #### start rviz ################################################
  12. <node pkg="rviz" type="rviz" name="rviz"
  13. args="-d $(find laser_scan_matcher)/demo/demo_gmapping.rviz"/>
  14. #### start the laser scan_matcher ##############################
  15. <node pkg="laser_scan_matcher" type="laser_scan_matcher_node"
  16. name="laser_scan_matcher_node" output="screen">
  17. <param name="fixed_frame" value = "odom"/>
  18. <param name="max_iterations" value="10"/>
  19. </node>
  20. #### start gmapping ############################################
  21. <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
  22. <param name="map_udpate_interval" value="1.0"/>
  23. <param name="maxUrange" value="5.0"/>
  24. <param name="sigma" value="0.1"/>
  25. <param name="kernelSize" value="1"/>
  26. <param name="lstep" value="0.15"/>
  27. <param name="astep" value="0.15"/>
  28. <param name="iterations" value="1"/>
  29. <param name="lsigma" value="0.1"/>
  30. <param name="ogain" value="3.0"/>
  31. <param name="lskip" value="1"/>
  32. <param name="srr" value="0.1"/>
  33. <param name="srt" value="0.2"/>
  34. <param name="str" value="0.1"/>
  35. <param name="stt" value="0.2"/>
  36. <param name="linearUpdate" value="1.0"/>
  37. <param name="angularUpdate" value="0.5"/>
  38. <param name="temporalUpdate" value="0.4"/>
  39. <param name="resampleThreshold" value="0.5"/>
  40. <param name="particles" value="10"/>
  41. <param name="xmin" value="-5.0"/>
  42. <param name="ymin" value="-5.0"/>
  43. <param name="xmax" value="5.0"/>
  44. <param name="ymax" value="5.0"/>
  45. <param name="delta" value="0.02"/>
  46. <param name="llsamplerange" value="0.01"/>
  47. <param name="llsamplestep" value="0.05"/>
  48. <param name="lasamplerange" value="0.05"/>
  49. <param name="lasamplestep" value="0.05"/>
  50. </node>
  51. </launch>

Ⅴ. 然后到所创键的ROS工作区,重新编译一下,输入:

  1. catkin_make
  2. source devel/setup.bash

 建图指令步骤

1.打开激光雷达点云驱动

roslaunch rslidar_pointcloud rs_lidar_16.launch 

2.3维激光数据转换成2维

roslaunch pointcloud_to_laserscan point_to_scan.launch

3.使用gmapping建图

roslaunch laser_scan_matcher  demo_gmapping.launch 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/981159
推荐阅读
相关标签
  

闽ICP备14008679号