
スタックチャンをmicro-ROSとArduinoで動かすパッケージを更新
はじめに 概要 数ヶ月前にスタックチャンをmicro-ROSとArduinoで動かすパッケージを作成しました。 課題として、使いづらい部分があったり、トピック通信の周期が不安定だったりしたので、 Claudeを使ってパッケージ全体を修正しました。 この記事ではパッケージの説明や使い方の紹介をします。 GitHub - YusukeKato/stack-chan_micro-ros_arduino 過去の記事 前回の記事はこちらです。 スタックチャンをmicro-ROSで動かす - Arduino編 それ以外にもスタックチャンをmicro-ROSで動かす記事を書いています。 スタックチャンをラズパイマウスに搭載してカメラを使った顔の検出と追従 スタックチャンにシンプルなText-to-Speech機能を実装して喋ってもらう パッケージ説明 パッケージ作成方針:ハードウェアとROS 2の橋渡し このパッケージにいろいろ機能を追加していこうと思っていたのですが、 スタックチャンのハードウェアとROS 2をつなぐ部分だけに集中する方針へ変更しました。 アプリケーション部分はPCのROS 2側で動かす想定です。 主な更新内容 パッケージを使いやすくするために下記の変更を加えました。 ファイル構成をモジュール(src/*.h/.cpp)ごとに分割 設定をconfig.hに分離(Wi-Fi、Agentのアドレス、機能のオン/オフ) モータのトピックをsensor_msgs/msg/JointState(単位はrad)に変更 センサ系トピックのQoSをbest effortに変更 スピーカで音を鳴らす機能を追加 顔表示をやめて画面へのログ出力に変更 Text-to-Speech機能を削除(ベース機能としては不要だったため) カメラ画像の調整(JPEG品質の自動調整など) IMUの加速度の符号を修正 ファイル構成 バージョン2.0.0時点では下記のようなファイル構成になりました。 stack-chan_micro-ros_arduino.ino # main: Wi-Fi, micro-ROS node, executor config.h.example # copy to config.h src/ motor.h/.cpp # joint_states, joint_commands camera.h/.cpp # camera/image/compressed battery.h/.cpp # battery_state touch.h/.cpp # touch_intensities imu.h/.cpp # imu speaker.h/.cpp # tone display_log.h/.cpp # logs to Serial and the screen ros_utils.h/.cpp # stamp, string, publish and check helpers wifi_transport.h/.cpp # Wi-Fi UDP transport to the micro-ROS Agent トピック一覧 ノード名はstackchan_nodeです。 バージョン2.0.0の時点で下記のトピックを用意しています。 ...








