この記事はCanSatチームFUSiONのアドベントカレンダー2023,13日目(12月15日)の記事です。
記事の内容
CanSatランバック部門という20cmくらいのロボットを高いところからパラシュートで落として目的地に向かわせる大会に出場した。結果いろいろ失敗したのでアンチパターン的にまとめた。
作ったものの仕様
幅22cmの機体に直径14cmのタイヤがついている
メインのマイコンがRaspberryPiPico
サブのマイコンがRaspberrypiZero
あとモタドラとかSDカードとかIMUとかGNSSとかカメラとか乗ってる
思想
メインの処理は書きやすいからラズピコ
カメラの処理をしたいのでラズパイゼロ
GNSSとIMUで近づいてカメラで目標地点の三角コーンに向かうCanSatではメジャーな奴
アンチパターン
1.モタドラの定格は余裕を持とう
タミヤモータ君の思わぬ電力消費にモータドライバTB67H450は過電流保護を発動させた。モータドライバの定電流機能を使って電流を2.5Aに制限して頑張って動かした。1か月ぐらいロスした。モタドラの定格は余裕を持とう。
なおブレッドボードでの実験中はジャンパ線の抵抗値によりICの電流制限機能が機能して、結果として過電流保護が発動せずに見かけ上正常に動作していた。
2.モタドラの過電流保護は過信しないようにしよう
動かせたけど今度は過電流保護貫通してモタドラのmosfetがたまに焼けるようになった。割とどうしようもない面もあるけどモタドラはいっぱい買っておこう。
3.I2Cを信じすぎないようにしよう
I2Cで動くセンサ類をブレッドボード上で実験するとき、ジャンパ線の接触とかで割と接続が切れる。ちゃんとエラーハンドリングして再接続するようにしよう。なおmicropythonのI2Cには接続失敗時にエラーを出すのではなくフリーズすることがあるので可能ならsoftI2Cを使おう。1
4.BNO055はクオータニオンを使おう
このモジュールは勝手に内蔵のマイコンでカルマンフィルタをかけて磁気センサ、ジャイロセンサ、加速度センサの値を統合してくれる機能がある。これは非常に便利だが、起動直後に向いていた方向をしばらく北だと思い続ける仕様があったり、ピッチとヨーが45°以上ずれた方向を向く場合オイラー角の出力数値がずれるという問題があるので意識する必要がある(1敗)。可能ならクオータニオンで処理することで対処可能。
5.入手できない部品を設計に使わないようにしよう
秋月の発売終了になったGNSSモジュールを使うために古いやつを引っ張り出したらしばらく使っているうちに衛星をロックする速度がどんどん下がっていって最終的に曇ってると受信しないGNSSが誕生した。設計段階で入手性の高い部品を使うようにしよう。
6.電源スイッチはつけよう
なくても行けるか☆という心で作成したが普通にデバッグで不便だった。せめてフライトピンとかつけないとパラシュート切り離し機能の誤爆とかが発生してまずい。
実際に、パラシュート切り離し機能をデバッグ時にハードコードして無効化していたのを忘れて機体を投下してしまった。電源スイッチつけよう。
7.低電圧ロックアウトをつけよう
実験中機体の電源を入れっぱなしにして忘れた結果7.4VLiPoが5Vになったりした(3敗)。PchMosとかでUVLOを作ってつけておこう。
まとめ
以上のように装置の開発では様々な問題が発生する。少なくともこの記事を読んで同じ失敗をする人が1人でも減ったならば幸いだ。また、究極的な失敗原因として開発期間の不足があり、試験機作成→改良を満足に行えないと失敗が発生するため締め切りには余裕を持とう。2