メインコンテンツへスキップ

JAKA TCP/IP 制御プロトコル

JAKA約42分

JAKA TCP/IP 制御プロトコル

ドキュメントの説明

JAKAはTCP/IPに基づく外部制御プロトコルをサポートしています。このプロトコルは豊富なインターフェースを提供し、ユーザーはこのインターフェースを通じてロボットの制御や情報の取得を実現できます。 これはJAKA SDKの中核通信プロトコルの一つでもあります。

バージョン情報

このTCP/IP制御プロトコルドキュメントは現在主にV3バージョンのコントローラーに対応しており、一部のインターフェースは2つのバージョンのコントローラー間で互換性の問題が発生する可能性があり、その箇所は注記されています。

フレームワークの基礎

JAKA TCP/IP プロトコル通信フレームワーク

JAKA TCP/IP制御プロトコルで定義されるインタラクションフレームワークは以下の通りです:

ロボットコントローラ内でTCPサーバーが実行され、ユーザー定義のコマンドを受信しステータスデータを返します。このサーバーはポート10000および10001を使用して外部クライアントと通信を行います。その詳細は以下の通りです:

  • 10001——ロボットに制御コマンドを送信し、コントローラからの応答を受信するために使用;
  • 10000——ロボットから返されるデータを受信するために使用(送信頻度とデータ内容はユーザーが定義可能)。

ユーザーはJAKA TCP/IPプロトコルに基づいてロボットの二次開発を行うことができます。開発時には以下の点に注意してください:

  • すべてのTCP/IPコマンドは非同期方式で実行され、返される情報はコントローラがコマンドを受信し、事前処理および転送を完了したことを示すのみであり、コマンドの最終的な実行結果を反映するものではありません。一部のコマンド実行結果は、フィードバックデータを能動的に照会して取得する必要があります;
  • ユーザーは本プロトコルに基づいて対応するTCPクライアント呼び出しを実装する必要があります。すなわち、ユーザー自身が上位プランナーを設計し、ロボットデータ(servo_j、servo_p)を送信しなければなりません;
  • この機能はJAKA Appと同時に使用でき、Appとコントローラとの接続を切断する必要はありません。ただし、ユーザーはポート10001に接続できるクライアントが1つだけであることを保証する必要があります。そうでない場合、後から接続したクライアントが先に接続していたクライアントを即座に置き換える可能性があります。

通信ポートデータの説明

ユーザーがポート10001から送信し、ポート10000から受信するデータはすべてJSON形式に基づいて定義されています。ユーザーはこのプロトコルに基づき、迅速にコマンドを構築したりフィードバックデータを解析したりすることができます。

ポート10001の説明

本マニュアルに記載されている全てのコマンドはこの範囲に属します。すべてのロボット制御コマンドはポート10001を基盤としており、ポートのデータ通信フォーマットは次のように定義されています:

  • メッセージ送信フォーマット:
{"cmdName":"cmd","parameter1":"parameter2","parameter3":"parameter4",...}
  • メッセージ受信フォーマット:
{"cmdName":"cmd","errorCode":"0","errorMsg":"","parameter1":"parameter2","parameter3":"parameter4",...}

ポート10000の説明

ポート10000は文字列形式でロボット関連のデータを返します。返される内容は以下のサンプルを参照してください:

サンプル:

{
    "len":Int,
    "drag_status":Bool,
    "extio":Object{...},
    "errcode":"0x0",
    "errmsg":"",
    "monitor_data":Array[6],
    "torqsensor":Array[2],
    "joint_actual_position":Array[6],
    "joint_position":Array[6],
    "actual_position":Array[6],
    "position":Array[6],
    "din":Array[144],
    "dout":Array[144],
    "ain":Array[66],
    "aout":Array[66],
    "tio_key":Array[3],
    "tio_din":Array[8],
    "tio_dout":配列[8],
    "tio_ain":配列[1],
    "task_state":整数,
    "homed":配列[9],
    "task_mode":整数,
    "interp_state":整数,
    "enabled":ブール値,
    "paused":ブール値,
    "rapidrate":整数,
    "current_tool_id":整数,
    "current_user_id":整数,
    "on_soft_limit":整数,
    "emergency_stop":整数,
    "drag_near_limit":配列[6],
    "funcdi":配列[15],
    "powered_on":整数,
    "inpos":ブール値,
    "motion_mode":整数,
    "curr_tcp_trans_vel":整数,
    "protective_stop":整数,
    "point_key":整数,
    "netState":整数
}

説明:

  • len:データパケットの長さ。通常、最大長は15000バイトを超えません(データ内容によります)。
  • drag_status:ブール値で、ドラッグモード中かどうかを示します。
  • extio:拡張IOモジュールの設定と状態。内部データ構造は次のとおり——
    • status:すべての拡張IOピンの状態を示し、DI、DO、AI、AOを含む。
      • status0[]:すべての拡張DIの状態
      • status1[]:すべての拡張DOの状態
      • status2[]:すべての拡張AIの状態
      • status3[]:すべての拡張AOの状態
    • setup:すべての拡張IO設定の配列。最大8個まで。各拡張IOモジュールの設定は次の構造に従う必要がある——
      • setupNN[][]:通信タイプ。0はModbus RTUを意味する。1はModbus TCP/IPを意味する。
        • setupNN=[][]=0:
          • setup[N][22][]:ボーレート
          • setup[N][22][]:データビット長
          • setup[N][22][]:スレーブ番号
          • setup[N][22][]:データビット
          • setup[N][22][]:パリティビット
          • setup[N][22][]:ストップビット長
        • setupNN=[][]=1:
          • setup[N][22][]:IPアドレス
          • setup[N][22][]:ポート
          • setup[N][22][]:スレーブ番号
      • setupNN[][]:拡張IOモジュールのエイリアス名。
      • setupNN[][]:通信設定。通信タイプに応じて異なる。
    • setupNN[][]:ピン設定
      • setup[N][3][00][]:DI内のレジスタ開始オフセット
      • setup[N][3][00][]:DIの数
      • setup[N][3][11][]:DO内レジスタの開始オフセット
      • setup[N][3]11:DOの数[][]
      • setup[N][3][22][]:AI内レジスタの開始オフセット
      • setup[N][3][22][]:AIの数
      • setup[N][3][33][]:AO内レジスタの開始オフセット
      • setup[N][3][33][]:AOの数
    • num:拡張IOモジュール。
    • pinmap:拡張IOモジュールのピンマップ配列。
      • pinmapNN[]:[N][]のDI内レジスタの開始オフセットを設定
      • pinmapNN[][]:[setupN]のDO内レジスタの開始オフセット
      • pinmapNN[][]:[setupN]のAI内レジスタの開始オフセット
      • pinmapNN[][]:[setupN]のAO内レジスタの開始オフセット
    • mode:拡張IOモジュールの状態。0は状態がオン、1はオフを示す。
  • errcode:コントローラからの16進文字列のエラーコード(例:「0x0」)。
  • errmsg:コントローラからのエラーメッセージ文字列で、errcodeに対応する。
  • monitor_data:診断用のロボットおよびキャビネットの監視データ。
    • monitor_data0[]:SCB メジャーバージョン番号
    • monitor_data1[]:SCB マイナーバージョン番号
    • monitor_data2[]:制御キャビネットの温度
    • monitor_data3[]:制御キャビネットのバス平均電力
    • monitor_data4[]:制御キャビネットのバス平均電流
    • monitor_data5[]:配列内のロボット1〜6軸の監視データ
      • monitor_data55[][]:ロボット軸の瞬時電流
      • monitor_data55[][]:ロボット軸の瞬時電圧
      • monitor_data55[][]:ロボット軸の瞬時温度
      • monitor_data55[][]:瞬時平均出力
      • monitor_data55[][]:電流の変動
      • monitor_data55[][]:累計ラップ数
      • monitor_data5[][6]:累計稼働時間
      • monitor_data5[][7]:今回の起動後の稼働サイクル
      • monitor_data5[][8]:今回の起動後の稼働時間
      • monitor_data5[][9]:関節トルク
  • torqsensor:トルクセンサーの設定および状態配列。データ構造は次の通り――
    • torqsensor0[]:センサーID
    • torqsensor1[]:現在のトルクセンサー設定
      • torqsensor11[][]:センサーのブランド
      • torqsensor11[][]:センサーのフィルターパラメータ
      • torqsensor11[][]:センサーの負荷設定[ mass, x, y, z]
      • torqsensor11:dead_zone_percent[][]
      • torqsensor11:force_field_comp_method[][]
      • torqsensor11:force_field_sample_no[][]
      • torqsensor1:sensor_payload_id[][6]
      • torqsensor1[][7]:センサー名
      • torqsensor1:delete_on_next_start[][8]
    • torqsensor1[]:トルクセンサーの状態
      • torqsensor11[][]:トルクセンサーの状態。1は動作中、0は停止を示す。
      • torqsensor11[:トルク][]センサーのエラーコード
      • torqsensor11[][]:トルクセンサーの実際の接触力(6次元)
      • torqsensor11[][]:トルクセンサーの生データ値(6次元)
  • joint_actual_position:6つの関節すべての実際位置。通常はサーボの実際のフィードバック位置を指す。
  • joint_position:6つの関節すべての指令位置。(実際の関節位置とわずかな差異がある可能性があります)
  • actual_position:ロボットTCPのデカルト空間における実際の位置。
  • position:ロボットTCPのデカルト空間における指令位置。
  • din:すべてのデジタル入力値の配列。
  • dout:キャビネット内のすべてのデジタル出力値の配列。
  • ain:キャビネット内のすべてのアナログ入力値の配列。
  • aout:キャビネット内のすべてのアナログ出力値の配列。
  • tio_din:すべてのツールデジタル入力状態の配列。
  • tio_dout:すべてのツールデジタル出力状態の配列。
  • tio_ain:すべてのツールアナログ入力状態の配列。
  • task_state:電源状態とイネーブル状態を示すインジケーター。1はロボットの電源オフ、2は電源オン、3はイネーブルされていない、4はイネーブルされていることを示す。
  • homed:各関節のホーム状態(非推奨)。
  • task_mode:ロボットのタスクモード。1は手動モード、2は自動モード、3は予約モード、4はドラッグモードを示す。
  • interp_state:プログラムの状態。0はアイドル、1はロード中、2は一時停止、3は実行中を示す。
  • enabled:ロボットの有効状態を示すブール値。
  • paused:プログラムの一時停止状態を示すブール値。
  • rapidrate:ロボット動作のスケーリング速度率。
  • current_tool_id:現在のTCPのインデックス。
  • current_user_id:現在のユーザー座標系のインデックス。
  • on_soft_limit:ソフトリミットに達しているかどうか。0は未到達、1は到達。
  • emergency_stop:非常停止ボタンが押されているかどうか。0は未押下、1は押下。
  • drag_near_limit:各関節が限界位置付近までドラッグされているかを示す。0はいいえ、1ははい。
  • funcdi:機能IO。下記の機能IO設定を参照。
  • powered_on:通電状態、0は未通電、1は通電。
  • inpos:動作状態、trueは動作完了、falseは動作中。
  • motion_mode:動作モード。
  • curr_tcp_trans_vel:現在のロボットエンドの移動速度。
  • protective_stop:保護停止、0は衝突なし、1は衝突。
  • point_key:ロボットエンドのボタン状態。
  • netState:ネットワーク接続状態。

設定ファイル optionalInfoConfig.ini

ロボットコントローラの10000ポートは出荷時のデフォルトで、定義されたすべてのデータフィールドを返すため、TCP送信を使用すると帯域幅を多く消費し、ユーザー側での実際のデータ受信の即時性に影響します。

しかし実際のユーザーアプリケーションではすべてのデータが使用されるわけではないため、本バージョンではユーザーが設定可能な10000ポートのフィードバックデータフィールド機能を追加設計しました。

コントローラ内部の設定ファイル optionalInfoConfig.ini では、ユーザーが有効または無効に設定できるデータフィールドを定義しています。あるデータフィールドの値が1の場合、10000ポートでそのデータフィールドが返され、値が0の場合は返されません。

ユーザーは10001ポートの特定コマンド(クリックでジャンプ)を通じて、そのフィールドの有効・無効を設定および照会できます。

詳細な設定ファイル内容は以下の通りです:

[ATTROPTIONALDATA]
joint_actual_position = 1
joint_position = 1
actual_position = 1
position = 1
din = 1
dout = 1
ain = 1
aout = 1
tio_key = 1
tio_din = 1
tio_dout = 1
tio_ain = 1
リレー_IO = 1
MBスレーブ_入力 = 1
MBスレーブ_出力 = 1
MBスレーブ_アナログ入力 = 1
MBスレーブ_アナログ出力 = 1
PNデバイス_入力 = 1
PNデバイス_出力 = 1
PNデバイス_アナログ入力 = 1
PNデバイス_アナログ出力 = 1
EIPアダプタ_入力 = 1
EIPアダプタ_出力 = 1
EIPアダプタ_アナログ入力 = 1
EIPアダプタ_アナログ出力 = 1
タスク状態 = 1
原点取得済み = 1
タスクモード = 1
補間状態 = 1
有効 = 1
一時停止 = 1
高速率 = 1
現在のツールID = 1
現在のユーザーID = 1
ソフトリミット内 = 1
非常停止 = 1
ドラッグ_ニア_リミット = 1
ファンクディ = 1
電源オン = 1
インポジション = 1
モーションモード = 1
現在のTCP変換速度 = 1
保護停止 = 1
ポイントキー = 1
モーションライン = 1
エラー追加ライン = 1

