以前にOpenpose をROSで使った記事を書きましたが、ピクセル座標しか取得できなかったので今回は3次元座標の取得を試みました。
ということで、早速環境の準備。私の環境は以下の通りです。
OS:Ubuntu 20.04(noetic導入済み)
RAM:16GB, GPU:
RGB-D camera: Realsense D435
CUDA: 11.5.2
cuDNN: 8.3.2
1. Install CUDA, cuDNN(GPU使う人のみ)
まず、以下のリンクで自身のOSにあったCUDA、cuDNNのインストールします
導入方法については以下のブログを参考にしました。(後から追記します)
2. Install Openpose
日本語で書かれたサイトがいくつかあるが、公式ドキュメントが一番確実な気がする(主観)
OpenPose: OpenPose Doc - Installation
また、以下のリンク先にはOpenpose、そしてこの後導入するros_openposeの導入方法までのコマンドがまとめられてある(ROSの部分は無視してもらって)
ちなみにcmake-guiで設定してconfigureのボタン押すと、骨格推定で使われるモデルとかのダウンロードが開始されるが、結構大きなデータなので通信環境が良い場所でやることが望ましい。
ダウンロード時間はまぁまぁ長いが、あまりにも長すぎる場合はダウンロードが上手くいってないことも考えられるので中断して再度、ダウンロードした方がいいです。その場合、ダウンロード途中のモデルのファイルは消去してから行ってください(消していない場合、再度ダウンロードするときに既に同じファイルがあるとダウンロードがスキップされるので)
make installまでできたら以下のサイトのQuick Startに書いてあることをやって、動作確認
https://cmu-perceptual-computing-lab.github.io/openpose/web/html/doc/md_doc_01_demo.html
2. ros_openposeの導入
上記のリポジトリを自身のROSのワークスペースにcloneして、run.launchの中身を自身の環境にあうようにパス等を変更。その後、catkin_makeしてエラー吐かれなければ、動作確認。
3. 3次元座標の取得
ros_openposeを実行できたら、ros_openpose/scripts/echo.py の中身を以下のリポジトリのコードに変更する
上記のコードでは右手首の関節座標を取得するようになってるが、変更すれば他の関節座標や複数の関節座標を同時に取得するのも可能(なはず)
また、rviz使わない人はPCの不可減らすためにrvizを立ち上げないようにlaunchファイルを変更すると良いかも。
疲れていたので少し雑な感じになりましたがお許しください(今後追記予定です)