概要

ロボットアームを使った環境認識およびモーション生成を可能にするためのChoreonoidのプラグインおよびRTコンポーネント群です.

対応環境

  • Ubuntu 16.04
  • OpenRTM-aist 1.1.2 RELEASE C++

全体の動作の解説

  1. 作業管理部(PickingTaskManager)から物体検出部(ObjectDetector)に検出開始の要求が送られ,物体の位置姿勢を検出し,物体のラベルと位置姿勢が管理部に返される.
  2. 把持方法決定部(ObjectHandleStrategy)は,物体の位置姿勢を管理部より受け取り,物体の姿勢から把持姿勢を決定し,管理部に姿勢を返す.
  3. アーム姿勢決定部(OrochiKinematicsPlugin)は,管理部より把持姿勢を受け取り,目標把持姿勢における関節
    角度を決定し,管理部に渡す.
  4. 軌道計画部(ManipulationPlanner_OMPL)は,管理部より渡された目標アーム姿勢までの,各関節のコンフィグレーション空間での軌道を計画し,管理部に返す.
  5. 動作生成部(ManipulatorMotionGenerator)は,管理部より渡された軌道からロボットに送信するコマンドを生成する.マニピュレータ共通インターフェースを通して,コマンドがロボットに送
    信される.

RTCs

このフレームワークで使うRTC群の説明

PickingTaskManager

全体の統括をするRTC.この部分を改変して自分のアプリケーションを作りましょう.

http://wasanbon.org/?p=1744

RealSense3D

Intel社のRealSense3Dを使うためのRTC.カラー画像+深度情報のRGB-D Imageを取得できます.
http://wasanbon.org/?p=1738

ObjectDetector

Tensorflow-YOLOを使った画像処理と,RealSense3Dの深度情報を使って目的物体の3次元位置を認識するためのRTC.

http://wasanbon.org/?p=1733

ObjectHandleStrategyRTC

ObjectDetectorが生成した物体の姿勢から,ロボットのエンドエフェクタのアプローチ姿勢を生成するためのRTC.

http://wasanbon.org/?p=1753

OrochiKinematicsPlugin

Choreonoidで使う逆運動学計算のためのプラグイン.OROCHIのモデルでのみ動作確認ができています.

ManipulationPlanner_OMPL

OMPLを使ったモーション生成用RTC.このRTCで生成した姿勢が環境もしくはロボット自身と干渉しているか否かをチェックするCollisionDetectorサービスを必要とします.

http://wasanbon.org/?p=1756

CommonPlannerFrameworkPlugin

Choreonoidで使う干渉チェックのためのプラグイン.これだけでなく,アームと環境のモデルを必要とします.

ManipulatorMotionGenerator

ManipulationPlannerで生成されたモーション(ポーズの列)をアームになぞらせるためのRTC.

http://wasanbon.org/?p=1741

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のプログラムを改変することにより,任意の作業フローが実現可能です.