[統計オプションデータ]
ドラッグ状態 = 1
番号 = 1
セットアップ = 1
ピンマップ = 1
モード = 1
ステータス = 1
拡張入出力 = 1
エラーコード = 1
エラーメッセージ = 1
モニターデータ = 1
トルクセンサー = 1

[ポート設定]
port10000_delay_ms = 2000
  • ATTROPTIONALDATA および STATOPTIONALDATA 内のデータについて、0 に設定するとポート 10000 はそのデータを送信せず、1 に設定するとポート 10000 はそのデータを送信します。
  • PORTCONFIG 内の port10000_delay_ms の値は、ポート 10000 がデータを送信する周期(単位:ms)を示します。

ご注意:

ユーザーが10000ポートから取得するデータはリアルタイムではなく、実際の送信周期はネットワークの揺らぎなどの影響を受けます。

さらに、データ量が多すぎる場合や送信周期が短すぎる場合、ネットワークの輻輳やパケットのスティッキングなどの問題(特にネットワークが不安定な場合)を引き起こし、クライアント側でのデータ受信や解析の失敗につながる可能性があります。

不要なデータをできるだけ除外し、適切な送信周期を設定してください。

ロボットの姿勢表現

JAKA TCP/IP制御プロトコルに関連するロボットの空間姿勢は、すべてRPY角で表されます。

RPYでは、回転変換の順序は固定座標系の軸x-y-zの順に回転します。固定座標系のz軸まわりの回転(Rz)はロール(Roll)と呼ばれ、y軸まわりの回転(Ry)はピッチ(Pitch)、x軸まわりの回転(Rx)はヨー(Yaw)と呼ばれます。

ロボットの位置姿勢データフォーマットは[ X , Y , Z , Rx , Ry , Rz ]と定義され、X・Y・Z は3つの座標軸上の位置(単位:mm)を表し、Rx・Ry・Rz はロボットの姿勢を表しており、それぞれ RPY の3つの成分 ヨー(Yaw)、ピッチ(Pitch)、ロール(Roll)に対応します(単位:°)。

回転行列との変換関係については、固定座標系{A}を選択し、座標系{B}のRPY表現と回転行列との変換計算は次のようになります。

ユーザー注意事項

エラーコードの説明

  • インターフェースが正しく応答する場合、errorCode は 0(int または文字列型の可能性あり)となり、Empty/Null ではありません。errorCode がその他の値の場合、実行エラーを示します。
  • エラーが発生した場合、クライアントは返された JSON データ内の errorCode および msg を確認することができます。
    • errorCode の値が 0 の場合、errorMsg は空のメッセージを返し、正常に実行されたことを示します。
    • errorCode の値がその他の数値の場合、errorMsg は具体的なエラー情報を返し、プログラムに異常が発生したことを示します。

エラーコード一覧

TCP/IP コマンド応答時のエラーコード一覧の概要:

ロボット基本操作(200–249)

ERROR_INSTALLATION_ANGLE_OUT_OF_RANGE="0x000200" #設置角度が範囲外

動作コマンド(250–349)

ERROR_SETTING_MOTION_PLANNER="0x000250"

サーボ関連(350–399)

ERROR_NOT_IN_SERVO_MODE="0x000350" #サーボモードでないときにサーボを試行 ERROR_SET_FILTER_IN_SERVO_MODE = "0x000351" #サーボモード中にサーボフィルターを設定できません ERROR_SERVO_PARAMETER_INVALID = "0x000352" #サーボパラメータが無効 ERROR_SERVO_FILTER_INVALID = "0x000353" #サーボフィルターのパラメータが無効です

IO関連(400-449)

ERROR_IO_INDEX_OUT_OF_RANGE = "0x000400" #IOインデックスが範囲外です ERROR_IO_TYPE_OUT_OF_RANGE = "0x000401" #IOタイプが範囲外です

プログラム関連(450-499)

ERROR_VAR_ALIAS_EXIST = "0x000450" #変数エイリアスはすでに存在します ERROR_VAR_ID_NOT_EXIST = "0x000451" #変数IDが存在しません

衝突関連(500-549)

ERROR_COLLISION_LEVEL_OUT_OF_RANGE = "0x000500" #衝突レベルが範囲外です

運動学関連(550-599)

ERROR_FAIL_KINE_INVERSE = "0x000550" #逆運動学の計算に失敗しました

トルクセンサー部分
軌道部分
ドラッグおよび力制御部分
FTP部分
TIO部分
将来の機能のために予約

その他の説明

  • errorCode は文字列または整数のいずれかになります。
  • すべてのコマンドは非ブロッキングコマンドです。
  • プロトコルで使用される単位は mm(ミリメートル)および degree(度)です。
  • TCP IOインデックスは 1 から始まりますが、SDK IOインデックスは 0 から始まります。

ポート10000および10004の設定

ポート10004はSDK専用ポートで、返されるデータはポート10000と同一です。

ポート10000の送信周期を取得

メッセージの送信:

{"cmdName":"get_port10000_delay_ms"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_port10000_delay_ms", "port10000_delay_ms": 2000}

10000番ポートの送信周期を変更する

メッセージの送信:

{"cmdName":"set_port10000_delay_ms","port10000_delay_ms":20}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_port10000_delay_ms"}

optionalInfoConfig の設定を照会する

メッセージの送信:

{"cmdName":"getOptionalInfoConfig","section":"PORTCONFIG","key":"port10000_delay_ms"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "getOptionalInfoConfig", "value": 20}

メッセージの送信:

{"cmdName":"getOptionalInfoConfig","section":"ATTROPTIONALDATA","key":"joint_actual_position"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "getOptionalInfoConfig", "value": 1}

optionalInfoConfig の設定を変更する

メッセージの送信:

{"cmdName":"setOptionalInfoConfig","section":"PORTCONFIG","key":"port10000_delay_ms", "value": "200"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "setOptionalInfoConfig"}

メッセージの送信:

{"cmdName":"setOptionalInfoConfig","section":"ATTROPTIONALDATA","key":"joint_actual_position", "value": 0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "setOptionalInfoConfig"}

コマンドインターフェースの紹介

以下では、各機能モジュールごとにコマンドの使用方法を説明し、返されるフィールドの意味は各コマンドの説明の下に記載します。

ロボットの基本操作

電源を入れる

メッセージの送信:

{"cmdName":"power_on"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "power_on"}

電源を切る

メッセージの送信:

{"cmdName":"power_off"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "power_off"}

ロボットの電源とサーボをオンにする

メッセージの送信:

{"cmdName":"enable_robot"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "enable_robot"}

ロボットをイネーブル解除

メッセージの送信:

{"cmdName":"disable_robot"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "disable_robot"}

ロボットとコントローラをシャットダウン

メッセージの送信:

{"cmdName":"shutdown"}

メッセージの受信:

null

シャットダウン指令を送信後、コントローラはプロセスを終了し、TCPサーバーが閉じられるため、メッセージは返されません。

ロボット状態

メッセージの送信:

{"cmdName":"get_robot_state"}

メッセージの受信:

{"enable": true, "power": 1, "errorMsg": "", "errcode": 0, "cmdName": "get_robot_state", "errorCode": "0", "msg": ""}

説明:

  • enable: ロボットの有効状態を示します。trueは有効、falseは無効を意味します。
  • power: ロボットの通電状態を示します。1は通電、0は非通電を意味します。
  • errorCode: TCPコマンドに対応するエラーコードを示します。
  • errcode: コントローラが返す対応するエラーコードを示します。
  • errorMsg: TCPコマンドに対応するエラーメッセージを示します。
  • msg: コントローラが返す対応するエラーメッセージを示します。

コントローラのバージョンを取得

メッセージの送信:

{"cmdName":"get_version"}

メッセージの受信:

{"errorMsg": "", "cmdName": "get_version", "errorCode": "0", "robot_name": "JKROBOT", "version": "1.7.1_40_rc_X64", "robot_id": "Zu20200100"}

説明:

  • robot_name:ロボット名
  • version:ロボットコントローラのバージョン
  • robot_id:ロボットのシリアル番号

ロボットの設置角度を取得

メッセージの送信:

{"cmdName":"get_installation_angle"}

メッセージの受信:

{"installation_angle": [[x, y, z, w], [rx, ry , rz]], "errorCode": "0", "cmdName": "get_installation_angle", "errorMsg": ""}

説明:

  • x, y, z, w 設置角度の四元数表現。
  • rx, ry, rz 設置角度のオイラー角表現。

ロボットの設置角度を設定する

メッセージの送信:

{"cmdName":"set_installation_angle","angleX":angleX,"angleZ": angleZ}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_installation_angle"}

説明:

  • angleX:ロボットのX方向の回転角度、範囲は[0〜180]度。
  • angleZ:ロボットのZ方向の回転角度、範囲は[0, 360)度。

ロボットの手動/自動モードを設定

メッセージの送信:

{"cmdName":"set_auto_manual_mode", "mode":0}

メッセージの受信:

{"cmdName": "set_auto_manual_mode", "errorCode": "0", "errorMsg": ""}

説明:

  • mode:0は手動モード、1は自動モードを表します。

ロボットの手動/自動モードを取得

メッセージの送信:

{"cmdName":"get_auto_manual_mode"}

メッセージの受信:

{"mode": 1, "cmdName": "get_auto_manual_mode", "errorCode": "0", "errorMsg": ""}

説明:

  • mode:0は手動モード、1は自動モードを表します。

ロボットの振動抑制モードを設定する

メッセージの送信:

{"cmdName": "enable_vibsuppress_override","mode": 1}

メッセージの受信:

{"cmdName": "enable_vibsuppress_override", "errorCode": "0", "errorMsg": ""}

説明:

  • mode:0:オフ、1:モード1、2:モード2

各機種の初期デフォルト周波数は以下の通りです:

負荷/機種デフォルト周波数(Hz)
MiniCobot116
MiniCobot215
3kg(Zu3など)14
5kg(C5/A5/双腕など)12
7kg(Zu7など)12
12kg(Zu12など)8
16kg(Zu16)7.5
18kg(Zu18)7.5
20kg(Zu20)7.5
30kg(Zu30)7.4
Max405

振動抑制設定を有効にする

メッセージの送信:

{"cmdName": "vib_suppress_on", "frequency": 12}

メッセージの受信:

{"cmdName": "vib_suppress_on", "errorCode": "0", "errorMsg": ""}

説明:

  • frequency:振動周波数

振動抑制設定を無効にする

メッセージの送信:

{"cmdName": "vib_suppress_off"}

メッセージの受信:

{"cmdName": "vib_suppress_off", "errorCode": "0", "errorMsg": ""}

ロボットアームの動作関連

JOGコマンド

Jogコマンドには、関節空間での単軸運動とデカルト空間での単軸運動が含まれる:

  • jog_mode は動作モードを表し、4種類の動作モードをサポートする:

    • Jog_stop(Jog停止): 0
    • Continue(連続運動): 1
    • Increment(ステップ運動): 2
    • ABS絶対運動: 3
  • coord_map は座標系の選択を表し、3種類の運動座標系をサポートする:

    • ワールド座標系での運動: 0
    • 関節空間での運動: 1
    • ツール座標系での運動: 2
  • jnum は関節空間では関節番号を表し、関節1から関節6までの番号はそれぞれ0から5に対応する。

  • jnum はデカルト空間ではx、y、z、rx、ry、rzを表す。それぞれの値は0から5に対応する。

  • jogvel は速度を表す。

  • poscmd はステップ値を表し、単関節運動ではdeg、空間単軸運動ではmmを使用する。

jog_modeが0の場合、jog_mode、coord_map、jnumパラメータのみ有効。

送信メッセージ:

{"cmdName":"jog","jog_mode":0, "coord_map":1, "jnum":1}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "jog"}

説明:

  • 送信されたコマンドは、関節空間においてロボットの関節2のjog動作を停止することを意味する。

jog_modeが1の場合、jog_mode、coord_map、jnum、およびjogvelパラメータのみ有効。

メッセージの送信:

{"cmdName":"jog","jog_mode":1, "coord_map":1, "jnum":1, "jogvel":30}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "jog"}

説明:

  • 送信されたコマンドは、ロボットがジョイント空間で関節2を30 deg/sでジョグ動作させることを意味します。
  • 注意すべき点は、動作の正負はjogvelの正負によって決まるということです。
  • 同じ軸の動作指令を再度送信する前に、まず現在の軸の動きを停止する必要があります。

jog_modeが2のとき、パラメータjog_mode、coord_map、jnum、jogvel、poscmdが有効になります。

送信メッセージ:

{"cmdName":"jog","jog_mode":2, "coord_map":1, "jnum":1, "jogvel":30, "poscmd":20}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "jog"}

説明:

  • 送信されたコマンドは、ロボットの関節2を30 deg/sの速度で正方向に20 deg動作させる制御指令です。
  • 動作の正負はposcmdの正負によって決定されます。

jog_modeが3のとき、パラメータjog_mode、coord_map、jnum、jogvel、poscmdが有効になります。

送信メッセージ:

{"cmdName":"jog","jog_mode":3, "coord_map":1, "jnum":1, "jogvel":30, "poscmd":20}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "jog"}

説明:

  • 送信されたコマンドは、ロボットの関節2を30 deg/sの速度で20 degの目標位置まで動かす制御指令です。

関節を指定位置まで移動するMoveJ

メッセージの送信:

