# 第7章 Dashboard Server ## 本章について Dashboard Server は UR Controller を遠隔操作するための TCP サーバである。 現在の実装でモーション制御を担う SDU Robotics `RTDEControlInterface` に対し、Universal Robots 公式の Dashboard Server は ・電源投入 ・ブレーキ解除 ・プログラム開始 ・プログラム停止 ・Protective Stop解除 など、ロボットの運転管理を担当する。 現在の実装では、SDU Robotics `ur_rtde` が利用する公式 RTDE と、Dashboard Server をそれぞれの責務に応じて組み合わせて利用する。 --- # 7.1 Dashboard Serverとは Dashboard Server は Controller 内部で動作する TCP サーバである。 ``` Python │ TCP Socket │ Dashboard Server │ UR Controller ``` Dashboard Server は RTDE protocol とは別の TCP I/F である。 --- # 7.2 接続ポート Dashboard Server は ``` 29999 ``` 番ポートを使用する。 例 ```python import socket sock = socket.socket() sock.connect(("192.168.0.10",29999)) ``` 接続すると ``` Connected: Universal Robots Dashboard Server ``` などのメッセージが返る。 --- # 7.3 コマンド送信 Dashboardは **文字列コマンド** を送信する。 例 ```python sock.sendall(b"power on\n") ``` 必ず改行を付ける。 Controllerは ``` Powering on ``` などの文字列を返す。 --- # 7.4 電源投入 ```text power on ``` Controllerのサーボ電源を投入する。 注意 Controller自体のAC電源ではない。 Teach PendantのPowerボタン相当である。 --- # 7.5 Brake Release ``` brake release ``` ブレーキ解除を行う。 Power OnだけではMove命令は実行できない。 通常は ``` power on ↓ brake release ``` の順で実行する。 --- # 7.6 Program Load ``` load program.urp ``` URPファイルをロードする。 例 ``` load demo.urp ``` ロードのみであり、 実行はまだ行われない。 --- # 7.7 Program Play ``` play ``` ロード済みプログラムを開始する。 Teach Pendantの ▶ ボタンと同等である。 --- # 7.8 Pause ``` pause ``` プログラムを一時停止する。 Move命令とは異なる。 --- # 7.9 Stop ``` stop ``` 実行中プログラムを停止する。 RTDEControlInterfaceの ``` stopJ() stopL() ``` とは意味が異なる。 --- # 7.10 Shutdown ``` shutdown ``` Controllerを安全に終了する。 電源断ではない。 OSを終了する。 --- # 7.11 Robot Status 状態取得も可能である。 例 ``` robotmode ``` 戻り値例 ``` Robotmode: RUNNING ``` 他にも ``` POWER_OFF IDLE BACKDRIVE RUNNING ``` などが返る。 --- # 7.12 Program Status ``` programState ``` 現在のプログラム状態を取得する。 例 ``` STOPPED PLAYING PAUSED ``` --- # 7.13 Safety Status ``` safetystatus ``` 安全状態を取得する。 Protective Stop判定などで利用する。 --- # 7.14 Protective Stop Protective Stopは 安全装置による停止 である。 Emergency Stopとは異なる。 例えば ・衝突 ・過負荷 ・速度超過 などで発生する。 RTDEだけでは解除できない。 --- # 7.15 Protective Stop解除 解除コマンド ``` unlock protective stop ``` 解除後、 Robot Modeを確認し、 必要なら ``` play ``` または ``` brake release ``` を行う。 --- # 7.16 Safety Popup 安全ダイアログ表示時は ``` close safety popup ``` を送信する。 Popupが残っていると Move命令を受け付けない。 --- # 7.17 Typical Recovery Sequence Protective Stop発生時の典型的な復旧シーケンス ``` close safety popup ↓ unlock protective stop ↓ power on (必要な場合) ↓ brake release (必要な場合) ↓ play (必要な場合) ``` 実際には RobotMode を確認しながら実施する。 --- # 7.18 RTDEとの役割分担 |機能|RTDE|Dashboard| |----|----|----------| |MoveJ|○|×| |MoveL|○|×| |現在位置取得|○|×| |Digital IO|○|×| |Power ON|×|○| |Brake Release|×|○| |Program Play|×|○| |Protective Stop解除|×|○| 両方が必要になる。 --- # 7.19 ur_ctrl.pyでの利用 ur_ctrl.pyでは ``` connect() ↓ Dashboard接続 ↓ RTDE接続 ``` を行う。 さらに ``` reset_error() ``` は 内部で ``` close safety popup ↓ unlock protective stop ``` などを実行する設計が望ましい。 また ``` turn_on_motor() ``` は ``` power on ↓ brake release ``` をまとめたAPIとして実装すると利用しやすい。 --- # 7.20 自動運転の基本シーケンス Pythonから完全自動で運転する場合の流れは次のようになる。 ``` Dashboard接続 ↓ RTDE接続 ↓ Power On ↓ Brake Release ↓ MoveJ ↓ MoveL ↓ IO制御 ↓ MoveL ↓ MoveJ ↓ Stop ↓ Shutdown(必要なら) ``` --- # まとめ Dashboard Server はロボットの運転管理を担当する。 RTDEでは実行できない ・Power On ・Brake Release ・Program Play ・Protective Stop解除 などは Dashboard Server を利用する。 現在の実装では、SDU Robotics `ur_rtde` と Dashboard Server を組み合わせることで、モーション制御と運転管理を分担する。