思岚C1激光雷达获取与laser_scan_tools运行gmapping

这还是我第一次使用现实的激光雷达,之前都是虚拟的ROS环境

这次购买了思岚家的C1雷达,解决问题做一个记录,希望能给大家一点帮助

话不多说,直接开始正题~

创建catkin工作空间

mkdir -p ~/dev/catkin_ws/src

进入到src工作空间

cd ~/dev/catkin_ws/src

创建好工作目录后我们开始从git上下载一个思岚官方的测试库

下载安装思岚官方的测试库

没有安装git的可以先安装一下

sudo apt install git

安装完毕后访问这个git下载

GitHub - Slamtec/rplidar_ros

这个是思岚的官方测试库

通过git clone下载

git clone https://github.com/Slamtec/rplidar_ros.git

然后再下载laser_scan_tools

git clone https://github.com/ccny-ros-pkg/scan_tools.git

下载完毕后就可以看到src文件夹当中的文件了

回到catkin的根目录,之前没编译过所以你不会看到build和devel文件夹,截图是为了告诉回到哪个

文件夹

回到这里后右键打开终端

首先我们需要下载一下

sudo apt-get install ros-你ROS版本-csm

//示例:
//我的是noetic
sudo apt-get install ros-noetic-csm

这样编译的时候就不会报错了

使用catkin_make编译一下

编译完毕后就可以看到上图的样子了

然后接着添加一下source

source ~/dev/catkin_ws/devel/setup.bash

为了让source永久生效,把它写入.bashrc文件中

echo "source ~/dev/catkin_ws/devel/setup.bash" >> ~/.bashrc


source ~/.bashrc


 

接下来我们安装一下雷达的驱动

源码安装rplidar-ros驱动

sudo apt-get install ros-你ROS的版本-rplidar-ros

//示例:
//我的是noetic
sudo apt-get install ros-noetic-rplidar-ros

源码安装hector_slam库

sudo apt-get install ros-你ROS的版本-hector-slam

现在环境就配置好了

首先测试一下你的雷达工作了没有

查看你的雷达串口号

ls /dev/tty*

看到雷达是连接到了该串口

/dev/ttyUSB0

给这个串口赋权限

sudo chmod 777 /dev/ttyUSB0

然后运行下载思岚的测试库

roslaunch rplidar_ros view_rplidar_c1.launch

这时候就可以看到打开了rviz并且看到了点云

接下来实现laser_scan_tools运行gmapping

我们通过Vscode(或者你自己的编辑器)打开catkin_ws下的src当中下载的scan_tools,找到laser_scan_matcher当中的demo,右键打开文件夹

找到demo_gmapping.launch,修改为下面的程序

<!-- 
Example launch file: uses laser_scan_matcher together with
slam_gmapping 
-->

<launch>

  #### set up data playback from bag #############################

  <param name="/use_sim_time" value="flase"/><!-- 因为Gmapping 的simulation 时间是True, 改为false  网上查到的-->

  #### rplidar_C1 ################################################
  <!--激光雷达的启动文件-->
 <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
  <param name="serial_port"         type="string" value="/dev/ttyUSB0"/>  
  <param name="serial_baudrate"     type="int"    value="460800"/>
  <param name="frame_id"            type="string" value="laser"/>
  <param name="inverted"            type="bool"   value="false"/>
  <param name="angle_compensate"    type="bool"   value="true"/>
  <param name="scan_frequency"      type="double" value="10.0"/>
  <param name="scan_mode"           type="string" value="Standard"/>
  </node>

  #### publish an example base_link laser transform ###########

  <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser" 
    args="0.0 0.0 0.0 0.0 0.0 0.0 /base_link /laser 40" />

  #### start rviz ################################################

  <node pkg="rviz" type="rviz" name="rviz" 
    args="-d $(find laser_scan_matcher)/demo/demo_gmapping.rviz"/>

  #### start the laser scan_matcher ##############################

  <node pkg="laser_scan_matcher" type="laser_scan_matcher_node" 
    name="laser_scan_matcher_node" output="screen">

    <param name="fixed_frame" value = "odom"/>
    <param name="max_iterations" value="10"/>

    <param name="base_frame" value = "base_link"/>
    <param name="use_odom" value="false"/>
    <param name="publy_pose" value = "true"/>
    <param name="publy_tf" value="true"/>


  </node>

  #### start gmapping ############################################
<!--前三个param必须设置修改,要不然tf_tree不完整-->
  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
    <param name="base_frame" value="/base_link"/> <!--***机器人的坐标系-->
    <param name="odom_frame" value="/odom" /> <!--***世界坐标系-->
    <param name="map_frame" value="/map" /> <!--***地图坐标系-->

    <param name="map_udpate_interval" value="1.0"/>
    <param name="maxUrange" value="5.0"/>
    <param name="sigma" value="0.1"/>
    <param name="kernelSize" value="1"/>
    <param name="lstep" value="0.15"/>
    <param name="astep" value="0.15"/>
    <param name="iterations" value="1"/>
    <param name="lsigma" value="0.1"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="1"/>
    <param name="srr" value="0.1"/>
    <param name="srt" value="0.2"/>
    <param name="str" value="0.1"/>
    <param name="stt" value="0.2"/>
    <param name="linearUpdate" value="1.0"/>
    <param name="angularUpdate" value="0.5"/>
    <param name="temporalUpdate" value="0.4"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="10"/>
    <param name="xmin" value="-5.0"/>
    <param name="ymin" value="-5.0"/>
    <param name="xmax" value="5.0"/>
    <param name="ymax" value="5.0"/>
    <param name="delta" value="0.02"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.05"/>
    <param name="lasamplerange" value="0.05"/>
    <param name="lasamplestep" value="0.05"/>
  </node>

</launch>

最后回到catkin_ws目录编译一遍,再使用打开launch就可以了

roslaunch laser_scan_matcher demo_gmapping.launch

本文章参考链接:

思岚SLAMTEC A1开箱测试(实现雷达数据的查看+hector_slam建图)_思岚a1slam-CSDN博客

ROS下:无里程计 仅有rplidar A2激光雷达+laser_scan_tools运行gmapping-CSDN博客

感谢各位开发者!!!

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值