こんにちは、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を購入したお客様には、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で直接サーボモータを動かしたいお客様は、ぜひお試しください。
今後は軌道生成、軌道追従のサンプルを追加する予定です。
また、サーボモータの速度指令、電流指令モードを活用したサンプルも追加する予定です。