# 第1章 URロボット制御を始める ## 本章について 本章では、Universal Robots (UR) を Python から制御するために必要な基礎知識を説明する。 対象読者は、 ・初めて UR を利用する人 ・Python から制御したい人 ・本ドキュメントの `ur_ctrl.py` を利用する人 である。 本章を読み終えると、 ・UR の通信方式 ・Remote Control の意味 ・Python ライブラリ ・最初の接続確認 まで理解できることを目的とする。 --- # 1.1 Universal Robotsとは Universal Robots (UR) は協働ロボット(Collaborative Robot)の代表的なメーカーである。 代表的な機種は次のとおりである。 |機種|可搬重量| |---|---:| |UR3 / UR3e|3 kg| |UR5 / UR5e|5 kg| |UR10 / UR10e|10 kg| |UR16e|16 kg| |UR20|20 kg| |UR30|30 kg| 本ドキュメントでは主に UR3 / UR3e を対象とするが、紹介する Python API の多くは他機種でも共通である。 --- # 1.2 CBシリーズとe-Series URには大きく2世代存在する。 ## CBシリーズ ・UR3 ・UR5 ・UR10 古いコントローラであり PolyScope 3.x 系を使用する。 --- ## e-Series ・UR3e ・UR5e ・UR10e ・UR16e PolyScope 5.x を採用している。 Force Sensor が内蔵されるなど、多くの機能が追加されている。 --- # 1.3 Pythonから制御する方法 Universal Robots では、Control Box 内の **URControl** がロボット制御の中核となる。TP 上の **PolyScope** は操作・教示・プログラミング環境であり、PolyScope で作成したロボットプログラムは **URScript** として URControl 上で実行される。外部 PC から URScript を直接送信する経路も用意されている。 外部 PC との通信には複数の公式 I/F がある。 |方法|主な役割| |---|---| |RTDE|Controller の状態・I/O・汎用レジスタなどの双方向データ交換| |Primary / Secondary Interface|Controller 情報の取得、URScript 送信など| |Dashboard Server|電源、Brake Release、プログラム実行などの運転管理| |ROS / ROS2 Driver|ROS / ROS2 との統合| 本ドキュメントの実装では、これらの公式 I/F に加えて **SDU Robotics の `ur_rtde`** を利用する。 --- # 1.4 公式 RTDE とは RTDE は **Real-Time Data Exchange** の略で、Universal Robots が公式に提供する、外部 application と UR controller 間の双方向データ I/F である。 RTDE では、joint / TCP state、robot mode、safety、I/O、汎用 register などを読み出し、公開されている I/O、speed slider、汎用 input register などへ値を書き込める。 ただし、公式 RTDE protocol 自体に `movej` や `movel` といった URScript の motion command が定義されているわけではない。公式 RTDE と、次節の SDU Robotics `ur_rtde` は区別する必要がある。 --- # 1.5 SDU Robotics `ur_rtde` 本ドキュメントで利用する ```text ur_rtde ``` は Universal Robots 純正 SDK ではなく、**SDU Robotics が開発する第三者のオープンソースライブラリ**である。 `ur_rtde` は Universal Robots 公式 RTDE を利用し、主に次の I/F を提供する。 - `RTDEControlInterface` - `RTDEReceiveInterface` - `RTDEIOInterface` このうち `RTDEControlInterface` は、公式 RTDE と robot 側で動作する専用の control URScript を組み合わせ、`moveJ`、`moveL`、`servoJ` などの PC 側モーション API を構成している。 インストール例 ```bash pip install ur_rtde ``` 詳細は次章以降で説明する。 --- # 1.6 Dashboard Server との違い Dashboard Server は Universal Robots 公式の管理用 I/F であり、SDU Robotics `ur_rtde` とは別系統である。 プログラムの load / play / stop、power、Brake Release、Protective Stop からの復旧など、ロボットの運転管理を担当する。 本実装では、モーション・状態取得・I/O に SDU Robotics `ur_rtde` を利用し、必要な運転管理には Dashboard Server を組み合わせる。 --- # 1.7 本ドキュメントで使用する構成 ``` Python │ │ ur_ctrl.py │ ├──────── RTDEControl ├──────── RTDEReceive ├──────── RTDEIO └──────── Dashboard │ Ethernet │ UR Robot ``` 利用者は基本的に `ur_ctrl.py` を利用するだけでよい。 低レベルAPIは `ur_ctrl.py` が内部で管理する。 --- # 次章 次章では、 ・PC設定 ・IPアドレス ・Remote Control ・通信確認 について説明する。