かわロボ用 新型制御基板を作りました

去年製作して実践投入していた基板の耐久性が確認できたので紹介します(忘れていた訳ではない)
お陰様で横回転にあれだけ転がされても壊れたり再起動しない丈夫な基板になりました!
かわロボ用制御基板に興味ある人向けにこちらでアンケートしてます。有償ベータも検討中ですので興味ある人はお声がけ下さい。意見聴きたいです。

新旧比較

名前 Interceptor LeopardPCB
導入 v1~v5:2010~2013年 v1~v2:2022~2023年
マイコン PIC24F ESP32E/ESP32U(アンテナ無)
CPU性能 16bit 32MHz SingleCore 32bit 240MHz DualCore
メモリ RAM/Flash 8k/16kB 520kB/16MB
FW書込 専用ライタ USB/OTA
オンボード スライドSW1/タクトSW1/LED8 スライドSW1/タクトSW1/LED2/FCLED1
入力 デジタル2/アナログ5 デジタル4/アナログ6/タッチ3
出力 サーボ4/LED1 サーボ4/フルカラーLED沢山/スピーカ1
標準IMU ジャイロ2軸 ジャイロ3軸+加速度3軸(DPM付)
通信 BT(外付け) WiFi/BT/BLE/USB
基板サイズ 44x33mm 46x37mm

やってること

サーボ制御により高速かつ高トルクのアームを自壊せず簡単操作に使える
前進・旋回中は自動でアームを定位置まで上げたり、後退や停止で下げたりする
フルカラーLED25個をモードやパラメータに応じて綺麗に光らせる
スタート台で脚のスタート姿勢をとると、自動でアームもスタート姿勢をとる
相手を投げようとして自分が転倒した場合、ゆっくりアームを戻すことで自爆を防止する
プロポのトグルSWや電源をOFFにすることで、すべての動作を停止させる(緊急停止)
プロポの設定に応じて、移動時のアーム上げ量やトリムを変更可能
アーム種類に応じてアームの動かし方を変える
USBでPCとシリアル通信してセンサ値など送信できるのでデバッグに活用可能

やってたこと

転倒したら自動で復帰する、敵が接近してきたら自動で攻撃する
移動中に段差に乗り上げても補正して移動操縦アシストする(段差に邪魔されても直進する)
現在のモードやパラメータを音声/SE(mp3)で再生する
スマホや自作コントローラからWiFi経由で操縦する(本大会ではWiFi機能オミット)
モータ温度などをスマホに転送し表示する(スマホスカウター的なHMD化もできる)
ゲイン値などのパラメータを基板上のFlashメモリに記憶し、WiFi経由でスマホから閲覧・編集する
ファームウエアやMP3をWiFi経由でPC、スマホから更新する
試合時のログを取得しCSVファイルに出力、スマホから閲覧する

やれそうなこと

バッテリー電圧に依存せず入力に対して一定速度で移動(脚エンコーダ)
自動スタート(脚エンコーダ無いと再現性なさそう)≒ログから同じ動作を再生する
アームが常に水平になるように、段差に乗り上げたらアームを下げる
乱雑にスロットル操作してもグリップを維持できるようにマイルドに変換する
あえてサーボ制御せずにソフト的にアーム可動域の速度制限だけする
攻撃を受けて姿勢が崩れたら自動で後退し回避する
ゲインの自動チューニング
(他にも沢山!あなたの発想次第!)

サンプルプログラム

今後GitHubにUP予定。

動画

右下の動画でローカルサーバとログ機能のデモしてます。

開発動機

今まで旧基板(PIC)で戦う上での不満は無く、性能は十分だと思っていました。
しかしM5Stackを使ってみた所、AllInOneで相当色々な機能がありリッチな体験ができ考えを改めました。
最初はM5StackGrayを使って実戦投入した所、複数個壊してしまい更にかわロボのルール的にもグレーな為に断念。
その後、業務でもESP32を使用して自信が出たので基板を起こしたという流れです。
(自作基板なら壊れても解析/改善しやすいし、通信機能無し版も作成可能)
最初は勢いに乗ってESP32ならではの機能を大量に実装しましたが、再起動する不具合に悩まされて現在はシンプルに。
(大会直前だったので不具合の原因追及はまだ出来てませんが、おそらくデュアルコア&スピーカ周辺と踏んでます)

今後

現在の基板はver2.1で、ver3.0として逆接防止や取付穴を追加・レベル変換省略・外注実装に対応した量産型を設計中です。
とはいえ、自分用はv2.1で満足しているので製造は早くても来年のイメージです。興味ある人は急かして下さい笑。

製作記録

Twitterに綴ってたけれどX自体もいつ消滅するか分らないので写真を転載しときます。