Edited at

Jetson NanoでIntel Realsense D435を使う方法(ROS対応)

test.gif


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に関しては、以下記事を参考にセットアップを実施しておいて下さい。この後、ビルドの際にメモリを大量に使うので、下記記事のSwapファイルの設定もしておいて下さい。

Jetson Nano関係のTIPSまとめ


Realsenseのファームウェアアップデート

 Windows用とLinux用がありますので、好きな方でアップデート実施下さい。

インテル® RealSense™ D400 シリーズ・カメラのための Windows * ファームウェア更新ユーザーガイド

インテル® RealSense™ D400 シリーズ・カメラ用 Linux * ファームウェア・アップデート・ユーザー・ガイド

 Jetson Nanoから可能かは不明です。基本的には普通のPCで実施するのが良いと思います。


Realsenseドライバ(Librealsense)インストール

 JetsonHackさんのJetson Nano – RealSense Tracking Cameraという記事を参考にしました。


カーネルへのパッチ当て

 最初にカーネルにパッチを当てます。パッチ当てなくても動きましたが、動作中大量のエラーが出たり、不安定だったりするので、パッチ当てを推奨します。

 SDカードの容量は、64GB必要となります。カーネルへのパッチ当ては、途中で失敗すると最悪起動できなくなるので、必要なファイルがある場合は、あらかじめバックアップをとった上で実行しましょう(私は一回起動できなくなりました)。

 パッチ当ては、以下コマンドを実行してください。

$ cd && git clone https://github.com/jetsonhacksnano/installLibrealsense

$ cd ~/installLibrealsense
$ ./patchUbuntu.sh

 カーネルのビルドもしているため、完了まで数時間かかります(パッチ当てに関しては kuma_XXP さんよりTwitterで情報いただきました、ありがとうございます)。

 パッチを当てないと、この後Realsenseを使用したとき、以下のように大量のエラーが出たりします。

realsense_error.jpg


Librealsenseインストール

 パッチを当てた場合は、再起動した後以下2行のスクリプトを実行することで、Librealsenseというリアルセンス用のドライバをインストールすることが可能です。

$ cd ~/installLibrealsense

$ ./installLibrealsense.sh

 パッチを当ててない場合は、以下でインストールできます(非推奨)

$ cd & git clone https://github.com/jetsonhacksnano/installLibrealsense

$ cd ~/installLibrealsense
$ ./installLibrealsense.sh

 インストール完了したら、以下コマンドで動作確認ができます。

$ realsense-viewer

 Realsense Viewerを起動して、左のStereo ModuleとRGB Moduleのトグルスイッチをオンにして、以下の図のように画像とデプスマップ(奥行き情報)が表示されたらOKです。

realsense_ok.JPG


Intel RealsenseのROS対応

 続いて、RealsenseをROSで動かす方法です。上記のLibrealsenseのセットアップをした上で、以下記事参考にJetson NanoにROSをインストールして下さい。

Jetson NanoにROSをインストールする方法

 続いて、以下コマンド実行してrealsense-rosをインストールします。

$ cd ~/catkin_ws/src

$ git clone https://github.com/IntelRealSense/realsense-ros
$ cd realsense-ros
$ git checkout -b 2.2.3 2.2.3
$ catkin build
$ source ~/.bashrc

 私はビルドシステムにcatkin buildを使用していますが、catkin makeの場合は、5行目のcatkin buildcatkin makeとして下さい。よく意味が分からない人は、catkin makeです。

 続いて、以下を実行してrealsenseを立ち上げます。

$ roslaunch realsense2_camera demo_pointcloud.launch

 以下のように、rviz上にリアルセンスの3次元点群が表示されたらOKです。

test.gif


3次元画像処理

 続いて、3次元画像処理をしてみましょう。詳細は以下記事参照下さい。

PCL(Point Cloud Library)+ROSで3次元画像処理入門 

カラー処理

 画像処理プログラムを試す場合は、以下コマンドでセットアップして下さい。

$ sudo apt-get install 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

 以下のような点群が表示された状態にします。

20190605220838.jpg

 ここで、以下コマンドを実行して、赤をフィルタリングします。

$ rosparam set /max_r 0

 すると以下のように赤が抜けた点群が表示されます。

20190605220810.jpg


まとめ

 Jetson NanoでIntel Realsense D435をROSで動かしてみました。

 重いはずの3次元画像の表示や処理がJetson Nano上でサクサク動くからビックリです。GPUのおかげでしょうか。素晴らしいですね。


参考サイト

Intel RealSense Depth Cameraがいかにやばいかについて

Intel RealSense デプスカメラ D435 を Unity で遊んでみた


関連記事

Jetson Nano関係のTIPSまとめ