{"cmdName":"joint_move","relFlag":0,"jointPosition":[0,90.5,90.5,0,90.5,0],"speed":20.5,"accel":20.5}
{"cmdName":"joint_move","relFlag":0,"jointPosition":[0,90.5,90.5,0,90.5,0],"speed":20.5,"accel":20.5,"tol":0,"executing_line_id":0,"end_cond":{"di_type":0,"di_index":0,"di_state":1}}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "joint_move"}

説明:

  • relFlag: オプション値は0または1で、0は絶対運動、1は相対運動を意味します。
  • jointPosition:[j1、j2、j3、j4、j5、j6に]は各関節の角度値を入力します。単位は度(°)であり、ラジアンではありません。動作の正負はjointPosition値の正負によって決まります。
  • speed: 関節の速度を表し、単位は (°/S) です。ユーザーは適切な値を入力できます。
  • accel:関節の加速度を表し、単位は (°/S²) です。ユーザーは適切な値を入力できます。加速度は720を超えないことを推奨します。
  • joint_moveはブロッキング(コントローラ内部で、コマンドの即時返却には影響しない)動作コマンドであり、1つの動作指令が完了してから次の動作指令が実行されます。次の指令をすぐに実行する必要がある場合は、まずstop_programを使用して現在の動作を停止し、その後次の動作指令を送信することをお勧めします。
  • tol(オプションパラメータ): 動作軌道間の接続半径パラメータ、デフォルト値は0です。
  • executing_line_id(オプションパラメータ): この動作コマンドのID番号、デフォルト値は0
  • end_cond(オプションパラメータ): 動作コマンドをスキップする条件、条件内のIOが満たされた場合、このコマンドはスキップされ実行されません
    • di_type: IOタイプ
    • di_index: IO番号
    • di_state: IOの目標値

TCPエンドが指定位置まで移動する

メッセージの送信:

{"cmdName":"end_move","endPosition":[100,200.1,200.5,0,0,0], "speed":21.5, "accel":31.5}
{"cmdName":"end_move","endPosition":[100,200.1,200.5,0,0,0], "speed":21.5, "accel":31.5,"tol":0,"executing_line_id":0,"end_cond":{"di_type":0,"di_index":0,"di_state":1}}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "end_move"}

説明:

  • endPosition: [x,y,z,a,b,c] TCPエンドのxyzabcの値を指定します。
  • speed: speed_val は関節の速度を表し、単位は (°/S) です。ユーザーは適切な値を入力できます。speed_valを20に設定すると、関節速度は20 °/Sになります。
  • accel:accel_val は関節の加速度を表し、単位は (°/S²) です。ユーザーは適切な値を入力できます。加速度値は720を超えないことを推奨します。
  • end_moveはブロッキング型の動作コマンドであり、1つの動作コマンドが完了してから次のコマンドが実行されます。次の指令をすぐに実行する必要がある場合は、まずstop_programを使用して現在の動作を停止し、その後次の動作指令を送信することをお勧めします。
  • end_moveコマンドは現在位置から目標位置まで直線的に移動するものではありません。このコマンドは、まずユーザーが入力したデカルト空間の目標点を逆運動学で解き、その後joint_moveコマンドを使用してロボット関節を指定位置まで動かします。
  • 現在位置から目標位置まで直線的に移動する必要がある場合は、moveLコマンドを使用してください。
  • tol(オプションパラメータ): 動作軌道間の接続半径パラメータ、デフォルト値は0です。
  • executing_line_id(オプションパラメータ): この動作コマンドのID番号、デフォルト値は0
  • end_cond(オプションパラメータ): 動作コマンドをスキップする条件、条件内のIOが満たされた場合、このコマンドはスキップされ実行されません
    • di_type: IOタイプ
    • di_index: IO番号
    • di_state: IOの目標値

直線移動 MoveL

メッセージの送信:

{"cmdName":"moveL","relFlag":1,"cartPosition":[0,0,50,0,0,0],"speed":20,"accel":50,"tol":0.5}
{"cmdName":"moveL","relFlag":1,"cartPosition":[0,0,50,0,0,0],"speed":20,"accel":50,"tol":0.5,"tol":0,"executing_line_id":0,"end_cond":{"di_type":0,"di_index":0,"di_state":1},"ori_vel":180,"ori_acc":720}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "moveL"}

説明:

  • cartPosition:[x,y,z,rx,ry,rz] デカルト空間のx,y,z,rx,ry,rzの値を指定します。
  • speed:speed_valは線速度を表し、単位は (mm/s) です。ユーザーは適切な値を入力できます。speed_valを20に設定すると、線速度は20 mm/sになります。
  • accel:accel_valは直線運動の加速度を表し、単位は (mm/S²) です。ユーザーは適切な値を入力できます。加速度値は8000を超えないことを推奨します。
  • relFlag:flag_valの選択可能な値は0または1です。0は絶対運動を、1は相対運動を表します。
  • moveLはブロッキング型の動作命令で、1つの動作命令が完了してから次の動作命令が実行されます。次の指令をすぐに実行する必要がある場合は、まずstop_programを使用して現在の動作を停止し、その後次の動作指令を送信することをお勧めします。
  • tol(オプションパラメータ): 動作軌道間の接続半径パラメータ、デフォルト値は0です。
  • executing_line_id(オプションパラメータ): この動作コマンドのID番号、デフォルト値は0
  • end_cond(オプションパラメータ): 動作コマンドをスキップする条件、条件内のIOが満たされた場合、このコマンドはスキップされ実行されません
    • di_type: IOタイプ
    • di_index: IO番号
    • di_state: IOの目標値
  • ori_vel(オプションパラメータ): 姿勢遷移時のTCP回転速度。デフォルト値は180°/sです。
  • ori_acc(オプションパラメータ): 姿勢遷移時のTCP回転加速度。デフォルト値は720°/S²です。

円弧運動MoveC

メッセージの送信:

{"cmdName":"movc","relFlag":move_mode,"pos_mid":[x,y,z,rx,ry,rz],"pos_end":[x,y,z,rx,ry,rz],"speed":vel,"accel":acc,"tol":tol,"executing_line_id":0,"end_cond":{"di_type":0,"di_index":0,"di_state":1},"circle_mode":0,"circle_cnt":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "movc"}

説明:

  • pos_mid:[x,y,z,rx,ry,rz] カルテジアン座標空間のx,y,z,rx,ry,rzの値を指定します。
  • pos_end:[x,y,z,rx,ry,rz] カルテジアン座標空間のx,y,z,rx,ry,rzの値を指定します。
  • speed:speed_val は関節の速度を表し、単位は (°/S)です。ユーザーは適切なパラメータを入力できます。speed_valを20に設定すると、関節速度は20 °/Sになります。
  • accel:accel_val は関節の加速度を表し、単位は (°/S²) です。ユーザーは適切な値を入力できます。加速度値は720を超えないことを推奨します。
  • tol(オプションパラメータ): 動作軌道間の接続半径パラメータ、デフォルト値は0です。
  • executing_line_id(オプションパラメータ): この動作コマンドのID番号、デフォルト値は0
  • end_cond(オプションパラメータ): 動作コマンドをスキップする条件、条件内のIOが満たされた場合、このコマンドはスキップされ実行されません
    • di_type: IOタイプ
    • di_index: IO番号
    • di_state: IOの目標値
  • circle_mode(オプションパラメータ): 円弧運動モード。デフォルト値は0。詳細な使用方法はAPPマニュアルを参照してください。
  • circle_cnt(オプションパラメータ): 円弧運動の回数。デフォルト値は0。詳細な使用方法はAPPマニュアルを参照してください。

動作状態を照会

メッセージの送信:

{"cmdName":"get_motion_state"}

メッセージの受信:

{"queue": 0, "errorMsg": "", "cmdName": "get_motion_state", "queue_full": false, "active_queue": 0, "inpos": true, "paused": false, "err_add_line": 0, "errorCode": "0", "motion_line": 0}

説明:

  • queue_full: キューが満杯状態かどうかを判断します。falseは未満、trueは満杯を示します。
  • queue: キュー内の動作命令の数
  • inpos: 位置到達状態フラグ。falseは未到達(すなわち運動中)を意味し、trueは到達(一般的に停止状態)を意味します。
  • paused: 動作が一時停止しているかを示すフラグ。falseは未停止、trueは一時停止中を示します。
  • err_add_line: 重複対応によりコントローラが実行しなかった場合の、その動作命令の行番号。
  • motion_line: 動作命令ID

ロボットのDHパラメータを取得

メッセージの送信:

