技術情報・開発日誌

CRANE-X7とSciurus17のC++ライブラリを公開しました

技術情報・開発日誌

こんにちは、shotaです。

この記事では、新たに公開しましたRTマニピュレータC++ライブラリとサンプル集 / rt_manipulators_cppをご紹介します。

アールティが販売するロボットCRANE-X7(クラインエックスセブン)Sciurus17(シューラスセブンティーン)を使用しているお客様の中でも特に、ROSを使わずに直接サーボモータを動かしたい方はぜひご覧ください。

rt_manipulators_cppはCRANE-X7とSciurus17の低レイヤライブラリ

RTマニピュレータC++ライブラリ(rt_manipulators_cpp)は、CRANE-X7とSciurus17のサーボモータを直接操作するためのC++ライブラリです。
rt_manipulators_cppライブラリはGitHubに公開されており、どなたでもダウンロード&インストールできます。

この記事の後半でライブラリのインストール方法と、内蔵するサンプルについて紹介します。

rt_manipulators_cppライブラリを開発した背景

CRANE-X7とSciurus17は、どちらもアールティが販売するロボットです。
それぞれにはROS(ロス、Robot Operating System)というフレームワークを使用したソフトウェア(ROSパッケージ)を用意しています。
ROSパッケージを使うことで、軌道計算や制御、画像処理等のプログラミング無しで、すぐにロボットを動かせます。

CRANE-X7(クラインエックスセブン)

Sciurus17(シューラスセブンティーン)

これまで、CRANE-X7とSciurus17を購入したお客様には、ROSパッケージを使用して頂いてます。
ROSパッケージを活用して頂いている一方で、「ROSを使わずに直接サーボモータを動かしたい」という要望も受け取っています。

直接サーボモータを動かす場合は、ROBOTIS社が提供するDYNAMIXEL SDKを使用します。
しかし、DYNAMIXEL SDKの使い方を習得してプログラムを作成するには時間がかかり、お客様が本命のソフトウェア開発になかなか着手できないという問題がありました。

この状況を解決するため、RTマニピュレータC++ライブラリ(rt_manipulators_cpp)を公開しました。
DYNAMIXEL SDKを使用するプログラムは、rt_manipulators_cppライブラリに内蔵されているため、すぐにサーボモータを動かせます。

それでは、rt_manipulators_cppライブラリの特長とサンプルを紹介します。

rt_manipulators_cppライブラリの主な特徴

rt_manipulators_cppライブラリの主な特徴を紹介します。

  • Ubunut18.04、20.04に対応
  • ROS、DYNAMIXEL SDKの習得不要
  • ライブラリの使い方がわかるドキュメントとサンプルを用意
  • アプリケーションの実装例(順運動学、逆運動学)を用意
  • CRANE-X7とSciurus17それぞれにサンプルを用意
  • Apache-2.0 Licenseで公開

以下はDYNAMIXEL SDK経験者向けの特長です。

  • 任意のサーボグループをyamlファイルで設定可能
  • SyncRead、SyncWriteグループをyamlファイルで設定可能
  • DYNAMIXELのOperating Mode(位置、速度、電流)をyamlファイルで設定可能

yamlファイルは次のようなフォーマットで作成します。

joint_groups:
  arm:
    joints:
      - joint1
      - joint2
      - joint3
    sync_read:
      - position
      - velocity
      - current
      - voltage
      - temperature
    sync_write:
      - position
  hand:
    joints:
      - joint_hand
    sync_read:
      - position
    sync_write:
      - current

joint1: { id : 2, operating_mode: 3 }
joint2: { id : 3, operating_mode: 3 }
joint3: { id : 4, operating_mode: 3 }
joint_hand: { id : 9, operating_mode: 0 }

ライブラリの使い方がわかるサンプル集

rt_manipulators_cppライブラリには、ライブラリの使い方を説明したドキュメントとサンプルプログラム、実行動画を用意しています。

以下、各サンプルの実行動画を紹介します。

サーボモータのトルクをON/OFFする

サーボモータの現在角度を読み取る

サーボモータの目標角度を書き込む

スレッドでサーボモータの角度を読み書きする

サーボモータの速度、電流、入力電圧、温度を読み取る

サーボモータの目標速度を書き込む

サーボモータの目標電流を書き込む

順運動学を解いてリンクの位置・姿勢を求める

逆運動学を解いて手先を任意の位置・姿勢に移動させる

rt_manipulators_cppライブラリの使い方

最後に、rt_manipulators_cppライブラリのインストール方法とサンプルの実行方法を紹介します。

詳細については、ライブラリ内のドキュメントを参照してください。

ライブラリのインストール

ターミナルで次のコマンドを実行します。

# DYNAMIXEL SDKのインストール
$ sudo apt install build-essential
$ cd ~
$ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ cd ~/DynamixelSDK/c++/build/linux64
$ make
$ sudo make install

# その他依存関係のインストール
$ sudo apt install libyaml-cpp-dev libeigen3-dev

# RTマニピュレータC++ライブラリのビルド&インストール
$ cd ~
$ git clone https://github.com/rt-net/rt_manipulators_cpp
$ cd rt_manipuators_cpp/rt_manipulators_lib
$ ./build_install_library.bash

サンプルの実行

ターミナルで次のコマンドを実行します。

# サンプル集01をビルド
$ cd rt_manipulators_cpp/samples/samples01
$ ./build_samples.bash

# トルクON/OFFサンプルを実行
$ cd bin/
$ ./x7_onoff

まとめ

この記事では、新しく公開しましたRTマニピュレータC++ライブラリ / rt_manipulators_cppについて、特長と開発背景、各サンプルを紹介しました。

CRANE-X7とSciurus17で直接サーボモータを動かしたいお客様は、ぜひお試しください。

今後は軌道生成、軌道追従のサンプルを追加する予定です。
また、サーボモータの速度指令、電流指令モードを活用したサンプルも追加する予定です。

タイトルとURLをコピーしました