2020 年 07 月 30 日 Linux 技術ネタ
ロボットの状況認識や顔認識機能にはデプスカメラというものが用いられています。通常のカメラは風景を平面的に取得するのみですが、デプスカメラは、通常のカメラに加えて、深度センサを内蔵し、カメラが映す対象物までの距離(奥行情報)を取得、活用することができるカメラです。有名なものには Microsoft の kinect などがあります。また iphone にも、TrueDepth カメラと呼ばれる顔認証機能などを備えたデプスカメラが搭載されています。ロボットに搭載されるようなものになると、深度センサに加えてさらに赤外線センサや温度計なども搭載されるようです。
本稿では、デプスカメラの一つである Intel Realsense depth camera D435 について、いくつかの環境で動かしてみた結果をまとめています。第 1 部では、Realsense viewer によるカメラ映像確認と、ROS の機能を利用した映像確認を、Windows10, Ubuntu18.04(x86 PC, ARM Raspberry Pi 4),Raspbian(ARM Raspberry Pi 4) で実施した結果を報告いたします。
Intel 社から販売されているデプスカメラ(深度カメラ)の一つです。Intel の D400 シリーズは通常のカメラとしての映像出力に加えて、カメラ内での深度計算を行え、また 3D 情報を取得し利用することができます。開発にはオープンソースの SDK があり、これは C 言語や python、ROS などに対応しています。カメラ自体の大きさが 90mm×25mm×25mm と小さく、ロボットなどへの搭載も容易に行えそうです。
詳細なスペックは Intel の Web サイトにあります。
まず、IntelRealsense の Web ページに記載されている Get-started の手順に従って、realsense-viewer を用いた D435 のカメラ映像確認を行ってみます。
D435 と、PC や Raspberry Pi 4 の接続には、付属の USB-C ケーブルを使用します。
Github から Intel.Realsense.Viewer.exe をインストールします。
インストールした .exe ファイルを実行すると、Intel Realsense Viewer が起動します。
Ubuntu では次の手順に従い、Intel Realsense SDK をインストールすることで realsense-viewer が使用できるようになります。
・公開鍵を登録します。
# sudo apt-key adv --keyserver keys.gnupg.net --recv-key \
F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv -keyserver \
hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
・サーバをリポジトリのリストに登録します。
># sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u
・ライブラリをインストールします。
# sudo apt-get install librealsense2-dkms
# sudo apt-get install librealsense2-utils
・デバッグパッケージをインストールします。
# sudo apt-get install librealsense2-dev
# sudo apt-get install librealsense2-dbg
ここまでの手順を完了したら、端末を起動し、
# realsense-viewer
を実行することで、realsense-viewerが起動します。
Raspberry Pi 4 の端末を起動し、次の手順を実行します。
・パッケージのインストールを行います。
# sudo apt update && sudo apt upgrade
# sudo apt install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev cmake freeglut3-dev
・Intel RealSense SDK のインストールとビルドを行います。
# git clone https://github.com/intelrealsense/librealsense
# mkdir -p librealsense/build
# cd librealsense
# sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
# sudo udevadm control --reload-rules && udevadm trigger
# cd build
# cmake ..
# make -j4
# sudo make install
・OpenGL を有効にします。
# sudo raspi-config
7 Advanced Options → A8 GL Driver を選択します。
G2 GL (Fake KMS) を選択します。
config を終了し、Raspberry Pi 4 を再起動します。
・Realsense Viewer の起動
以下のコマンドを実行することで、Realsense Viewer を起動できます。
# cd librealsense/build
# ./tools/realsense-viewer/realsense-viewer
または
# realsense-viewer
Realsense Viewer の操作は各環境で共通です。カメラが接続されていれば、RealSense Viewer のウィンドウ左側にカメラの状態が表示されます。「Stereo Module」をONにすると、深度情報を映像として出力します。カメラの近くにあるものは青色、遠くにあるものは赤色で表現されています。
「RGB Camera」を ON にすると、通常のカメラ映像を確認できます。「Stereo Module」と同時に確認することもできます。
画面右上の「3D」をクリックすると、深度情報を3次元的に出力できます。
応用編として、ROS で D435 を利用する方法について記載します。
まず、RealSense SDK をインストールします。基本編でインストールした際と同様の手順を実行します。
Ubuntu install of ROS Melodic を参考に、以下の手順で Ubuntu に ROS Melodic をインストールします。
# sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > \
/etc/apt/sources.list.d/ros-latest.list'
# sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' \
--recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# curl -sSL \
'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
# sudo apt update
# sudo apt install ros-melodic-desktop-full
# apt search ros-melodic
# echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
# source ~/.bashrc
# sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
# sudo apt install python-rosdep
# sudo rosdep init
# rosdep update
Intel® RealSense™ ROS をインストールします。
・ros 用ワークスペースを作成します。
# cd
# mkdir -p ~/catkin_ws/src
# cd ~/catkin_ws/src/
・ros を github からクローンします。
# git clone https://github.com/IntelRealSense/realsense-ros.git
# cd realsense-ros/
# git checkout `git tag | sort -V | grep -P "^\d+\.\d+\.\d+" | tail -1`
# cd ..
・ddynamic_reconfigure をクローンします。
# git clone https://github.com/pal-robotics/ddynamic_reconfigure
・ビルドとインストールを行います。
# catkin_init_workspace
# cd ..
# catkin_make clean
# catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
# catkin_make install
# echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
# source ~/.bashrc
(参考: UbuntuでIntel Realsense D415を使えるようにするまで(ROSあり・なし両方))
・Image_view をインストールします。
# sudo apt install ros-melodic-image-view
・以下のコマンドをそれぞれ別々の端末で実行します。
# roslaunch realsense2_camera rs_camera.launch
# rosrun image_view image_view image:=/camera/color/image_raw
RGB カメラの映像が、image_view ウィンドウから確認できます。
・パッケージをインストールし、再度ビルドします。
# cd ~/catkin_ws
# sudo apt-get install ros-melodic-rgbd-launch
# catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
# catkin_make install
・以下のコマンドを別々の端末で実行します。
# roslaunch realsense2_camera rs_rgbd.launch
# rosrun rviz rviz
rviz ウィンドウが開いたら、ウィンドウ左側の設定を変更します。
・Fixed Frame を camera_link に設定
・「Add」をクリックして、"PointCloud2" を追加
・"PointCloud2" タブのTopicを、"/camera/depth_registered/points" に変更
以上を行うと、画面にカメラからの 3D 情報が出力されます。
Raspberry Pi 4 で Ubuntu を動作させたい場合、rpi-imager では server 版しかインストールできません。
そのため、非公式の desktop 版 Ubuntu をインストールして動作を確認しました。
以下の手順は、Raspbian に Intel Realsense SDK をインストールする手順とほとんど同じです。
・パッケージのアップデートとインストール
# sudo apt update && sudo apt upgrade
# sudo apt install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev libglfw3-dev cmake freeglut3-dev
・SDK のインストールとビルド
# git clone https://github.com/intelrealsense/librealsense
# mkdir -p librealsense/build
# cd librealsense
# sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
# sudo udevadm control --reload-rules && udevadm trigger
# cd build
# cmake ..
# make -j2
# sudo make install
・OpenGL を有効にする
# sudo raspi-config
raspi-config が実行されます。
7 Advanced Options → A7 GL Driver を選択します。
G2 GL (Fake KMS) を選択します。
設定が終わったら raspi-config を終了し、再起動します。
Ubuntu18.04(x86 VM Virtualbox)と同様の手順を実行します。
Ubuntu18.04(x86 VM Virtualbox) と同様の手順を実行します。
# sudo apt install ros-melodic-image-view
・以下のコマンドをそれぞれ別々の端末で実行します。
# roslaunch realsense2_camera rs_camera.launch
# rosrun image_view image_view image:=/camera/color/image_raw
・パッケージをインストールし、再度ビルドします。
# cd ~/catkin_ws
# sudo apt-get install ros-melodic-rgbd-launch
# catkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Release
# catkin_make install
・以下のコマンドを別々の端末で実行します。
# roslaunch realsense2_camera rs_rgbd.launch
# rosrun rviz rviz
Raspbian Buster への ROS インストールを試しましたが、映像確認ができませんでした。
試した手順を記載します。
(RealSense Viewer をインストールした際に既にインストールされています。)
(Installing ROS Melodic on the Raspberry Pi)
・ROS リポジトリを設定します。
# sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# sudo apt-key adv --keyserver \
hkp://ha.pool.sks-keyservers.net:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# sudo apt-get update
# sudo apt-get upgrade
・以下のパッケージをインストールします。
# sudo apt install -y python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
・rosdep を初期化します。
# sudo rosdep init
# rosdep update
・ros 用の catkin ワークスペースをホームディレクトリに作成します。
# mkdir -p ~/ros_catkin_ws
# cd ~/ros_catkin_ws
・rviz などの GUI ツールを使用する場合は以下を実行します。
# rosinstall_generator desktop --rosdistro melodic --deps --wet-only --tar > melodic-desktop-wet.rosinstall
# wstool init src melodic-desktop-wet.rosinstall
・依存関係を適切に設定します。
# cd ~/ros_catkin_ws
# rosdep install -y --from-paths src --ignore-src --rosdistro melodic -r --os=debian:buster
・catkin_make_isolatedを呼び出してビルドします。
# sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/melodic
・シェル起動時に ROS の環境変数が自動的に設定されるようにします。
# source /opt/ros/melodic/setup.bash
# echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
(roslaunch実行時のエラー回避のためにワークスペースを更新します。)
# wstool update -t src
Ubuntu18.04(x86 VM Virtualbox) へのインストールと同様の手順を実行しました。
映像確認のためのツールである image_view がインストールできず、映像を確認できません。rviz はインストールされますが、rgbd-launch がインストールできず、結果として depth カメラの映像を確認できませんでした。
映像確認結果のまとめは次の通りです。
(映像確認結果) |
Windows10 (NotePC) |
Ubuntu 18.04 (Desktop x86) |
Raspbian (Raspberry Pi 4) |
Ubuntu 18.04 (Raspberry Pi 4) |
Ubuntu 18.04 (Raspberry Pi 4) |
Intel Realsense SDK |
〇 |
〇 |
〇 |
〇 |
〇 |
ROS |
- |
〇 |
× |
〇 |
〇 |
Ubuntu 環境であればカメラの映像確認は問題なく行えることがわかりました。
2024 年 09 月 02 日 Vigiles サポート
2024 年 03 月 01 日 Vigiles サポート
2023 年 08 月 28 日 Vigiles サポート
2024 年 03 月 26 日 Yocto Project よもやま話
2023 年 07 月 25 日 Yocto Project よもやま話
2023 年 06 月 20 日 Yocto Project よもやま話
2024 年 01 月 10 日 Linux 技術ネタ
2023 年 12 月 12 日 Linux 技術ネタ
2023 年 03 月 31 日 Linux 技術ネタ
2024 年 07 月 26 日 イベントレポート
2024 年 07 月 09 日 イベントレポート
2024 年 06 月 03 日 イベントレポート
2023 年 05 月 30 日 リクルート
2022 年 12 月 27 日 リクルート
2022 年 09 月 27 日 リクルート
2024 年 09 月 25 日 信州リネオ便り
2024 年 08 月 20 日 信州リネオ便り
2024 年 08 月 07 日 信州リネオ便り
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 13 日 マーケティング統括部
2019 年 04 月 25 日 マーケティング統括部
2018 年 12 月 18 日 マーケティング統括部