汎用シリアルバス RC サーボドライバ・ライブラリ
gs2d は、市販のシリアルバス RC サーボ(通称:シリアルサーボ)を同一のメソッドでプロトコルに依存せずに動かすことを目的に開発したライブラリです。
図 1 gs2d コンセプト図
2020 年 8 月現在、サポートする言語は Python、C#、C++ の 3 種。各言語のリポジトリは下記で管理しています。C++ については STM32、Arduino、Teensy 等の組込用途でも利用できます。
表 1 サポートする言語、および各リポジトリ
Name | Repository | |
---|---|---|
C++ | gs2d-cpp | https://github.com/karakuri-products/gs2d-cpp (後日公開予定) |
C# | gs2d-csharp | https://github.com/karakuri-products/gs2d-csharp (後日公開予定) |
python | gs2d-python | https://github.com/karakuri-products/gs2d-python |
gs2d でサポートするメーカ/規格は表 2 のとおりです。対応/動作確認が完了しているシリアルサーボの機種はこちらで確認できます。
表 2 サポートするメーカ/規格
Manufacturer | Series | Protocol |
---|---|---|
ロボティズ (ROBOTIS Inc.) | Dynamixel X Series | Protocol 2.0 |
近藤科学 (Kondo Kagaku Co.,Ltd.) | B3M Serises KRS Series |
B3M protocol ICS3.6 ICS3.5 |
双葉電子工業 (FUTABA Corp.) | Command Type Servo | Command Type Protocol |
また、gs2d に対応するシリアルサーボ・ドライバ製品、ならびにその要件については下記のリポジトリに情報をまとめています。
表 3 gs2d 適合ハードウェアに関するリポジトリ
Name | Repository |
---|---|
gs2d-hardware | https://github.com/karakuri-products/gs2d-hardware |
gs2d の基本仕様は以下のとおりです。いずれの言語の実装もこれらを満たします。
- 半二重通信のみ対応。
- 送信コマンドによるループバックの処理は考慮せず、非対応。
- 回転角度の単位は deg 、回転方向は CCW を正(+)、CW を負(-)、センターを 0(図 2)。 分解能・値域は各社製品の仕様にあわせて gs2d 側で吸収。
- メーカ/規格間で共通でない機能(電流制御モード 等)については メモリ操作 API で個別に対応(表 4)。
- 電流の単位は mA、電圧の単位は V、温度の単位は ℃、時間は sec。
図 2 回転の方向、初期位置、単位系の定義
gs2d で提供する API は以下のとおりです。実装の詳細については各言語のリポジトリ(表 1)を参照ください。
表 4 gs2d で提供する API 一覧
> ○ : supported, x : not supported
API Name | Note | Write | Read |
---|---|---|---|
write | 指定 ID,メモリアドレスに指定長のコマンドを書込(※1) | ○ | x |
read | 指定 ID,メモリアドレスに指定長のコマンドを読込(※1) | x | ○ |
burstWrite | 指定メモリアドレスに指定長のコマンドを一斉書込(※1) | ○ | x |
ping | バス上に ping を送出し、サーボの返答を受信 | x | ○ |
id | サーボ ID | ○ | ○ |
baudRate | 通信ボーレート (※2) | ○ | ○ |
torque | 出力トルクの ON/OFF | ○ | ○ |
temperature | 現在の温度値(※3) | x | ○ |
current | 現在の電流値 (※3) | x | ○ |
voltage | 印加電圧値 | x | ○ |
targetPosition | 目標角度値 | ○ | ○ |
position | 現在の角度値 | x | ○ |
burstTargetPositions | 複数のモータに対して目標角度値を一斉指示 | ○ | x |
pValue | PID FB, P ゲイン | ○ | ○ |
iValue | PID FB, I ゲイン | ○ | ○ |
dValue | PID FB, D ゲイン | ○ | ○ |
offset | 出力軸の角度指令値に対するオフセット値 | ○ | ○ |
deadband | 出力軸の角度指令値に対する不感帯の設定 | ○ | ○ |
limitCwPosition | CW 方向の角度限界の設定値(※3) | ○ | ○ |
limitCcwPosition | CCW 方向の角度限界の設定値(※3) | ○ | ○ |
limitTemperature | 温度の上限設定値(※3) | ○ | ○ |
limitCurrent | 電流の上限設定値(※2) | ○ | ○ |
speed | 出力軸の速度 | ○ | ○ |
accelation | 出力軸の加速度 | ○ | ○ |
maxTorque | 最大出力値 | ○ | ○ |
targetTime | 目標値への到達時間 | ○ | ○ |
resetMemory | メモリーマップの値を初期化(工場出荷時)に戻す | ○ | x |
saveRom | ROM に設定値を保存 | ○ | x |
(※1) メモリ操作 API。
(※2) 値を直接指定。リストにない値が与えられた場合はエラーを返す。
(※3) 図 2 に基づいた仕様で運用。gs2d 側で各社仕様にあわせて変換。
以下に示すメーカ/規格については対応を検討中です。
表 5 対応検討中のメーカ/規格
Manufacturer | Series | Protocol | Status |
---|---|---|---|
小西模型 (Konishi Mokei Co.,Ltd.) | JR PROPO XBUS Series | XBUS Protocol v1.1.0 | 対応準備中 |
ヴイストン (Vstone Co.,Ltd.) | Vservo series (Discontinued) | Vservo Protocol | 未定 |
アダマンド並木精密宝石 (Adamant Namiki Precision Jewel Co., Ltd.) |
Micro Robot Servo | Micro Robot Servo Protocol | 未定 |
図 3 gs2d ロゴ
gs2d は Apache License 2.0 とします。詳細は ./LICENSE を参照のこと。