走行中の姿勢制御を実装し、目標走行時間を突破せよ!!:マイクロマウスで始める組み込み開発入門(15)(1/3 ページ)
市販の組み立てキットで「マイクロマウス」の開発を進める北上くんとえみちゃん。これまで開発してきたプログラムをベースに、センサーで壁の有無を判断しながら迷路内を自律走行させることに成功しました。最終回となる今回は、さらなる安定走行を目指し、「姿勢制御」を実装します。
前回までのあらすじ
組み込み技術者に要求される要素が“ギュッ”と詰まった「マイクロマウス」。北上くんと新入社員のえみちゃんは、スキルアップを兼ねてマイクロマウスの開発にチャレンジ! 北上くんの熱血指導を受け、初心者のえみちゃんもマイコン制御の基礎技術を一つ一つ学び、何とかマイクロマウスを走らせることに成功しました(前回の記事へ)。
走行中のマイクロマウスを制御する
――おやつのシュークリームを食べ終えて……。
おいしかった〜。
えみちゃんは、ホントにおいしそうに食べるね!
えへっ!! 頭を使うと、甘いものがほしくなりませんか?
うんうん。とにかく、よくここまで頑張ったね!!
最初は、マイコンプログラムがチンプンカンプンでどうなることかと思ったけど……。いざ、マイクロマウスが迷路を走りだしたら、頑張ってよかったーって!! ワタシ、感激しちゃいました!
だよねー。その気持ち、すごい分かるよ!
ただ、今のままだとすぐに壁にぶつかっちゃうから……。ゴールまでは遠そうですけどねぇ(遠い目)。
“走行中の制御”をしたら、もっと安定して走るようになるはずだよ。まずはそこからやっていこう!
はいっ!
前回、市販の組み立てキット「Pi:Co Classic」を基に作った、えみちゃんたちのマイクロマウスがようやく迷路内を走行するようになりました。ただ、えみちゃんが嘆くように、現状のままでは、10秒も走らないうちに壁にぶつかってしまいます……。
物理的なパラメーターを調整しても、走行中にはタイヤの摩擦や左右モーターの性能差など、さまざまな要因が重なり、ズレが蓄積して走行距離に“誤差”が生じます。
今回は、より安定した走行を実現するための制御を組み込みます。制御方法はいろいろとありますが、本稿では、次の2つの制御を取り入れます。1つ目は「左右の壁による中央位置制御」、2つ目は「前壁による走行距離の補正」です。
1つ目の中央位置制御は、走行中に左右の壁をセンシングして、マイクロマウスが迷路の中央を走るようにするものです。壁に接近するとセンサー値が閾値(しきいち)よりも大きくなるので、左右モーターの回転速度を変えて、進行方向を少しだけ調整します。
つまり、1msごとに位置制御を行い、マイクロマウスを見た目には分からないほど細かく蛇行させて迷路の中央を走らせるのです(画像1)。
ただ、この蛇行が“クセモノ”なのです。蛇行を繰り返せば、必然的に走行距離に誤差が生じます。1区画分180mmを走っても、曲がり角に達しないうちに進行方向をチェックすることになり、曲がり損ねてしまうのです。そこで、前壁を見つけたときにマイクロマウスの車体が区画の中央に達するまで走らせて、距離の補正を行います。これが2つ目の制御です(画像2)。
姿勢制御プログラムの実装
へぇ〜。曲がり角に来たときに、左右を確認しているわけじゃないんですねぇ。
うん。常にセンシングして、姿勢制御をするんだよ。
てっきり、真っすぐ走っていると思っていましたよ〜。
機体の調整だけで、完全に直進できるわけじゃないからね。
う〜ん。姿勢制御のプログラムってすごく難しそうですねぇ……。
今回はカンタンなやり方だから、すぐに実装できるよ!!
ホントですか〜。じゃあ、すぐにプログラムを組みましょう!
Copyright © ITmedia, Inc. All Rights Reserved.