LoginSignup
43
40

More than 1 year has passed since last update.

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

Last updated at Posted at 2019-06-05

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に関しては、以下記事を参考にセットアップを実施しておいて下さい。

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で情報いただきました、ありがとうございます)。

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

realsense_error.jpg

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_ok.JPG

 ここで、Realsenseのファームウェアのバージョンが古いと、ファームウェアのアップデートが促されます。ファームウェアが古いと、問題が起きる可能性があるので、最新にアップデートしておくのがオススメです。

 ここでは、ファームウェアのバージョンは05.12.10.00を前提に進めます。

Intel RealsenseのROS対応

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

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

 JetPack 4.4を使用している場合は、以下コマンドを実行してシンボリックリンクをはっておいてください。OpenCVが4.x系になったための対応です。

$ sudo ln -s /usr/include/opencv4/ /usr/include/opencv

参考:ROS Perception

 続いて、以下コマンド実行して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 buildcatkin makeとして下さい。よく意味が分からない人は、catkin makeです。

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

$ roslaunch realsense2_camera demo_pointcloud.launch

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

test.gif

うまく動かない場合

 Realsenseは、ファームウェア、librealsense、realsense-rosの動く組み合わせが決まっています。realsense-rosのreleaseページで、正しい組み合せを確認するようにしましょう。

 ファームウェアは、Firmware releases D400でダウンロードができます。realsense viewerで好きなバージョンのファームウェアを書き込みましょう。

 librealsenseは、aptコマンドで異なるバージョンをインストールしましょう。バージョンの調べ方などは、以下記事などを参照ください。

重要なのに忘れがちな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に変えて以下のような点群が表示された状態にします。
20190605220838.jpg

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

$ rosparam set /max_r 10

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

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の対応を追記
43
40
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
40