Realsense d435i ドライバーのインストール、構成、およびキャリブレーション

前に書いた
この記事は ubuntu20.04 にインストールされていますが、他のバージョンも同様です。考えられる問題は主に、インストール関連のライブラリのそれぞれのバージョンの不一致によって引き起こされるため、問題は異なりますが、一般に解決するのは簡単で、通常の状況では発生しません。

Intel Realsense Depth Camera D435i は、D435 の強力な深度認識機能と慣性測定ユニット (IMU) を組み合わせて、RGBD、単眼および両眼のスラム研究および実際の戦闘に対応します。この記事では、実際の戦闘スラム アルゴリズムの前提条件であり不可欠な部分でもある D435i 関連ツールのインストール、設定、およびキャリブレーションを紹介します。実物は次の写真に示されています。
ここに画像の説明を挿入

1. ツールのインストール

D435i ツールには、Intel Realsense SDK2.0 および realsense-ros が含まれます。

1.インテル リアルセンス SDK2.0
(1) ソースコードをダウンロードする
  • git clone https://github.com/IntelRealSense/librealsense.git
  • cd librealsense
(2) インストールの依存関係
  • sudo apt-get install libudev-dev pkg-config libgtk-3-dev
  • sudo apt-get install libusb-1.0-0-dev pkg-config
  • sudo apt-get インストール libglfw3-dev
  • sudo apt-get インストール libssl-dev
(3) 権限を追加する
  • sudo cp config/99-realsense-libusb.rules /etc/udev/rulesgger
  • sudo udevadm コントロール --reload-rules && udevadm トリガー
(4) コンパイルとインストール
  • mkdir ビルド
  • CD ビルド
  • cmake …
  • 作る
  • sudo メイクインストール
(5) テスト
  • CD サンプル/キャプチャ
  • ./rs-キャプチャ

また

  • リアルセンスビューア

インストールが成功すると、SDK インターフェイスが次のように表示されます。
ここに画像の説明を挿入

注: USB3.0インターフェイスを使用してください。

2.realsense-rosをインストールする

両眼データと imu データを公開するには ros を使用する必要があるため、realsense-ros をインストールする必要があります。

(1) ワークスペースの作成、ソースコードのダウンロード、コンパイル
  • mkdir -p realsense_ws/src
  • cd realsense_ws/src
  • git clone https://github.com/IntelRealSense/realsense-ros.git
  • git clone https://github.com/pal-robotics/ddynamic_reconfigure.git
  • catkin_make の
    コンパイルが完了し、個人の好みに応じてソースを永続的に追加できます。
  • echo “source /realsense_ws/devel/setup.bash” >> ~/.bashrc
  • ソース ~/.bashrc
(2) テスト

前のステップでソースが追加されていない場合は、launch を実行する必要があります。

  • ソースdevel/setup.bash
  • roslaunch realsense2_camera rs_camera.launch

公開されたトピックを表示できます

  • ロストピックリスト

以下に示すように
ここに画像の説明を挿入

2、構成

vins_fusion 実戦では d435i を使用する必要があるため、双眼 + imu 構成とし、rs_camera.launch を以下のように修正します。RGBD などのその他のものは、rs_rgbd.launch を参照することで必要に応じて変更できます。

