Choreonoid上のmyCobot280の制御コンポーネントの作成手順、及びmyCobot280実機の制御システムの構築手順を説明します。
myCobot280制御コンポーネントにコマンドを送信するRTCを作成します。 RTC Builderで以下の仕様のRTCを作成してください。
| 基本 | |
| コンポーネント名 | ArmController |
| アクティビティ | |
| onActivated()、onDeactivated()、onExecute() | |
| データポート(OutPort) | |
| なし | |
| データポート(InPort) | |
| なし | |
| サービスポート | |
| ポート名 | middle |
| サービスインターフェース | |
| インターフェース名 | JARA_ARM_ManipulatorCommonInterface_Middle |
| 方向 | Required |
| インターフェース型 | JARA_ARM::ManipulatorCommonInterface_Middle |
| サービスポート | |
| ポート名 | common |
| サービスインターフェース | |
| インターフェース名 | JARA_ARM_ManipulatorCommonInterface_Common |
| 方向 | Required |
| インターフェース型 | JARA_ARM::ManipulatorCommonInterface_Common |
| コンフィギュレーション | |
| パラメーター名 | pos_x |
| 型 | double |
| デフォルト値 | 0.2 |
| 制約 | -0.3<x<0.3 |
| Widget | text |
| 説明 | アーム手先のX座標 |
| コンフィギュレーション | |
| パラメーター名 | pos_y |
| 型 | double |
| デフォルト値 | 0.0 |
| 制約 | -0.3<x<0.3 |
| Widget | text |
| 説明 | アーム手先のY座標 |
| コンフィギュレーション | |
| パラメーター名 | pos_z |
| 型 | double |
| デフォルト値 | 0.16 |
| 制約 | -0.0<x<0.45 |
| Widget | text |
| 説明 | アーム手先のZ座標 |
| 言語・環境 | |
| 言語 | C++ |
ロボットアームの制御のため、ロボットアーム共通インターフェースのコマンドを使用する。
サービスポートの設定手順について説明します。 「サービスポート」タブを選択し、サービスポートの情報を入力します。
「Add Port」ボタンを押下してサービスポートを追加後、名前を設定します。
サービスポートに「Add Interface」ボタンを押下後、各項目を設定します。
各情報は以下の通り設定してください。
コード生成時に以下の画面が表示されますが、「はい」を選択してください。
ソースコード (src/ArmController.cpp) を編集します。
下記のように、onActivated()、onDeactivated()、onExecute() を実装します。
RTC::ReturnCode_t ArmController::onActivated(RTC::UniqueId /*ec_id*/)
{
//サーボをONにするコマンドを実行
m_JARA_ARM_ManipulatorCommonInterface_Common->servoON();
//アームを原点復帰位置に移動する
m_JARA_ARM_ManipulatorCommonInterface_Middle->goHome();
return RTC::RTC_OK;
} RTC::ReturnCode_t ArmController::onDeactivated(RTC::UniqueId /*ec_id*/)
{
//サーボをOFFにするコマンドを実行
m_JARA_ARM_ManipulatorCommonInterface_Common->servoOFF();
return RTC::RTC_OK;
} RTC::ReturnCode_t ArmController::onExecute(RTC::UniqueId /*ec_id*/)
{
//コンフィギュレーションパラメータの変更時のみ実行
if (getConfigService().isChanged())
{
//コンフィギュレーションパラメータを更新する
updateParameters("default");
//CarPosWithElbow型データに手先の位置姿勢を格納する
JARA_ARM::CarPosWithElbow pose;
//姿勢は固定
pose.carPos[0][0] = -1;
pose.carPos[0][1] = 0;
pose.carPos[0][2] = 0;
pose.carPos[1][0] = 0;
pose.carPos[1][1] = 1;
pose.carPos[1][2] = 0;
pose.carPos[2][0] = 0;
pose.carPos[2][1] = 0;
pose.carPos[2][2] = -1;
//コンフィギュレーションパラメータを位置情報として格納
pose.carPos[0][3] = m_pos_x;
pose.carPos[1][3] = m_pos_y;
pose.carPos[2][3] = m_pos_z;
pose.elbow = 0;
pose.structFlag = 0;
//絶対値で指定した目標位置に移動するコマンドを実行
//移動完了まで処理は戻らない
m_JARA_ARM_ManipulatorCommonInterface_Middle->moveLinearCartesianAbs(pose);
}
return RTC::RTC_OK;
}Visual Studioでビルドすると実行ファイル(build/src/Release(or Debug)/ArmControllerComp.exe)が生成されます。
講習会資料に含まれているchoreonoidフォルダ内のmyCobot280Simulator.batをダブルクリックして起動してください。
Ubuntuの場合は以下のコマンドで起動します。
choreonoid ${資料のディレクトリ}/choreonoid/myCobot280Sample/myCobot280Sample.cnoidArmControllerを起動するため、Choreonoid上でRTCItemを生成します。 「ファイル」→「新規」→「RTC」をクリックしてください。
名前は「ArmController」に設定して生成してください。
生成したArmControllerアイテムのプロパティから、RTCモジュールのパスを設定します。
ファイル選択のダイアログでは、File of typeを「全てのファイル(*)」を設定してください。 その後、プロジェクトののbuildフォルダからArmControllerComp.exeを選択してください。 ※Ubuntuの場合はArmController.soを選択してください。
次にRTCリストからRTCダイアグラムにmyCobot280Io0とArmController0をドラッグアンドドロップしてください。 RTCの一覧が見えない場合は「更新」ボタンを押してください。
RTCダイアグラム上でmyCobot280Io0とArmController0の「middle」ポート同士と「common」ポート同士を接続します。
アイテムのツリー構造が以下のようになっているか確認してください。
World(ワールドアイテム)
|-myCobot(Body)
|-myCobot280Io(PyRTC)
|-AISTSimulator(AISTシミュレータ)
|-myCobot280Sample(RTSystem)
|-ArmController(RTC)以下のボタンを押してシミュレーションを開始してください。
RTCリストから「ArmController0」をクリックするとコンフィギュレーションビューからパラメータの操作ができます。 からpos_x、pos_y、pos_zの値をクリックして変更してください。「適用」を押したタイミングでコマンドが送信されてアームの手先位置が制御されます。
myCobot280をACアダプタ、USBケーブルを接続し、USBケーブルはPCに接続してください。
myCobotの操作画面から、「Transponder」を選択して「myCobnot Basic Transponder」の画面を表示してください。
接続後、デバイスマネージャからポート番号(COM**)を確認しておいてください。
ArmControllerComp.exeと同じフォルダに以下の内容のrtc.confを作成してください。 コマンドで手先位置移動完了まで処理を返さないため、通信がタイムアウトしないように設定します。
corba.args: -ORBclientCallTimeOutPeriod 0
ファイル構成は以下のようになります。
ArmController
|- build
|- src
|- Release(Debug)
|- ArmControllerComp.exe
|- rtc.confArmControllerComp.exeをダブルクリックして起動してください。 Ubuntuの場合はArmControllerCompを起動します。
講習会資料に含まれているchoreonoidフォルダ内のmyCobotRTCフォルダ内のmyCobot.confを編集します。 以下の「conf.default.com_port」でデバイスマネージャで確認したポート番号(COM**)を指定してください。
conf.default.com_port: COM11
choreonoidフォルダ内のmyCobot280RTC.batをダブルクリックして起動してください。 Ubuntuの場合は以下のコマンドで起動します。
python3 myCobot.py
RTシステムエディタで「ArmController0」と「myCobot0」の「middle」ポート同士と「common」ポート同士で接続してアクティブ化してください。
コンフィギュレーションパラメータを変更後に編集ボタンを押すとmyCobot280の手先位置が制御されます。