本稿はACCESS Advent Calendar 2024 16日目の記事としてお送りします!
緒言
こんにちは.急に寒くなりましたね.B-SKY-Labです.昨年のアドカレはM5StackとDYNAMIXELサーボをつなぎたい!という内容でM5StackとDYNAMIXEL XL330を接続する基板を作りました.記事を書いた後になんやかんや設計変更して作った基板がこちらです.
本稿はその続編です.DYNAMIXELのサーボIDやBaudrateなどをM5Stack Core2から操作したい!と長らく思っていたので,DYNAMIXEL Wizardの一部機能を再現できるような簡易ツールを作りました.以下の画像のようにタッチパネルをぽちぽちして設定変更できて便利です.
機能としては,
- IDスキャン
- 設定変更
- ID変更
- Baudrate変更
- 動作テスト(サンプル動作実行)
- 位置制御モードサンプル
- 速度制御モードサンプル
を用意しました.M5Stack Core2だけでもある程度の設定が行えますね.ゆくゆくは以前作った倒立振子にこの機能も合体させたいきもちがあります.きもちがあるだけなのでいつになるかは分かりません...
実はこれを作ったのは約二か月前なのですが,「あとで公開しよ~」と放置しすぎてしまったのでこの場を借りて宣伝しようと思います.issueやPRもお待ちしております!!
免責事項
本稿の内容を用いて行う実験等について,全て自己責任でお願いいたします.また,この記事の一切の責任は @B-SKY-Labにのみ帰属します.
注意事項
本コードおよびDYNAMIXEL TTL UART Boardは,DYNAMIXEL XL330でのみ期待通り動作することを確認をしています.XC330もはDNYNAMIXEL TTLだしいけるはず,と思っていたのですがなぜか動かないので調査中です...何か違いをご存じの方いらしたら教えてください...!
それでは宣伝本編どうぞ!
概要
DYNAMIXEL TTL UART BoardとM5Stack Core2を用いてDYNAMIXEL Wizardの一部機能を再現します.現時点では以下の機能が実装されています.
- 接続されたサーボのIDとBaudrateをスキャン
- ID / Baudrateの変更
- 位置制御モード / 速度制御モードのサンプル実行
セットアップ
- Visual Studio Codeをインストールします
- PlatformIOのプラグインを追加します
- M5Stack Core2へ本リポジトリのコードをビルドして書き込みます
- DYNAMIXEL TTL UART Boardを用いてサーボを接続します
-
initializing...
と数秒間表示された後に以下のようなメインメニューが表示されたら完了ですDYNAMIXEL Wizard M5Core2! Button A: scan Button B: ID / Baud Button C: Sample Exec
注意
本コードはDYNAMIXEL TTL UART Board v2.0 を想定しています.
v1.0をお使いの方は,main.cpp#L9-L10のRX, TXピン番号を以下のように入れ替えてからビルドと書き込みを行ってください.(v2.0をお使いの場合は何も編集せずにそのままビルド→書き込みを行ってください)
// Pin assign for v1.0 board
const uint8_t PIN_RX_SERVO = 32;
const uint8_t PIN_TX_SERVO = 33;
機能と使用方法
サーボのスキャン
メインメニューでButton A
をタップすると,接続されたサーボのスキャンを行います.
結果の表示画面で再度Button A
をタップするとメインメニューに戻ります.
ID/Baudrateの変更
メインメニューでButton B
をタップすると,接続されたサーボのIDまたはBaudrateの書き換えが行えます.
- Use Baud: サーボが現在使用しているBaudrateを指定してください
- Target ID: 書き換え対象のサーボに現在設定されているIDを指定してください
- New ID: 変更後に使用したいサーボIDを指定してください
- New Baud: 変更後に使用したいBaudrateを指定してください
上記の項目の値を設定したら,IDの変更を行う場合には[Apply ID]を,Baudrateの変更を行う場合には[Apply Baud]をタップしてください.
設定の書き込み途中以外で再度Button B
をタップするとメインメニューに戻ります.
位置制御/速度制御サンプルの実行
メインメニューでButton C
をタップすると,位置制御 / 速度制御のサンプル実行が行えます.
- ID: 接続されたサーボのうち,動作させたいサーボのIDを指定してください
- Baud: 接続されたサーボが使用しているBaudrateを指定してください
上記の項目の値を設定したら,位置制御のサンプル実行を行う場合には[Position Mode]を,速度制御の場合には[Velocity Mode]をタップしてください.
- 位置制御のサンプル実行では,0, 90, 180, 270[deg]への位置制御が行われます
- 速度制御のサンプル実行では,60[rpm], -60[rpm]の速度制御がそれぞれ1秒間行われます
サンプル実行中以外で再度Button C
をタップするとメインメニューに戻ります.
結言
本稿ではDYNAMIXELのサーボIDやBaudrateなどをM5Stack Core2から操作するための自作ツールについて紹介しました.これを読んだ方のロボット開発(等)の一助になれば幸いです.
それでは.