{"cmdName":"get_dh_param"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "dh_param": [[0.0, 90.0, 0.0, 0.0, 90.0, -90.0], [0.0, 0.0, 897.0, 744.5, 0.0, 0.0], [196.5, 0.0, 0.0, -188.35000610351562, 138.5, 120.5], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "cmdName": "get_dh_param"}

説明:

  • dh_param: 返却されるリストの各要素は、インデックス順にそれぞれalpha、a、d、joint_homeoffを表します。
    • alpha: リンクねじり角
    • a: リンクの長さ
    • d: リンクオフセット
    • joint_homeoff: 関節ゼロ点オフセット

ユーザー座標系情報を取得

メッセージの送信:

{"cmdName":"get_user_offsets"}

メッセージの受信:

{"user_offsets": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "cmdName": "get_user_offsets", "errorCode": "0", "errorMsg": ""}

説明:

  • tool_offset:23組のデータ(0〜23)があり、それぞれがワールド座標系+ユーザー定義座標系(15)+ロボット出荷時の取り付け座標系(7)(両腕に付属)に対応します。

ユーザー座標系を設定する

メッセージの送信:

{"cmdName":"set_user_offsets","userffset":[10,10,10,10,10,10],"id":2,"name":"user_new"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_user_offsets"}

説明:

  • userffset: ユーザー座標系の x, y, z, rx, ry, rz を入力します。例のように [10,10,10,10,10,10 のようにします]。
  • id: 設定したいユーザー座標系のID番号。選択可能なIDは1から15です。例としてユーザー座標系2を設定します。
  • name: 設定したいユーザー座標系の名前。例えば名前を user_new に設定します。
  • このコマンドは座標系の値を設定するのみで、実際にはその座標系を選択していません

現在のユーザー座標系情報を取得

メッセージの送信:

{"cmdName":"get_curr_user_offset"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_curr_user_offset", "user_offset": [-590.0, 380.0, -1230.0, 0.0, 0.0, 0.0]}

ユーザー座標系を選択

メッセージの送信:

{"cmdName":"set_user_id","user_frame_id":2}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_user_id"}

説明:

  • set_user_id: ユーザー座標系ID番号。どのユーザー座標系で動作するかを選択するために使用します。例えばIDを2に設定すると、第2のユーザー座標系で動作します。
  • 注意すべき点として、set_user_id を 0 に設定すると、ロボットはベース座標系(ワールド座標系)で動作することを意味します。

現在のユーザー座標系を取得

メッセージの送信:

{"cmdName":"get_curr_user_id"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "id": 10, "cmdName": "get_curr_user_id"}

ツール座標系を選択

メッセージの送信:

{"cmdName":"set_tool_id","tool_id":2}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_tool_id"}

説明:

  • tool_id: ツール座標系のID番号。どのツール座標系で動作するかを選択するために使用します。例えば ID を 2 に設定すると、第2ツール座標系で動作します。
  • 注意すべき点として、tool_id が 0 の場合、ロボットのツールはデフォルトでエンドフランジの中心となります。

現在のツール座標系を取得

メッセージの送信:

{"cmdName":"get_curr_tool_id"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "id": 2, "cmdName": "get_curr_tool_id"}

ツール座標系を設定する

メッセージの送信:

{"cmdName":"set_tool_offsets","tooloffset":[10,10,10,10,10,10],"id":2,"name":"tcp_new"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_tool_offsets"}

説明:

  • tooloffset:ツール座標系の x, y, z, rx, ry, rz を入力します。例として 10,10,10,10,10,10 [のように入力します]。
  • id:設定したいツール座標系のID番号。選択可能なIDは1から15までです。例としてツール座標系2を設定します。
  • name:設定したいツール座標系の名前。例えば名前を tcp_new に設定します。

ツール座標系情報を取得

メッセージの送信:

{"cmdName":"get_tool_offsets"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "tool_offsets": [[0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], "cmdName": "get_tool_offsets"}

説明:

  • tool_offset:16組のデータ(0~15)があり、対応する相対IDのツール座標系オフセットを示します。0はデフォルトのエンドフランジ中心座標系を表します。

現在の座標系情報を取得

メッセージの送信:

{"cmdName":"get_curr_tool_offset"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_curr_tool_offset", "tool_offset": [0.0, 0.0, 130.0, 0.0, 0.0, -90.0]}

負荷を設定

メッセージの送信:

{"cmdName":"set_payload","mass":m,"centroid":[x,y,z]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_payload"}

説明:

  • massは負荷の質量で、単位はキログラム(KG)です。centroidは負荷の重心で、単位はmmです。例えば、設定する負荷の質量が1KGで、重心が[10,10,10の場合]。 次のコマンドを送信できます:
{"cmdName":"set_payload","mass":1,"centroid":[10,10,10]}

負荷を取得

メッセージの送信:

{"cmdName":"get_payload"}

メッセージの受信:

{"errorCode": "0", "centroid": [0.0, 0.0, 1.0], "mass": 1.0, "cmdName": "get_payload", "errorMsg": ""}

説明:

  • mass: 負荷の質量で、単位はキログラム(KG)です。
  • centroid: 負荷の重心で、単位はmmです。

関節位置を取得

メッセージの送信:

{"cmdName":"get_joint_pos"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_joint_pos", "joint_pos": [j1,j2,j3,j4,j5,j6]}

説明:

  • j1,j2,j3,j4,j5,j6 は返される6つの関節位置で、単位は度です。

現在の実際の関節位置を取得

メッセージの送信:

{"cmdName":"get_actual_joint_pos"}

メッセージの受信:

{"errorCode": "0", "position": [285.8061097309843, 80.09823788479945, 60.72657603991451, 124.99045041547085, -85.27718451168131, 316.9348226974971], "cmdName": "get_actual_joint_pos", "errorMsg": ""}

説明:

  • position:返される6次元リストは各関節角を表します。

現在の座標系におけるエンドエフェクタの姿勢を取得

メッセージの送信:

{"cmdName":"get_tcp_pos"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": " get_tcp_pos", "tcp_pos": [x,y,z,a,b,c]}

説明:

  • [x,y,z,a,b,c] は現在設定されているツール座標系におけるエンドエフェクタの姿勢を表します。デフォルトではツール座標系はフランジ中心です。

現在の実際のデカルト姿勢を取得

メッセージの送信:

{"cmdName":"get_actual_tcp_pos"}

メッセージの受信:

{"errorCode": "0", "position": [604.2014815031182, -71.01229318144345, 1669.033510162098, -179.4141090762053, -6.279762125819193, 149.01179247501761], "cmdName": "get_actual_tcp_pos", "errorMsg": ""}

説明:

  • 6次元のリストを返し、各デカルト姿勢を表します。

ロボットの速度倍率を設定

メッセージの送信:

{"cmdName":"rapid_rate","rate_value":0.2}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "rapid_rate"}

説明:

  • rate_value: デフォルトではロボットプログラムの実行倍率は1です。このコマンドで変更でき、設定範囲は0から1です。

現在の速度を取得

メッセージの送信:

{"cmdName":"get_rapid_rate"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_rapid_rate", "value": 1.0}

説明:

  • value:現在の速度、範囲は[0~1]

ソフトリミット状態かどうかを照会

メッセージの送信:

{"cmdName":"is_on_limit"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "on_limit": 0, "cmdName": "is_on_limit"}

説明:

  • on_limit: True はロボットがソフトリミット状態にあることを示し、False はその逆を示します。

非常停止状態を照会

メッセージの送信:

{"cmdName":"emergency_stop_status"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "emergency_stop": 0, "cmdName": "emergency_stop_status"}

説明:

  • emergency_stop: 非常停止状態かどうかを返します。0 は非常停止状態ではないことを、1 は非常停止状態であることを示します。

モーションプランナーを設定

メッセージの送信:

{"cmdName":"set_motion_planner","type":1}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_motion_planner"}

説明:

  • type:モーションプランナーの種類。選択可能な値は -1、0、1 です。-1 はプランナーを無効化、0 は T プラン、1 は S プランを選択します。

サーボ関連

サーボ位置制御モードに入っているかを確認します

メッセージの送信:

{"cmdName":"is_in_servomove"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "in_servomove": true, "cmdName": "is_in_servomove"}

説明:

  • in_servomove:true、サーボモード中。false、サーボモードではありません。

ロボットのサーボ位置制御を有効化

メッセージの送信:

{"cmdName":"servo_move","relFlag":0}
{"cmdName":"servo_move","relFlag":1,"is_block":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "servo_move"}

説明:

  • relFlag:1 は servo_move モードに入る、0 は終了を意味します。
  • is_block:0は非ブロッキングモード、1はブロッキングモードを示します。

関節空間位置制御モード

メッセージの送信:

{"cmdName":"servo_j","relFlag":1,"jointPosition":[0.1,0,0,0,0,0],"stepNum":1}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "servo_j"}

説明:

  • ユーザーは6つの関節の角度を自分で生成し、それをロボットに送信して、ロボットを対応する目標位置に移動させることができます。
  • ユーザーは servo_j コマンドを使用する前に、servo_move コマンドを使用してサーボ位置制御モードに入る必要があります。
  • jointPosition:[joint1、joint2、joint3、joint4、joint5、joint6] に各関節の角度を入力します。単位は度です。
  • relFlag:relFlag のオプション値は 0 と 1 です。0は絶対運動を、1は相対運動を表します。
  • stepnum:周期分周を示します。ロボットは num×8ms の周期で受信したサーボ動作コマンドを実行します。
  • 注意すべき点として、コントローラの制御周期は 8ms であり、このコマンドは 8ms ごとに送信し続ける必要があります。一度だけ送信しても効果はなく、連続して送信する必要があります。また、6つの関節の最大速度は 180 度/秒です。例えば [1.5,0.5,0.5,0.5,0.5,0.5] の場合、1.5/0.008=187.5 となり、関節速度制限を超えるため servo_j コマンドは有効になりません。

注意:

このコマンドと joint_move の違いは大きく、このコマンドは主に研究用途で軌道計画を行う際に使用されます。このコマンドは、ロボットに送信されるときにコントローラのプランナーによる補間を経ず、直接サーボに送信されます。ユーザーがこのコマンドを使用する際は、事前に軌道の計画を行う必要があります。そうでないと、効果が悪く、期待した結果が得られません。通常は、joint_moveコマンドの使用を推奨します。

デカルト空間位置制御モード

relFlag:0は絶対運動、1は相対運動を表します。

メッセージの送信:

{"cmdName":"servo_p","catPosition":[x,y,z,a,b,c],"relFlag":0,"stepNum":1}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "servo_p"}

説明:

  • ユーザーは自身の軌道計画アルゴリズムを使用して各関節の座標点を生成し、それをロボットの6つの関節に送信できます。ロボットはこれらのコマンドを実行できます。
  • ユーザーはservo_pコマンドを使用する前に、servo_moveコマンドを使用してサーボ位置制御モードに入る必要があります。
  • catPosition:[x,y,z,a,b,c] は、ロボットのデカルト空間における座標を示します。xyzの単位はmm、abcの単位は度です。
  • abcは、ロボット姿勢のオイラー角の順序がXYZであることを表します。
  • relFlag:0 relFlagのオプションパラメータは0と1です。0は絶対運動を、1は相対運動を表します。
  • stepnum:周期分周を示します。ロボットは num×8ms の周期で受信したサーボ動作コマンドを実行します。
  • このコマンドは8msごとに送信する必要があることに注意してください。これは、コントローラが8msごとに位置点を補間するためです。さらに、x、y、z、a、b、cの値は大きすぎないようにし、コントローラの安全速度制限を超えないようにしてください。

注意:

このコマンドは主に研究における軌道計画で使用されます。このコマンドを使用する際、コントローラのプランナーは補間を行いません。ユーザーがこのコマンドを使用する際は、事前に軌道の計画を行う必要があります。そうでないと、効果が悪く、期待した結果が得られません。通常は、moveLの使用を推奨します。

サーボモードフィルター

  • set_servo_move_filterコマンドはサーボモードフィルターを設定し、軌道計画を補助します。
  • filter_typeは、運動モードを表し、指定できる値は6種類あります:
    • no_filterフィルター無効:0
    • 関節空間一次ローパスフィルター:1
    • 関節空間非線形フィルター:2
    • 関節空間多段平均フィルター:3
    • デカルト空間非線形フィルター:4
    • 速度プレビュー:5

filter_typeが0の場合、パラメータは1つだけです

メッセージの送信:

{"cmdName":"set_servo_move_filter","filter_type":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_servo_move_filter"}

説明:

フィルタを無効化し、補助計画にフィルタを使用しません。servoモードを終了した後に設定する必要があります。

filter_typeが1の場合、パラメータは2つだけです

メッセージの送信:

{"cmdName":"set_servo_move_filter","filter_type":1",lpf_cf":0.5}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_servo_move_filter"}

説明:

(a)関節空間の一次ローパスフィルタを設定します。servoモードを終了した後に設定する必要があります。

(b)lpf_cfはカットオフ周波数を示し、単位はHZです。

filter_typeが2の場合、パラメータは4つだけです

メッセージの送信:

{"cmdName":"set_servo_move_filter","filter_type":2,"nlf_max_vr":2,"nlf_max_ar":2,"nlf_max_jr":4}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_servo_move_filter"}

説明:

(a) 関節空間の非線形フィルタを設定します。servoモードを終了した後に設定する必要があります。

(b) max_vr 姿勢変化速度の速度上限値(絶対値)°/s。

(c) max_ar 姿勢変化速度の加速度上限値(絶対値)°/s^2。

(d) max_jr 姿勢変化速度のジャーク上限値(絶対値)°/s^3。

filter_typeが3の場合、パラメータは5つだけです

メッセージの送信:

{"cmdName":"set_servo_move_filter","filter_type":3,"mmf_max_buf":20,"mmf_kp":0.1,"mmf_kv":0.2,"mmf_ka":0.6}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_servo_move_filter"}

説明:

(a) 関節空間の多段平均フィルタを設定します。servoモードを終了した後に設定する必要があります。

(b) mmf_max_buf:フィルタウィンドウ幅。大きいほどフィルタ後の軌跡が滑らかになりますが、精度が低下します。

(c) mmf_kp:位置追従係数。小さいほど軌跡が滑らかになり、大きいほど精度が高くなりますが、振動が発生する可能性があります。

(d) mmf_kv:速度追従係数。小さいほど軌跡が滑らかになり、大きいほど精度が高くなりますが、振動が発生する可能性があります。

(e) mmf_ka:加速度位置追従係数が小さいほどフィルタリングされた軌跡は滑らかになりますが、精度は低下します。大きいほど精度は向上しますが、振動が発生する可能性があります。

filter_typeが4のときは7つのパラメータのみです

メッセージの送信:

{"cmdName":"set_servo_move_filter","filter_type":4,"nlf_max_vr":2,"nlf_max_ar":2,"nlf_max_jr":4,"nlf_max_vp":10,"nlf_max_ap":100,"nlf_max_jp":200}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_servo_move_filter"}

説明:

(a) デカルト空間の非線形フィルターを設定します。設定する前にサーボモードを終了する必要があります。

(b) max_vr デカルト空間における姿勢変化速度の上限値(絶対値)°/s。

(c) max_ar デカルト空間における姿勢変化速度の加速度上限値(絶対値)°/s^2。

(d) max_jr デカルト空間における姿勢変化速度のジャーク上限値(絶対値)°/s^3。

(e) max_vp デカルト空間における移動指令速度の上限値(絶対値)。単位:mm/s。

(f) max_ap デカルト空間における移動指令加速度の上限値(絶対値)。単位:mm/s^2。

(g) max_jp デカルト空間における移動指令ジャークの上限値(絶対値)。単位:mm/s^3。

filter_typeが5のときは3つのパラメータのみです

メッセージの送信:

{"cmdName":"set_servo_move_filter","filter_type":5,"mmf_max_buf":max_buf,"mmf_kp":kp}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_servo_move_filter"}

説明:

(a) 関節空間の多段平均フィルタを設定します。servoモードを終了した後に設定する必要があります。

(b) max_buf 移動平均フィルターのバッファサイズ。

(c) mmf_kp 加速度フィルター係数。

ドラッグモードのオン/オフを設定

メッセージの送信:

{"cmdName":"torque_control_enable","enable_flag":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "torque_control_enable"}

説明:

  • enable_flag:0はドラッグモードをオフ、1はドラッグモードをオンにします。

ドラッグ状態を取得

メッセージの送信:

{"cmdName":"get_drag_status"}

メッセージの受信:

{"status": false, "errorCode": "0", "cmdName": "get_drag_status", "errorMsg": ""}

説明:

  • drag_status: Trueであればロボットがドラッグモード中であり、ユーザーはロボットをドラッグプログラミングできます。値がFalseの場合はその逆です。

ドラッグ補償係数を設定

メッセージの送信:

{"cmdName":"robot_set_drag_parameters", "mode":1, "friction_compensation_ratio":[50, 50, 50, 50, 50, 50]}

メッセージの受信:

{"errorCode": "0", "cmdName": "robot_set_drag_parameters"}

説明:

  • mode: ドラッグモード
  • friction_compensation_ratio: 摩擦補償係数。6つのパラメータがあり、各パラメータの範囲は0〜150、単位はパーセンテージ。

ドラッグ補償係数を取得する

メッセージの送信:

{"cmdName":"robot_get_drag_parameters"}

メッセージの受信:

{"advanced_mode_supported": 1, "mode": 0, "friction_compensation_ratio_servo": [50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 0.0], "friction_compensation_ratio_controller": [0.333, 0.333, 0.333, 0.333, 0.333, 0.333, 0.333], "errorCode": "0", "cmdName": "robot_get_drag_parameters"}

説明:

  • advanced_mode_supported: ドラッグモードがアドバンスドモードをサポートしているかどうか
  • mode: ドラッグモード
  • friction_compensation_ratio_servo: サーボドラッグモードにおける摩擦補償係数。6つのパラメータがあり、各パラメータの範囲は0〜150、単位はパーセンテージ。
  • friction_compensation_ratio_controller: コントローラードラッグモードにおける摩擦補償係数。6つのパラメータがあり、各パラメータの範囲は0〜1。

IO設定関連

デジタル出力変数(DO)の値を設定する

メッセージの送信:

{"cmdName":"set_digital_output","type":0,"index":1,"value":1}
{"cmdName":"set_digital_output","type":2,"index":1,"value":1,"submod":44869}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_digital_output"}

説明:

  • typeはDOのタイプです: 0--コントローラIO;1--ツールIO;2--拡張IO;3--予約;4--modbusIO;5--Profinet IO;6--Ethernet/IP IO。
  • indexはDOの番号です。第1のDOを制御したい場合、index値を1に設定します。インデックスは1から始まります
  • valueはDOの値であり、0または1を選択できます。
  • submod は拡張IOのサブモジュール番号(オプションのパラメータ)。

デジタル出力変数(DO)の値を取得する

メッセージの送信:

{"cmdName":"get_digital_output","type":0,"index":1}
{"cmdName":"get_digital_output","type":2,"index":1,"submod":44869}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_digital_output", "value": 0}

説明:

  • typeはDOのタイプです: 0--コントローラAO;1--ツールIO;2--拡張AO;3--予約;4--modbusIO;5--Profinet IO;6--Ethernet/IP IO。
  • indexはDOの番号です。例えば、制御するDO番号が1~31の場合、第31のDOを制御したいなら、index値を31に設定します。インデックスは1から始まります
  • valueはDOの値であり、0または1を選択できます。
  • submod は拡張IOのサブモジュール番号(オプションのパラメータ)。

指定されたデジタル入力状態を取得する

メッセージの送信:

{"cmdName":"get_digital_input","type":0,"index":1}
{"cmdName":"get_digital_input","type":0,"index":1,"submod":44869}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_digital_input", "value": 0}

説明:

  • typeはDOのタイプです: 0--コントローラAO;1--ツールIO;2--拡張AO;3--予約;4--modbusIO;5--Profinet IO;6--Ethernet/IP IO。
  • indexはDOの番号です。例えば、制御するDO番号が1~31の場合、第31のDOを制御したいなら、index値を31に設定します。インデックスは1から始まります
  • valueはDOの値であり、0または1を選択できます。
  • submod は拡張IOのサブモジュール番号(オプションのパラメータ)。

デジタル入力状態を取得する

メッセージの送信:

{"cmdName":"get_digital_input_status"}
{"cmdName":"get_digital_input_status", "type":0}
{"cmdName":"get_digital_input_status", "type":2, "submod": 44869}

メッセージの受信:

{"din_status": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], "cmdName": "get_digital_input_status", "errorCode": "0", "errorMsg": ""}

説明:

  • type はDIの種類を示します: 0--コントローラAO;1--ツールIO;2--拡張AO;3--予約;4--modbusIO;5--Profinet IO;6--Ethernet/IP IO。
  • submod は拡張IOのサブモジュール番号(オプションのパラメータ)。

アナログ出力変数(AO)の値を設定する

メッセージの送信:

{"cmdName":"set_analog_output","type":3,"index":1,"value":0}
{"cmdName":"set_analog_output","type":2,"index":1,"value":0,"submod": 44869}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_analog_output"}

説明:

  • type はAOのタイプを示します:0--コントローラーAO;1--ツールIO;2--拡張AO;3--予約;4--modbusIO;5--Profinet IO;6--Ethernet/IP IO。
  • index はAOの番号を示します。たとえば、制御するAO番号が0~7の場合、第7番目のAOを制御したいときは index の値を7に設定します。
  • value はAOの値を示します。プログラミング要件に応じて浮動小数点数を入力できます。
  • submod は拡張IOのサブモジュール番号(オプションのパラメータ)。

アナログ出力変数(AO)の値を取得します

メッセージの送信:

{"cmdName":"get_analog_output","type":0,"index":1}
{"cmdName":"get_analog_output","type":2,"index":1,"submod": 44869}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_analog_output", "value": 0.0}

説明:

  • type はAOのタイプを示します:0--コントローラーAO;1--ツールIO;2--拡張AO;3--予約;4--modbusIO;5--Profinet IO;6--Ethernet/IP IO。
  • index はAOの番号を示します。たとえば、制御するAO番号が0~7の場合、第7番目のAOを制御したいときは index の値を7に設定します。
  • value はAOの値を示します。プログラミング要件に応じて浮動小数点数を入力できます。例:4.32。
  • submod は拡張IOのサブモジュール番号(オプションのパラメータ)。

拡張IOの状態を取得

メッセージの送信:

{"cmdName":"get_extio_status"}

メッセージの受信:

  • 拡張モジュールがない場合:
{"errorCode": "0", "errorMsg": "", "cmdName": "get_extio_status", "extio_status": {"status": "[[], [], [], []]", "setup": "[]", "num": 0, "pinmap": "[]", "mode": 0}}
  • 拡張モジュールがある場合:
{"extio_status": {"num": 1, "mode": [[23014, 0, 0]], "setup": "[[1, \"test\", [1, \"192.168.220.144\", 2486], [[], [], [], []], \"ext_kt7dnnl0f7m75b4b\", 23014, 1000.0, 3, 1000, 1]]", "status": "[[23014, 0, 0, [], [], [], []]]"}, "cmdName": "get_extio_status", "errorCode": "0", "errorMsg": ""}

extio_statusの説明:

  • num:numは外部拡張IOモジュールの数を表します。
  • mode: 順にサブモジュール番号、状態、エラーコード
  • setup:[type[, name, (comm), (di_startRegAddr, di_pinNum), (do_startRegAddr, do_pinNum), (ai_startRegAddr, ai_pinNum), (ao_startRegAddr, ao_pinNum)], ...]
  • [[1, 8],[ 17, 8],[ 0, 0],[ 0, 0]] の4つのリストはそれぞれ、デジタル入力、デジタル出力、アナログ入力、アナログ出力を表します。カッコ内の最初の数値は外部拡張モジュールのレジスタ開始割り当てアドレスを表します。2番目の数値はIOの数量を表します。
  • status: [[submod, status, errcode,[ dival, ...], [doval,...], [[aivtype, aival],...], [[aovtype, aoval],...], ...]]

機能入力ピンの状態を取得

メッセージの送信:

{"cmdName":"get_funcdi_status"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "funcdi_status": [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [0,2], [-1,-1], [-1, -1], [-1, -1]], "cmdName": "get_funcdi_status"}

説明:

  • funci_status:合計で12種類の機能入力ピンが返され、それぞれ次のとおりです:
      1. プログラムの開始、
      1. プログラムの一時停止、
      1. プログラムの再開、
      1. プログラムの停止、
      1. 電源を入れる、
      1. 電源を切る、
      1. ロボットを有効化、
      1. ロボットを無効化、
      1. 第1段階の減速モード、
      1. 保護停止、
      1. 初期位置に戻す、
      1. 第2段階の減速モード。
    • 13エラークリア
    • 14ドラッグモード
    • 15ドラッグモードオフ
  • [type,index,module]:[-1,-1,-1]はデフォルト値であり、入力ピンが機能ピンとして設定されていないことを示します。
    • Type の値には3種類があります:

      • 0 は制御キャビネットの入力ピンを表します、
      • 1 はロボットエンドツールの入力ピンを表します、
      • 2 は modbus の入力ピンを表します。
    • Index は入力ピンのインデックス番号を表し、どのピンが機能ピンとして設定されているかを示します。上記の例では、[0,2 ]は制御キャビネットの3番目のピン(インデックス番号は0から開始)が第1段階の減速モード機能ピンとして設定されていることを示します。

    • Moduleは入力ピンのサブモジュール番号(拡張IO)を表します。

TIO関連

TIO V3ツール電圧を設定

メッセージの送信:

{"cmdName":"set_tio_vout_param","tio_vout_ena":0,"tio_vout_vol":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_tio_vout_param"}

説明:

  • tio_vout_ena パラメータは0または1です。0は無効、1は有効です。

  • tio_vout_vol パラメータは0または1です。0は24V、1は12Vです。

TIO V3ツール電圧を取得

メッセージの送信:

{"cmdName":"get_tio_vout_param"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "tio_vout_ena": 0, "tio_vout_vol": 0, "cmdName": "get_tio_vout_param"}

説明:

  • tio_vout_ena パラメータは0または1です。0は未有効、1は有効です。

  • tio_vout_vol パラメータは0または1です。0は24V、1は12Vです。

信号を追加または変更

送信メッセージ:

{"cmdName":"add_tio_rs_signal","tio_signal_name":<>,"tio_signal_chnId":<>,"tio_signal_sigType":<>,"tio_signal_sigAddr":<>,"frequency":<>}

受信メッセージ: {"errorCode": "0", "errorMsg": "", "cmdName": "add_tio_rs_signal"} 説明:

  • tio_signal_name: 識別名(20文字以内に制限)
  • tio_signal_chnId: RS485 チャネルID
  • tio_signal_sigType: 信号タイプ
  • tio_signal_sigAddr: レジスタアドレス
  • frequency: 信号のコントローラ内部リフレッシュレートは10以下

RS485信号リストを取得

送信メッセージ:

{"cmdName":"get_rs485_signal_list"}

受信メッセージ: 信号がない場合の戻り値:

{"errorCode": "0", "errorMsg": "", "num": 0, "cmdName": "get_rs485_signal_list"}

信号がある場合の戻り値:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_rs485_signal_list", "num":<>, {"signalName":{"sigType": <>, "sigAddr": <>, "chnId": <>, "frequency": <>, "value": <>}}}

numは信号量の個数を示します。各キーと値のペアの順序は固定されていません。 例:

{"c": {"sigType": 3, "sigAddr": 512, "chnId": 1, "frequency": 4.0, "value": 0}, "b": {"sigType": 3, "sigAddr": 514, "chnId": 1, "frequency": 5.0, "value": 1000}, "errorMsg": "", "cmdName": "get_rs485_signal_list", "errorCode": "0", "num": 2}

説明:

  • num:信号の数を示します
  • signalName:信号量の名前
  • chnId:チャンネルID
  • sigType:信号タイプ
  • sigAddr:レジスタアドレス
  • value:信号値
  • frequency:更新頻度 }

信号量を削除する

送信メッセージ:

{"cmdName":"del_tio_rs_signal","tio_signal_name":"test"}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "del_tio_rs_signal"}

説明:

  • tio_signal_name:信号名

TIOモードを設定する

送信メッセージ:

{"cmdName":"set_tio_pin_mode","pinType":<>,"pinMode":<>}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_tio_pin_mode"}

説明:

  • pinType:tioタイプ 0 は DI ピン、1 は DO ピン、2 は AI ピン
  • pinMode:tio モード
    • DI ピン: 8 桁の 16 進データ。上位 4 桁は高位 4 ビットを示し、DI2 の設定を表します。下位 4 桁は低位 4 ビットを示し、DI1 の設定を表します。値が 0x0 の場合は NPN、0x1 の場合は PNP を意味します。
      • 0x00 DI2 は NPN、DI1 は NPN
      • 0x01 DI2 は NPN、DI1 は PNP
      • 0x10 DI2 は PNP、DI1 は NPN
      • 0x11 DI2 は PNP、DI1 は PNP
    • DO ピン: 8ビット16進データ。上位4ビットは DO2 の設定、下位4ビットは DO1 の設定。
      • 0x0 の場合、DO は NPN 出力。
      • 0x1 の場合、DO は PNP 出力。
      • 0x2 の場合、DO はプッシュプル出力。
      • 0xF の場合、RS485H インターフェイス。
    • AI ピン:
      • 0:アナログ入力機能を有効にし、RS485L を無効にする。
      • 1:RS485L インターフェイスを有効にし、アナログ入力機能を無効にする。

TIO モードを取得

送信メッセージ:

{"cmdName":"get_tio_pin_mode","pinType":<>}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_tio_pin_mode", "pinMode": <>}

説明:

  • pinType:tioタイプ 0 は DI ピン、1 は DO ピン、2 は AI ピン
  • pinMode:tio モード
    • DI ピン:
      • 0:0x00 DI2 は NPN、DI1 は NPN。
      • 1:0x01 DI2 は NPN、DI1 は PNP。
      • 2:0x10 DI2 は PNP、DI1 は NPN。
      • 3:0x11 DI2 は PNP、DI1 は PNP。
    • DO ピン:8ビットデータ。上位4ビットは DO2 の設定、下位4ビットは DO1 の設定。
      • 0x0 の場合、DO は NPN 出力。
      • 0x1 の場合、DO は PNP 出力。
      • 0x2 の場合、DO はプッシュプル出力。
      • 0xF RS485H インターフェイス。
    • AI ピン:
      • 0:アナログ入力機能を有効にし、RS485L を無効にする。
      • 1:RS485L インターフェイスを有効にし、アナログ入力機能を無効にする。

RS485 通信パラメータを設定

送信メッセージ:

{"cmdName":"set_rs485_chn_comm","chn_id":<>,"slaveId":<>,"baudrate":<>,"databit":<>,"stopbit":<>,"parity":<>}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_rs485_chn_comm"}

説明:

  • chn_id:RS485 チャネル ID。照会時、chn_id は入力パラメータとして使用されます。
  • slaveId:チャンネルモードが Modbus RTU に設定されている場合、追加で Modbus スレーブノード ID を指定する必要があります。他のモードでは省略可能です。
  • baudrate:ボーレート 4800、9600、14400、19200、38400、57600、115200、230400
  • databit: データビット 8,9
  • stopbit:ストップビット 1、2
  • parity:パリティビット 78→なし 79→奇数 69→偶数

RS485 通信パラメータを取得

送信メッセージ:

{"cmdName":"get_rs485_chn_comm","chn_id":<>}

受信メッセージ:

{"parity": 78, "baudrate": 115200, "stopbit": 1, "errorMsg": "", "cmdName": "get_rs485_chn_comm", "errorCode": "0", "databit": 8, "slaveId": 0}

説明:

  • chn_id:RS485 チャネル ID。照会時、chn_id は入力パラメータとして使用されます。
  • slaveId:チャンネルモードが Modbus RTU に設定されている場合、追加で Modbus スレーブノード ID を指定する必要があります。他のモードでは省略可能です。
  • baudrate:ボーレート 4800、9600、14400、19200、38400、57600、115200、230400
  • databit:データビット 7、8
  • stopbit:ストップビット 1、2
  • parity:パリティビット 78->なし 79->奇数 69->偶数

RS485 通信モードを設定

送信メッセージ:

{"cmdName":"set_rs485_chn_mode","chnId":<>,"chnMode":<>}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_rs485_chn_mode"}

説明:

  • chnId:0: RS485H、チャンネル1;1: RS485L、チャンネル2
  • chnMode:0: Modbus RTU、1: Raw RS485、2: トルクセンサー

RS485 通信モードを取得

送信メッセージ:

{"cmdName":"get_rs485_chn_mode","chnId":<>}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_rs485_chn_mode", "chnMode": <>}

説明:

  • chnId:0: RS485H、チャンネル1。1: RS485L、チャンネル2。
  • chnMode:0: Modbus RTU。1: Raw RS485。2:トルクセンサー。

RS485 経由でコマンドを送信

送信メッセージ:

{"cmdName":"send_tio_rs_command","chn_id":<>,"cmdBuf":<>}

受信メッセージ:

{"errorCode": "0", "errorMsg": "", "cmdName": "send_tio_rs_command"}

説明:

  • chn_id:チャンネル番号
  • cmdBuf:データフィールド。16進数を10進数に変換してから送信する必要があります。

シグナルを取得

メッセージの送信:

{"cmdName":"get_tio_signals"}

メッセージの受信: 信号がない場合の戻り値:

{"signals": [], "errorCode": "0", "cmdName": "get_tio_signals", "errorMsg": ""}

信号がある場合の戻り値:

{"signals": [["a", 1, 3, 512, 1, 1.0], ["b", 1, 3, 513, 1, 2.0], ["c", 1, 3, 514, 1000, 3.0]], "errorCode": "0", "cmdName": "get_tio_signals", "errorMsg": ""}

説明:

  • signals:シグナルリストを返します。8個の要素を持つリストで、シグナルがない場合は空のリストになります。
  • 最初の項目はシグナル名です。
  • それぞれのリスト内の項目は順に:chn_id チャンネル番号 ID、signal_type シグナルタイプ、sigal_addr シグナルアドレス、value シグナル値、frequence シグナル更新頻度を表します。

プログラム関連

プログラムをロード

メッセージの送信:

{"cmdName":"load_program","programName":"track/test.jks"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "load_program"}

説明:

  • programName は中国語をサポートしていません。
  • コントローラーがバージョン1.5以前の場合は .ngc をファイル拡張子として使用します。1.5以降のバージョンでは .jks を使用します。
  • トラックファイルをロードする場合、ファイル名の前に track/ を付ける必要があります

ロード済みプログラム名を取得

メッセージの送信:

{"cmdName":"get_loaded_program"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_loaded_program", "programName": "test.jks"}

プログラムを実行

メッセージの送信:

{"cmdName":"play_program"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "play_program"}

プログラムを一時停止

メッセージの送信:

{"cmdName":"pause_program"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "pause_program"}

プログラムを再開

メッセージの送信:

{"cmdName":"resume_program"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "resume_program"}

プログラムを停止

メッセージの送信:

{"cmdName":"stop_program"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "stop_program"}

説明:

  • プログラムを停止するということは、実際にはロボットの動きを止めることを意味します。
  • stop_program はロボットの他の動作コマンド(joint_move / moveL など)を停止するためにも使用できます。ロボットの動作を止めたい場合は stop_program を使用することをお勧めします。

プログラム状態を取得

プログラム状態:running / pause / idle

  • running:実行中
  • pause:一時停止状態
  • idle:待機状態

メッセージの送信:

{"cmdName":"get_program_state"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_program_state", "programState": "idle"}

ユーザー定義システム変数を照会

メッセージの送信:

{"cmdName":"query_user_defined_variable","alias":"test"}

メッセージの受信:

{"alias": "test", "type": 0, "value": 10.0, "cmdName": "query_user_defined_variable", "errorCode": "0", "errorMsg": ""}

説明:

  • alias:システム変数の名前。
  • type:システム変数のタイプ。0:numeric、1:string、2:array、3:pose位置変数、4:velocity速度変数。
  • value:システム変数の値。例えば、返信メッセージで返されるシステム変数名がtestで、typeが0、値が10.0の場合。

ユーザー定義システム変数を変更する

メッセージの送信:

{"cmdName":"modify_user_defined_variable","alias":"test","type":0, "value": "10"}

メッセージの受信:

{"cmdName": "modify_user_defined_variable", "errorCode": "0", "errorMsg": ""}

説明:

  • alias:変更するシステム変数の名前を設定します。
  • type:システム変数のタイプ。0:numeric、1:string、2:array、3:pose位置変数、4:velocity速度変数。
  • value:変更するシステム変数の値を設定します。

現在のスクリプト実行行番号を取得

メッセージの送信:

{"cmdName":"get_current_line"}

メッセージの受信:

{"current_line": 0, "errorCode": "0", "cmdName": "get_current_line", "errorMsg": ""}

説明:

  • current_line:現在のスクリプト実行行番号。

プログラム状態情報を取得

メッセージの送信:

{"cmdName":"get_program_info"}

メッセージの受信:

{"current_line": 0, "errorMsg": "", "cmdName": "get_program_info", "errorCode": "0", "programName": "test", "programState": "idle", "motion_line": 0}

説明:

  • current_line:現在のメインスレッドスクリプト実行行番号。
  • programName:プログラム名。
  • programState:プログラムの状態。idle:待機中。running:実行中。paused:一時停止中。
  • motion_line:現在の動作行番号(動作コマンドのみ)。

ロボットアーム安全状態関連

保護停止インターフェース

メッセージの送信:

{"cmdName":"protective_stop_status"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "protective_stop": "0", "cmdName": "protective_stop_status"}

説明:

  • protective_stopの値が1のとき、ロボットは保護停止状態にあります。値が0のときはその逆です。保護停止は通常、ロボットが衝突した場合に発生します。この時、ロボットは保護停止状態になります。

ロボットの衝突レベルを設定する

メッセージの送信:

{"cmdName":"set_clsn_sensitivity","sensitivityVal":level}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_clsn_sensitivity"}

説明:

  • levelの選択値は0~7で、0は衝突検出をオフにし、レベル1の衝突感度が最も高いです。レベル7の衝突感度が最も低く、APPでクイック設定を使用する場合、1は厳しい制限、7は非常に緩い制限を意味します。

ロボットの衝突レベルを取得する

メッセージの送信:

{"cmdName":"get_clsn_sensitivity"}

メッセージの受信:

{"errorCode": "0", "sensitivityLevel": 1, "cmdName": "get_clsn_sensitivity", "errorMsg": ""}

説明:

  • levelは返された衝突レベルです。0は衝突検出をオフにすることを意味します。1は衝突感度が最も高いことを意味します。7は衝突感度が最も低いことを意味します。

衝突後に衝突保護モードから復帰

メッセージの送信:

{"cmdName":"clear_error"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "clear_error"}

ロボットアームの運動学に関連

ロボット運動学の順運動解

メッセージの送信:

{"cmdName":"kine_forward","jointPosition":[j1,j2,j3,j4,j5,j6]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "kine_forward", "cartPosition": [x,y,z,rx,ry,rz]}

説明:

  • [j1,j2,j3,j4,j5,j6]は順運動学を求めるために送信される6つの関節角度であり、[x,y,z,rx,ry,rz]は順運動学の計算結果として得られるロボットエンドの姿勢です。
  • 順・逆運動解インターフェースの計算は、デフォルトで現在のユーザー座標系およびツール座標系に基づいて行われます。

ロボット運動学の逆運動解

メッセージの送信:

{"cmdName":"kine_inverse","jointPosition":[j1,j2,j3,j4,j5,j6],"cartPosition": [x,y,z,rx,ry,rz]}

メッセージの受信:

  • 逆運動学が成功した場合:
{"errorCode": "0", "errorMsg": "", "cmdName": "kine_inverse", "jointPosition":[x,y,z,rx,ry,rz]}
  • 逆運動学が失敗した場合:
{"errorCode": "-4", "errorMsg": "call kine_inverse failed", "cmdName": "kine_inverse"}

説明:

  • 送信する jointPosition はロボットの参照関節角であり、ユーザーはロボットの現在の関節角を参照関節角として選択することを推奨します。単位は度です。
  • 送信する cartPosition はロボットのエンドエフェクタ姿勢であり、[x,y,z,a,b,c] の形式です。x, y, z はデカルト空間位置(単位:ミリメートル)、a, b, c は姿勢(単位:度)です。
  • 受信メッセージで得られる jointPosition は逆運動学計算後のロボット関節角度です。

軌跡関連

軌跡取得パラメータを設定

メッセージの送信:

{"cmdName":"set_traj_config","acc":100,"vel":20,"xyz_interval":0.1,"rpy_interval":0.1}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_traj_config"}

説明:

  • acc:軌跡実行の加速度 mm/s^2。
  • vel:軌跡実行の速度 mm/s。
  • xyz_interval:デカルト空間の位置データ取得間隔。
  • rpy_interval:デカルト空間の回転データ取得間隔。

軌跡取得パラメータを取得

メッセージの送信:

{"cmdName":"get_traj_config"}

メッセージの受信:

{"acc": 100.0, "xyz_interval": 0.1, "errorMsg": "", "cmdName": "get_traj_config", "errorCode": "0", "rpy_interval": 0.1, "vel": 20.0}

説明:

  • acc:軌跡実行の加速度 mm/s^2。
  • vel:軌跡実行の速度 mm/s。
  • xyz_interval:デカルト空間の位置データ取得間隔。
  • rpy_interval:デカルト空間の回転データ取得間隔。

軌跡サンプリングスイッチを設定

メッセージの送信:

{"cmdName":"set_traj_sample_mode","mode":1,"filename":"test"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_traj_sample_mode"}

説明:

  • mode:0はオフ、1はオン。
  • filename:ファイル名。

軌跡サンプリングスイッチの状態を取得

メッセージの送信:

{"cmdName":"get_traj_sample_status"}

メッセージの受信:

{"sampleStatus": 1, "errorCode": "0", "cmdName": "get_traj_sample_status", "errorMsg": ""}

説明:

  • sampleStatus:0はオフ、1はオン。

コントローラ内に既に存在する軌跡再現データのファイル名を取得する

メッセージの送信:

{"cmdName":"get_exist_traj_file_name"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_exist_traj_file_name", "trajTrackFileName": ["pythonTrack1", "test"]}

説明:

  • trajTrackFileName:軌跡データファイル名。すべての名称をリスト形式で返す。

軌跡再現データのファイル名を変更する

メッセージの送信:

{"cmdName":"rename_traj_file_name","src":"test","dest":"test_rename"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "rename_traj_file_name"}

説明:

  • src:元の軌跡データファイル名。
  • dest:変更後のファイル名。

軌跡を削除する

メッセージの送信:

{"cmdName":"remove_traj_file","fileName":fileName}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "remove_traj_file"}

説明:

  • filename:軌跡データファイル名。

コントローラ内の軌跡再現データファイルからコントローラ実行スクリプトを生成する

メッセージの送信:

{"cmdName":"generate_traj_exe_file","fileName":"test_rename"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "generate_traj_exe_file"}

説明:

  • filename:軌跡データファイル名。

力制御関連

本節の内容は、力制御製品open in new windowの使用マニュアルを読了した上で読むことを推奨し、JAKA SDK力制御機能クイックスタートガイドをopen in new window参考にして理解してください。 文章の冗長さを避けるため、本節では「力制御」を「力順応制御」の略として使用し、「エンド力センサ」「力センサ」または「センサ」を、ロボットエンドに取り付けられた6軸または1軸の力/トルクセンサを指すものとします。

力センサー情報を取得

メッセージの送信:

{"cmdName":"get_ft_sensor_basic_info"}

メッセージの受信:

{"sensors": [{"id": 1, "sensor_model": 10, "name": "フランジセンサー", "active": 1, "status": 1}], "cmdName": "get_ft_sensor_basic_info", "errorCode": "0", "errorMsg": ""}

説明:

  • sensors: センサーid、sensor_model:センサー型番、name:センサー名、active:センサーが有効かどうか、status:センサーの状態。

センサーのソフトリミットルールを設定

メッセージの送信:

{"cmdName":"set_ft_sensor_soft_limit_rules","rules":[{"rule_id":0,"sensor_id":1,"active":1,"torque_sensor_limit":[10.0,10.0,10.0,5.0,5.0,5.0]}]}

メッセージの受信:

{"cmdName": "set_ft_sensor_soft_limit_rules", "errorCode": "0", "errorMsg": ""}

説明:

  • rules: rule_id: ルールid、sensor_id:センサーid、active:有効かどうか、torque_sensor_limit:センサーのソフトリミットルール。

センサーのソフトリミットルールを取得

メッセージの送信:

{"cmdName":"get_ft_sensor_soft_limit_rules"}

メッセージの受信:

{"rules": [{"rule_id": 0, "active": 1, "sensor_id": 1, "torque_sensor_limit": [10.0, 10.0, 10.0, 5.0, 5.0, 5.0]}, {"rule_id": 1, "active": 0, "sensor_id": 0, "torque_sensor_limit": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, {"rule_id": 2, "active": 0, "sensor_id": 0, "torque_sensor_limit": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}], "cmdName": "get_ft_sensor_soft_limit_rules", "errorCode": "0", "errorMsg": ""}

説明:

  • rules: rule_id: ルールid、sensor_id:センサーid、active:有効かどうか、torque_sensor_limit:センサーのソフトリミットルール。

エンド力センサのモデルを設定する

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"set_torsenosr_brand","sensor_brand":num}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_torsenosr_brand"}

説明:

sensor_band:

  • numはセンサーの型番を示し、取りうる値の範囲は1~6または10です。センサーのハードウェア外装に刻印された型番数字と一致している必要があります。そのうち10は、すでにロボットのフランジ内部に内蔵されているセンサーを特に指します。このタイプのセンサーはシステムによって自動的に管理され、このインターフェースを呼び出して設定する必要はありません。

エンド部力覚センサーの型番を取得

メッセージの送信:

{"cmdName":"get_torsenosr_brand"}

メッセージの受信:

{"sensor_brand": 1, "errorCode": "0", "cmdName": "get_torsenosr_brand", "errorMsg": ""}

説明:

  • sensor_band: センサー型番

センサーエンドの負荷識別を開始

メッセージの送信:

{"cmdName":"start_torq_sensor_payload_identify","jointPosition":[j1,j2,j3,j4,j5,j6]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "start_torq_sensor_payload_identify"}

説明:

  • これは動作をトリガーする命令であり、ロボットをjointPositionで指定された位置に動かします。

  • jointPosition:負荷識別の終点です。終点位置の設定に関する注意事項については、フォースコントロール製品マニュアルopen in new windowの関連機能の説明を参照してください。

センサーエンドの負荷識別状態を取得

メッセージの送信:

{"cmdName":"get_torq_sensor_identify_staus"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_torq_sensor_identify_staus", "identify_status": 1}

説明:

identify_status:0は識別結果が読み取り可能であることを示し、1はまだ読み取り可能な識別結果がないことを示し、2は識別が失敗したことを示します。

センサーエンドの負荷識別結果を取得

メッセージの送信:

{"cmdName":"get_torq_sensor_payload_identify_result"}

メッセージの受信:

{"errorCode": "0", "centroid": [0, 0, 0], "mass": 0, "cmdName": "get_torq_sensor_payload_identify_result", "errorMsg": ""}

説明:

  • massは負荷の質量で、単位はキログラム(KG)です。

  • centroidは負荷の重心で、単位はmmです。

注意:

set_tool_payloadとset_payloadの違いをよく区別してください。

payloadはロボットの動力学に影響します。

tool_payloadはフォースコントロールの効果(すなわち、フォースコントロール時のロボットのトルク補償)に影響します。

センサーエンドの負荷を設定

メッセージの送信:

{"cmdName":"set_tool_payload", "sensor_id":1, "payload_id":1}

メッセージの受信:

{"cmdName": "set_tool_payload", "errorCode": "0", "errorMsg": ""}

説明:

  • sensor_id: センサーID
  • payload_id: ペイロードID

センサー先端の負荷を取得

メッセージの送信:

{"cmdName":"get_tool_payload", "sensor_id":1}

メッセージの受信:

{"payload_id": 0, "mass": 0.0, "payload": [0.0, 0.0, 0.0], "cmdName": "get_tool_payload", "errorCode": "0", "errorMsg": ""}

説明:

  • payload_id: ペイロードID
  • mass: 負荷の質量で、単位はキログラム(KG)です。
  • payload: 負荷の重心で、単位はmmです。

力制御座標系を設定する

メッセージの送信:

{"cmdName":"set_cst_force_ctrl_frame", "cstForceFrame":1}

メッセージの受信:

{"cmdName": "set_cst_force_ctrl_frame", "errorCode": "0", "errorMsg": ""}

説明:

  • cstForceFrame:0 ツール;1 ワールド

力制御座標系を取得

メッセージの送信:

{"cmdName":"get_cst_force_ctrl_frame"}

メッセージの受信:

{"cstForceFrame": 1, "cmdName": "get_cst_force_ctrl_frame", "errorCode": "0", "errorMsg": ""}

説明:

  • cstForceFrame: 0ツール ; 1ワールド

力・コンプライアンス制御パラメータの設定

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"set_admit_ctrl_config","axis":2,"opt":1,"ftUser":25,"ftConstant":5,"ftNnormalTrack":0,"ftReboundFK":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_admit_ctrl_config"}

説明:

  • axis:0,x軸;1,y軸;2,z軸;3,rx;4,ry;5,rz。

  • opt:0 オフ,1 オン。

  • ftUser:ダンピング。これはロボット先端が外部環境に対して示す剛性に影響します。このパラメータが大きいほど、ロボット先端が示す剛性は大きくなります。単位:×8N·s/m (x/y/z用)、×16Nm·s/π (rx/ry/rz用)

  • ftReboundFK:リバウンド。これはロボットのコンプライアンス制御過程で、指令軌跡(または初期位置)との弾性係数を表します。単位は N/mm (x/y/z用)、Nm/rad (rx/ry/rz用) です。

  • ftConstant:目標力を表し、単位は N (x/y/z用)、Nm (rx/ry/rz用) です。

  • ftNnormalTrack:過去との互換性のためのインターフェースであり、正常動作を確保するために現在はすべて0に設定する必要があります。

  • 上記各パラメータの詳細については、力制御製品の取扱open in new window説明書の関連説明を参照してください。

力コンプライアンス制御パラメータを取得

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"get_admit_ctrl_config"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_admit_ctrl_config", "admitConfig": [[0, 5.0, 0.0, 0.0, 0], [0, 5.0, 0.0, 0.0, 0], [1, 25.0, 0.0, 5.0, 0], [0, 0.20000000298023224, 0.0, 0.0, 0], [0, 0.20000000298023224, 0.0, 0.0, 0], [0, 0.20000000298023224, 0.0, 0.0, 0]]}

説明:

  • admitConfig:6組の1×5行列で構成され、それぞれがx、y、z、rx、ry、rzの力コンプライアンス制御パラメータを表します。

  • 各行列内は順番にopt、ftUser、ftReboundFK、ftConstant、ftNnormalTrackです[]。

エンドエフェクタ力センサーのオン/オフを切り替える

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"set_torque_sensor_mode","sensor_mode":mode}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_torque_sensor_mode"}

説明:

  • mode:0=オフ;1=オン

ツールドラッグのオン/オフを切り替える

enable_admittance_ctrlと同じ機能を持ち、センサーを有効にして適切なコンプライアンス制御パラメータを設定する必要があります。さらに、ツールドラッグを有効にする前に少なくとも一度はフォースコントロールセンサーのゼロ校正を行うことを推奨します。

メッセージの送信:

{"cmdName":"enable_tool_drive", "enable_flag":1}

メッセージの受信:

{"cmdName": "enable_tool_drive", "errorCode": "0", "errorMsg": ""}

説明:

  • enable_flag:0=オフ;1=オン。

力制御タイプと読み取り値表示(初期化)状態を取得

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"get_compliant_type"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "compliance_type": 0, "sensor_compensation": 1, "cmdName": "get_compliant_type"}

説明:

  • sensor_compensation:1は、APPのリアルタイム力曲線表示および10000ポートから返されるtorqsensor11[]が実際の外力を示す[こと]を意味します。0は、力制御状態にない場合にAPPのリアルタイム力曲線表示および10000ポートから返されるtorqsensor11[]がセンサーの生データを示す[こと]を意味します(力制御状態の場合は引き続き実際の外力を示します)。
  • compliance_type:0はコンプライアンス制御を使用しないことを示し、1は一定力コンプライアンス制御を有効にし、2は速度コンプライアンス制御を有効にすることを示します。

力制御タイプとゼロ校正(初期化)オプションを設定

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"set_compliant_type","sensor_compensation":1,"compliance_type":1}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_compliant_type"}

説明:

  • sensor_compensation:1はセンサーのゼロ点補正を即座に実行し、APPのリアルタイム力曲線表示およびポート10000から返されるtorqsensor11を[]実際の外力に切り替えることを意味します。0は[]ゼロ点補正を行わず、力制御状態でない場合APPのリアルタイム力曲線表示およびポート10000から返されるtorqsensor11[][]をセンサーの生データに切り替えることを意味します(力制御状態の場合は引き続き実際の外力となります)。
  • compliance_type:0は柔軟制御を使用しないことを意味し、1は一定力の柔軟制御を有効にし、2は速度柔軟制御を有効にします。

注:

このインターフェースは非推奨(deprecated)であり、代替インターフェースはenable_cst_force_ctrlです。

エンドエフェクタの力センサー動作状態を取得

メッセージの送信:

{"cmdName":"get_torque_sensor_mode", "sensor_id":1}

メッセージの受信:

{"sensor_mode": 1, "cmdName": "get_torque_sensor_mode", "errorCode": "0", "errorMsg": ""}

説明:

  • sensor_id: センサーID
  • sensor_mode:0は未起動、1は起動中を示します。

エンドエフェクタの力センサー通信パラメータを設定

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"set_torque_sensor_comm","type":0,"ip_addr":"172.30.1.110","port":55555}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_torque_sensor_comm"}

説明:

  • type:0はネットワークポートまたはUSBを使用、1はTIOを使用します。
  • ip_addrはネットワークポート使用時のセンサーIPアドレスです。
  • portはネットワークポート使用時の力制御センサーポート番号です。
  • 1に設定するかUSBを使用する場合、ip_addrとportは無効であり、例のようにデフォルトパラメータを指定すれば十分です。

エンドエフェクタの力センサー通信パラメータを取得

このインターフェースは非推奨です

メッセージの送信:

{"cmdName":"get_torque_sensor_comm"}

メッセージの受信:

{"ip_addr": "192.168.2.228", "errorMsg": "", "cmdName": "get_torque_sensor_comm", "errorCode": "0", "type": 0, "port": 49152}

説明:

  • type:0はネットワークポートまたはUSBを使用、1はTIOを使用します。
  • ip_addrはネットワークポート使用時のセンサーIPアドレスです。
  • portはネットワークポート使用時の力制御センサーポート番号です。
  • TIOまたはUSBを使用する場合、ip_addrとportは無効なパラメータであり、返り値に実際の意味はありません。

エンドエフェクタの力センサーのローパスフィルタカットオフ周波数を設定

メッセージの送信:

{"cmdName":"set_torque_sensor_filter","torqueSensorFilter":10}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_torque_sensor_filter"}

説明:

  • torqueSensorFilter:ローパスフィルタのカットオフ周波数、単位:Hz

エンドエフェクタの力センサーのローパスフィルタカットオフ周波数を取得

メッセージの送信:

{"cmdName":"get_torque_sensor_filter"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "torqueSensorFilter": 1.0, "cmdName": "get_torque_sensor_filter"}

説明:

  • torqueSensorFilter:ローパスフィルタのカットオフ周波数、単位:Hz

力コンプライアンス制御を無効にする

定力コンプライアンス制御および速度コンプライアンス制御に有効だが、ツールドラッグには有効ではない メッセージの送信:

{"cmdName":"disable_force_control"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "disable_force_control"}

速度コンプライアンス制御パラメータを設定する

注:

このインターフェースは廃止予定です(deprecated)

メッセージの送信:

{"cmdName":"set_vel_compliant_ctrl","compliant_ctrl":[vc_level, rate1, rate2, rate3, rate4]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_vel_compliant_ctrl"}

説明:

  • compliant_ctrl:vc_level は速度コンプライアンス制御レベル。
  • rate1 比率レベル1;rate2 比率レベル2;rate3 比率レベル3;rate4 比率レベル4。

速度コンプライアンス制御の力条件を設定する

メッセージの送信:

{"cmdName":"set_compliance_condition","compliant_condition":[0,0,0,0,0,0]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_compliance_condition"}

説明:

  • compliant_condition:力センサの力成分およびモーメント成分。fx:x軸方向の力成分;tx:x軸周りのモーメント成分。

エンド力センサのソフトリミットを設定する

メッセージの送信:

{"cmdName":"set_torque_sensor_soft_limit","torqueSensorSoftLimit":{"Fx":1,"Fy":1,"Fz":1,"Mx":1,"My":1,"Mz":1}}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_torque_sensor_soft_limit"}

説明:

  • "Fx"、"Fy"、"Fz"、"Mx"、"My"、"Mz" は各方向で許容される最大の力またはモーメント値を示し、単位は N および Nm。これを超えるとエラーが発生し、プログラムおよびロボットの動作が停止する。

エンド力センサのソフトリミットを取得する

メッセージの送信:

{"cmdName":"get_torque_sensor_soft_limit"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "torqueSensorSoftLimit": {"Fx": 1.0, "Fy": 1.0, "Fz": 1.0, "My": 1.0, "Mx": 1.0, "Mz": 1.0}, "cmdName": "get_torque_sensor_soft_limit"}

説明:

  • "Fx"、"Fy"、"Fz"、"Mx"、"My"、"Mz" は各方向で許容される最大の力またはモーメント値を示し、これを超えるとエラーが発生し、プログラムおよびロボットの動作が停止する。

トルク基準中心を設定する

メッセージの送信:

{"cmdName":"set_torque_ref_point", "torque_ref_point":[0, 90, 0]}

メッセージの受信:

{"cmdName": "set_torque_ref_point", "errorCode": "0", "errorMsg": ""}

説明:

  • torque_ref_point:x[, y, z]

トルク参照点を取得

メッセージの送信:

{"cmdName":"get_torque_ref_point"}

メッセージの受信:

{"torque_ref_point": [0.0, 0.0, 0.0], "cmdName": "get_torque_ref_point", "errorCode": "0", "errorMsg": ""}

説明:

  • torque_ref_point:[ x, y, z]

エンドセンサー感度を設定

メッセージの送信:

{"cmdName":"set_end_sensor_sensitivity_threshold", "threshold_percent":[0.3, 0.3, 0.3, 0.3, 0.3, 0.3]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_torque_ref_point"}

説明:

  • threshold_percent は6次元配列で、0~1の範囲。値が大きいほどセンサーの感度が低下します

エンドセンサー感度を取得

メッセージの送信:

{"cmdName":"get_end_sensor_sensitivity_threshold"}

メッセージの受信:

{"threshold": [30.5, 1.6250000000000002], "errorCode": "0", "cmdName": "get_end_sensor_sensitivity_threshold", "threshold_percent": [0.3, 0.3, 0.3, 0.3, 0.3, 0.3], "errorMsg": ""}

説明:

  • threshold_percent は6次元配列で、ユーザーが設定した感度のパーセンテージです
  • threshold は2次元配列で、実際の閾値です

融合ドライブ感度を設定

メッセージの送信:

{"cmdName":"set_fusion_drive_sensitivity_level", "sensitivity_level":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_fusion_drive_sensitivity_level"}

説明:

  • sensitivity_level:感度レベル(0~5)、0はオフを意味します

融合ドライブ感度を取得

メッセージの送信:

{"cmdName":"get_fusion_drive_sensitivity_level"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_fusion_drive_sensitivity_level", "sensitivity_level": 0}

説明:

  • sensitivity_level:感度レベル(0~5)、0はオフを意味します

動作制限(特異点および関節リミット)の警告範囲を設定

メッセージの送信:

{"cmdName":"set_motion_limit_warning_range", "range_level":1}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_motion_limit_warning_range"}

説明:

  • range_level:範囲レベル、1~5

動作制限(特異点および関節リミット)の警告範囲を取得

メッセージの送信:

{"cmdName":"get_motion_limit_warning_range"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_motion_limit_warning_range", "range_level":1}

説明:

  • range_level:範囲レベル、1~5

センサー データを取得する

メッセージの送信:

{"cmdName":"get_torque_sensor_data","type":1}

メッセージの受信:

{"status": 0, "errorMsg": "", "errcode": 0, "cmdName": "get_torque_sensor_data", "errorCode": "0", "data": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}

説明:

  • type:1 または 2 または 3
  • data: トルクセンサーの実際の値、6次元配列
  • status: センサーが開いているかどうか、0 は未開、1 は開

注意:

以下はバージョン 1.7.2 コントローラー固有のインターフェースです。

力覚センサのゼロ点調整

メッセージの送信:

{"cmdName":"zero_end_sensor"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "zero_end_sensor"}

説明: ゼロ校正後、センサーの力の曲線は 0 付近に戻ります。

トルク終了条件を設定

メッセージの送信:

{"cmdName":"set_force_stop_condition", "opt":[0, 1, 1, 0, 0, 0], "lowerlimiton":[0, 1, 1, 0, 0, 0], "lowerlimit":[3.0, 4.0, 5.0, 6.0, 7.0, 8.0], "upperlimiton":[0, 1, 1, 0, 0, 0], "upperlimit":[13.0, 14.0, 15.0, 16.0, 17.0, 18.0]}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_force_stop_condition"}

説明:

  • opt は 6 次元配列で、6 つの次元それぞれで力制御終了条件を有効にするかどうかを表し、0 は未選択、0 以外の値は選択済みを示す
  • lowerlimiton は 6 次元配列で、0 は下限を設定しないことを示し、0 以外の値は設定を示す
  • lowerlimit は 6 次元配列で、下限値
  • upperlimiton は 6 次元配列で、0 は上限を設定しないことを示し、0 以外の値は設定を示す
  • upperlimit は 6 次元配列で、上限値

トルク速度制限を設定

メッセージの送信:

{"cmdName":"set_compliant_speed_limit", "speed_limit":10.0, "angular_speed_limit":10.0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_compliant_speed_limit"}

説明:

  • speed_limit:線速度制限、mm/s
  • angular_speed_limit:角速度制限、deg/s

トルク速度制限を取得

メッセージの送信:

{"cmdName":"get_compliant_speed_limit"}

メッセージの受信:

{"errorCode": "0", "angular_speed_limit": 10.0, "cmdName": "get_approach_speed_limit", "speed_limit": 10.0, "errorMsg": ""}

説明:

  • speed_limit:線速度制限、mm/s
  • angular_speed_limit:角速度制限、deg/s

力制御ドラッグ感覚パラメータを設定

メッセージの送信:

{"cmdName":"set_tool_drive_config", "axis":0, "opt":1, "rigidity":0.0, "rebound": 100.0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_tool_drive_config"}

説明:

  • axis はどの軸を設定するかを表し、選択可能な値は 0~5 の柔軟方向で、それぞれ fx、fy、fz、mx、my、mz に対応します。
  • opt 0 は未選択を意味し、0 以外の値は選択済みを意味します。
  • rigidity はドラッグ感覚を表し、範囲は 0~1 で、値が大きいほど硬くなります。
  • rebound は反発力で、ロボットアームが初期位置に弾性的に戻る力を表します。

ツールドラッグパラメータを取得

メッセージの送信:

{"cmdName":"get_tool_drive_config"}

メッセージの受信:

{"errorCode": "0", "force_ctrl_config": [[1, 0.0, 100.0], [1, 0.30000001192092896, 0.0], [1, 0.30000001192092896, 0.0], [1, 0.30000001192092896, 0.0], [1, 0.30000001192092896, 0.0], [1, 0.30000001192092896, 0.0]], "cmdName": "get_tool_drive_config", "errorMsg": ""}

説明:

  • force_ctrl_config:これは6つのリスト要素を含むリストで、それぞれが6つの軸を表します。各リスト内の3つの要素はそれぞれ以下を表します:
    • opt 0 は未選択を意味し、0 以外の値は選択済みを意味します。
    • rigidity はドラッグ感覚を表し、範囲は 0~1 で、値が大きいほど硬くなります。
    • rebound は反発力で、ロボットアームが初期位置に弾性的に戻る力を表します。

定常力コンプライアンス制御の有効/無効を設定

メッセージの送信:

{"cmdName":"enable_cst_force_ctrl", "enable_flag":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "enable_cst_force_ctrl"}

説明:

  • enable_flag: 0 は無効;1 は有効

定常力コンプライアンス制御パラメータを設定

メッセージの送信:

{"cmdName":"set_cst_force_ctrl_config", "axis":0, "opt":1, "ftDamping":10.0, "ftConstant":10.0,"ftReboundFK":10.0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_cst_force_ctrl_config"}

説明:

  • axis はどの軸を設定するかを表し、選択可能な値は 0~5 の柔軟方向で、それぞれ fx、fy、fz、mx、my、mz に対応します。
  • opt 0 は未選択を意味し、0 以外の値は選択済みを意味します。
  • ftDamping はダンピング力で、力制御中におけるロボットの硬さを表します。
  • ftConstant は目標力を表します。
  • ftReboundFK は反発力で、ロボットアームが指令軌道に弾性的に戻る力を表します。

定常力コンプライアンス制御パラメータを取得

メッセージの送信:

{"cmdName":"get_cst_force_ctrl_config"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_cst_force_ctrl_config"}

説明:

  • axis はどの軸を設定するかを表し、選択可能な値は 0~5 の柔軟方向で、それぞれ fx、fy、fz、mx、my、mz に対応します。
  • opt 0 は未選択を意味し、0 以外の値は選択済みを意味します。
  • ftDamping はダンピング力で、力制御中におけるロボットの硬さを表します。
  • ftConstant は目標力を表します。
  • ftReboundFK は反発力で、ロボットアームが指令軌道に弾性的に戻る力を表します。

恒力コンプライアンス制御座標系を設定

メッセージの送信:

{"cmdName":"set_cst_force_ctrl_frame", "cstForceFrame":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_cst_force_ctrl_frame"}

説明:

  • cstForceFrame:0 ツール;1 ワールド

恒力コンプライアンス制御座標系を取得

メッセージの送信:

{"cmdName":"get_cst_force_ctrl_frame"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_cst_force_ctrl_frame"}

説明:

  • cstForceFrame 0 ツール ; 1 ワールド

ツールドラッグ座標系を設定

メッセージの送信:

{"cmdName":"set_tool_drive_frame", "toolDragFrame":0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_tool_drive_frame"}

説明:

  • toolDragFrame:0 ツール;1 ワールド

ツールドラッグ座標系を取得

メッセージの送信:

{"cmdName":"get_tool_drive_frame"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "get_tool_drive_frame", "toolDragFrame": 0}

説明:

  • toolDragFrame:0 ツール;1 ワールド

恒力制御許容値を設定

メッセージの送信:

{"cmdName":"set_cst_force_ctrl_tol", "force_tol":10.0, "torque_tol":10.0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_cst_force_ctrl_tol"}

説明:

  • force_tol:力の許容値
  • torque_tol:トルクの許容値

恒力制御許容値を取得

メッセージの送信:

{"cmdName":"get_cst_force_ctrl_tol"}

メッセージの受信:

{"force_tol": 0.0, "torque_tol": 0.0, "errorCode": "0", "cmdName": "get_cst_force_ctrl_tol", "errorMsg": ""}

説明:

  • force_tol:力の許容値
  • torque_tol:トルクの許容値

アプローチ速度を設定

メッセージの送信:

{"cmdName":"set_approach_speed_limit", "speed_limit":10.0, "angular_speed_limit":10.0}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cmdName": "set_approach_speed_limit"}

説明:

  • speed_limit:線速度制限、mm/s
  • angular_speed_limit:角速度制限、deg/s

アプローチ速度を取得

メッセージの送信:

{"cmdName":"get_approach_speed_limit"}

メッセージの受信:

{"errorCode": "0", "angular_speed_limit": 10.0, "cmdName": "get_approach_speed_limit", "speed_limit": 10.0, "errorMsg": ""}

説明:

  • speed_limit:線速度制限、mm/s
  • angular_speed_limit:角速度制限、deg/s

フォースコントロールツールドラッグの有効状態を取得

メッセージの送信:

{"cmdName":"get_tool_drive_stat"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "enable_flag": 0, "cmdName": "get_tool_drive_stat", "drive_stat": 0}

説明:

  • enable_flag: 0 はフォースコントロールドラッグの有効化を無効にし、1 は有効にする
  • drive_stat: 現在のドラッグ状態が特異点、速度、関節リミット警告をトリガーしているかどうか

定力コンプライアンスの有効状態を取得

メッセージの送信:

{"cmdName":"get_cst_force_ctrl_stat"}

メッセージの受信:

{"errorCode": "0", "errorMsg": "", "cst_force_ctrl_stat": 0, "cmdName": "get_cst_force_ctrl_stat"}

説明:

  • cst_force_ctrl_stat: 0 は未有効、1 は有効、2 は速度モード(互換性のため、新しいバージョンでは2は存在しない)

トラブルシューティング

トラブルシューティング方法の紹介

JAKA TCP/IP制御プロトコルを使用する際に問題が発生した場合、次の手順を参考にしてトラブルシューティングを行ってください:

  • クライアントとロボットコントローラのIPアドレス間のネットワーク接続が正常であることを確認する;
  • TCP/IPコマンド呼び出し中に異常が発生した場合は、戻り値および返されたエラーメッセージに基づいて関連するエラー情報を判断する;
  • ポート10000のフィードバックデータからロボットシステムのエラーコードおよびエラーメッセージを取得し、関連する異常を特定する;
  • ロボットAPP接続と併用して、ロボットシステム関連の異常を確認することができます。 トラブルシューティング中は、クライアントにネットワークデバッグツールまたはWiresharkを導入して関連データ分析を行うことができます。

一般的なTCP/IP問題の紹介

  1. 実際の開発テスト中にコマンドが応答しないなどの問題が発生した場合、ネットワークデバッグアシスタントを使用してロボットサーバーに接続することをお勧めします:IPはロボットのIP、ポート番号は固定の10000または100001です。これにより、ロボットサーバーが正常に動作しているか確認し、正常であればコードに誤りがないか確認してください。
  2. 実際の使用中にポート10000に接続すると、毎回受信パケットが完全ではなく一部しか取得できない場合;
  • このような場合、クライアントソケットの受信バッファサイズを確認することをお勧めします。設定値が小さいと、ポート10000から返されるパケットサイズよりも小さくなり、受信が不完全になる可能性があります。
  1. データプッシュの頻度が低すぎる、またはタイミングが遅いという問題が発生しています。
  • このような場合、サーバー側のポートデータの更新頻度を確認することをお勧めします。冒頭で説明したoptionalconfig内のport10000_delay_msの設定が適切かどうかをご確認ください。

ユーザーからのフィードバック

ドキュメント内に誤った情報や不明確な記述がある場合、またはご意見・ご提案がございましたら、support@jaka.comまでメールをお送りください。できるだけ早くご返信いたします。

最終更新日: