前言
由於要做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