Search
Duplicate
1️⃣

MEMO : [ROS] Realsense 의 화면 해상도 변경하기

우선 아래 명령어를 통해 Realsense 가 지원하는 다양한 해상도들 확인한다.
rs-enumerate-devices
Bash
복사
Realsense 가 잘 연결되어 있다면, 출력은 다음과 같다. 이것은 D435 의 결과물이다.
Device info: Name : Intel RealSense D435 Serial Number : 017322070581 Firmware Version : 05.12.06.00 Recommended Firmware Version : 05.11.11.100 Physical Port : Debug Op Code : 15 Advanced Mode : YES Product Id : 0B07 Camera Locked : YES Usb Type Descriptor : 3.2 Product Line : D400 Asic Serial Number : 941323024952 Stream Profiles supported by Stereo Module Supported modes: stream resolution fps format Infrared 2 1280x800 @ 30Hz Y8 Infrared 1 1280x800 @ 30Hz Y8 Infrared 1 1280x800 @ 25Hz Y16 Infrared 2 1280x800 @ 25Hz Y16 Infrared 2 1280x800 @ 15Hz Y16 Infrared 1 1280x800 @ 15Hz Y16 Infrared 2 1280x800 @ 15Hz Y8 Infrared 1 1280x800 @ 15Hz Y8 Infrared 2 1280x720 @ 30Hz Y8 Infrared 1 1280x720 @ 30Hz Y8 Infrared 2 1280x720 @ 15Hz Y8 Infrared 1 1280x720 @ 15Hz Y8 Infrared 2 1280x720 @ 6Hz Y8 Infrared 1 1280x720 @ 6Hz Y8 Infrared 2 848x480 @ 90Hz Y8 Infrared 1 848x480 @ 90Hz Y8 Infrared 2 848x480 @ 60Hz Y8 Infrared 1 848x480 @ 60Hz Y8 Infrared 2 848x480 @ 30Hz Y8 Infrared 1 848x480 @ 30Hz Y8 Infrared 2 848x480 @ 15Hz Y8 Infrared 1 848x480 @ 15Hz Y8 Infrared 2 848x480 @ 6Hz Y8 Infrared 1 848x480 @ 6Hz Y8 Infrared 1 848x100 @ 300Hz Y8 Infrared 2 848x100 @ 300Hz Y8 Infrared 1 848x100 @ 100Hz Y8 Infrared 2 848x100 @ 100Hz Y8 ...
Bash
복사
확인을 마쳤으면, roscore 을 실행시키자.
roscore
Bash
복사
그리고 realsense_camera 패키지에 접근한다. 우리가 보통 realsense 카메라를 실행시킬 때에는 realsense camera 패키지의 rs_camera.launch 런치파일을 사용한다. 이 런치파일을 수정함으로써 원하는 결과물을 얻을 수 있을지 모른다.
roscd realsense_camera cd launch gedit rs_camera
Bash
복사
아까 위에서 탐색했던 가능한 요소들 중 적절하게 선택해서 끼워넣어 준다고 생각하면 좋다. 나의 경우에는 Jetson Xavier 이 1280x720 에서 힘들어하는 모습을 보였기 때문에, 낮은 해상도와 낮은 fps 로 변환해 주었다. 위의 출력 결과를 본다면, 칼라 카메라와 depth 카메라가 지원하는 해상도가 다르다. (가설) 내부적으로 어떤 방식으로 처리되는지 알기 어렵기 때문에 이왕이면 모든 것들의 해상도를 맞추어 주는 것이 좋다고 생각한다. 하지만 나의 경우에는, 최대한 모델의 input 과 근사한 이미지 크기를 찾아내고, 부족하거나 넘치는 부분은 crop 하거나 zero 로 채워버리는 방법을 사용할 예정이다. 생각보다 모델에 넣어 주기 위한 이미지 전처리에 들어가는 시간적 코스트가 1 loop 중 30% 정도 차지하여 상당히 크기 때문에, 이렇게 단순한 전처리 방법을 활용해서 속도에 도움을 받을 수 있을까 함이다. 하지만 걱정되는 것은, 해상도가 애초에 다른 input 두 개 (RGB, D) 를 합치는 과정에서 또한 노이즈가 발생할 것 같다는 점이다.
어쨌든, 수정한 결과물은 다음과 같다.
<launch> <arg name="serial_no" default=""/> <arg name="usb_port_id" default=""/> <arg name="device_type" default=""/> <arg name="json_file_path" default=""/> <arg name="camera" default="camera"/> <arg name="tf_prefix" default="$(arg camera)"/> <arg name="external_manager" default="false"/> <arg name="manager" default="realsense2_camera_manager"/> <arg name="output" default="screen"/> <arg name="fisheye_width" default="848"/> <arg name="fisheye_height" default="480"/> <arg name="enable_fisheye" default="false"/> <arg name="depth_width" default="848"/> <arg name="depth_height" default="480"/> <arg name="enable_depth" default="true"/> <arg name="infra_width" default="848"/> <arg name="infra_height" default="480"/> <arg name="enable_infra" default="false"/> <arg name="enable_infra1" default="false"/> <arg name="enable_infra2" default="false"/> <arg name="infra_rgb" default="false"/> <arg name="color_width" default="960"/> <arg name="color_height" default="540"/> <arg name="enable_color" default="true"/> <arg name="fisheye_fps" default="15"/> <arg name="depth_fps" default="15"/> <arg name="infra_fps" default="15"/> <arg name="color_fps" default="15"/> <arg name="gyro_fps" default="400"/> <arg name="accel_fps" default="250"/> <arg name="enable_gyro" default="false"/> <arg name="enable_accel" default="false"/>
Bash
복사
이 launch 파일에서 어떤 요소에 대해서 어떻게 작동하는지 궁금하다면 아래 링크를 참고하면 된다.