myCobot280の制御

はじめに

Choreonoid上のmyCobot280の制御コンポーネントの作成手順、及びmyCobot280実機の制御システムの構築手順を説明します。

mycobot_sim_image.png
myCobot280M5_d22c5ddb-4963-463c-bd22-885076cfb7eb_650x.png

ArmControllerコンポーネントの作成

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」ボタンを押下してサービスポートを追加後、名前を設定します。

rtcbuilder_service4.png

サービスポートに「Add Interface」ボタンを押下後、各項目を設定します。

rtcbuilder_service5.png

各情報は以下の通り設定してください。


  • ServicePort Profile:
    • ポート名: middle
    • サービスインターフェース:
      • インターフェース名:JARA_ARM_ManipulatorCommonInterface_Middle
      • 方向:Required
      • インターフェース型: JARA_ARM::ManipulatorCommonInterface_Middle

  • ServicePort Profile:
    • ポート名: common
    • サービスインターフェース:
      • インターフェース名:JARA_ARM_ManipulatorCommonInterface_Common
      • 方向:Required
      • インターフェース型:JARA_ARM::ManipulatorCommonInterface_Common

コード生成時に以下の画面が表示されますが、「はい」を選択してください。

rtcbuilder_service6.png

ソースコードの編集とビルド

ソースコード (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起動

講習会資料に含まれているchoreonoidフォルダ内のmyCobot280Simulator.batをダブルクリックして起動してください。

Ubuntuの場合は以下のコマンドで起動します。

 choreonoid ${資料のディレクトリ}/choreonoid/myCobot280Sample/myCobot280Sample.cnoid

RTCItem追加

ArmControllerを起動するため、Choreonoid上でRTCItemを生成します。 「ファイル」→「新規」→「RTC」をクリックしてください。

choreonoid_service1.png

名前は「ArmController」に設定して生成してください。

生成したArmControllerアイテムのプロパティから、RTCモジュールのパスを設定します。

ファイル選択のダイアログでは、File of typeを「全てのファイル(*)」を設定してください。 その後、プロジェクトののbuildフォルダからArmControllerComp.exeを選択してください。 ※Ubuntuの場合はArmController.soを選択してください。

choreonoid_service2.png

次にRTCリストからRTCダイアグラムにmyCobot280Io0とArmController0をドラッグアンドドロップしてください。 RTCの一覧が見えない場合は「更新」ボタンを押してください。

choreonoid_service3.png

RTCダイアグラム上でmyCobot280Io0とArmController0の「middle」ポート同士と「common」ポート同士を接続します。

choreonoid_service4.png

アイテムのツリー構造が以下のようになっているか確認してください。

 World(ワールドアイテム)
   |-myCobot(Body)
       |-myCobot280Io(PyRTC)
   |-AISTSimulator(AISTシミュレータ)
   |-myCobot280Sample(RTSystem)
   |-ArmController(RTC)

シミュレーション実行

以下のボタンを押してシミュレーションを開始してください。

choreonoid_service5.png

RTCリストから「ArmController0」をクリックするとコンフィギュレーションビューからパラメータの操作ができます。 からpos_x、pos_y、pos_zの値をクリックして変更してください。「適用」を押したタイミングでコマンドが送信されてアームの手先位置が制御されます。

choreonoid_service6.png

myCobot実機の制御

myCobot280の準備

myCobot280をACアダプタ、USBケーブルを接続し、USBケーブルはPCに接続してください。

choreonoid_service7.png

myCobotの操作画面から、「Transponder」を選択して「myCobnot Basic Transponder」の画面を表示してください。

choreonoid_service9.JPG
choreonoid_service10.JPG

接続後、デバイスマネージャからポート番号(COM**)を確認しておいてください。

RTC起動

ArmControllerの起動

ArmControllerComp.exeと同じフォルダに以下の内容のrtc.confを作成してください。 コマンドで手先位置移動完了まで処理を返さないため、通信がタイムアウトしないように設定します。

 corba.args: -ORBclientCallTimeOutPeriod 0

ファイル構成は以下のようになります。

 ArmController
     |- build
           |- src
                |- Release(Debug)
                           |- ArmControllerComp.exe
                           |- rtc.conf

ArmControllerComp.exeをダブルクリックして起動してください。 Ubuntuの場合はArmControllerCompを起動します。

myCobotRTCの起動

講習会資料に含まれている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」ポート同士で接続してアクティブ化してください。

choreonoid_service8.png

コンフィギュレーションパラメータを変更後に編集ボタンを押すとmyCobot280の手先位置が制御されます。

ダウンロード

最新バージョン : 2.1.0-RELESE

統計

Webサイト統計
ユーザ数:3399
プロジェクト統計
RTコンポーネント309
RTミドルウエア35
ツール25
文書・仕様書2

OpenRTM@Github

OpenRTM-aist GitHubサイト

ROS

Robot Operating System

Choreonoid

モーションエディタ/シミュレータ

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク

産総研が提供するRTC集

東京オープンソースロボティクス協会