ROS小车记录系列(一)RPLIDAR A3驱动、角度屏蔽、数据过滤

(一)RPLIDAR A3驱动、角度屏蔽、数据过滤


【这个型号效果不好,最终我没采用–2021.5.30】

A3驱动

从头搭建ROS巡航车,先解决激光雷达,使用的思岚RPLIDAR A3,配置步骤这里,思岚也提供了SDK,git clone下来放进src,直接根目录catkin_make,记得配置目录到bashrc中。核心在src目录下两个文件,在这里用node.cpp。先看CMakeLists.txt文件,有一句重要的脚本:

add_executable(rplidarNode src/node.cpp ${RPLIDAR_SDK_SRC})
target_link_libraries(rplidarNode ${catkin_LIBRARIES})

----通过node.cpp文件,生成了rplidarNode可执行文件,这个节点将采集雷达数据,并封装后发布出去,后面订阅这个话题处理就可以。有些小伙伴会在源码里修改雷达数据,屏蔽一定角度(比如车身遮挡),在这里不建议这样做,保留源码不动,下面再说怎么屏蔽角度。
----再看怎么启动雷达采集节点,launch目录有个rplidar_a3.launch文件,内容如下:

<launch>
  <node name="rplidarNod"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
  <param name="serial_port"         type="string" value="/dev/ttyUSB0"/>  
  <param name="serial_baudrate"     type="int"    value="256000"/><!--A3 -->
  <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_mode"           type="string" value="Sensitivity"/>
  </node>
  <include file="$(find laser_filters)/launch/anglarBounds.launch"> <!--  laser_filters -->
   </include>
</launch>

----很直白了,节点名称、串口号、波特率、frame名称(rviz显示雷达数据时,一定Fixed Frame设置相同名称)、安装是否倒置、角度补偿、运行模式,include文件是雷达过滤处理,下面再说。
----项目空间根目录执行

roslaunch rplidar_ros rplidar_a3.launch

可以见到雷达开始转起来,tostopic list中有个/scan话题,就是思岚SDK发出的雷达数据话题,也可以rostopic echo /scan查看雷达具体数据,从rviz中也可以订阅看见雷达数据。

角度屏蔽、数据过滤

这一步还是很实用的,不用自己修改源码,直接使用laser_filters,git扒拉下来,作一个单独功能包放src下,catkin_make一通,就可以使用了。详细介绍可以看WIKI,也有人翻译了中文版本。这个节点将订阅/scan话题数据,处理后发布出/scan_filtered话题,后续处理使用这个话题就可以了。过滤器的种类还是很多的,类别都列在了laser_filters_plugins.xml文件里,可以随便尝试看看效果。

修改examples文件夹为launch(没别的原因,就是看着舒服,哈),里面有各种滤波器示例,在这里我新建一个anglarBounds.launch文件,内容:

<launch>
<node pkg="laser_filters" type="scan_to_scan_filter_chain" output="screen" name="laser_filter">
      <rosparam command="load" file="$(find laser_filters)/launch/anglarBounds.yaml" />
</node>
</launch>

调用一个yaml配置文件,配置过滤器参数,yaml内容:

scan_filter_chain:
  - name: angle
    type: laser_filters/LaserScanAngularBoundsFilterInPlace
    params:
      lower_angle: -1.57
      upper_angle: 1.57
  
  - name: box_filter
    type: laser_filters/LaserScanRangeFilter
    params:
      use_message_range_limits: false   # if not specified defaults to false
      lower_threshold: 0.5              # if not specified defaults to 0.0
      upper_threshold: 100.0              # if not specified defaults to 100000.0
      lower_replacement_value: -.inf    # if not specified defaults to NaN
      upper_replacement_value: .inf     # if not specified defaults to NaN
  
  - name: shadows
    type: laser_filters/ScanShadowsFilter
    params:
      min_angle: 10
      max_angle: 170
      neighbors: 20
      window: 1

在这里,只保留了正前方-90度至90度数据,然后用了两个过滤,这时候可以从rviz中看到效果了。

  • 4
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值