Ros에서 DJI Drone Matrice 100과 RealSense D435i의 IMU 가속도 센서 성능 비교
정확한 가속도 정보를 얻을 수 있는지 여부는 중요합니다.
이번에는 DJI Drone Matrice 100과 RealSense D435i의 IMU 가속도 센서 성능을 비교해 보겠습니다.
비교 환경
우분투 16.04 + ROS Kinetic
DJI Drone Matrice 100
DJI Onboard SDK (OSDK) 3.8
DJI Onboard SDK ROS 3.8
RealSense D435i
realsense-ros 2.2.8
비교 방법
DJI Drone Matrice 100에 RealSense D435i를 올려
정지 상태와 손으로 무인 항공기를 이동하는 상태에서 ROS의 rosbag을 얻고
rqt_bag에서 Z 방향의 가속도를 비교합니다.
비교의 참고치로서, 별도로 Lidar로부터 취한 드론 위치 차분의 시간 미분으로
자작한 가속도를 참고하여 비교합니다. (다른 참고 가능한 IMU 관성 센서가 없다)
비교 결론
DJI IMU 가속도의 오차가 RealSense보다 크다고 합니다.
ROS 시작
DJI Drone Matrice 100의 Ros 시작 launch file
<launch>
<node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk">
<!-- node parameters -->
<param name="serial_name" type="string" value="/dev/ttyUSB_dji_drone"/>
<param name="baud_rate" type="int" value="230400"/>
<param name="app_id" type="int" value="XXX"/>
<param name="app_version" type="int" value="1"/>
<param name="align_time" type="bool" value="false"/>
<param name="enc_key" type="string" value="XXX"/>
<param name="use_broadcast" type="bool" value="true"/>
</node>
</launch>
RealSense D435i의 Ros 시작 launch file
<launch>
<include file="$(find realsense2_camera)/launch/rs_camera.launch">
<!-- node parameters -->
<arg name="align_depth" value="true"/>
<arg name="linear_accel_cov" value="1.0"/>
<arg name="unite_imu_method" value="linear_interpolation"/>
<arg name="enable_fisheye" default="false"/>
<arg name="enable_depth" default="false"/>
<arg name="enable_infra1" value="false"/>
<arg name="enable_infra2" value="false"/>
<arg name="enable_color" default="false"/>
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
</include>
</launch>
ROS IMU Topic rate 비교
DJI /dji_sdk/imu Topic 100HZ
$ rostopic hz /dji_sdk/imu
subscribed to [/dji_sdk/imu]
average rate: 100.752
min: 0.001s max: 0.015s std dev: 0.00187s window: 98
RealSense /camera/imu Topic 464HZ
$ rostopic hz /camera/imu
subscribed to [/camera/imu]
average rate: 464.291
min: 0.000s max: 0.010s std dev: 0.00132s window: 455
ROS IMU Topic 데이터 내용 비교
DJI /dji_sdk/imu Topic
항목
항목명
유무
orientation
자세
있음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
모두 0
$ rostopic echo /dji_sdk/imu
header:
seq: 237
stamp:
secs: 1569478809
nsecs: 122336009
frame_id: "body_FLU"
orientation:
x: -0.00366802891774
y: -0.00091475364914
z: 0.773214044034
w: 0.634133858817
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00093776488211
y: 0.00052648014389
z: 0.0036175835412
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
x: 0.484034068901
y: -0.087910623651
z: -0.0438347323649
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
RealSense /camera/imu Topic
항목
항목명
유무
orientation
자세
없음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
velocity:0.01 acceleration:1.0
*covariance 공분산은 rs_camera.launch 설정 파일에서 고정 설정
$ rostopic echo /camera/imu
header:
seq: 864
stamp:
secs: 1569478808
nsecs: 504884720
frame_id: "camera_imu_optical_frame"
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 0.0
orientation_covariance: [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00175957498141
y: -0.00349944853224
z: -0.00175487692468
angular_velocity_covariance: [0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.01]
linear_acceleration:
x: -0.128430217505
y: 0.153774112463
z: 9.47220611572
linear_acceleration_covariance: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
IMU의 Z 방향 가속도 비교
비교 대상 데이터 처리
DJI IMU와 RealSense IMU 그대로 비교에는 보기 어렵기 때문에 데이터를 가공합니다.
DJI Drone Matrice 100에 RealSense D435i를 올려
정지 상태와 손으로 무인 항공기를 이동하는 상태에서 ROS의 rosbag을 얻고
rqt_bag에서 Z 방향의 가속도를 비교합니다.
비교의 참고치로서, 별도로 Lidar로부터 취한 드론 위치 차분의 시간 미분으로
자작한 가속도를 참고하여 비교합니다. (다른 참고 가능한 IMU 관성 센서가 없다)
비교 결론
DJI IMU 가속도의 오차가 RealSense보다 크다고 합니다.
ROS 시작
DJI Drone Matrice 100의 Ros 시작 launch file
<launch>
<node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk">
<!-- node parameters -->
<param name="serial_name" type="string" value="/dev/ttyUSB_dji_drone"/>
<param name="baud_rate" type="int" value="230400"/>
<param name="app_id" type="int" value="XXX"/>
<param name="app_version" type="int" value="1"/>
<param name="align_time" type="bool" value="false"/>
<param name="enc_key" type="string" value="XXX"/>
<param name="use_broadcast" type="bool" value="true"/>
</node>
</launch>
RealSense D435i의 Ros 시작 launch file
<launch>
<include file="$(find realsense2_camera)/launch/rs_camera.launch">
<!-- node parameters -->
<arg name="align_depth" value="true"/>
<arg name="linear_accel_cov" value="1.0"/>
<arg name="unite_imu_method" value="linear_interpolation"/>
<arg name="enable_fisheye" default="false"/>
<arg name="enable_depth" default="false"/>
<arg name="enable_infra1" value="false"/>
<arg name="enable_infra2" value="false"/>
<arg name="enable_color" default="false"/>
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
</include>
</launch>
ROS IMU Topic rate 비교
DJI /dji_sdk/imu Topic 100HZ
$ rostopic hz /dji_sdk/imu
subscribed to [/dji_sdk/imu]
average rate: 100.752
min: 0.001s max: 0.015s std dev: 0.00187s window: 98
RealSense /camera/imu Topic 464HZ
$ rostopic hz /camera/imu
subscribed to [/camera/imu]
average rate: 464.291
min: 0.000s max: 0.010s std dev: 0.00132s window: 455
ROS IMU Topic 데이터 내용 비교
DJI /dji_sdk/imu Topic
항목
항목명
유무
orientation
자세
있음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
모두 0
$ rostopic echo /dji_sdk/imu
header:
seq: 237
stamp:
secs: 1569478809
nsecs: 122336009
frame_id: "body_FLU"
orientation:
x: -0.00366802891774
y: -0.00091475364914
z: 0.773214044034
w: 0.634133858817
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00093776488211
y: 0.00052648014389
z: 0.0036175835412
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
x: 0.484034068901
y: -0.087910623651
z: -0.0438347323649
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
RealSense /camera/imu Topic
항목
항목명
유무
orientation
자세
없음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
velocity:0.01 acceleration:1.0
*covariance 공분산은 rs_camera.launch 설정 파일에서 고정 설정
$ rostopic echo /camera/imu
header:
seq: 864
stamp:
secs: 1569478808
nsecs: 504884720
frame_id: "camera_imu_optical_frame"
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 0.0
orientation_covariance: [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00175957498141
y: -0.00349944853224
z: -0.00175487692468
angular_velocity_covariance: [0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.01]
linear_acceleration:
x: -0.128430217505
y: 0.153774112463
z: 9.47220611572
linear_acceleration_covariance: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
IMU의 Z 방향 가속도 비교
비교 대상 데이터 처리
DJI IMU와 RealSense IMU 그대로 비교에는 보기 어렵기 때문에 데이터를 가공합니다.
DJI Drone Matrice 100의 Ros 시작 launch file
<launch>
<node pkg="dji_sdk" type="dji_sdk_node" name="dji_sdk">
<!-- node parameters -->
<param name="serial_name" type="string" value="/dev/ttyUSB_dji_drone"/>
<param name="baud_rate" type="int" value="230400"/>
<param name="app_id" type="int" value="XXX"/>
<param name="app_version" type="int" value="1"/>
<param name="align_time" type="bool" value="false"/>
<param name="enc_key" type="string" value="XXX"/>
<param name="use_broadcast" type="bool" value="true"/>
</node>
</launch>
RealSense D435i의 Ros 시작 launch file
<launch>
<include file="$(find realsense2_camera)/launch/rs_camera.launch">
<!-- node parameters -->
<arg name="align_depth" value="true"/>
<arg name="linear_accel_cov" value="1.0"/>
<arg name="unite_imu_method" value="linear_interpolation"/>
<arg name="enable_fisheye" default="false"/>
<arg name="enable_depth" default="false"/>
<arg name="enable_infra1" value="false"/>
<arg name="enable_infra2" value="false"/>
<arg name="enable_color" default="false"/>
<arg name="enable_gyro" default="true"/>
<arg name="enable_accel" default="true"/>
</include>
</launch>
ROS IMU Topic rate 비교
DJI /dji_sdk/imu Topic 100HZ
$ rostopic hz /dji_sdk/imu
subscribed to [/dji_sdk/imu]
average rate: 100.752
min: 0.001s max: 0.015s std dev: 0.00187s window: 98
RealSense /camera/imu Topic 464HZ
$ rostopic hz /camera/imu
subscribed to [/camera/imu]
average rate: 464.291
min: 0.000s max: 0.010s std dev: 0.00132s window: 455
ROS IMU Topic 데이터 내용 비교
DJI /dji_sdk/imu Topic
항목
항목명
유무
orientation
자세
있음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
모두 0
$ rostopic echo /dji_sdk/imu
header:
seq: 237
stamp:
secs: 1569478809
nsecs: 122336009
frame_id: "body_FLU"
orientation:
x: -0.00366802891774
y: -0.00091475364914
z: 0.773214044034
w: 0.634133858817
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00093776488211
y: 0.00052648014389
z: 0.0036175835412
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
x: 0.484034068901
y: -0.087910623651
z: -0.0438347323649
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
RealSense /camera/imu Topic
항목
항목명
유무
orientation
자세
없음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
velocity:0.01 acceleration:1.0
*covariance 공분산은 rs_camera.launch 설정 파일에서 고정 설정
$ rostopic echo /camera/imu
header:
seq: 864
stamp:
secs: 1569478808
nsecs: 504884720
frame_id: "camera_imu_optical_frame"
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 0.0
orientation_covariance: [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00175957498141
y: -0.00349944853224
z: -0.00175487692468
angular_velocity_covariance: [0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.01]
linear_acceleration:
x: -0.128430217505
y: 0.153774112463
z: 9.47220611572
linear_acceleration_covariance: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
IMU의 Z 방향 가속도 비교
비교 대상 데이터 처리
DJI IMU와 RealSense IMU 그대로 비교에는 보기 어렵기 때문에 데이터를 가공합니다.
$ rostopic hz /dji_sdk/imu
subscribed to [/dji_sdk/imu]
average rate: 100.752
min: 0.001s max: 0.015s std dev: 0.00187s window: 98
$ rostopic hz /camera/imu
subscribed to [/camera/imu]
average rate: 464.291
min: 0.000s max: 0.010s std dev: 0.00132s window: 455
DJI /dji_sdk/imu Topic
항목
항목명
유무
orientation
자세
있음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
모두 0
$ rostopic echo /dji_sdk/imu
header:
seq: 237
stamp:
secs: 1569478809
nsecs: 122336009
frame_id: "body_FLU"
orientation:
x: -0.00366802891774
y: -0.00091475364914
z: 0.773214044034
w: 0.634133858817
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00093776488211
y: 0.00052648014389
z: 0.0036175835412
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration:
x: 0.484034068901
y: -0.087910623651
z: -0.0438347323649
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
RealSense /camera/imu Topic
항목
항목명
유무
orientation
자세
없음
angular_velocity
각속도
있음
linear_acceleration
Line 가속도
있음
covariance
공분산
velocity:0.01 acceleration:1.0
*covariance 공분산은 rs_camera.launch 설정 파일에서 고정 설정
$ rostopic echo /camera/imu
header:
seq: 864
stamp:
secs: 1569478808
nsecs: 504884720
frame_id: "camera_imu_optical_frame"
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 0.0
orientation_covariance: [-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity:
x: 0.00175957498141
y: -0.00349944853224
z: -0.00175487692468
angular_velocity_covariance: [0.01, 0.0, 0.0, 0.0, 0.01, 0.0, 0.0, 0.0, 0.01]
linear_acceleration:
x: -0.128430217505
y: 0.153774112463
z: 9.47220611572
linear_acceleration_covariance: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
IMU의 Z 방향 가속도 비교
비교 대상 데이터 처리
DJI IMU와 RealSense IMU 그대로 비교에는 보기 어렵기 때문에 데이터를 가공합니다.
rqt_bag로 비교
정지 상태와 손으로 드론을 이동하는 상태의 비교 결과
정지 상태 부분의 확대 비교
드론이 정지 상태로 놓여 있습니다.
IMU
값
DJI
3개의 IMU의 노이즈 진동 최대치의 경향이 대체로 동일
RealSense
3개의 IMU의 노이즈 진동 최대치의 경향이 대체로 동일
자작
3개의 IMU의 노이즈 진동 최대치의 경향이 대체로 동일
수동 이동 상태 부분의 확대 비교
손으로 드론을 위로 이동한 후 지면으로 돌아온 상태의 비교 결과
IMU
값
DJI
최대값과 RealSense, 자작 최대값의 차이가 크다
RealSense
최대치와 자작 최대치의 경향이 대체로 동일
자작
최대값과 RealSense 최대값의 추세가 거의 동일
Reference
이 문제에 관하여(Ros에서 DJI Drone Matrice 100과 RealSense D435i의 IMU 가속도 센서 성능 비교), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-koh/items/7e51301c2c55ede0b0f8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)