ESP32による かわロボ用多機能制御基板の紹介

経緯やスペック・構成は過去記事にあるので、今回は機能に着目してご紹介します。
分かりやすさの為に極力動画を入れてみましたが、一部古いのはご容赦下さい。
参考になりそうな採用例や失敗例、ノウハウなども出来るだけ入れてみました。

目次
■攻撃時アーム角度制御機能**■フルカラーLED点灯機能**
■移動時アーム制御機能
■姿勢崩れ時アーム抑制機能
■スタート時自動展開機能
■プロポからパラメータ設定機能
■他デバイスとの無線通信機能
■デバイスからパラメータ変更機能
■ログ機能(ログ、操縦、加速度)■OTA/ファイルアップロード機能■他デバイスから操縦機能
■その他凍結中の機能
(移動補正、音声再生、モータ温度、バッテリ電圧)

■攻撃時アーム角度制御機能
アームの出力は高く・動作も速い方が相手を投げるにあたっては有利だが、
速すぎると操作性が悪くなり、高速で可動域を越えて動かすと自壊することもある。
そこで、アームの最終段に角度センサー(RDC50)を入れて角度制御することで、
高出力(モータ6発)と高速動作(70:1)を両立。来年はルール違反の為出力は制限予定。

■フルカラーLED点灯機能
他機能のモードや効果時間を操縦者に分かりやすく伝える目的。
例えばスタート待機時や緊急停止時に特定パターンで点滅する。
試合動画にも残るので、動作と対応した記録が可能。(ただし合焦しないことも)
外付けの24連フルカラーLEDが前提だが、最低限基板上のLED1つでも代用可能。
現在も輝度下げられるが、**来年はルール違反?**の為 標準輝度は制限予定。

■移動時アーム制御機能
移動しながらアームの上げ下げは難しいので、前進・旋回時にはアームを適量上げ、
後退・停止時にはアームを地面につける動作(接地)を自動的に行う。
角度制御されたアームは常に弱い力で地面に押しつている為、下を取られにくい。
(代わりにピー音は鳴り続けます。うるさくてすみません。)
この機能が有効な時を追撃モード、無効な時は迎撃モードと命名。
以前は有効な攻撃後は自動で追撃モードに変更していたが、誤動作や失念すると最悪なので止めた。

■姿勢崩れ時アーム抑制機能
相手を攻撃した際に上手く投げられず、自らのロボットが姿勢を崩すことがある。
その際に高速でアーム下げると自らが吹き飛ぶ(自爆)ので、低速で戻す必要がある。
しかし、常にゆっくり戻すと、攻撃空振り時に大きな隙となってしまう。
そこで、ジャイロで姿勢崩れを検知し自爆しそうな時だけ低速で下げるようにした。
ジャイロはドリフトするので、判定はシンプルに閾値を一定時間超過のみ。
この機能が動作している最中はフルカラーLEDがカウントダウンされる。
転倒復帰時にも誤反応するが、姿勢が安定するので意図的にそのまま。

■スタート時自動展開機能
前進するだけでアームが自動的に段階的に下がる。
時間で無く前進・旋回入力量基準なので、ほぼ速度に依存せずに展開可能。
このスタート姿勢入力が出来ないと本大会では負けなので、複数の方法を用意済。
(一定時間放置後にロボットを傾けると自動的にスタート姿勢になる機能もある)

■プロポからパラメータ設定機能
後述する無線通信機能はルール違反になるので大会向けには無線通信できない基板を使用している為、アーム高さなど良く使うパラメータはプロポのボリューム等から変更可能。
他にもアーム左右のトリムや緊急停止・移動モードもプロポから指定できる。
移動モードは差動とVテールが変更可能。移動ログ取得開始も指令可能。
保有プロポは10Jと6EXで使用できるパラメータ数は差があるが、緊急停止とモード変更は共通させ、対応しているトグルスイッチは赤/緑に着色した。(動画参照)

■他デバイスとの無線通信機能
ESP32はWiFi標準搭載なので、ローカルサーバを立ててPCやスマホと非同期通信可能。参考
起動後一定時間プロポと接続できないとWiFi通信モードとなり、デバイスとP2P接続する。AP経由での接続も可能であり、インターネット接続して時刻取得や遠隔操作も可能。

■デバイスからパラメータ変更機能
リング形状異なる学祭で毎度プログラムの数値を調整してPCから書込むのは手間。
そこで、上記無線通信機能によりブラウザからパラメータ変更が可能。
数値を直接入力したり、スライダーで表示・変更。何気にJava Script対応。
パラメータはJSONでマイコンのFlashに保存され、差替えも可能。
ArduinoJSONでクラッシュしがちなので、パラメータはバージョン管理している。

■ログ機能(ログ、操縦、加速度)
パラメータファイルの応用で、動作や操縦・加速度ログなどを保存可能。
スマホのブラウザからグラフ表示も可能。何気にd3対応。

■OTA/ファイルアップロード機能
ワイヤレスでファームウエアを更新可能。更新だけならスマホからも可。
下記音声ファイルやパラメータファイルもアップロード可能。何気にajax対応。

■他デバイスから操縦機能
thetaを用いてのVR遠隔操縦システムをテクノクエスト用に開発。PC/スマホ/自作コントローラから操縦可能。当然本大会NG。
同時接続も可能で信頼性が高いプロポ優先。体験操縦時に子供がコントローラで突撃しそうになった際にプロポで強制帰還させるなど活躍。

■移動補正機能(凍結中)
移動時に障害物にあたって不本意に旋回した場合、それを補正する様に旋回する機能。
つまり前進操作してれば障害物に脚を取られても勝手に出力を上げて前進してくれる。
ジャイロが反応してから補正する以上、遅れてアシストする形になり違和感大きい。
操縦者の脳内では脚を取られそうだから予め多めに旋回するなどしている為か。
また、旋回量とジャイロ値が一意でなさそうで、定式化しにくかったので一旦凍結。

■音声再生機能(凍結中)
起動時のモードやWiFi接続時に教えてくれるのはミス防止に良いが、ややうるさい。
ロボットから音がするより、スマホからした方が聞こえやすいのもあり凍結。

■モータ温度・バッテリ電圧管理機能(凍結中)
サーミスタを接続してモータ温度や、分圧したバッテリ電圧を表示・管理可能だが、試合中に管理する必要性低く、試合後に確認する別手段あり。スマートグラスを装着して表示するシステムも概ね出来はしたが、結局見にくいし需要低く凍結。

■脚回転速度管理機能(検討中)
脚ギアにフォトインタラプタ(エンコーダ)装備し、回転速度一定=定速で移動する機能。
上記移動補正やスタート補助には有効そうだが、浮くとズレるので完璧ではない。
デジタルピンは余っているので技術的には可能。

以上です。何か気になる所や詳細に聞きたい項目などあればコメント下さい。
何かの参考や刺激になれば幸いです。

← ブログ一覧へ戻る この記事をシェア