两轮差速底盘SLAM系列(12)--laser_filters功能包的使用
本文最后更新于:2022年5月29日 上午
前言
最近搞了个思岚A2激光雷达回来,在实际应用开发中,发现它官方没有给出自定义使用特定角度激光雷达数据的接口配置(比如我只需要激光雷达前面180°的数据,后面的数据不需要),这就有点不方便了。之前使用EAI-X4激光雷达的时候可以直接在launch文件进行配置就可以了,现在这个没有接口可以配置,那就只能另寻它法了。
经过查找资料,发现强大ROS社区里面的大牛们早就帮我们解决了这个问题,直接使用——laser_filters功能包即可以轻松解决上面的问题。
laser_filters功能包介绍
总结一下,此滤波器可以实现:
- LaserArrayFilter:将激光雷达数据放入一个数组中以便其他操作;
- ScanShadowsFilter:过滤掉可能因为遮挡效应而产生的数据;
- InterpolationFilter:向可信点间插入数据;
- LaserScanIntensityFilter:过滤掉给定密度上下界范围之外的数据;
- LaserScanRangeFilter:过滤掉指定扫描距离范围之外的雷达数据;
- LaserScanAngularBoundsFilter:过滤掉指定扫描角度范围之外的雷达数据;
- LaserScanAngularBoundsFilterInPlace:过滤掉指定扫描角度范围之内的雷达数据(与上面刚好相反);
- LaserScanBoxFilter:过滤掉指定的box范围内额数据。
详细功能说明看laser_filters wiki,里面有很详细的说明和例子,参照例子来修改一下基本就可以使用了。
使用方法
这个滤波器是针对2D激光雷达的,主要操作也就是设置参数放在yaml文件里,消息转换和参数加载放在launch文件里即可,下面直接使用LaserScanAngularBoundsFilter
例子来说明。
插件参数配置
将设定的角度外的扫描数据删除
1 |
|
在功能包目录下新建一个angular_bounds_filter.yaml
文件(我把文件保存在了功能包agv_car/param
目录下),参数设置示例:
1 |
|
加载参数
直接在激光雷达launch文件加载参数,比如:
1 |
|
最后面的节点就是加载滤波参数。
运行效果
配置好参数后,直接启动激光雷达节点,使用rviz订阅/scan_filtered
话题,即可看到的效果:
1 |
|
从下图可以看到只有前面180°的激光雷达扫描的数据。
两轮差速底盘SLAM系列(12)--laser_filters功能包的使用
https://kevinloongc.github.io/posts/33000.html