見出し画像

ロボットアームを使ってみよう2 xArmStudio/Python

xArm Studio

xArmStudioとはuFactoryが開発しているxArmシリーズロボットアームの制御を行うGUIで以下のようなものです。

画像1

Windows/Mac/Linuxに対応しています。基本的な操作は大体これで出来ます。
ひとつずつ機能を見ていきましょう。

起動画面
xArm Studioを起動するとネットワーク上にあるロボットアームのリストが表示されるので、使いたいロボットアームを選択します。

画像8

メイン画面
ロボットアームに接続するとこの画面になります、Enable Robotを押すことでジョイントのロックが外れ操作可能になります。

画像2

Live Control
動きを付けるためにいくつかの方法がありますが、この画面では各ジョイントの角度指定して姿勢を指示することが出来ます。MANULAL MODEをONにするとロボットの姿勢を人間が直接触って変更することが出来ます。

画像3

Blockly
ロボットのプログラムを組む画面です。基本的な動作はこれで組むことができます。実行時にシミュレータか実機を選ぶことが出来ます。

画像9

Python IDE
Blocklyで作ったロジックはPythonコードとして確認することが出来ます。なのでこのコードを保存してより複雑なプログラムに変更していく事ができます。

画像5

Recording
MANUAL MODEを有効にして手で直接ロボットの動きを保存することが出来ます。

画像6

Setting
各種セッティング画面です。ツールの重さなどを設定します。

画像7


githubでROS/ROS2とPython/C++のSDKが公開されています。
https://github.com/xArm-Developer

Blockyは単純な繰り返し動作のプログラム、PythonとC++はさらに少し制御を加えたいときに使ってます。ROSは挫折してしまいました。

Pythonで動かすとき

Pythonの実行環境は以下のページの通りにインストールすればすぐつかえるようになります。venvかなにかで環境を分けておいた方が良いと思います。

https://github.com/xArm-Developer/xArm-Python-SDK

作業の前に example\wapper フォルダにある robot.conf のアドレスを変更すると良いと思います。これはロボットアームのIPアドレスで、スクリプトからデフォルトのIPアドレスとして参照される値です。

[xArm]
ip = 192.168.1.203

まず、example\wapper\common\0002-get_property.py を実行して以下のような値が返ってくればOKです。

SDK_VERSION: 1.8.4
FIRMWARE_VERSION: v1.8.3, PROTOCOL: V1, DETAIL: 7,7,XS1200,XX0000,v1.8.3
[motion_enable], xArm is not ready to move
[set_state], xArm is ready to move
==================================================
default_is_radian: False
version: 7,7,XS1200,XX0000,v1.8.3
state: 2
mode: 0
cmdnum: 0
error_code: 0
warn_code: 0
collision_sensitivity: 0
teach_sensitivity: 0
world_offset: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
gravity_direction: [0.0, 0.0, -1.0]
============TCP============
* position: [236.217, -29.024, 33.262, 173.71312584921085, 3.6029305031211556, 84.27515887442301]
* tcp_jerk: 1000.0
* tcp_load: [0.0, [0.0, 0.0, 0.0]]
* tcp_offset: [0.0, 0.0, 172.0, 0.0, 0.0, 0.0]
* tcp_speed_limit: [0.10000000149011612, 1000.0]
* tcp_acc_limit: [1.0, 50000.0]
===========JOINT===========
* angles: [-10.626648226291378, -32.80911033523779, 9.72401051584228, -0.6853148187559777, 2.9632231248575915, 25.706152549000976, -89.22763416819531]
* joint_jerk: 1145.9155902616465
* joint_speed_limit: [0.5729577823242186, 180.00000500895632]
* joint_acc_limit: [0.5729577823242186, 1145.9155902616465]
* joints_torque: [-0.6218191981315613, -3.7660419940948486, -1.5846585035324097, 10.554122924804688, -0.7098397612571716, -2.5904176235198975, -0.7601636648178101]

次回以降で実際に動かしていこうと思います。