1. <launch>
2.   <arg name="serial_no"           default=""/>
3.   <arg name="json_file_path"      default=""/>
4.   <arg name="camera"              default="camera"/>
5.   <arg name="tf_prefix"           default="$(arg camera)"/>
6.   <arg name="external_manager"    default="false"/>
7.   <arg name="manager"             default="realsense2_camera_manager"/>
8. 
9.   <arg name="fisheye_width"       default="640"/>
10.   <arg name="fisheye_height"      default="480"/>
11.   <arg name="enable_fisheye"      default="false"/>
12. 
13.   <arg name="depth_width"         default="640"/>
14.   <arg name="depth_height"        default="480"/>
15.   <arg name="enable_depth"        default="false"/>
16. 
17.   <arg name="infra_width"        default="640"/>
18.   <arg name="infra_height"       default="480"/>
19.   <arg name="enable_infra1"       default="true"/>
20.   <arg name="enable_infra2"       default="true"/>
21. 
22.   <arg name="color_width"         default="640"/>
23.   <arg name="color_height"        default="480"/>
24.   <arg name="enable_color"        default="true"/>
25. 
26.   <arg name="fisheye_fps"         default="30"/>
27.   <arg name="depth_fps"           default="30"/>
28.   <arg name="infra_fps"           default="30"/>
29.   <arg name="color_fps"           default="30"/>
30.   <arg name="gyro_fps"            default="400"/>
31.   <arg name="accel_fps"           default="200"/>
32.   <arg name="enable_gyro"         default="true"/>
33.   <arg name="enable_accel"        default="true"/>
34. 
35.   <arg name="enable_pointcloud"         default="false"/>
36.   <arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
37.   <arg name="pointcloud_texture_index"  default="0"/>
38. 
39.   <arg name="enable_sync"               default="true"/>
40.   <arg name="align_depth"               default="true"/>
41. 
42.   <arg name="publish_tf"                default="true"/>
43.   <arg name="tf_publish_rate"           default="0"/>
44. 
45.   <arg name="filters"                   default=""/>
46.   <arg name="clip_distance"             default="-2"/>
47.   <arg name="linear_accel_cov"          default="0.01"/>
48.   <arg name="initial_reset"             default="false"/>
49.   <arg name="reconnect_timeout"         default="6.0"/>
50.   <arg name="unite_imu_method"          default="linear_interpolation"/>
51.   <arg name="topic_odom_in"             default="odom_in"/>
52.   <arg name="calib_odom_file"           default=""/>
53.   <arg name="publish_odom_tf"           default="true"/>
54.   <arg name="allow_no_texture_points"   default="false"/>
65. 
66.   <group ns="$(arg camera)">
67.     <include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
68.       <arg name="tf_prefix"                value="$(arg tf_prefix)"/>
69.       <arg name="external_manager"         value="$(arg external_manager)"/>
70.       <arg name="manager"                  value="$(arg manager)"/>
71.       <arg name="serial_no"                value="$(arg serial_no)"/>
72.       <arg name="json_file_path"           value="$(arg json_file_path)"/>
73. 
74.       <arg name="enable_pointcloud"        value="$(arg enable_pointcloud)"/>
75.       <arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
76.       <arg name="pointcloud_texture_index"  value="$(arg pointcloud_texture_index)"/>
77.       <arg name="enable_sync"              value="$(arg enable_sync)"/>
78.       <arg name="align_depth"              value="$(arg align_depth)"/>
79. 
80.       <arg name="fisheye_width"            value="$(arg fisheye_width)"/>
81.       <arg name="fisheye_height"           value="$(arg fisheye_height)"/>
82.       <arg name="enable_fisheye"           value="$(arg enable_fisheye)"/>
83. 
84.       <arg name="depth_width"              value="$(arg depth_width)"/>
85.       <arg name="depth_height"             value="$(arg depth_height)"/>
86.       <arg name="enable_depth"             value="$(arg enable_depth)"/>
87. 
88.       <arg name="color_width"              value="$(arg color_width)"/>
89.       <arg name="color_height"             value="$(arg color_height)"/>
90.       <arg name="enable_color"             value="$(arg enable_color)"/>
91. 
92.       <arg name="infra_width"              value="$(arg infra_width)"/>
93.       <arg name="infra_height"             value="$(arg infra_height)"/>
94.       <arg name="enable_infra1"            value="$(arg enable_infra1)"/>
95.       <arg name="enable_infra2"            value="$(arg enable_infra2)"/>
96. 
97.       <arg name="fisheye_fps"              value="$(arg fisheye_fps)"/>
98.       <arg name="depth_fps"                value="$(arg depth_fps)"/>
99.       <arg name="infra_fps"                value="$(arg infra_fps)"/>
100.       <arg name="color_fps"                value="$(arg color_fps)"/>
101.       <arg name="gyro_fps"                 value="$(arg gyro_fps)"/>
102.       <arg name="accel_fps"                value="$(arg accel_fps)"/>
103.       <arg name="enable_gyro"              value="$(arg enable_gyro)"/>
104.       <arg name="enable_accel"             value="$(arg enable_accel)"/>
105. 
106.       <arg name="filters"                  value="$(arg filters)"/>
107.       <arg name="clip_distance"            value="$(arg clip_distance)"/>
108.       <arg name="linear_accel_cov"         value="$(arg linear_accel_cov)"/>
109.       <arg name="initial_reset"            value="$(arg initial_reset)"/>
110.       <arg name="reconnect_timeout"        value="$(arg reconnect_timeout)"/>
111.       <arg name="unite_imu_method"         value="$(arg unite_imu_method)"/>
112.       <arg name="topic_odom_in"            value="$(arg topic_odom_in)"/>
113.       <arg name="calib_odom_file"          value="$(arg calib_odom_file)"/>
114.       <arg name="publish_odom_tf"          value="$(arg publish_odom_tf)"/>
115.       <arg name="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/>
116.     </include>
117.   </group>
118. </launch>
109. 

