# 第2章 インストールと接続設定 ## 本章について 本章では、PCとURロボットを接続し、Pythonから通信できる状態までのセットアップ方法を説明する。 本章を完了すると、 ・ロボットとの通信 ・Remote Control設定 ・Pythonからの接続確認 ができるようになる。 --- # 2.1 システム構成 本ドキュメントでは、Universal Robots 公式の通信 I/F と、第三者 OSS である SDU Robotics `ur_rtde` を組み合わせる。構成は以下を前提とする。 ``` +--------------------+ | Python PC | | | | ur_ctrl.py | | ur_rtde | +---------+----------+ | Ethernet | +---------+----------+ | UR Robot | | | | Control Box | | Teach Pendant | +--------------------+ ``` PCとロボットはEthernetケーブルで接続する。 スイッチングハブを介してもよい。 --- # 2.2 必要なソフトウェア Python 3.10以上を推奨する。 モーション制御・状態取得・I/O の PC 側ライブラリとして、SDU Robotics の `ur_rtde` を利用する。これは Universal Robots 純正 SDK ではないが、通信には Universal Robots 公式 RTDE protocol を利用する。 必要なライブラリは以下である。 ```bash pip install ur_rtde ``` `ur_rtde` では ・RTDEControlInterface ・RTDEReceiveInterface ・RTDEIOInterface を利用する。 --- # 2.3 OSごとのインストール ## Windows もっとも容易である。 ```bash pip install ur_rtde ``` でインストールできる場合が多い。 Visual C++ Runtime が必要になる場合がある。 --- ## Ubuntu UbuntuではBoostなどの依存ライブラリが必要になる。 例 ```bash sudo apt install \ build-essential \ cmake \ libboost-all-dev ``` その後 ```bash pip install ur_rtde ``` を実行する。 --- ## macOS Homebrewを利用する。 ```bash brew install cmake brew install boost ``` 必要に応じて ```bash export PATH=/opt/homebrew/bin:$PATH ``` などを設定する。 環境によってはソースビルドになる。 Intel MacとApple Siliconでライブラリ位置が異なるため注意する。 --- # 2.4 ロボットのIPアドレス Teach Pendantから ``` Settings ↓ System ↓ Network ``` を開く。 IPアドレスを確認する。 例 ``` 192.168.0.10 ``` PCも同じセグメントに設定する。 例 ``` Robot 192.168.0.10 PC 192.168.0.100 ``` Subnet Maskは通常 ``` 255.255.255.0 ``` である。 --- # 2.5 通信確認 まずPingが通ることを確認する。 Linux/macOS ```bash ping 192.168.0.10 ``` Windows ```cmd ping 192.168.0.10 ``` 応答が返れば物理通信は正常である。 --- # 2.6 Remote Controlとは PythonからMove命令を送る場合、 **Remote Control** を有効にする必要がある。 有効になっていない場合、 ``` Please enable remote control on the robot! ``` というエラーになる。 これは ur_rtde が最もよく返すエラーの一つである。 --- # 2.7 Remote Controlの有効化 e-Seriesでは、 ``` Settings ↓ System ↓ Remote Control ``` からRemote Controlを有効にする。 その後、 ロボットをRemote Modeへ切り替える。 Local Modeでは外部制御できない。 --- # 2.8 Remote Mode Teach Pendant右上に ``` Local ``` または ``` Remote ``` が表示される。 Python制御を行う場合は ``` Remote ``` である必要がある。 --- # 2.9 Pythonから接続 最小構成は以下である。 ```python from rtde_control import RTDEControlInterface ROBOT_IP = "192.168.0.10" rtde = RTDEControlInterface(ROBOT_IP) print("Connected") ``` ここで例外が発生しなければ通信成功である。 --- # 2.10 Receive Interface 状態取得は別インターフェースである。 ```python from rtde_receive import RTDEReceiveInterface rtde_r = RTDEReceiveInterface(ROBOT_IP) print(rtde_r.getActualQ()) ``` 関節角度が取得できれば正常である。 --- # 2.11 IO Interface デジタルIO操作には ```python from rtde_io import RTDEIOInterface rtde_io = RTDEIOInterface(ROBOT_IP) ``` を利用する。 --- # 2.12 よくあるエラー ## Please enable remote control on the robot! Remote Controlが無効。 --- ## Connection refused IPアドレスが誤っている。 またはネットワーク設定が異なる。 --- ## Robot is not running ロボットが起動していない。 Emergency Stop状態でも発生する。 --- ## Protective Stop 安全停止中である。 Teach Pendantで解除する。 必要に応じてDashboard ServerからUnlock Protective Stopを実行する。 --- # 2.13 接続確認チェックリスト 接続できない場合は以下を確認する。 □ Ethernetケーブル □ Pingが通る □ IPアドレス □ Firewall □ Remote Control □ Remote Mode □ Robot Power ON □ Brake Release済み □ Emergency Stop解除 □ Protective Stop解除 この順番に確認すると、多くの問題を切り分けられる。 --- # 次章 次章では、 ・RTDEの仕組み ・RTDEControl ・RTDEReceive ・RTDEIO について詳しく説明する。