こんにちは、ふたたび情報工学科2年の中村です。
今回は自律走行ロボットのソフトウエアでの制御について書きたいと思います。
ロボコンへ向けて【003】でもお話しましたが、ハードウエアが同じでも走らせ方によって差が出ます。走らせ方は搭載するプログラムで決まります。いかにプログラムをうまく組み、ゴールするまでの時間を短縮するかボク達も毎日試行錯誤を繰り返しています。
ロボコンへ向けて【002】で青木さんがコース説明してくれましたとおり、コースは複雑になっていて右折、左折を何度もしないとゴールできません。ただモーターを回転させタイヤを動かすだけでは直進することしかできませんので右折、左折の判断が必要となります。
どう曲がるかと言いますと、コースのカーブ前には必ず黒い線が引かれていますのでこれを光センサー(車体の前方部分の青い場所)で感知して右へ左へ曲がるというわけです。
(光センサー)
黒い線が1本だったらモーター右部分の動きを止め、左のタイヤだけを動かし車体を90度傾かせ右折
(黒い線1本を感知したら右折)
黒い線が2本だったらモーター左部分の動きを止め、右のタイヤだけを動かし車体を90度傾かせ左折
(黒い線2本を感知したら左折)
こういった感じでカーブするわけです。
ですが毎回90度ぴったりにカーブし、ずっと真っ直ぐ走れるというわけではありません。
もし反れて壁にぶつかってしまった際はどうするのかと言いますと、少し車体をバックさせ、ぶつかったほうと反対側へ車体を傾かせるようにプログラムが組んであります。
車体の先端の左右ににょきっと黄色い角のようなものがあるのが分かると思います。ここには左右に1つづつタッチセンサーが仕込まれていますので、壁に触れたことを感知することができるようになっています。
(タッチセンサー)
基本的には、直進、右折、左折、壁にぶつかったときの軌道修正、ができればいいわけですが、頭で考えたプログラム(理想)と、実際に走らせたときの様子(現実)とは、異なります。ここがパソコンの中だけで楽しめるバーチャルな世界と、パソコンの外にあるものを動かして楽しむリアルな世界との違いです。
まだボクたちの車体「新横Rover」も完全に走れるわけではないので更に改善していく予定です。
プログラムは、LEGO-MINDSTORMS-RCX附属のRCXコードと、フリーソフトのbrickOS-C言語で組んでいます。
トラックバック
このエントリーのトラックバックURL:
http://blog.iwasaki.ac.jp/mt/mt-tb.cgi/783