Azure KinectをROS melodicとDockerを使って動かしてみた
はじめに
はじめまして。
関東の大学の制御系研究室に所属している学部4年のしゅんもです。研究室の先輩方の影響を受けて、Qiitaを始めてみました。
Dockerとは
Dockerとは、仮想環境を構築するためのプラットフォームです。
Kinect V2やRealSenseなどのハードウェアや、Mask R-CNNやOpenPoseといったソフトウェアを動かすためには、必要なSDKやドライバ等をインストールする、環境構築と呼ばれる作業が必要です。
環境構築は、ソフトウェアのバージョンによってうまく動かなかったり、もともと入っている別のソフトウェアと干渉して不具合が生じてしまったりと、意外と難しいものです。また、PCが故障したり、性能不足等の理由で別のPCを使いたい場合、再度この面倒な環境構築の作業を行う必要があります。
そこでDockerが活躍します。Dockerを使用すると、Dockerfileと呼ばれる、シェルスクリプトのようなファイルを使って自動的に環境構築を行えます。
しかも、これにより作成される環境は、ホストPCと完全に分離された仮想環境のため、ホスト環境を汚しません。そのため、上で述べた問題が生じにくく、環境の移行も容易です。
このような利点から、所属研究室でもDockerを導入する動きが盛んになってきており、私も今年の夏頃から始めました。
Azure Kinect DKとは
前置きが長くなりましたが、本題に入ります。
Azure Kinect DKとは、今年の7月頃からアメリカや中国なので販売開始されたRGB-Dカメラです。Kinect V2の後継機と呼ばれており、開発者用に多数のSDKが公開されています。
ただ、発売から間もないことから、情報が少なく、Azure KinectをDockerで動かしている人は見当たらなかったため、自分で作成してみました。Microsoftが公開しているDockerもあったのですが、SDKのインストールがされておらず、使えなかったです。
Dockerfileの作成
SDKのインストールだけ苦労したので、それだけ書きます。公式サイトに従ってインストールをしようとしたのですが、途中でEULAライセンスの承諾をする必要があり、Dockerのビルド中に止まってしまうという問題が発生しました。
これは、expect
というコマンドでターミナル上の対話を自動化することで回避しました。
[2020/1/17追記]
timeout
の時間が短すぎると、対話になる前にインストールが打ち切られてしまい、buildがうまく行かない場合があるかもしれません。その場合は、timeout
を100とかにしてみてください。
#!/bin/sh
expect -c "
set timeout 10
spawn apt install -y libk4a1.3 libk4a1.3-dev k4a-tools
expect \"Do you accept the EULA license terms?\"
send \"yes\n\"
expect \"\\\$\"
exit 0
ダウンロード
下記リンクで公開しています。
https://github.com/Shunmo17/azure_kinect_docker
参考サイト
https://docs.microsoft.com/ja-jp/azure/Kinect-dk/sensor-sdk-download
https://qiita.com/ine1127/items/cd6bc91174635016db9b
Author And Source
この問題について(Azure KinectをROS melodicとDockerを使って動かしてみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Shunmo17/items/a1a14ade79a40d174a03著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .