第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 RTDEControlInterface

状態取得

SDU RTDEReceiveInterface

I/O

SDU RTDEIOInterface

運転管理

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 は、それぞれ異なる責務を持つ層として扱う必要がある。