協働ロボットigus ReBeLをいごかしてみよう!#2.CRI Ethernet Interface

1.はじめに

「ReBeL」は、igus社のローコストな協働ロボットです。

https://www.igus.co.jp/info/build-or-buy-servicerobot-rebel

今回はReBeLの操作のうち、iRC以外の方法による運転を試してみました。

2.いろいろなインターフェース

こちらのページには、igusのロボットを制御する為の、様々な方法(インターフェース)が紹介されています。

https://www.igus.co.jp/info/programs-igus-robot-control

それぞれのインターフェースの特徴について、本記事の執筆時点(25年3月)における主観をまとめました。

(作成中)

この中で、比較的いろいろな操作がし易く、サンプルプログラムも提供されているのが「TCP/IP Interface」であり、igusではこれを「CRI Ethernet Interface」と読んでいます。

次章ではこのインターフェースを深掘りします。

3.CRI Ethernet Interface

公式の説明ページはこちらです。

https://wiki.cpr-robots.com/index.php/CRI_Ethernet_Interface

ここでは、iRCソフトウェアのバージョンV13を使用しています。

公式の説明ページにあるマニュアル「CRI V16 (until iRC/CPRog V13)」に従って進めていきます。

https://wiki.cpr-robots.com/images/2/23/CPR_RobotInterfaceCRI.pdf

最初に、CRIインターフェースを有効化します。

iRCソフトウェアのメニュー「File」→「Configure Interfaces」→「CRI Interface」

マニュアル(おそらくV12以前)を見るとここに有効・無効の切替ボタンがありますが、このバージョンでは、有効・無効の切替はできないです。

表示上はServerがStoppedになっていますが、TELNETで接続すると有効化されているようです。

下記はTELNETで接続したときに受信した内容の抜粋です。

hoge@fuga:~$ telnet 192.168.3.11 3920
Trying 192.168.3.11...
Connected to 192.168.3.11.
Escape character is '^]'.
CRISTART 0 MESSAGE TinyCtrl Version V980-13-040 CRIEND
CRISTART 1 MESSAGE Configuration: "igus REBEL-6DOF" Type: "REBEL-6DOF-01" Gripper: "" CRIEND
CRISTART 2 MESSAGE VelocitySetting: "0" CRIEND
CRISTART 3 CMD Active true CRIEND
CRISTART 4 STATUS MODE joint POSJOINTSETPOINT 0.00 -20.00 110.00 0.00 90.00 0.00 0.00 0.00 0.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 POSJOINTCURRENT 0.09 0.08 -0.09 90.09 0.02 -0.10 0.00 0.00 0.00 0.0 0.0 0.0 0.0 0.0 0.0 0.0 POSCARTROBOT 215.9 0.0 348.7 180.00 0.00 180.00 POSCARTPLATTFORM 0.0 0.0 0.0 OVERRIDE 90.0 DIN 0 DOUT 0 ESTOP 3 SUPPLY 0 CURRENTALL 0 CURRENTJOINTS 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ERROR _MNE_COM_LAG 28 28 28 28 28 28 12 12 12 0 0 0 0 0 0 0 KINSTATE 99 OPMODE -1 CARTSPEED 0.0 CRIEND
・・・

4.プログラム言語C#版のサンプルをビルドする

Githubから、ソースコードをクローンします。

https://github.com/CommonplaceRobotics/CRI-DemoClient

Visual Studio 2022で開いてビルド・実行してみます。

ReBeLとパソコンとのLAN接続を外した状態で、「Connect TO CRI Server」ボタンをクリックします。間もなく接続失敗のメッセージが出ます。

実行できるところまで確認できました。

5.C#版のサンプルプログラムで、ReBeLを操作する

ReBeLとパソコンとのLAN接続をします。

以降の説明は、iRCとC#版のサンプルプログラム(以降、C#プログラム)の両方を動かした状態で進めています。

iRCも起動して、接続「Connect」、サーボOFF「Disable」状態にしておきます。

C#プログラムの「Connect TO CRI Server」ボタンをクリックします。接続できた旨のメッセージと、ウィンドウ中央には、ReBeLの各軸の位置情報が表示・更新されています。

操作権の考え方

ここから、iRCとC#プログラムを併用する場合に、お互いが干渉せず安全に操作するための「操作権」のやり取りがあります。

操作権の委譲方向操作ステータス表示操作
iRC→C#プログラムC#プログラムの「Set Active」ボタンをクリック

※iRCでEnable状態であれば、そのままEnableが継続する
〇:iRC
〇:C#プログラム
×:iRC
〇:C#プログラム
C#プログラム→iRCiRCツールバーの「Reset」ボタンをクリック→「Enable」をクリック〇:iRC
〇:C#プログラム
〇:iRC
×:C#プログラム
操作権の委譲手順

上記の操作の実際を示します。C#プログラム側のログに着目します。

iRC→C#プログラム

C#プログラムの「Set Active」をクリックすると「CMD Active true」が表示

C#プログラム→iRC

iRCの「Reset」をクリックすると「CMD Active false」が表示

C#プログラムからの操作

C#プログラム側に操作権が渡った状態での操作を説明します。

急に予想しない動きをする恐れがあるので、非常停止ボタンを手の届く範囲において、試行してください。

基本的には、iRCのキーワードがそのまま対応します。

「Motion」タブ

ロボットのJOG操作相当の動きををします。

ここで注意すべきは、「A1+」~「A6-」の押しボタンは「速度の増減」を操作するで、クリックすると、速度が増減します。

クリック、あるいは押したままにして、少しずつ軸を動かす訳ではありません。

ウィンドウ中央のステータス表示からは速度は読み取れないので、チェックボックス「Hide alive m going out」をOFFにすると、現在速度に相当するログが流れるので、それを読み取ります。

チェックボックス「Joint」、「Cart Base」、「Cart Tool」はそれぞれ、iRCのツールバー「Motion Type」にリンクします。チェックボックスをクリックで切り替わります。

「Override」ボタンは、Overrideの増減を指定します。ただしこの「Motion」タブの「A1+」~「A6-」の操作に対しては影響しません。他のタブの動作の時に、Overrideが効きます。

「Stop」ボタンは、現在の速度を0にして止めます。

「Motion」タブ

指定の座標に移動します。

絶対値での指定です。値を設定してボタンをクリックすると、Overrideで指定された速度で移動します。

「Stop」ボタンはその場で停止します。

「Program」タブ

現在ロードされているプログラムを操作します。

「Start」「Pause」「Stop」:現在ロードされているプログラムの進行を操作します。

「Delete」:現在ロードされているプログラムをアンロードします。

「Load」:ReBeLのなかのラズパイディレクトリ「~/TinyCtl/Data/Progrram」に保存されている、プログラムを読み込みます。C#プログラムのコードでファイル名XMLを指定しているので、Cloneしてきただけのコードではエラーになります。

「Send」:パソコンのディレクトリ「C:\iRC-igusRobotControl\Data\Programs」の中の指定ファイルを、ReBeLのなかのラズパイディレクトリ「~/TinyCtl/Data/Progrram」に転送します。C#プログラムのコードでファイル名XMLを指定しているので、Cloneしてきただけのコードではエラーになります。

現在のプログラムの状態を把握するのは、C#プログラムだけではやりにくいので、iRCをモニタとして横に開いておくことをオススメします。

(作成中)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です