[Reference Site]
[Installation]
- 설치 방법
- [Method 1] local에 설치하는 방법이 존재 끗!
$ sudo apt-get install ros-melodic-realsense2-camera
-
- [Method 2] github에서 불러와서 workspace에서만 include되게 빌드하는 방법
- 설치 전 주의 사항
- Method 1의 경우, latest한 version의 realsense package를 설치하기 때문에 librealsense SDK와 버전이 맞지 않아 에러가 발생할 수 있는 문제가 있음!
- 그래서 작성자는 보통 [Method 2]을 추천함!!
- Method 2 에 대한 상세 설치 방법
- 1 Reference Site 방문 (혹은 구글에 realsense ros github 라고 검색하면 나옴!)
-
- 2 그러면 바로 git clone 하지 말고!! 우측에 Release로 들어가기!
- 혹시 모르니 해당 Release site도 넣어둠!
-
- 3 [중요] 여기서 해당 librealsense SDK 및 realsense-ros package 설치하기 전에 다음과 같은 조건을 체크한 후에 설치를 진행해야함!
- 체크할 항목들!
- 1 Supported ROS Distribution 확인
- 2 Supported Platforms 확인
- 3 Supported Devices 확인
- 저자의 예시
- Ubuntu 18.04 LTS / ROS Melodic / D455 Realsense Camera 라면 다음과 같은 버전을 설치 및 다운!
- 1) install ROS realsense version → 2.3.2
- 2) intsall SDK librealsense version → 2.50.0
-
- 4−1 Download ROS realsense source code
- 해당 버전을 찾았으면 하단의 Assets 누르고 Source code .ziportar.gz라고 되어 있는 부분 눌러 다운로드!
- 4−2 Download SDK librealsense
- 해당 버전을 찾았으면 "Supported RealSense SDK" 에 링크가 걸려 있어 거기로 들어가면 됨!
- 마찬가지로 하단의 Assets 누르고 Source code .ziportar.gz라고 되어 있는 부분 눌러 다운로드!
-
- 5−1 Build ROS realsense source code
- 압축을 풀고 해당 workspace src에 옮기고 다음과 같이 빌드
$ catkin build realsense2_camera
-
-
- 만약 "ddynamic_reconfigure" 관련하여 에러가 발생하였다면, 다음과 같이 하면 해결!
- $ sudo apt-get install ros-melodic-ddynamic-reconfigure
- 5−2 Install SDK librealsense
$ sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev
$ sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
$ cd librealsense
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Release
$ sudo make uninstall
$ make clean
$ make
$ sudo make install
-
-
- 6 Realsense ROS package 실행!
- $ source devel setup.bash
$ roslaunch realsense2_camera rs_camera.launch
[Using IMU integrated in D435i or D455 Camera]
- Realsense camera 안에는 내장되어 있는 IMU 센서가 있어 이를 사용할 수도 있음!
- IMU 센서 데이터를 사용하기 전에, UDEV 규칙 파일을 먼저 local udev rule setting 위치 (/etc/udev/rule.d/)에 다운 받아둠 PermissionSetting
sudo wget -O /etc/udev/rules.d/99-realsense-libusb.rules https://raw.githubusercontent.com/IntelRealSense/librealsense/master/config/99-realsense-libusb.rules
-
-
-
- [추천 방법] 아직까지 에러가 확인되지 않았으나, 위에 설치한 버전에 맞춰서 rule 파일을 넣어주는게 심리적으로 안정감이 들어서 작성자는 이렇게 활용! ㅎㅎ
- 위에 SDK librealsense 폴더 중 "config" 폴더가 있는데 그 안에 "99-realsense-libusb.rules" 라는 파일이 존재
- 해당 파일을 "/etc/udev/rule.d" 로 옮겨주기만 하면 끝!!
-
- 그 뒤에 launch 파일 rscamera.launch 중 다음과 같은 argument들을 변경!
<!-- IMU Options are: [none, copy, linear_interpolation] -->
<arg name="gyro_fps" default="200"/>
<arg name="accel_fps" default="63"/>
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
<arg name="unite_imu_method" default="linear_interpolation"/>
-
- 그렇게 되면 topic 중 /camera/imu 가 생성나오면서 IMU 데이터 사용이 가능해진다.
[Using Compressed Image Topic]
- Realsense ROS package에서는 compressed image를 publish 할 수 있어 이를 활용하자! 데이터용량이기존에비해엄청나게작아지는이점이있음!
- 이를 활용하기 위해서 사전에 필요한 package 및 라이브러리를 순차적으로 설치 및 빌드시키면 사용할 수 있게됨
$ sudo apt-get update
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libturbojpeg0-dev
$ cd ./${WORKSPACE}/src/
$ git clone https://github.com/ros-perception/image_common.git
$ cd /image_common
$ git checkout ${ROS_DIST}-devel
$ cd ../../
$ catkin build
$ cd ./${WORKSPACE}/src/
$ git clone https://github.com/ros-perception/image_transport_plugins.git
$ cd /image_transport_plugins
$ git checkout ${ROS_DIST}-devel
$ cd ../../
$ catkin build
[Topics]
- Intel T265 Tracking Camera related launch file
$ roscd realsense2_camera
$ cd launch
$ roslaunch rs_t265.launch
- T265 camera topic
- Topic name → /camera/odom/sample
- Message type → nav_msgs/Odometry
- Intel D435i & D455i RGB-D Camera
$ roscd realsense2_camera
$ cd launch
$ roslaunch rs_camera.launch
- D435 & D455 camera topic
- Image topic name → /camera/color/image_raw
- Message type → sensor_msgs/Image
-
- Compressed topic name → /camera/color/image_rect_raw/compressed
- Message type → sensor_msgs/CompressedImage
-
- Left Infra topic name → /camera/infra1/image_rect_raw
- Right Infra topic name → /camera/infra2/image_rect_raw
- Message type → sensor_msgs/Image
-
- Camera built-in IMU topic name → /camera/imu
- Message type → sensor_msgs/Imu
- 내장되어 있는 IMU data 값은 개인적으로 사용해본 결과 엄청 좋진 않고 hz가 계속 변해서 일정한 값을 주지 않는 경우도 본적이 있어 주의해서 사용하면 좋을듯 합니다! 그래도도움이많이되긴합니다!ㅎㅎ
[Basic Configuration]
$ roscd realsense2_camera
$ cd launch/includes
$ gedit nodelet.launch.xml
<arg name="depth_width" default="640"/>
<arg name="depth_height" default="480"/>
<arg name="enable_depth" default="true"/>
<arg name="depth_fps" default="30"/>
<arg name="infra_width" default="640"/>
<arg name="infra_height" default="480"/>
<arg name="enable_infra" default="true"/>
<arg name="enable_infra1" default="true"/>
<arg name="enable_infra2" default="true"/>
<arg name="infra_fps" default="30"/>
<arg name="color_width" default="640"/>
<arg name="color_height" default="480"/>
<arg name="enable_color" default="true"/>
<arg name="color_fps" default="30"/>
<arg name="gyro_fps" default="200"/>
<arg name="accel_fps" default="63"/>
<arg name="enable_gyro" default="false"/>
<arg name="enable_accel" default="false"/>
<arg name="unite_imu_method" default="linear_interpolation"/> \
<!-- Options are: [none, copy, linear_interpolation] -->
<arg name="json_file_path" default="$(find ~)/high_acc_emitter_off.json"/>
<arg name="initial_reset" default="false"/>
[About JSON files]
- launch file 에서 상위단의 argument를 조정했다면 json file은 상세적인 parameter를 저장하고 있는 파일이다. 쉽게말하면configfile이라고생각하면된다!
- 저자도 파라미터 전부는 모르지만 parameter 중 auto exposure & emittor 관련 된 것들을 수정할 때 사용
- 예를들면, "controls-autoexposure-auto" autoexposure관련 & "controls-laserstate" emittor관련
- 추가로 depth 에 관한 부분도 조정할 수 있는데 json file과 친해지면 좋을듯합니다! (굳이 realsense-viewer에서 조정안해도 무관!)
- 원하는 json file을 만들어두면 launch file 중 <arg name="json_file_path" default=""> 에 넣어서 원하는 환경에 depend 하게 데이터를 취득할 수 있음!!
{
"aux-param-autoexposure-setpoint": "1536",
"aux-param-colorcorrection1": "0.298828",
"aux-param-colorcorrection10": "-0",
"aux-param-colorcorrection11": "-0",
"aux-param-colorcorrection12": "-0",
"aux-param-colorcorrection2": "0.293945",
"aux-param-colorcorrection3": "0.293945",
"aux-param-colorcorrection4": "0.114258",
"aux-param-colorcorrection5": "-0",
"aux-param-colorcorrection6": "-0",
"aux-param-colorcorrection7": "-0",
"aux-param-colorcorrection8": "-0",
"aux-param-colorcorrection9": "-0",
"aux-param-depthclampmax": "65536",
"aux-param-depthclampmin": "0",
"aux-param-disparityshift": "0",
"controls-autoexposure-auto": "True",
"controls-autoexposure-manual": "8500",
"controls-color-autoexposure-auto": "True",
"controls-color-autoexposure-manual": "166",
"controls-color-backlight-compensation": "0",
"controls-color-brightness": "0",
"controls-color-contrast": "50",
"controls-color-gain": "64",
"controls-color-gamma": "300",
"controls-color-hue": "0",
"controls-color-power-line-frequency": "3",
"controls-color-saturation": "64",
"controls-color-sharpness": "50",
"controls-color-white-balance-auto": "True",
"controls-color-white-balance-manual": "4600",
"controls-depth-gain": "16",
"controls-laserpower": "150",
"controls-laserstate": "off",
"ignoreSAD": "0",
"param-amplitude-factor": "0",
"param-autoexposure-setpoint": "1536",
"param-censusenablereg-udiameter": "6",
"param-censusenablereg-vdiameter": "7",
"param-censususize": "6",
"param-censusvsize": "7",
"param-depthclampmax": "65536",
"param-depthclampmin": "0",
"param-depthunits": "1000",
"param-disableraucolor": "0",
"param-disablesadcolor": "0",
"param-disablesadnormalize": "0",
"param-disablesloleftcolor": "0",
"param-disableslorightcolor": "1",
"param-disparitymode": "0",
"param-disparityshift": "0",
"param-lambdaad": "751",
"param-lambdacensus": "6",
"param-leftrightthreshold": "10",
"param-maxscorethreshb": "2893",
"param-medianthreshold": "796",
"param-minscorethresha": "4",
"param-neighborthresh": "108",
"param-raumine": "6",
"param-rauminn": "3",
"param-rauminnssum": "7",
"param-raumins": "2",
"param-rauminw": "2",
"param-rauminwesum": "12",
"param-regioncolorthresholdb": "0.785714",
"param-regioncolorthresholdg": "0.565558",
"param-regioncolorthresholdr": "0.985323",
"param-regionshrinku": "3",
"param-regionshrinkv": "0",
"param-robbinsmonrodecrement": "25",
"param-robbinsmonroincrement": "2",
"param-rsmdiffthreshold": "1.65625",
"param-rsmrauslodiffthreshold": "0.71875",
"param-rsmremovethreshold": "0.809524",
"param-scanlineedgetaub": "13",
"param-scanlineedgetaug": "15",
"param-scanlineedgetaur": "30",
"param-scanlinep1": "155",
"param-scanlinep1onediscon": "160",
"param-scanlinep1twodiscon": "59",
"param-scanlinep2": "190",
"param-scanlinep2onediscon": "507",
"param-scanlinep2twodiscon": "493",
"param-secondpeakdelta": "647",
"param-texturecountthresh": "0",
"param-texturedifferencethresh": "1722",
"param-usersm": "1",
"param-zunits": "1000",
"stream-depth-format": "Z16",
"stream-fps": "30",
"stream-height": "480",
"stream-ir-format": "R8L8",
"stream-width": "640"
}
[Others]
- [중요] Auto Exposure !!!
- 카메라에서는 자동적으로 노출을 조절하게 되는데 자동으로 설정하게 되면 실내 및 야외에서 위치 추정시 자동 노출 조절 때문에 이미지들 간의 matching 에 어려움이 생기게 됨
- 따라서, realsense-viewer를 통해서 auto exposure를 disable 로 설정 !!
realsense-viewer 안에서 체크할 수 있음!