概要
ロボットアームを使った環境認識およびモーション生成を可能にするためのChoreonoidのプラグインおよびRTコンポーネント群です.
対応環境
- Ubuntu 16.04
- OpenRTM-aist 1.1.2 RELEASE C++
全体の動作の解説
- 作業管理部(PickingTaskManager)から物体検出部(ObjectDetector)に検出開始の要求が送られ,物体の位置姿勢を検出し,物体のラベルと位置姿勢が管理部に返される.
- 把持方法決定部(ObjectHandleStrategy)は,物体の位置姿勢を管理部より受け取り,物体の姿勢から把持姿勢を決定し,管理部に姿勢を返す.
- アーム姿勢決定部(OrochiKinematicsPlugin)は,管理部より把持姿勢を受け取り,目標把持姿勢における関節
角度を決定し,管理部に渡す. - 軌道計画部(ManipulationPlanner_OMPL)は,管理部より渡された目標アーム姿勢までの,各関節のコンフィグレーション空間での軌道を計画し,管理部に返す.
- 動作生成部(ManipulatorMotionGenerator)は,管理部より渡された軌道からロボットに送信するコマンドを生成する.マニピュレータ共通インターフェースを通して,コマンドがロボットに送
信される.
RTCs
このフレームワークで使うRTC群の説明
PickingTaskManager
全体の統括をするRTC.この部分を改変して自分のアプリケーションを作りましょう.
RealSense3D
Intel社のRealSense3Dを使うためのRTC.カラー画像+深度情報のRGB-D Imageを取得できます.
http://wasanbon.org/?p=1738
ObjectDetector
Tensorflow-YOLOを使った画像処理と,RealSense3Dの深度情報を使って目的物体の3次元位置を認識するためのRTC.
ObjectHandleStrategyRTC
ObjectDetectorが生成した物体の姿勢から,ロボットのエンドエフェクタのアプローチ姿勢を生成するためのRTC.
OrochiKinematicsPlugin
Choreonoidで使う逆運動学計算のためのプラグイン.OROCHIのモデルでのみ動作確認ができています.
ManipulationPlanner_OMPL
OMPLを使ったモーション生成用RTC.このRTCで生成した姿勢が環境もしくはロボット自身と干渉しているか否かをチェックするCollisionDetectorサービスを必要とします.
CommonPlannerFrameworkPlugin
Choreonoidで使う干渉チェックのためのプラグイン.これだけでなく,アームと環境のモデルを必要とします.
ManipulatorMotionGenerator
ManipulationPlannerで生成されたモーション(ポーズの列)をアームになぞらせるためのRTC.
OrochiRTC
前川製作所のOROCHIというロボットアームを動作させるためのRTCです.
OROCHIに付属しているRTコンポーネントを使います.
ソースコード
PickingTaskManager : https://github.com/ogata-lab/PickingTaskManager
RealSense3D : https://github.com/sugarsweetrobotics/RealSense3D
ObjectDetector : https://github.com/rokihi/ObjectDetector
ObjectHandleStrategyRTC : https://github.com/ogata-lab/ObjectHandleStrategyRTC
OrochiKinematicsPlugin : https://github.com/sugarsweetrobotics/OrochiKinematicsPlugin
ManipulationPlanner_OMPL : https://github.com/ogata-lab/ManipulationPlanner_OMPL
CommonPlannerFrameworkPlugin : https://github.com/sugarsweetrobotics/CommonPlannerFrameworkPlugin
ManipulatorMotionGenerator : https://github.com/ogata-lab/ManipulatorMotionGenerator
インストール
Choreonoidのインストール
Choreonoidをソースコードからインストールします.こののち,プラグインをインストールするのですが,最初にクリーンな環境でインストールした方が良いでしょう.
Choreonoidのインストールに関しては,公式ウェブサイトをごらんください
この時,CORBA, OPENRTMのプラグインを合わせてインストールしておく必要があります.CMake時にビルド設定をONにする必要があるので注意してください.
Choreonoidのプラグインのインストール
下記のサイトからソースコードをダウンロードし,Choreonoidのソースコートディレクトリ内に配置します.extフォルダの中に,OrochiKinematicsPluginフォルダや,CommonPlannerFrameworkPluginフォルダがあるようにした方が良いと思います.
OrochiKinematicsPlugin
CommonPlannerFrameworkPlugin
あとは,インストール時と同様にビルドすれば良いはずです.
OMPLのインストール
以下のコマンドによりインストール可能です.
apt-get install libompl-dev ompl-demos
詳細は公式サイトを参照してください.
YOLO-Tensorflowのインストール
TensorFlowのインストール
下記のコマンドによりpython2.7,GPU非対応でのインストールが可能です.
pip install tensorflow
GPU対応などの詳細および最新バージョンのインストールに関しては公式サイトを参照してください.
YOLO学習済みモデルのインストール
作業フォルダにて下記コマンドを実行します.
git clone https://github.com/rokihi/ObjectDetector.git
次にYOLOの学習済みモデルファイルを,READMEに従ってダウンロードし ObjectDetector/weights/のフォルダに配置してください.
RealSense SDK のインストール
Intel RealSense Cameraを使用する場合,接続するPC(windows)に,ドライバ及びSDKを,公式サイトに従ってインストールしてください.
このPC上で,RealSense3D RTCのダウンロードおよびビルドを行ってください.コマンドラインでのダウンロード・ビルドをする場合のコマンドは次の通りです.
git clone https://github.com/sugarsweetrobotics/RealSense3D.git
cd RealSense3D
mkdir build
cd build
cmake ../
make
RTCのビルド
各RTCを Githubよりダウンロード,ビルドします.
cd path/to/workspace
git clone https://github.com/ogata-lab/PickingTaskManager.git
cd PickingTaskManager
mkdir build
cd build
cmake ../
make
cd path/to/workspace
git clone https://github.com/ogata-lab/ObjectHandleStrategyRTC.git
cd ObjectHandleStrategyRTC
mkdir build
cd build
cmake ../
make
cd path/to/workspace
git clone https://github.com/ogata-lab/ManipulationPlanner_OMPL.git
cd ManipulationPlanner_OMPL
mkdir build
cd build
cmake ../
make
cd path/to/workspace
git clone https://github.com/ogata-lab/ManipulatorMotionGenerator.git
cd ManipulatorMotionGenerator
mkdir build
cd build
cmake ../
make
使い方
まずネームサーバーを起動します.
rtm-naming
次に各RTCおよびChoreonoidを起動します.
cd path/to/PickingTaskManager
./build/src/PickingTaskManagerComp
cd path/to/ObjectHandleStrategyRTC
./build/src/ObjectHandleStrategyRTCComp
cd path/to/ManipulationPlanner_OMPL
./build/src/ManipulationPlanner_OMPLComp
cd path/to/ManipulatorMotionGenerator
./build/src/ManipulatorMotionGeneratorComp
cd path/to/ObjectDetector
python ObjectDetector_YOLOtf.py
cd path/to/choreonoid
bin/choreonoid
RealSense3DおよびOrochiRTCは,接続したWindowsPC上で起動します.
以下のように各RTCを接続します.
全RTCのアクティブ化によりシステムが起動します.
PickingTaskManagerを起動したターミナル上での数字の入力によって,動作を指定します.入力とそれに伴う動作は,ここでは以下のようになっています.
0
:動作速度の設定と初期姿勢(コンフィグ値で設定)への移動
1
:対象物体のラベルを入力し,ObjectDetectorによる物体検出の開始
2
:HandleStrategyによる把持する手先位置姿勢の決定
3
:KinematicsSolverによる逆運動学の計算
4
:MotionPlannnerによる軌道計画 (Choreonoid上で視覚的に確認可能)
5
:MotionGeneratorによる動作コマンドの生成,送信および実行
PickingTaskManagerのプログラムを改変することにより,任意の作業フローが実現可能です.