今日から会社の研修でロボットを使ったC言語の組み込みが始まった。
ロボットと言っても市販されているかたつむり型のロボットで、
ツクモとかで簡単に手に入る。
で、ライントレースって言っても、
センサが一つしかなくて、しかも、明るさで白黒を判断してるので、
線から外れたときの状態とかはまったく得られず、
それで効率よく走らせるって考えると結構難しい。
最初に考えたのが、線のふち(外側)を辿る方法。
白いところにいるとき、前進しながら黒に近づき、
黒に乗ったら、その場で白から離れるように旋回。
それを繰り返せば、線のふちを辿って進める。
メリットはカーブがそこそこスムーズ。
デメリットは、直線でスピードが出ないこと、
十字路で、直進が最短ルートのとき、遅いルートを辿ってしまう。
時計回りか反時計回りか、どちらか一方しか進み方がない。
次に考えたのが、線の上を辿る方法その1。
黒の上にいる間直進し、白に乗ったら、
右30度、左60度、右に90度と言った具合で旋回し、
前方にある黒を探し、黒に乗ったらまた直進する。
メリットは直線が速いこと。
デメリットは、行き止まりに行ったとき、逆を向くのに時間がかかる。
十字路ではほぼ直進しか出来ない。
カーブであまりスピードが出ない。
で、今作ってたのが、線を辿る方法その2。
フラグを使い、右曲がり前進・左曲がり前進を交互に行う。
右曲がり前進中にコースから外れたら、左に旋回してコースに戻り、
次は左曲がり前進を行う。コースアウトしたら右旋回し、
コースに戻ったら右曲がり前進。これを繰り替えす。
メリットは、直線もカーブもそこそこ早い。
デメリットは、丁字路や十字路ではどこに行くか運次第。
急カーブ・直角カーブなどでは、目的と逆方向に旋回する事がある。
と言った感じで、今一番実用的なのが、2番目のやつ。
明日は旋回や、曲がり前進の半径を求めたり、
直進のスピードや時間、
曲がり前進の直進時のコースアウトまでの時間
なんかをテストして出して、
それに合わせて細かい調整の出来るようにしようと思う。
とりあえず、木曜までに作って、
金曜に5グループで競争とプレゼンして、
一番速いチームと、プレゼンの良いチームに賞金が出るらしいので頑張ります。
ロボットと言っても市販されているかたつむり型のロボットで、
ツクモとかで簡単に手に入る。
で、ライントレースって言っても、
センサが一つしかなくて、しかも、明るさで白黒を判断してるので、
線から外れたときの状態とかはまったく得られず、
それで効率よく走らせるって考えると結構難しい。
最初に考えたのが、線のふち(外側)を辿る方法。
白いところにいるとき、前進しながら黒に近づき、
黒に乗ったら、その場で白から離れるように旋回。
それを繰り返せば、線のふちを辿って進める。
メリットはカーブがそこそこスムーズ。
デメリットは、直線でスピードが出ないこと、
十字路で、直進が最短ルートのとき、遅いルートを辿ってしまう。
時計回りか反時計回りか、どちらか一方しか進み方がない。
次に考えたのが、線の上を辿る方法その1。
黒の上にいる間直進し、白に乗ったら、
右30度、左60度、右に90度と言った具合で旋回し、
前方にある黒を探し、黒に乗ったらまた直進する。
メリットは直線が速いこと。
デメリットは、行き止まりに行ったとき、逆を向くのに時間がかかる。
十字路ではほぼ直進しか出来ない。
カーブであまりスピードが出ない。
で、今作ってたのが、線を辿る方法その2。
フラグを使い、右曲がり前進・左曲がり前進を交互に行う。
右曲がり前進中にコースから外れたら、左に旋回してコースに戻り、
次は左曲がり前進を行う。コースアウトしたら右旋回し、
コースに戻ったら右曲がり前進。これを繰り替えす。
メリットは、直線もカーブもそこそこ早い。
デメリットは、丁字路や十字路ではどこに行くか運次第。
急カーブ・直角カーブなどでは、目的と逆方向に旋回する事がある。
と言った感じで、今一番実用的なのが、2番目のやつ。
明日は旋回や、曲がり前進の半径を求めたり、
直進のスピードや時間、
曲がり前進の直進時のコースアウトまでの時間
なんかをテストして出して、
それに合わせて細かい調整の出来るようにしようと思う。
とりあえず、木曜までに作って、
金曜に5グループで競争とプレゼンして、
一番速いチームと、プレゼンの良いチームに賞金が出るらしいので頑張ります。