マイクロマウスって中央走行にこだわらなくても良いというお話
■Micro Mouse Advent Calendar 2019
この記事はMicro Mouse Advent Calendar 2019の16日目の記事です。
昨日の記事はInpさんの「2019年マイクロマウスクラシック機体紹介」でした。
最近はRAM容量の暴力を得るためにピン数を増やすことが流行っているとか。
ログに回せる容量沢山あればドラレコのようなログだったり、大会の最短走行4走分を記録したりできるので、できる幅が広がりますね!
だれか...SPI-FLASHを試しに使う人はいないものか...
■テーマ
さて、本題に入りましょう。私のタイトルは「null」でしたが、
特に意味はなくただ決まっていなかっただけです。
テーマは「探索時の位置補正について」です。
探索が安定しなくて困っている方はいませんか?
そんな方にヒントになればと紹介します。
■よくある探索時の位置補正
よくある位置補正では、横壁センサー(※1)を使って、壁のAD値が目標値に収束するように”壁に追従”することで、横位置(※2)を補正します。目標値は機体が迷路の区画の中央を走行するように設定されます。
以後、本記事では壁に追従する制御を”壁追従制御”、壁に追従し区画中央を走行しようとする制御を”区画中央壁追従制御”と呼ぶことにします。
※1)横壁との距離を、横壁に赤外線を当て跳ね返ってくる赤外線の強さをフォトトランジスで電圧として簡易的に距離を測定するセンサ。マイコンでAD変換を行い測定する。
※2)進行方向に対して直角方向の位置
区画中央壁追従制御では、図1に示すように横位置のずれが小さい場合はうまくいきます。
図1:よくある壁制御(ずれが小さいor無い場合)

しかし、図2のように横位置のずれが大きくなった直後にスラロームすると破綻します。
これは、区画中央壁追従制御により角度がずれたことに起因します。
ではなぜ角度がずれるのでしょうか?
マイクロマウスのような差動輪ロボットは横位置を直接補正することができません。
車を運転するときをイメージしてもらうとわかりやすいですが、横位置を補正するためにはヨーイングする必要があります。
つまり、いったん水平方向の角度をずらす必要があります。
また、横位置を補正する量が大きい場合、長い走行距離が必要となります。
これについても、1車線よりも2車線分レーンチェンジする場合により長い距離が必要なことをイメージしてもらえればわかりやすいかと思います。
つまり、横位置のずれが大きくなるとより長い距離壁に追従する必要があります。
しかし、図2のような横位置が大きくずれた直後にスラロームする場合、壁に追従できる距離が短いです。
そのため、横位置の補正が中途半端のまま区画中央壁追従制御が終わることで角度がずれます。
図2:よくある壁制御(ずれが大きい場合)

こうなっては、壁を使った制御をなくしたほうがうまく走るでしょう。
しかし、ずれが補正されないため、大きな迷路ではどこかで壁に衝突してしまうでしょう。
図3:壁追従制御なし

■区画中央走行にこだわらない
ではどうすればよいか?
答えとしては、テーマにある通り区画中央を走行することにこだわらないです。
横位置を補正するには一度ヨーイングが発生し、そのヨーイングにより角度がずれてしまう場合があることを説明しました。
つまり、横位置を大きく補正するためのヨーイングは悪なのです。
ではどうすればよいか?
マイクロマウスは迷路を走行するのでどこかでスラローム(90度旋回)を行います。
スラロームを行えば、補正したかった横位置は進行方向の位置となりますので、ヨーイングを発生させず補正することができます。
つまり、図4に示すように、スラローム後の直線走行を増減(※3)することで、スラローム前の横位置をヨーイング無に補正することができます。
※3)ほどんどのマウサーの方はスラローム前後に直線走行区間を設けていると思います。この区間を利用します。
図4:スラローム後直線増減による補正

