Realsense D400 시리즈 최적 사용 방법

Reference

RGB-D 카메라 중, 최근 많이 사용되고 있는 인텔 리얼센스 D400 시리즈 중 D435 모델을 사용하고 있다. 대부분 ROS를 이용해서 사용하는만큼 그냥 기본 옵션을 주로 사용하고 있었는데, 최근 카메라 관련 자료를 찾아보다가 위의 링크의 문서를 보게 되었다.

결론부터 알아보면, 카메라의 스펙을 고려하여 그에 해당하는 옵션을 선택해서 사용하는 것이 가장 좋은 품질의 Depth 데이터를 얻을수 있다는 얘기다.


  1. Depth의 해상도는 848×480으로 한다. (D415의 경우 1280×720) 그 이외의 해상도를 선택하면 저 해상도를 기준으로 하여 스케일링한 후 출력을 내보내는 듯 하다. 만약 사용하려는 알고리즘의 성능을 고려하여 해상도를 낮춰야 한다면, 저 native 해상도로 받은 후, 후처리를 통해 해상도를 낮추는 것을 더 추천한다고 한다. (흐음~)
  2. 카메라를 사용하는 환경의 조명을 개선한다. (조명 조건이 좋을수록 Depth 데이터의 품질도 좋아진다.
  3. 사용하려는 물체의 위치를 카메라에 가능한 가깝게 하도록 노력한다. D400 시리즈 모델의 경우 IR 패턴광을 사용하여 Depth 정보를 계산하는만큼, 거리가 멀어지면 멀어질수록 오차는 기하급수적으로 심해진다.
  4. 여러 개의 카메라를 사용한다. (이건 좀 이해가 안가는데…) 암튼 FOV를 커버하기 위해서 여러 개의 카메라를 사용하는 것을 추천한다. D400 시리즈의 경우 여러개의 카메라를 사용해도 상관이 없고, 만약 하드웨어 동기화 기능을 사용할 경우, 카메라에 위치한 별도의 커넥터를 사용하여 연결하면, master-slave 관계를 설정하여 사용 가능하다.
  5. post-processing를 적극 활용한다.

대략 이 정도인듯.

realsense_ros (https://github.com/IntelRealSense/realsense-ros) 패키지를 사용하는 경우, 위 사항을 고려하여 사용한다면, 다음과 같이 사용하면 됨.

$ roslaunch realsense2_camera rs_camera.launch enable_pointcloud:=true color_width:=848 color_height:=480 color_fps:=60 depth_width:=848 depth_height:=480 depth_fps:=60 infra_width:=848 infra_height:=480 infra_fps:=60 align_depth:=true filters:="spatial

물론 roslaunch의 arguments를 사용하면 좀더 이쁘게 만들수도 있을듯.

덧:

현재 librealsense2 패키지의 최신 버전은 커널 5.0대에서 사용할 때, Pointcloud를 제대로 읽어오지 못함. 따라서 문제가 해결될때까지 2.30 버전을 사용하는 것을 권장.