Intel Realsense D415/D435
Intel RealsenseはIntel社が開発しているDepthカメラ(3次元的な計測ができるカメラ)です。
普通のカメラが2次元でしか対象を捉えられないのに対して、Depthカメラは対象の奥行き(距離)も知ることができるので、ロボットの眼にピッタリのデバイスです。
Realsenseに関して、詳しくは、本記事の最後の参考リンクを参照下さい。
この記事では、Jetson Nanoでのセットアップ方法、ROS(Robot Operating System)との連携に関して説明いたします。
ちなみに本記事ではD435でセットアップと動作確認を行なっておりますが、D415でも基本的に同一となります(動作は未確認)。
Jetson NanoへのIntel Realsense D435のセットアップ
今回は、Jetson Nano上でRealsenseをROSで使うところまで実施したいと思います。大きく以下4つの工程が必要です。
- Jetson Nanoセットアップ
- Realsenseのファームウェアアップデート
- Realsenseドライバ(Librealsense)インストール
- RealsenseのROS対応
順に実施していきます。
Jetson Nanoセットアップ
Jetson Nanoに関しては、以下記事を参考にセットアップを実施しておいて下さい。
Jetson Nanoをセットアップしてディープラーニングで画像認識試してみた
JetPack 4.5で確認済みです。確認したバージョンは JetPack 4.4, JetPack 4.2.2となります。JetPack 4.4以降の場合は、OpenCV4.xを使用していることによる注意点があるので、後述します。
Realsenseのファームウェアアップデート
Windows用とLinux用がありますので、好きな方でアップデート実施下さい。また、最近のアップデートによりRealsenseの動作確認に使用する「realsense-viewer」というソフト上で簡単にファームウェアをアップデートできるようになったので、この作業は飛ばしても大丈夫です(Jetson Nano上でアップデート可能です)。
インテル® RealSense™ D400 シリーズ・カメラのための Windows * ファームウェア更新ユーザーガイド
Firmware Update Tool (rs-fw-update)
Jetson Nanoから可能かは不明です。基本的には普通のPCで実施するのが良いと思います。
Realsenseドライバ(Librealsense)インストール
JetsonHackさんのJetson Nano – RealSense Tracking Cameraという記事を参考にしました。
カーネルへのパッチ当て
追記:最新のRealsenseドライバでカーネルのパッチ当て作業は不要になりましたので、ここは飛ばしてLibrealsenseのインストールに進んで下さい。以降の情報は、参考情報として残しておきます。
最初にカーネルにパッチを当てます。パッチ当てなくても動きましたが、動作中大量のエラーが出たり、不安定だったりするので、パッチ当てを推奨します。
SDカードの容量は、64GB必要となります。カーネルへのパッチ当ては、途中で失敗すると最悪起動できなくなるので、必要なファイルがある場合は、あらかじめバックアップをとった上で実行しましょう(私は一回起動できなくなりました)。
パッチ当ては、以下コマンドを実行してください。
$ cd && git clone https://github.com/jetsonhacksnano/installLibrealsense
$ cd ~/installLibrealsense
$ ./patchUbuntu.sh
カーネルのビルドもしているため、完了まで数時間かかります(パッチ当てに関しては kuma_XXP さんよりTwitterで情報いただきました、ありがとうございます)。
ありがとうございます。 ROSでうまく動かなかったので、参考にさせていただきます。
— XXP@「ちょめ」 (@kuma_XXP) 2019年6月5日
RealSense Depth Camerasの場合、カーネルモデルにパッチを適用するとパフォーマンスがはるかに向上します。注: D435iをお持ちの場合、パッチなしではカメラは検出されません。
とのこと
パッチを当てないと、この後Realsenseを使用したとき、以下のように大量のエラーが出たりします。
Librealsenseインストール
以下コマンドでインストールできます。
$ cd & git clone https://github.com/jetsonhacksnano/installLibrealsense
$ cd ~/installLibrealsense
$ ./installLibrealsense.sh
インストール完了したら、以下コマンドで「realsense-viewer」を立ち上げ動作確認ができます。
$ realsense-viewer
Realsense Viewerを起動して、左のStereo ModuleとRGB Moduleのトグルスイッチをオンにして、以下の図のように画像とデプスマップ(奥行き情報)が表示されたらOKです。
ここで、Realsenseのファームウェアのバージョンが古いと、ファームウェアのアップデートが促されます。ファームウェアが古いと、問題が起きる可能性があるので、最新にアップデートしておくのがオススメです。
ここでは、ファームウェアのバージョンは05.12.10.00
を前提に進めます。
Intel RealsenseのROS対応
続いて、RealsenseをROSで動かす方法です。上記のLibrealsenseのセットアップをした上で、以下記事参考にJetson NanoにROSをインストールして下さい。
JetPack 4.4を使用している場合は、以下コマンドを実行してシンボリックリンクをはっておいてください。OpenCVが4.x系になったための対応です。
$ sudo ln -s /usr/include/opencv4/ /usr/include/opencv
続いて、以下コマンド実行してrealsense-rosをインストールします。
$ sudo apt install -y ros-melodic-ddynamic-reconfigure
$ cd ~/catkin_ws/src
$ git clone https://github.com/IntelRealSense/realsense-ros
$ catkin build
$ source ~/.bashrc
私はビルドシステムにcatkin buildを使用していますが、catkin makeの場合は、5行目のcatkin build
をcatkin make
として下さい。よく意味が分からない人は、catkin make
です。
続いて、以下コマンドを実行してrealsenseを立ち上げます。
$ roslaunch realsense2_camera demo_pointcloud.launch
以下のように、rviz上にリアルセンスの3次元点群が表示されたらOKです。
うまく動かない場合
Realsenseは、ファームウェア、librealsense、realsense-rosの動く組み合わせが決まっています。realsense-rosのreleaseページで、正しい組み合せを確認するようにしましょう。
ファームウェアは、Firmware releases D400でダウンロードができます。realsense viewerで好きなバージョンのファームウェアを書き込みましょう。
librealsenseは、aptコマンドで異なるバージョンをインストールしましょう。バージョンの調べ方などは、以下記事などを参照ください。
realsense-rosは、以下のように好きなバージョンをcheckoutしてビルドします。
$ cd ~/catkin_ws/src/realsense-ros
$ git checkout -b 2.2.3 2.2.3
$ catkin build
3次元画像処理
続いて、3次元画像処理をしてみましょう。詳細は以下記事参照下さい。
PCL(Point Cloud Library)+ROSで3次元画像処理入門
カラー処理
画像処理プログラムを試す場合は、以下コマンドでセットアップして下さい。
$ sudo apt install -y ros-melodic-pcl-ros
$ cd ~/catkin_ws/src
$ git clone https://github.com/karaage0703/pcl_ros_processing
$ catkin build
$ source ~/.bashrc
例えば、色フィルタを使いたい場合は、以下実行して下さい。
$ rosrun pcl_ros_processing color_filter_rgb input:=/camera/depth/color/points
ここでrvizのPointCloud2のTopicを/camera/depth/color/points
から/color_filter
に変えて以下のような点群が表示された状態にします。
ここで、以下コマンドを実行して、赤をフィルタリングします。
$ rosparam set /max_r 10
Pythonで使いたい場合
PyRealsenseを使うのが良いです。以下記事にまとめたので参照下さい。
ハードウェア情報が知りたい場合
シリアルNoやファームウェアバージョンをCUIで知りたい場合は、以下コマンドを実行して下さい。
$ rs-enumerate-devices -o
GUIであれば、Realsense Viewerでハードウェア情報を確認できます。
Raspberry Piの場合
以下記事にセットアップ方法記載しました。
その他の環境の場合
以下記事にまとめてあります。
まとめ
Jetson NanoでIntel Realsense D435をROSで動かしてみました。
重いはずの3次元画像の表示や処理がJetson Nano上でサクサク動くからビックリです。GPUのおかげでしょうか。素晴らしいですね。
参考サイト
Intel RealSense Depth Cameraがいかにやばいかについて
Intel RealSense デプスカメラ D435 を Unity で遊んでみた
関連記事
変更履歴
- 2021/06/21 他の環境でのセットアップ方法へのリンク追記
- 2020/06/05 JetPack 4.4の対応を追記