■でもやっぱり壁追従制御は必要
スラローム直後の直線走行距離を増減することにより、横位置を補正することはできます。
ただし、ジャイロのドリフトなどで発生する機体のヨー角を補正することはできません。
結局は壁追従制御に頼ることになります。(壁追従制御をなくすこともできますが、またどこかで)
横位置はスラローム後の直線走行で、ヨー角は壁追従制御で補正することを考えます。
これは、区画をまたいだ際の横位置をその区画内で変わらないように制御することで角度のみを補正できます。
つまり、迷路の区画をまたぐ毎に、またぐ際のAD値を目標値として設定し追従することで、横位置を変えずにヨー角のみを補正することができます。
実は...
区画中央壁追従制御は、横位置が大きくずれた場合に破綻しやすいですが、ジャイロのドリフトなどによるヨー角のずれも一緒に補正されるため、便利な補正方であったのです
■まとめ
多くの方は壁に追従し区画中央に戻す制御(区画中央壁追従制御)を行っていると思います。
しかし自分はハーフサイズではうまくいかなかったため、下記の制御を行っています。
補正を横位置とヨー角別々に行う。
横位置はスラローム後の直進走行距離を増減することで、
ヨー角は区画マタギの際の横壁AD値を目標値とする壁追従制御で行う。
では、良き探索ライフを!
明日の記事はmakoさんで「機体紹介」です。
0時投稿を目指していたら、遅くの投稿となって申し訳ない!
この記事はMicro Mouse Advent Calendar 2019の16日目の記事です。
昨日の記事はInpさんの「2019年マイクロマウスクラシック機体紹介」でした。
最近はRAM容量の暴力を得るためにピン数を増やすことが流行っているとか。
ログに回せる容量沢山あればドラレコのようなログだったり、大会の最短走行4走分を記録したりできるので、できる幅が広がりますね!
だれか...SPI-FLASHを試しに使う人はいないものか...
■テーマ
さて、本題に入りましょう。私のタイトルは「null」でしたが、
特に意味はなくただ決まっていなかっただけです。
テーマは「探索時の位置補正について」です。
探索が安定しなくて困っている方はいませんか?
そんな方にヒントになればと紹介します。
■よくある探索時の位置補正
よくある位置補正では、横壁センサー(※1)を使って、壁のAD値が目標値に収束するように”壁に追従”することで、横位置(※2)を補正します。目標値は機体が迷路の区画の中央を走行するように設定されます。
以後、本記事では壁に追従する制御を”壁追従制御”、壁に追従し区画中央を走行しようとする制御を”区画中央壁追従制御”と呼ぶことにします。
※1)横壁との距離を、横壁に赤外線を当て跳ね返ってくる赤外線の強さをフォトトランジスで電圧として簡易的に距離を測定するセンサ。マイコンでAD変換を行い測定する。
※2)進行方向に対して直角方向の位置
区画中央壁追従制御では、図1に示すように横位置のずれが小さい場合はうまくいきます。
図1:よくある壁制御(ずれが小さいor無い場合)

しかし、図2のように横位置のずれが大きくなった直後にスラロームすると破綻します。
これは、区画中央壁追従制御により角度がずれたことに起因します。
ではなぜ角度がずれるのでしょうか?
マイクロマウスのような差動輪ロボットは横位置を直接補正することができません。
車を運転するときをイメージしてもらうとわかりやすいですが、横位置を補正するためにはヨーイングする必要があります。
つまり、いったん水平方向の角度をずらす必要があります。
また、横位置を補正する量が大きい場合、長い走行距離が必要となります。
これについても、1車線よりも2車線分レーンチェンジする場合により長い距離が必要なことをイメージしてもらえればわかりやすいかと思います。
つまり、横位置のずれが大きくなるとより長い距離壁に追従する必要があります。
しかし、図2のような横位置が大きくずれた直後にスラロームする場合、壁に追従できる距離が短いです。
そのため、横位置の補正が中途半端のまま区画中央壁追従制御が終わることで角度がずれます。
図2:よくある壁制御(ずれが大きい場合)

こうなっては、壁を使った制御をなくしたほうがうまく走るでしょう。
しかし、ずれが補正されないため、大きな迷路ではどこかで壁に衝突してしまうでしょう。
図3:壁追従制御なし

■区画中央走行にこだわらない
ではどうすればよいか?
答えとしては、テーマにある通り区画中央を走行することにこだわらないです。
横位置を補正するには一度ヨーイングが発生し、そのヨーイングにより角度がずれてしまう場合があることを説明しました。
つまり、横位置を大きく補正するためのヨーイングは悪なのです。
ではどうすればよいか?
マイクロマウスは迷路を走行するのでどこかでスラローム(90度旋回)を行います。
スラロームを行えば、補正したかった横位置は進行方向の位置となりますので、ヨーイングを発生させず補正することができます。
つまり、図4に示すように、スラローム後の直線走行を増減(※3)することで、スラローム前の横位置をヨーイング無に補正することができます。
※3)ほどんどのマウサーの方はスラローム前後に直線走行区間を設けていると思います。この区間を利用します。
図4:スラローム後直線増減による補正

■でもやっぱり壁追従制御は必要
スラローム直後の直線走行距離を増減することにより、横位置を補正することはできます。
ただし、ジャイロのドリフトなどで発生する機体のヨー角を補正することはできません。
結局は壁追従制御に頼ることになります。(壁追従制御をなくすこともできますが、またどこかで)
横位置はスラローム後の直線走行で、ヨー角は壁追従制御で補正することを考えます。
これは、区画をまたいだ際の横位置をその区画内で変わらないように制御することで角度のみを補正できます。
つまり、迷路の区画をまたぐ毎に、またぐ際のAD値を目標値として設定し追従することで、横位置を変えずにヨー角のみを補正することができます。
実は...
区画中央壁追従制御は、横位置が大きくずれた場合に破綻しやすいですが、ジャイロのドリフトなどによるヨー角のずれも一緒に補正されるため、便利な補正方であったのです
■まとめ
多くの方は壁に追従し区画中央に戻す制御(区画中央壁追従制御)を行っていると思います。
しかし自分はハーフサイズではうまくいかなかったため、下記の制御を行っています。
補正を横位置とヨー角別々に行う。
横位置はスラローム後の直進走行距離を増減することで、
ヨー角は区画マタギの際の横壁AD値を目標値とする壁追従制御で行う。
では、良き探索ライフを!
明日の記事はmakoさんで「機体紹介」です。
0時投稿を目指していたら、遅くの投稿となって申し訳ない!
スポンサーサイト