< >
Home » ROS2与传感器教程 » ROS2与传感器教程-利用laser_filters包对激光雷达数据进行过滤

ROS2与传感器教程-利用laser_filters包对激光雷达数据进行过滤

说明

  • 介绍如何利用laser_filters包对激光雷达数据进行过滤,实现去掉不必要的障碍物

原理:

  • 订阅激光雷达发布的原始数据,经过laser_filters包的过滤插件处理,重新发布过滤后的激光雷达数据
  • 比如保留相应角度的激光数据,其他过滤掉
  • 比如过滤某个形状的激光数据,其他保留
  • 通过插件方式设定不同过滤规则,从而满足不同的过滤需求。

步骤

  • 安装laser_filters
  • 利用便利工具rcm工具来进行安装
# install rcm
curl -k https://www.ncnynl.com/rcm.sh | bash - 

# install laser_filters
rcm ros2_algorithm install_ros2_laser_filters

使用

ros2 launch laser_filters box_filter_example.launch.py
  • 具体参数文件是同目录下的box_filter_example.yaml

  • 2.过滤测距范围

ros2 launch laser_filters range_filter_example.launch.py
  • 具体参数文件是同目录下的range_filter_example.yaml
  • 3.多个过滤插件同时使用
ros2 launch laser_filters multiple_filters_example.launch.py
  • 具体参数文件是同目录下的multiple_filters_example.yaml

  • 4.相关过滤插件

LaserScanBoxFilter 滤除一个区块内的数据(常用于过滤机器人本体或支架对激光雷达数据干扰)
ScanShadowsFilter 针对物体边沿的扫描和识别
InterpolationFilter 插值滤波
LaserScanIntensityFilter 设定强度阈值,超出则设置为nan
LaserScanRangeFilter 设定距离阈值,超出则设置为nan
LaserScanAngularBoundsFilter 将设定的角度外的扫描数据删除
LaserScanAngularBoundsFilterInPlace 不会删除目标角度扇区外的数据,但会把对应扫描的距离值设为最大距离阈值+1
LaserArrayFilter 使用中值过滤器等对距离和强度进行过滤
scan_filter_chain:

- name: Remove over 0.35 meters on the right
  type: laser_filters/LaserScanBoxFilter
  params:
    box_frame: base_footprint
    min_x: -3.5
    max_x: 3.5
    min_y: -3.5
    max_y: -0.35
    min_z: -0.1
    max_z: 0.1

- name: Remove over 0.35 meters on the left
  type: laser_filters/LaserScanBoxFilter
  params:
    box_frame: base_footprint
    min_x: -3.5
    max_x: 3.5
    min_y: 0.35
    max_y: 3.5
    min_z: -0.1
    max_z: 0.1

- name: Remove 90 to 270 degree
  type: laser_filters/LaserScanAngularBoundsFilterInPlace
  params:
    lower_angle: 1.57
    upper_angle: 4.71

- name: exist range 0.12 to 0.7 meter
  type: laser_filters/LaserScanRangeFilter
  params:
    lower_threshold: 0.12
    upper_threshold: 0.7

- name: exist intensity 500 to 4000
  type: laser_filters/LaserScanIntensityFilter
  params:
    lower_threshold: 500
    upper_threshold: 4000
    disp_histogram: 0

- name: interpolation
  type: laser_filters/InterpolationFilter

参考:

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与传感器教程