第5回 落ちないように・・・~克服しろ!センサーと現実のギャップ~

2016/03/04 1:36 に Robo Kirarin が投稿   [ 2016/03/04 1:42 に更新しました ]

黒線のエリアを超えないように動くプログラムに挑戦だ!
うまく作らないとすぐに外に出ちゃうと言うとても難しい課題だぞ!
とりあえずライントレーサーの発想で実装してみたのがこちら
結果・・・即場外!
高速で場外にすっ飛んでいく機体の雄姿
何度も試したが黒線に斜めに突っ込むときは何とかなるけれどまっすぐ直撃したら認識しきれず場外に出てしまう。そんなプログラムになってしまったぞ!
こうなる最大の原因はライントレーサーが判定するのは線、今回のプログラムで判定しなくてはいけないのが領域で有るという点だ!
まずは下の図を見てもらいたい。

ライントレーサーの時には判定したいものとそうでないものの違いがハッキリとしているのに対し、領域の判定をするときはどちらも白!つまりいけない領域に入ってもロボットは気づくことが出来ないのだ

つまり突破口はこの場合ラインセンサーの示す情報を「領域内か領域外か」ではなく、「領域外に出る兆候」と見るところにあるのだ!
これが今回のROBOXが作ったプログラムの作例である!

////////////////////////////////////////////////////////////////////////////ワンポイントアドバイスその1!//////////////////////////////////////////////////////////////////////////////////////
ワープブロックを工夫してオリジナルブロックを作ろう!
特定の動きを多用したい時、何度も書くと面倒&変更したい時大変だと思っているそこの君!
ワープブロックをこんな感じに使って見てはいかが?

ワープブロック後にやりたい動作を入れて元の位置に戻るだけ!
こうするとあとはやらせたい動作が来るところにワープブロックを置くだけで複雑な動きをすることが出来るぞ。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ではいざ実践!

YouTube 動画


端的に言うと「ラインセンサーが反応したら0.5秒後退したのちに1秒回転するだけのプログラム」だね
原因がわかると意外と簡単。そんなプログラミングでした

Comments