从ROS配置realsense的参数

使用json配置realsense的参数(非rosparam)

今天使用realsense时,发现有个参数需要修改
Set Point.png
这个参数可以修正因反光而导致的错误,也就是把稍微凸起的地面当做障碍物,适当减小这个参数可以实现。

这个界面在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_streampointcloud_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