第3章 RTDE と ur_rtde のアーキテクチャ
本章について
Universal Robots の制御では、Universal Robots 公式 RTDE と SDU Robotics ur_rtde を区別する必要がある。
RTDE は UR controller が公式に提供する双方向データ I/F である。一方、本ドキュメントで使用する RTDEControlInterface、RTDEReceiveInterface、RTDEIOInterface は、SDU Robotics が開発する第三者 OSS ur_rtde の API である。
本章では、この二つの関係と、Dashboard Server、Primary / Secondary Interface を含む現在の実装上の役割分担を説明する。
3.1 Universal Robots 公式 RTDE
RTDE (Real-Time Data Exchange) は、外部 application と UR controller の間で controller が公開する data field を読み書きする Universal Robots 公式 protocol である。
状態取得だけでなく、I/O、speed slider、汎用 input register など controller 側の公開入力値も書き込める。
ただし、RTDE protocol 自体に movej、movel、servoj といった URScript の motion command が定義されているわけではない。RTDE で controller に値を書き込むことと、その値を robot motion としてどう解釈するかは別の責務である。
3.2 SDU Robotics ur_rtde
現在の Python 実装で利用する ur_rtde は Universal Robots 純正 SDK ではなく、SDU Robotics が開発する第三者のオープンソースライブラリである。
ur_rtde は役割ごとに主として次の I/F を提供する。
RTDEControlInterface: モーション制御RTDEReceiveInterface: controller state の取得RTDEIOInterface: I/O 操作
これらは Universal Robots 公式 RTDE protocol を利用するが、RTDEControlInterface という motion API 自体が公式 RTDE protocol に存在するわけではない。
3.3 RTDEControlInterface の実体
RTDEControlInterface は PC から moveJ()、moveL()、servoJ() などを呼べるモーション制御 I/F を提供する。
その実装では、PC 側 RTDEControlInterface と robot 側で動作する SDU の control URScript が協調する。PC 側は Universal Robots 公式 RTDE の register を利用して command と parameter を controller に渡し、control URScript がそれを読み取って movej、movel、servoj などの URScript motion command を実行する。
したがって、RTDEControlInterface.moveJ() を「公式 RTDE に存在する MoveJ command を直接呼び出す API」と理解してはいけない。
3.4 RTDEReceiveInterface
RTDEReceiveInterface は SDU Robotics ur_rtde の状態取得 I/F である。Universal Robots 公式 RTDE の output data を利用し、現在関節角、TCP pose、robot mode、safety mode などを PC 側から扱いやすい API として提供する。
Move command は持たない。
3.5 RTDEIOInterface
RTDEIOInterface は SDU Robotics ur_rtde の I/O 操作用 I/F である。Universal Robots 公式 RTDE の writable field を利用して、Standard Digital Output、Tool Digital Output、Analog Output などを操作する。
3.6 Dashboard Server
Dashboard Server は Universal Robots 公式の管理用 TCP I/F であり、RTDE protocol や SDU Robotics ur_rtde とは別系統である。
Power On / Off、Brake Release、program load / play / pause / stop、Protective Stop からの復旧など、controller の運転管理を担当する。
3.7 Primary / Secondary Interface
Primary / Secondary Interface も Universal Robots 公式 I/F である。Controller 情報の取得や URScript の送信などに利用される。
現在の実装では、controller message / error の取得に Primary Interface を利用する部分がある。
3.8 URCtrl での役割分担
URCtrl は、これらの異なる I/F を上位の共通 API から利用できるようにまとめる。
機能 |
現在の主な実装 |
|---|---|
モーション制御 |
SDU |
状態取得 |
SDU |
I/O |
SDU |
運転管理 |
Universal Robots Dashboard Server |
controller message / error |
Universal Robots Primary Interface |
利用者は通常、これらを個別に操作するのではなく URCtrl を通して利用する。
まとめ
Universal Robots 公式 RTDE は controller の data field を読み書きする公式 protocol である。
現在使用している SDU Robotics ur_rtde は、その公式 RTDE を利用する第三者 OSS であり、RTDEControlInterface はさらに robot-side control URScript を組み合わせてモーション API を構成している。
したがって、公式 RTDE protocol、SDU Robotics ur_rtde、URScript、Dashboard Server、Primary / Secondary Interface は、それぞれ異なる責務を持つ層として扱う必要がある。