LoginSignup
5
1

【初心者向け】Azure Kinect を Ubuntu18.04+ROS Melodic で使う

Last updated at Posted at 2021-03-18

更新

Ubuntu20.04版のインストール手順も書きました。
https://qiita.com/sunrise_lover/items/1a70ddafee44419eda2a

Azure Kinect + ROS

RealSenseに比べてちょっと大きいけど、2021年3月時点でRGB-Dカメラの最強角のひとつ。
この記事ではROSノードを立ち上げ、PointCloud2メッセージをRvizで表示するところまで実現します。

今回の環境はこちら↓

  • Ubuntu 18.04
  • ROS Melodic

(初投稿なのでご容赦下さい。コメント頂ければ更新するかと思います。)

ツイッターもフォローしてね♡
https://twitter.com/Crane_mk4

目次

  1. SDKのインストール (apt)
  2. ROSノードのビルド
  3. 実行

ステップ1:SDKのインストール

SDKを使えば、UbuntuがAzureKinectを認識してくれます(雑)。

細かい事は置いといて、とりあえず以下のコマンドをターミナルで順番に実行しましょう。

curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod

sudo apt update

sudo apt install k4a-tools libk4a1.4-dev

この時点で一応 Azure Kinectを動かすことができます。正しくインストールされたか確認も含め、次のコマンドを試してみましょう。

必ずsudo権限で 試してください!!! (後ほどsudoを外せるよう工夫します)

sudo k4aviewer

Screenshot from 2021-03-18 19-37-11.png

左上のプルダウンに数字列があれば成功です。
(もし[No Devices]とあればカメラのUSB接続を疑いましょう。lsusbコマンドでMicrosoft製のデバイスが表示されているか、USB接続は3.0か、電力の供給は十分か、などが怪しいです。正しく接続されていれば、lsusbコマンドでMicrosoft製デバイスが5項目出現します。)

緑色の「Open Device」を押しましょう。

Screenshot from 2021-03-18 19-37-23.png

細かい設定を調節できます。解像度を上げれば高画質なRGB画像が取れますが、負荷も上がります。
とりあえず今はこのままで、緑色のStartボタンを押しましょう。

Screenshot from 2021-03-18 19-38-18.png

上のようにカメラが立ち上がります。View Modeを3Dにすると点群が立体表示されるので面白い…。

※エラー情報

replace_sample(). capturesync_drop, releasing capture early due to full queue TS: 614600 type:Depth
というエラーはケーブル接続の問題です。
PCの背面にあるUSBポートを使って、 マザーボードに直接挿して ください。

(Jetsonなどクソ雑魚GPUでも発生するらしいですが、RTX2080Tiや2080Super、3060など常識的な性能があれば大丈夫なので、まず最優先でUSB接続を疑ってください。)
ToFカメラなので照射が結構電源食います、必ず外部バスパワー電源を使ってください。

難点 : sudo権限でないと起動しない

これはROS周りで色々と面倒になるので、sudoなしでも起動できるよう改造する必要があります。
具体的には、「udevルールの変更」をします。

まず、適当な場所にSDKのコードをダウンロードします。
(結局ソース落とすなら最初からソースビルドすりゃええ話やけど、初心者対象なのでaptに甘えました)

mkdir src/camera_drivers
cd src/camera_drivers
git clone https://github.com/microsoft/Azure-Kinect-Sensor-SDK.git

こうしてgit上のソースコードがダウンロードします。
次に、scriptsフォルダの中にある99-k4a.rulesというファイルを、自分のターミナルが参照する実行ルールの場所にコピーしてあげましょう。

sudo cp Azure-Kinect-Sensor-SDK/scripts/99-k4a.rules /etc/udev/rules.d/

これでsudoを使わなくてもAzureKinectが開けるようになったはずです。
ルールを変更したので、PCを再起動しましょう。

(以下のコマンドでリロードすることもできますが、僕は上手くいかなかったので早々に諦めて再起動しました。
sudo udevadm control --reload-rules
sudo udevadm trigger)

今ならsudoを付けなくてもAzureKinectが使えるようになっているはずです!試してみましょう。

k4aviewer

僕は動きました。
動かない人は研究室の強い先輩に泣きつくか、コメント欄へどうぞ。

次はこの映像や3D点群をROSトピックに流します。

ステップ2 : ROSノードのビルド

ROSノード(公式)を使えば、ROSのトピック通信を経由して、先ほどの点群を6D物体認識やSLAMなどに直接利用できます。

(ROS触ったことないよ!って人はここでAzureKinectは一旦置いといて、まずはROSについて知ってみたり、チュートリアルを触ってみると良いと思います。コメント欄でリクエストが多ければ、こんな幼稚な文才の僕が平たくROSについて書くかもしれません。)

まずはご自分の好みのcatkin workspaceへ移動して、そのままsrcディレクトリまで降りてください。

cd catkin_my_ws/src

git clone https://github.com/microsoft/Azure_Kinect_ROS_Driver

cd ..

そうすればソースコードがダウンロードされたはずので、次はいよいよビルドです。

catkin build azure_kinect_ros_driver

初心者にありがちなのが、ここでビルドでエラーが出たら、依存パッケージが足りてないのかも。
エラーした人は次のコマンドを試してみて下さい。

rosdep install -i -y -r --from-paths src

(僕はROS一年目の頃、この魔法のコマンドに何度救われたか分かりません。)
全依存パッケージが自動インストールされるはずなので、さっき失敗した人は改めて先ほどのcatkin build azure_kinect_ros_driverを試してみて下さい。
これで失敗したら研究室の強い先輩に泣きつくか、コメント欄へどうぞ。

そうしたら新しいパッケージを入れたので、仕上げに環境変数の更新をしましょう。

source devel/setup.bash

これで全ての準備は整いました。

ステップ3 : 実行

これ↓を打つ。

roslaunch azure_kinect_ros_driver driver.launch

すると、ROSトピックにPointCloud2が流れ始める。

確認しましょう。別のターミナルを開き、rvizコマンドでRvizを立ち上げます。

Screenshot from 2021-03-18 20-34-19.png

空っぽのRvizが立ち上がります。
左下のAddボタンで、表示したいトピックを選択します。
以下のように、By topicのタブの中から/ponts2 PointCloud2 というトピックを選択し、OKを押します。

Screenshot from 2021-03-18 20-34-33.png

座標系が異なるため、まだ何も映らないです。
GlobalOptionのmapとなっている項目を、プルダウンからcamera_baseに変更しましょう。

Screenshot from 2021-03-18 20-34-55.png

色付き点群が表示されました!おめでとう!
あとは平面検出なり物体検出なり、PCL+pcl-rosでご自由にお楽しみ下さい。

Screenshot from 2021-03-18 20-37-07.png

宣伝

色情報に基づく6D物体認識です。
https://www.youtube.com/watch?v=agjsPMJshy0
(ロボット研究の一部で作って、論文が通ったきり放置なので、かなりクソコードです。)

RANSACや特徴量検出を多用してますので、PCLの書き方サンプルくらいになれば…。
こちらもコメント欄で要望が多ければ、ちゃんとキレイに書き直すかもしれません。

実際にこちらの物体認識モジュールを使用したヒューマノイドロボットがこちら↓
https://www.youtube.com/watch?v=2rr84jnez4k

5
1
0

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
5
1