Feetech-SCSサーボをROS 2で動かせるようにする - えいあーるれいの技術日記の続きです。
ros2_controlを使ってスタックチャンを動かしてみました。
スタックチャンとは?
スタックチャンとは、ロボットエンジニアのししかわ氏が開発された手のひらサイズのオープンソースソフト・ハードウェアロボットプロジェクトです。
ディスプレイ・CPUにM5Stack社が開発・販売する開発ボードであるM5Stackを使用しており、小型なサーボ2軸を足(ただし歩けない)としています。名称も組み込まれているM5Stackから取られています。
スタックチャンの初期リリースから2年、ものづくり系のユーザを越えて広く親しまれています。
コード・ハードウェアともに公開されているため、さまざまなハードウェア・ソフトウェアリソースを活用したアレンジが出ています。
最近は、ChatGPTと組み合わせた手軽かつ高度なAIロボットにアレンジされていたり、M5Stackを他のHATを組み合わせてハードウェアを大きく変えていたりと表現も多様化しているようです。
個人的には、2軸と非常にシンプルな構成ながらソフト・ハードウェアを網羅的に体験できるロボットとして教育的価値の高い作品だなぁと感じておりまして、このHardwareInterfaceの公開を機に色々と資料の改善を行っていきたいと考えています。
私は6月ごろから、もらった基板や部品を使ってぼちぼちスタックチャンを組み立てていました。
スタックチャンにはSG90版とFeetech-SCS0009版があり、いろいろ遊べるようにシリアルサーボである0009を使っています。
このサーボモータがどうやら自分が作っていたfeetech_scs_ros2_driverに接続できそうな感じだったので、せっかくなのでros2_controlを使って遊んでみました。
ソースコードは以下に載せています。3Dデータも揃っています。
名前はROSを使ったスタックチャンなのでロスタックチャンということで😐
3Dモデルの改造
スタックチャンにはFusion360などで編集可能な3Dモデルデータが入っているのでこれを編集します。
サーボモータボックスとスタックチャンカバーを組み立て後の見た目に変更しました。
モータボックスは2つに分離されているのでこれを押し出しでくっつけます。
カバーは押し出しできないので、四角いM5Stackみたいなパーツを作ってアセンブリとしてくっつけます。
ハードウェアインタフェースとの連携
ROS2のハードウェアインタフェースは汎用的な制御理論をロボットに適用させやすくする抽象化インタフェースであり、多くのロボットに適用させやすい環境を提供しています。
ハードウェアドライバの作り込み次第にもよりますが、似たようなハードウェアであればコードを直接書き換えることなくハードウェアを置き換えることができます。
スタックチャンのハードウェアインタフェースはDynamixelコミュニティのopen_manipulator_x_descriptionを参考に作成しました。
(最初はURDFそのまま使っていました)
本家のはIgn-gazeboとの連携もできるそうですが、なんかうまく動かなかったのでスキップしました。
最終的に作成したものがこちらです。カワイイ!🥰
現時点ではUbuntu22.04 + ROS-Humble(ROS 2)でのみ動作確認を行っています。
依存パッケージを全てビルドして、次の実行ファイルを呼び出します。
ros2 launch rostackchan_example rostackchan_random.launch.py
環境構築については、まだドキュメントを整えていないので、適宜アップデートしていきます。詳しくはGitHubの方をご覧ください。
ros2_controlで動いているので、他のハードウェアに置き換えても同じコマンドで動かすことができますね。
TLを見ると、Dynamixel-X330版も作成されそうな雰囲気がありますが、おそらく数行変更するだけで動くと思います。
これから
まだまだハードウェアの選択肢は多くないですが、例えばスタックチャンに5種類のサーボの選択肢があった時にその全てにハードウェアインタフェースが提供されていたら、現在提供されているロボットキットよりもダントツ簡単に開発体験を提供できそうだなぁと考えていたりします。
顔の部分についてはmROS2との連携を待ちたいところですが、引き続きスタックチャン界隈を覗きながら、適宜contributeしていきたいと考えています。
ぜひお手持ちのFeetech-SCSサーボでros2_controlを触ってみてください!
何か気になることがあれば𝕏のリプやGitHubのissue・スタックチャンのDiscordで、プルリクも大歓迎です!