scan_tools
提供了一系列用于激光SLAM的工具,在github的分支只到indigo,所以无法从ros直接安装,但可以编译源码安装. 其中重要的有:
laser_scan_matcher: an incremental laser scan matcher, using Andrea Censi’s Canonical Scan Matcher implementation. It downloads and installs Andrea Censi’s Canonical Scan Matcher [1] locally.
scan_to_cloud_converter: converts LaserScan to PointCloud messages.
laser_filters 过滤雷达数据
过滤器的机制和代价地图是类似的,节点scan_to_scan_filter_chain
相当于代价地图,每一个filter相当于地图的每一层,通过加载yaml而加载filter。
以range过滤器为例,修改range_filter.yaml
如下:1
2
3
4
5
6
7
8
9scan_filter_chain:
- name: box_filter
type: laser_filters/LaserScanRangeFilter
params:
# use_message_range_limits: false # if not specified defaults to false
lower_threshold: 0.18 # 默认0
upper_threshold: 0.22 # 默认100000.0
lower_replacement_value: 0 # 默认 NaN
upper_replacement_value: 999 # 默认 NaN
运行launch: roslaunch laser_filters range_filter_example.launch
,里面就是节点scan_to_scan_filter_chain
和yaml文件
结果查看scan_filtered
话题,只显示出0.18~0.22
距离的数据,太小的显示为0,太大的显示为999.
又比如使用LaserScanAngularBoundsFilter
,只取-45°~45°内的scan,结果如下,要把laser坐标系的x轴放到水平向右的方向观察 :