第6章 RTDEIOInterface
本章について
RTDEControlInterface がロボットを動かし、RTDEReceiveInterface が状態を取得するのに対し、
RTDEIOInterface は SDU Robotics ur_rtde が提供する I/O 操作用 I/F であり、Universal Robots 公式 RTDE の writable field を利用してロボットの入出力(I/O)を制御する。
PLCとの連携、センサの読み取り、電磁弁やグリッパの制御など、ロボット外部機器との接続で利用する。
本章では、
・Digital IO ・Tool IO ・Analog IO
について説明する。
6.1 I/Oとは
I/Oとは
Input / Output
の略である。
ロボットはモータだけではなく、
・センサ ・電磁弁 ・ソレノイド ・シリンダ ・グリッパ ・ランプ ・PLC
などとも通信する必要がある。
これらを制御するのが IO である。
6.2 IOの種類
URには複数種類のIOが存在する。
種類 |
用途 |
|---|---|
Standard Digital Input |
外部入力 |
Standard Digital Output |
外部出力 |
Tool Digital Input |
ツール先端入力 |
Tool Digital Output |
ツール先端出力 |
Analog Input |
アナログ入力 |
Analog Output |
アナログ出力 |
6.3 RTDEIOInterface
生成方法
from rtde_io import RTDEIOInterface
rtde_io = RTDEIOInterface(IP)
通常は
RTDEControlInterface
RTDEReceiveInterface
RTDEIOInterface
の3つを同時に生成する。
6.4 Standard Digital Output
もっとも利用するAPIである。
rtde_io.setStandardDigitalOut(pin, value)
例
rtde_io.setStandardDigitalOut(0, True)
DO0をONにする。
OFF
rtde_io.setStandardDigitalOut(0, False)
6.5 Standard Digital Input
入力状態は
RTDEReceiveInterface
から取得する。
state = rtde_r.getDigitalInState(0)
戻り値
True
False
である。
6.6 Tool Digital Output
ツールコネクタの出力を制御する。
rtde_io.setToolDigitalOut(pin, value)
例
rtde_io.setToolDigitalOut(0, True)
ハンド開閉などで利用する。
6.7 Tool Digital Input
ツール先端入力も
Receive Interface
から取得する。
例
state = rtde_r.getToolDigitalIn(0)
※API名はバージョンにより異なる。
6.8 Analog Output
アナログ電圧出力
rtde_io.setAnalogOutputVoltage(...)
または
電流出力
setAnalogOutputCurrent(...)
が利用できる。
用途
・インバータ
・速度指令
・電圧指令
など。
6.9 Analog Input
アナログ入力は
Receive Interface
から取得する。
例
voltage =
センサ入力
ロードセル
変位計
などに利用できる。
6.10 グリッパ制御例
もっとも単純な例
OPEN
↓
DO0 ON
↓
0.5秒待つ
↓
DO0 OFF
Python
rtde_io.setStandardDigitalOut(0, True)
time.sleep(0.5)
rtde_io.setStandardDigitalOut(0, False)
6.11 トグル動作
LED点滅例
while True:
rtde_io.setStandardDigitalOut(0, True)
time.sleep(0.5)
rtde_io.setStandardDigitalOut(0, False)
time.sleep(0.5)
6.12 MoveとIOを組み合わせる
典型的なピック動作
MoveJ
↓
MoveL
↓
Close Gripper
↓
MoveL
↓
MoveJ
コード例
robot.move(...)
robot.move(...)
robot.set_do(0, True)
robot.wait_move()
robot.move(...)
6.13 入力待ち
センサ待ち
while True:
if rtde_r.getDigitalInState(0):
break
time.sleep(0.01)
PLC同期などで利用する。
6.14 IO制御の注意点
IO更新は比較的高速であるが、
数ms以内の厳密なタイミング制御には向かない。
位置同期が必要な場合は
URScript
または
Robot Program
との組み合わせを検討する。
6.15 ur_ctrl.pyでの実装
ur_ctrl.pyでは
set_do()
get_di()
set_tool_do()
get_tool_di()
などのAPIとしてラップすることを推奨する。
利用者は
RTDEIOInterface
を直接扱う必要がなくなる。
まとめ
RTDEIOInterface は
ロボット外部機器との通信を担当する。
主な利用方法は
・デジタル出力
・デジタル入力
・ツールIO
・アナログIO
である。
モーション制御と組み合わせることで、
実際の自動化装置を構築できる。
次章では Dashboard Server を説明する。