前言
由于要做Realsense D435i的双目结构光相机标定,其中用到了ROS来录制数据包,但是结构光会影响标定,所以得先关闭IR结构光发射器。
如下图,成像很多光斑,我们要想办法关掉。
环境
ros
librealsense
realsense-ros
一次性关闭IR光
一次性地对Realsense进行设置,关闭IR光。
首先,插入电脑,打开三个terminal,分别执行:
roscore
roslaunch realsense2_camera rs_camera.launch
rosrun rqt_reconfigure rqt_reconfigure
出现以下界面:
把emitter_enable的勾去掉,即可。可以通过肉眼看相机发射器已经不再发射IR光了。
再在RVIZ上看看是否真的关闭了(把刚刚打开的rqt_reconfigure关掉)
在新的terminal输入rviz,先把左上角的Fixed Frame 设置为camera_link,再在左下角Add,By topic处选择Infra1下/image_rect_raw的Camera(双击),可以看到出来的图像已经没有白斑了。
但是下次使用的时候,还是得进行上述操作,因为这是一次性的,下面来看看如何方便地开关IR光。
从源码修改
从源码修改可以方便的使用参数来对IR光进行开关。
在realsense-ros/realsense2_camera/launch文件夹中,先复制一份rs_camera_copy.launch,以免改错了。
cp rs_camera.launch rs_camera_copy.launch
修改rs_camera_copy.launch
gedit rs_camera_copy.launch
在这条语句下面
<arg name="allow_no_texture_points" default="false"/>
增加以下语句:
<arg name="emitter_enable" default="false"/>
<!-- rosparam set /camera/stereo_module/emitter_enabled false -->
<rosparam>
/camera/stereo_module/emitter_enabled: false
</rosparam>
<rosparam if="$(arg emitter_enable)">
/camera/stereo_module/emitter_enabled: true
</rosparam>
这里修改的代码意思就是说,开启rs_camera_copy.launch时,默认关闭IR光,当你需要它打开的时候,只需要在打开的时候,增加一个参数即可,下面进行示范:
①当你不需要IR光时,无需加参数开启launch:
roslaunch realsense2_camera rs_camera_copy.launch
②当你需要打开IR光时,加参数开启launch:
roslaunch realsense2_camera rs_camera_copy.launch emitter_enable:=true
这样就方便多了,IR光想开就开。
参考:
https://github.com/IntelRealSense/realsense-ros/issues/817
https://github.com/IntelRealSense/realsense-ros/issues/871