3. 校正

d435i キャリブレーションは、主に双眼カメラの内部基準、歪み、および imu キャリブレーションを目的としています。

1. 構造化された光をオフにする

d435i には、深度情報の測定を支援するために使用される IR プロジェクトが含まれており、この記事では主に、IR が深度情報を提供せずに、単眼/双眼でスラム戦闘を完了することを目的としています。ただし、IR 構造光はイメージングに多くのスポットを引き起こし、キャリブレーションとその後の双眼使用に影響を与えるため、オフにする必要があります。
rs_camera.launchを変更する

  • gedit rs_camera.launch

パラメータの後に追加

<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.launch が有効になっている場合、構造化ライトがデフォルトでオフになることを意味します。
必要に応じて、次の方法を使用して開くことができます。

  • roslaunch realsense2_camera rs_camera.launch emitter_enable:=true
    デフォルトがオフの場合、実行するために次のパラメータemiter_enable:=trueを追加する必要はありません。
2. カメラの内部基準と歪みのキャリブレーション

カメラのデフォルトの内部パラメータを参照してください

  • ソースdevel/setup.bash
  • roslaunch realsense_camera rs_camera.launch
  • エコー/カメラ/infra1/camera_info

  • 以下に示すように、rostopic echo /camera/infra2/camera_info を実行します。
    ここに画像の説明を挿入

注: ここでは特に注意してください。双眼カメラを使用する必要がある場合、トピックは上記のとおりであり、/camera/color/camera_info ではありません。

図からわかるように、双眼レンズの内部パラメータはデフォルトで提供されていますが、歪みパラメータはありません。kailbr は、imu のランダム ウォークとカメラと imu の外部パラメータを調整するために後で使用する必要があるため、ここではカメラの内部基準の調整に組み込みツールは使用されません。

3.imu 6 面キャリブレーション

imu 6 面キャリブレーションとは、acc、ジャイロのゼロ バイアス、スケール ファクター、および非直交誤差のキャリブレーションを指します。realsense は公式ライブラリを提供します。

(1) インストールの依存関係
  • sudo pip3 pyrealsense2 をインストールします
(2) 走る

rs-imu-calibration フォルダーに入ります

  • cd librealsense/tools/rs-imu-calibration
  • Python rs-imu-calibration.py

以下に示すように
ここに画像の説明を挿入

プロンプトに従って 6 つの側面を回転します。詳細については、https://github.com/IntelRealSense/librealsense/blob/master/tools/rs-imu-calibration/README.mdを参照してください。

注: 1. 6 面のレベルを確保するために、Realsense 梱包箱を使用して 6 面校正ツールを作成できます 2. 各面のデータを収集するときは、振動の干渉がないことを確認してください。

(3) 校正データの保存と書き込み

6 面データの収集が完了すると、「
生データを保存しますか?」というプロンプトが表示されます。
「yes」と入力して完了し、ハードウェアに書き込みます。キャリブレーション データは、同じディレクトリの calibration.json に保存されます。

参考:

https://github.com/IntelRealSense/librealsense
https://github.com/IntelRealSense/realsense-ros
https://blog.csdn.net/Hanghang_article/details/103612300

おすすめ

転載: blog.csdn.net/u010196944/article/details/127238908