2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

URロボットのDashbordServerの使い方

目的

前回はロボットをスクリプトで制御する方法についてまとめましたが、今回はあらかじめティーチングペンダント(TP)で作ったプログラムを動作させる方法をまとめます。

対象とする読者

この記事は仕事でUniversalRobotsのロボットを使う必要が出てきたプログラマ向けに書いています。(自分のメモ書き程度のつもりなので、詳しい解説など必要でしたらコメント欄にコメントいただけると助かります)
また、言語はpythonを使用していきます。pythonの解説に関しては他の記事や公式のドキュメント等を参照してください。

環境

使用した環境を示します。

  • コントロールボックス CB3.1 SW3.5
  • ロボット UR5
  • プログラム言語 python3.6

方法

ロボットコントローラの29999番ポートにTCPでコネクションを張って、テキストでコマンドを送るとロボットがプログラムを実行します。用意されているコマンドは複数ありますが、単純なものについて解説します。

コマンド電文形式 戻り値の例 説明
load <program.urp> 成功時:Loading program: <program.urp> あらかじめ作成されていたプログラムのロードを開始します
play "Starting program" ロボットが他のプログラムを実行していない場合にはプログラムが実行される
stop "Stopped" 実行中のプログラムを止める

詳細はUR公式のリファレンス参照してください。

プログラムを書いてみた

dashbord_server.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket
import time
import sys

HOST = "192.168.250.110" # ロボットのIPアドレス
PORT = 29999
PI = 3.1415926535


def toBytes(str):
    return bytes(str.encode())

def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((HOST, PORT))
    data = s.recv(1024)#コネクション確立後にURからメッセージが送られてくるのでRead
    print("Receved", data.decode())
    s.send(toBytes("load YOR_FILE_NAME.urp\n"))#YOR_FILE_NAMEはティーチングペンダントで作成したプログラム名に変える
    data = s.recv(1024)
    print("Receved", data.decode())
    s.send(toBytes("play\n")) #プログラムの実行
    data = s.recv(1024)
    print("Receved", data.decode())

    time.sleep(3)


if __name__ == '__main__':
    main()

まとめ

  • URのDashbordServerの使い方をまとめた

リファレンスを見るとプログラムを実行中であるかを調べたり、コントロールボックスをシャットダウンしたりと結構色々できるみたいです。可能なら色々検証してみたいですね。

参考文書

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
2
Help us understand the problem. What are the problem?