はじめに
こんにちは、槇原です。前回はモータマウントの設計をしました。続いてはマイクロマウスには欠かせない壁センサの取り付け角度について検討していこうと思います。今回の説明では具体的な設計というよりも定性的に取り付け位置によって何が起こるのかについて書いていきます。
前壁センサ
まず、前壁センサは次の用途で使うことが多いようです。
- 迷路探索時に前方に壁があるか判定する
- 斜め走行時に柱や壁に近づきすぎていないか判定する
- スタート時に手をかざして合図する際の判定をする
取り付けについては、センサは若干外に向けるとよいという話があるようです。
3つ目については壁がある程度見えるのであれば細かく気にする必要はないと思われます。ここでは1,2について考えます。
壁センサに角度をつけると前壁をみる際、機体姿勢角の許容範囲が広がり壁が読みやすくなる
壁センサを正面に向けて配置した際の、機体の姿勢角度とディテクタに入る光強度の関係を上の図に示しています。基本的には垂直に光が入射したときが最も光強度が高くなり、機体を傾けるにつれてセンサに帰ってこない光が多くなり光強度が低くなります。機体の姿勢角以外にも壁との距離が遠くなれば光強度は低くなります。
そのため下の図のように、壁を検知できる閾値を決めると、どこまでの姿勢角が許容されるかが決まります。
一方でセンサを外側に向けた時には左右のセンサの光強度と姿勢角の関係はそれぞれ姿勢角にオフセットが乗った形になるため図のように横にスライドします。
このようにセンサを傾けると先ほどと同じ閾値を設定した際に許容される姿勢角が広がります。
このセンサ角度とセンサ感度の関係についてはアールティの以前のブログでも説明されています。

そのため角度をつければつけるほど良いかといえば、もちろんそんなことはないです。逆に角度をつけすぎれば下の図に示したように横壁を間違ってみてしまうことになります。広げすぎてもそれはそれで別の問題が発生することになります。
センサを外に向けると斜め走行時に壁を見やすくなる
上の図は斜め走行時のイメージです。斜め走行時には柱部分にぶつからないように制御することを考えたとき、前壁センサによってこの柱を見つけたとします。このとき図でみるとよく分かるように、壁センサに角度をつけておくと、角度をつけないときに比べて柱がセンサの視界に入りやすくなります。
以上をまとめると、前壁センサについては完全にセンサ角度を正面に向けるのではなく、若干(5度程度)角度をつけることで、前壁を読む際の機体角度の誤差に強くなり、斜め走行時の柱を見やすくすることができます。
今回の板Pi:Coの基板では例にならって5度の角度をつけようと思います。
横壁センサ
横壁センサは次の目的で使います。
- 迷路探索時に左右に壁があるか判定する
- 走行時に壁に近づきすぎないように距離を見る
- 走行時に壁切れ判定をして位置補正をする
いくつかの要素がありますが、機体を区画の中心に置いたときに柱を見るくらいの配置にするのがよいと言われているようです。
壁の有無を判定するだけであればそこまでシビアな設置角度は要求されない
壁を認識するだけであれば壁を判定する柱と柱の間に機体を置いたときに壁が認識できるように前方にセンサを配置しておけば問題ないです。壁センサの角度を壁に垂直に近づきすぎると、機体が傾いた際に柱や手前の壁を横壁と認識してします。さらに機体が傾くと壁制御をするときにセンサが後方を向いてしまい壁に近づいているにも関わらず壁から遠ざかっているように見えてしまうということも起こります。
また、センサと壁との距離が近くなるためセンサが飽和するような領域を使うことになってしまい、きれいに距離が取れなくなってしまう場合もあるようです。
センサを正面に向けすぎると壁切れ判定位置がずれやすくなる
壁切れ判定によって壁制御を切ります。これをしないと壁がなくなったとき壁から遠くなったと思って機体が壁側に吸い込まれてしまうということが起こります。
また壁切れのタイミングで位置補正を行ったりします。

壁切れ判定ではセンサ取り付け角度によって特性が変わってきます。
センサ角度を大きくする(進行方向側に向ける)と壁までの距離が大きくなるため、光強度が下がり壁の読み違いが起きやすくなります。一方角度を小さくすると逆に壁との距離が小さくなり飽和しやすくなります。
また下図のように機体が傾いた際にセンサ角度が大きい(図ではオレンジ)と壁を見る位置が大きくずれることになります。そのため壁切れ判定の観点では角度はなるべく小さくするのがよいと言えます。

今回の板Pi:Coでは、例にならって機体を区画中心に置いた際に柱を見るような位置に配置しようと思います。また実際の機体を触ったときの様子を見て自作マウスのほうでは再度配置について検討しようと思います。