第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
番ポートを使用する。
例
import socket
sock = socket.socket()
sock.connect(("192.168.0.10",29999))
接続すると
Connected: Universal Robots Dashboard Server
などのメッセージが返る。
7.3 コマンド送信
Dashboardは
文字列コマンド
を送信する。
例
sock.sendall(b"power on\n")
必ず改行を付ける。
Controllerは
Powering on
などの文字列を返す。
7.4 電源投入
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 を組み合わせることで、モーション制御と運転管理を分担する。