使用json配置realsense的参数(非rosparam)
今天使用realsense时,发现有个参数需要修改
这个参数可以修正因反光而导致的错误,也就是把稍微凸起的地面当做障碍物,适当减小这个参数可以实现。
这个界面在realsense viewer中,但问题是如何在ROS中做到,它在rosparam中没有对应的参数。查来查去,在github的issue里发现了解决方法。realsense已经提供了一种visual preset
文件,其实是个json文件,可以对很多参数设置,而且realsense的launch文件中已经定义了json文件的路径,比如rs_camera.launch
:1
<arg name="json_file_path" default=""/>
realsense提供的所有json文件在这里,我们需要的参数在DefaultPreset_D435.json,也就是第一个参数:"aux-param-autoexposure-setpoint": "400"
,修改它的值后,把json文件的路径填到上面launch参数那里,启动launch就可以实现了。不过不能动态调整参数。
配置点云的滤波器
rs_camera.launch
的参数是比较全的,demo_pointcloud.launch
比较少。
现在介绍filters
这个参数,在launch中没有赋值:<arg name="filters" default=""/>
pointcloud: 点云话题是/camera/depth/color/points
. 点云的texture可以在rqt_reconfigure
里修改,或者用参数pointcloud_texture_stream
和pointcloud_texture_index
修改
The depth FOV and the texture FOV are not similar. By default, pointcloud is limited to the section of depth containing the texture. You can have a full depth to pointcloud, coloring the regions beyond the texture with zeros, by setting allow_no_texture_points to true.
可以配置的滤波器如下:
- disparity, convert depth to disparity before applying other filters and back.
- spatial,filter the depth image spatially.
- temporal,filter the depth image temporally.
- hole_filling,apply hole-filling filter.
- decimation,reduces depth scene complexity.
所有滤波器的说明在这里
给参数filters
赋值,必须有pointcloud
,再增加滤波器,用逗号隔开。比如 disparity,spatial,pointcloud
滤波器的相关的源码在base_realsense_node.cpp
BaseRealSenseNode::setupFilters()
, 读取参数filters
,把所有滤波器名称都插入容器_filters
BaseRealSenseNode::publishPointCloud()
, 发布滤波后的点云
参考:
realsense-ros 滤波器
CSDN Realsense D435 Post-processing filters