Vstoneアカデミックスカラロボット VS-ASRのLinux版サンプル
はじめに
Vstone社のアカデミックスカラロボット VS-ASRというものがあります。
Academic SCARA Robot(アカデミック スカラロボット) | ヴイストン株式会社
主にRoboticsの教育・学習を目的に販売されています。
Vstone社からWindows用のC言語サンプルが公開されていますが、これをLinuxで動作するように改変したものです。
CP2110/4 SDKについては最新のものではうまく動作しない部分があるので、古いSDKを使うことをおすすめします。
github.com
なお"SCARA"とは、下記の意味だそうです。
スカラ(SCARA)とはSelective Compliance Assembly Robot Armの略であり、SCARA型ロボット、スカラロボットと言うことが多い。
以下、日本語版README.mdになります。
vsasr_linux
Vstone社のアカデミックスカラロボット VS-ASRを制御するLinux向けC言語サンプルプログラムです。
https://www.vstone.co.jp/products/scara_robot/index.html
Vstone社からWindows用のC言語サンプルが公開されていますが、これをLinuxで動作するように改変したものです。
Description
下記2つのサンプルがあります。
position_to_axis
Windows版サンプルのPositionToAxis.cppを出来る限り改変しないようにしてLinuxで動くようにしたものです。
使用方法はWindows版と同じで、アーム先端の目標位置(xyz)、yaw角、先端の爪の幅を設定するとその位置にアームが動きます。
get_position
Windows版サンプルのGetPosition.cppと同様の動作をしますが、ロボットとの通信・制御部分がクラス化されています。
ロボットの現在の位置を60Hzで取得し続けます。
Requirements
動作を確認した環境は以下の通りです。
- Ubuntu 16.04
- cmake 3.5.1
- CP2110/4 SDK v1.31
- 2016.09.01現在最新のSDKv6.7.2だと、ロボットとの通信が1秒おきにしかできず、モーター角度の取得もできません。
- バージョン情報はRelease Notesに参照してください。
Usage
Installation - CP2110/4 HID USB-to-UART SDK v1.31
- Linux用の古いSDK(v1.31)をダウンロードする。
- 実行権限を付与し、実行する。
chmod 755 CP2110_4_linux.bin
./CP2110_4_Linux.bin
- インストーラが起動するので、ここではデフォルトの
~/Silabs/MCU
にインストール。 - インストール後、$HOMEに余計なシンボリックリンクができるのでunlink(削除)する。
unlink CP2110_4 Device Customization Utility (AN721)
unlink Uninstall CP2110_4 Software Development Kit
- アンインストールしたい場合は単に
~/Silabs
ディレクトリを削除すればOK。
- インクルードファイル、ライブラリファイルをコピーする。
/usr/local/include/silabs
および/usr/local/lib/silabs
ディレクトリを作成~/Silabs/MCU/CP2110_4_SDK/Library/Linux
に存在する*.h
ファイルを/usr/local/include/silabs
にコピー~/Silabs/MCU/CP2110_4_SDK/Library/Linux
に存在するlibslabhidtouart.so.1.0
を/usr/local/lib/silabs
にコピー
- .soファイルのシンボリックリンクを2つ作成する。
cd /usr/local/lib/silabs
sudo ln -s libslabhidtouart.so.1.0 libslabhidtouart.so.1
sudo ln -s libslabhidtouart.so.1.0 libslabhidtouart.so
Build
git clone https://github.com/b4b4r07/awesome-tool
cd vsasr_linux
mkdir build
cd build
cmake ../
make
- 実行ファイル
position_to_axis
,get_position
が生成されます。
Run
予め、ロボットを接続したUSBデバイスへのアクセス権を与えておいてください。
- ロボットをPCに接続します。
- 下記コマンドで、ロボットとの接続に使われているBusとDevice番号を確認します。
lsusb
- 下記のような行が出力されると思います。
> Bus 001 Device 007: ID 10c4:ea80 Cygnal Integrated Products, Inc. CP210x UART Bridge
- この場合、Bus 001, Device 007 に接続されていることがわかります。この番号は環境によって変わります。
- read/write アクセスを上記デバイスに許可します。
cd /dev/bus/usb/001
sudo chmod 666 007
上記の方法でUSBデバイスへのアクセス権を与えていない場合、下記実行コマンドをsudo
権限で行う必要があります。
position_to_axisの実行
./position_to_axis
Run get_positionの実行: サーボ数をコマンドライン引数に入れて実行してください。
./get_position 3
or./get_position 5
Author
おわりに
今回はLinuxからVS-ASRを使うサンプルを公開しました。
Ubuntu+CMakeで動かせるということは、ROSから使うのも簡単なはずですので、近々ROS用パッケージも公開する予定です。