画像処理
ROS
DeepLearning
OpenPose
More than 1 year has passed since last update.

OpenPoseをROSで動かします。
カメラ画像のデータをsubscribeして、人検出および各関節位置の情報と、それを入力画像にレンダリングしたものをpublishします。

コードは以下にて公開しています。
https://github.com/slowsingle/openpose_ros

事前準備

OpenPoseを先にインストールしておいてください。インストール方法はOpenPoseを動かしてみた。などをご参照ください。

なお、私の環境はUbuntu16.04でROSはkineticです。それ以外の環境ではテストしておりませんのでご了承ください。

コンパイル

catkin_makeでコンパイルするのですが、openposeおよび同時にインストールしたであろうcaffeの場所が使用するPCによって異なるので、その部分を書き換える必要があります。

CMakeLists.txt
:
:
:

include_directories(
  ${catkin_INCLUDE_DIRS}
  /usr/local/cuda/include
  /home/kerberos/openpose/include
  /home/kerberos/openpose/3rdparty/caffe/include
  /home/kerberos/openpose/3rdparty/caffe/.build_release/src
)

:
:
:

target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
  /usr/lib/x86_64-linux-gnu/libglog.so
  /usr/lib/x86_64-linux-gnu/libgflags.so
  /usr/lib/x86_64-linux-gnu/libgflags_nothreads.so
  /home/kerberos/openpose/build/lib/libopenpose.so
  /home/kerberos/openpose/3rdparty/caffe/.build_release/lib/libcaffe.so
)

CmakeLists.txtの/home/kerberos/~のところを自分の環境に合うように書き換えてください。
ここを正しくしないと、openposeやcaffeを呼び出すことができません。

catkin_makeしてから、usb_camでカメラ画像を読み込んだ後、

rosrun openpose_ros openpose_ros_node

と打って、実行します。すると、2つのトピックがpublishされます。

/openpose/image_raw
/openpose/poses

とりあえず/openpose/image_rawをimage_viewやrviz等で可視化してみると、OpenPoseが動いていることを確認できるはずです。試しに人の絵が写っている漫画の表紙とかを見せてあげると、OpenPoseが認識してくれたりします。すごい! (もちろん、私も人間として認めてくれました)

別のノードと組み合わせて高度な処理がしたいときは/openpose/posesをsubscribeしてください。詳しくはmsgの型を見ればわかりますが、検出した人と、その関節位置および確率値(confidence)が格納されています。