第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 を説明する。