私も冬になると寒さに凍えているので、防寒対策をいろいろ紹介していただけてありがたいです。防寒グッズで思い出しましたが、スマホにヒーターアプリがありました。CPUとGPUをフルキャパで実行させ、デバイスを加熱する危ないアプリです。明らかにスマホの寿命が縮むので、スマホを長く使おうと考えている人には向いていません。最終手段として頭の片隅にでも置いておくと、助かるときがあるかもしれません。
【はじめに】
今回は、マイクロマウスにおけるセーフティーカルチャーについて語ろうと思います。事故を未然に防ぎ、事故が起きてしまったら被害を最小限に抑え、異常が発生した際には安全動作に切り替える。そんな設計をしましょうというお話です。マイクロマウスを例にして書きますが、任意の開発にかかわる人全般に通ずる話かと思います。是非一読いただき、追加事項などありましたらコメントいただけると幸いです。
↑クラッシュして壊れたマウスの様子
※この記事は電車の中で書いています。出先なので画像と動画の追加が困難です。後日追加しますのでご了承ください。
目次
・はじめに
・ヒューマンエラー[human-error]
・フールプルーフ[fool-proof]・フェイルセーフ[fail-safe]
・フェイルソフト[fail-soft]
・フェイルソフト[fail-soft]
・余談(バッテリーの極性をなくす方法)
・さいごに
・参考文献
【ヒューマンエラー】
人間はどうしようもない間違えをします。寝ぼけていたり、徹夜後の昼だったり、ぼーっと生きていたりするとよく起こるのがヒューマンエラー(人為的ミス)です。設計時には操作するときに気を付けようと思っていても、実際使用するときには気が緩んで失敗します。それはいくら説明書に丁寧な注意書きをしようと、目の前に答えが書いてあろうと、何度も同じことをやっていても試行回数が増えると人間の行動は定まりません。ヒューマンエラーは起きるものとし、先回りして手を打っておく必要があります。
【フールプルーフ】
人為的ミスは防ぐことができないので、起きうる事故を未然に対策するような設計をフールプルーフ設計と言います。
例えばバッテリーの逆差しです。片方向にしか挿せないコネクタにすればいいのですが、利便性とスペースの問題で向きのないコネクタを使う場合もあります。自分で使うものだから、気を付けて使えば問題がないとして進めてしまいがちですが、なぜか逆差しします。これは確率が低くても試行回数を重ねるとやってしまうものです。この対策として、逆差しできないコネクタを使用するか、その向きでしか挿さらない筐体設計をするか。この設計思想がフールプルーフです。
ちなみに私のマウスでは後者の「その向きでしか挿さらない筐体設計」で対策しています。
画像は後日追加します。
バッテリーのケーブルは短ければ短いほど良いです。電流を多く流すには太いケーブルを使用するので、重量と配線抵抗を小さくするために短いほうが有利です。ここまで短くすると指が入らないため、バッテリー用のコネクタを使用すると挿抜が硬くて使い勝手が悪くなります。バッテリーを変えるたびに強い負荷を与えてしまうのはよくないため、私は普通のピンヘッダを使用しています。競技用マウスでは定格は無視して問題ありません。(私はモータードライバの最大定格電圧も無視しています)
【フェイルセーフ】
事故・誤動作した際に、被害を最小限に抑えて安全に停止させる設計をフェイルセーフといいます。
バッテリーの逆差しでいうと、逆差ししてしまった際に電流を流さないようにする設計です。フールプルーフ設計だけだと、その状態が崩れた時に逆差ししてしまうかもしれません。そんな時に役立ちます。ちなみに私のマウスには逆差しのフェイルセーフは入っていません。これを実装しようとすると無駄に部品を追加しないといけなくなり、重量と内部抵抗が上がります。競技用なのでここは割愛しています。
他にはクラッシュした時に動作を止めるということがあります。マイクロマウスの公式ルール3-5には、「競技委員長が許可するまで走行中のマウスに触れることができない(意訳)」とあります。マウスが動いているときは人が触れてはいけません。許可なしに触れた場合は迷路情報をすべて消去しないといけなくなります。このリスクを回避するため、マウスは異常を自分で判断し、適切に止まるように設計することが好ましいです。それに、最短走行時にクラッシュした場合、なるべく早く救助したいものです。許可される前に触れてしまい、探索のやり直しになるのは避けたいですね。
私が実装しているフェイルセーフをひとつ紹介すると、左右のタイヤの回転速度の差分を1msごとに監視して、一定速度を超えたらフェイルセーフが働くようにしています。走行中は常に角度補正を行っているため、タイヤが片輪でも浮けば全力でホイルスピンしようとします。走行時はフェイルセーフがかからず、タイヤが少し浮いたら止まる閾値に調整するといいです。多少壁にぶつかっても止まらず、本当にダメな当たり方をした時だけ止めるような閾値を探してください。
【フェイルソフト】
異常が発生した際に、安全動作に切り替える設計をフェイルソフト設計といいます。
バッテリーの逆差しでいうと、逆にさしても使えるようにしておく設計です。これも先述した通り部品点数と内部抵抗が上がってしまうため、私は使用していませんが、第三者に渡す回路ではこの設計になっているとトラブルが少ないと思います。
フェイルソフトで分かりやすいのは、ロボトレースでコーナーマーカーを読み違えた時の対応です。マーカーを読んだときに曲率を記録して加減速走行をするタイプのマシンでは、マーカーセンサーの誤動作、読み飛ばしは致命的です。直線なのにゆっくり走ったと思えば曲率の小さいところで加速してコースアウト。それを防ぐには、マーカーまでの距離が記録と明らかに違った場合、その後のパラメータをすべて最大曲率がくるものとして走行します。完走を目的とするのであればこのフェイルソフトはかなり効果的で、冒険もできるし読み飛ばしてもゴールできます。タイヤに埃がつくまでは高いパラメータで走れますが、走行しているうちにスリップしやすくなり、最後のほうで読み飛ばしてゴールできないことが多々あるので、理にかなっています。
もう少し改良すると、マーカーまでの距離が明らかに違ったらマーカーを読み飛ばしたと判断し、仮想マーカーで対応すると、マーカーが読めなくても加減速走行を継続することができます。私は一時期この方法を導入しましたが、誤動作が多くやめました。今流行りのコースを二次元マップにおいて加減速させた方がいいですね。マイコンのRAM容量が大きければ60mのコースでも数cmおきにプロットすることができます。
【余談】
終始バッテリーの逆差しを例にそれぞれの設計についてお話ししました。そこで、マウスには向いていないけどとても簡単に極性をなくす方法も紹介します。それは交流から直流に変換するブリッジダイオードを用いる方法です。1つの部品を挟めば極性がなくなります。しかし、順方向電圧が1V以上あって無駄なのでマウスにはお勧めできません。車のLEDバルブにたまに採用されていたりします。電圧に余裕があり、大した電流を流さない趣味レベルの回路にはあると便利な時がくるかもしれません。
もしマウスに電源を逆差ししてしまった場合、DCDC、LDOは熱々になり、マイコンはお亡くなりになり、エンコーダーも壊れる可能性があります。マシンが丸々死ぬかもしれない致命的な事故なので、フールプルーフ設計を必ず行ってください。
【さいごに】
いかがだったでしょうか(言ってみたかった)。この記事では安全にマウスをゴールまで導くための設計思想を紹介しました。特に設計者と使用者が違う場合、設計者からしたら考えもしないようなことを平然とやってきます。人に渡すものは様々な対策をしておきましょう。マイクロマウスの場合はキットを除いて自分で作って自分で動かすことがメインなので、製作者の勘のようなものがあり、なぜそれで壊さないのか理解不能なマシンもあります。競技用の機体はルールに反さない限り攻めた設計の方が速いマシンが作れます。リスクに見合うだけの優位性があるならば、私は攻めた設計の方を行います。少し手間をかければ今後のリスクを減らせ、副作用が少ない対策なら積極的に取り入れていきましょう。
明日の記事はアドベントカレンダーの主催者である、そらさんです。タイトルは未定のようです。毎年アドベントカレンダーを作成していただきありがとうございます!ブログは気合を入れないと更新できないので、このような機会を設けていただき感謝しています。
今日は学生大会ですね。コロナの影響でいろいろな制約がありますが、それを含めて楽しんで挑んでください!
【参考文献】
https://www.i-learning.jp/topics/column/useful/foolproof.html
https://medium-company.com/%E3%83%95%E3%82%A7%E3%83%BC%E3%83%AB%E3%82%BB%E3%83%BC%E3%83%95%E3%81%A8%E3%83%95%E3%82%A7%E3%83%BC%E3%83%AB%E3%82%BD%E3%83%95%E3%83%88%E3%81%AE%E9%81%95%E3%81%84/
https://japan.zdnet.com/glossary/exp/%E3%83%95%E3%82%A7%E3%82%A4%E3%83%AB%E3%82%BD%E3%83%95%E3%83%88/?s=4
https://www.ntf.or.jp/?page_id=118
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1062391135