Vstoneアカデミックスカラロボット VS-ASRのLinux版サンプル

はじめに

Vstone社のアカデミックスカラロボット VS-ASRというものがあります。
Academic SCARA Robot(アカデミック スカラロボット) | ヴイストン株式会社

f:id:cryborg:20160904151503p:plain:w300

主にRoboticsの教育・学習を目的に販売されています。

Vstone社からWindows用のC言語サンプルが公開されていますが、これをLinuxで動作するように改変したものです。
CP2110/4 SDKについては最新のものではうまく動作しない部分があるので、古いSDKを使うことをおすすめします。 github.com


なお"SCARA"とは、下記の意味だそうです。

水平多関節ロボット - Wikipedia

スカラ(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

  1. Linux用の古いSDK(v1.31)をダウンロードする。
  2. 実行権限を付与し、実行する。
    • chmod 755 CP2110_4_linux.bin
    • ./CP2110_4_Linux.bin
  3. インストーラが起動するので、ここではデフォルトの~/Silabs/MCUにインストール。
  4. インストール後、$HOMEに余計なシンボリックリンクができるのでunlink(削除)する。
    • unlink CP2110_4 Device Customization Utility (AN721)
    • unlink Uninstall CP2110_4 Software Development Kit
    • アンインストールしたい場合は単に~/Silabsディレクトリを削除すればOK。
  5. インクルードファイル、ライブラリファイルをコピーする。
    • /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にコピー
  6. .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

  1. git clone https://github.com/b4b4r07/awesome-tool
  2. cd vsasr_linux
  3. mkdir build
  4. cd build
  5. cmake ../
  6. make
  7. 実行ファイルposition_to_axis,get_positionが生成されます。

Run

予め、ロボットを接続したUSBデバイスへのアクセス権を与えておいてください。

  1. ロボットをPCに接続します。
  2. 下記コマンドで、ロボットとの接続に使われているBusとDevice番号を確認します。
    • lsusb
    • 下記のような行が出力されると思います。
      • > Bus 001 Device 007: ID 10c4:ea80 Cygnal Integrated Products, Inc. CP210x UART Bridge
      • この場合、Bus 001, Device 007 に接続されていることがわかります。この番号は環境によって変わります。
  3. 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

@cryborg21



おわりに

今回はLinuxからVS-ASRを使うサンプルを公開しました。
Ubuntu+CMakeで動かせるということは、ROSから使うのも簡単なはずですので、近々ROS用パッケージも公開する予定です。