課題2で作成したコースを用いてタイムレースを行う。ルール等詳しい内容は課題3へ。†マイコンは1つ使用した。目や口が備わっていてかわいい。底面は前回同様小回りが利くようになっており、ライントレースがしやすい。†ライントレース用の底面の光センサーのほかにアームの先に光センサーを取り付けることによって、紙コップを認識できるようにした。今回のロボットは2本のアームがついており、これで紙コップを取り、ホールドすることができる。今回のプログラムは同じ班の黒河内君がほとんどを作成した。黒部分がCROSS_TIMEより続いたら交差点として判別する。境界部分がBALANCE_TIMEより続いたら機体がまっすぐとして判別する。下3つは交差点認識後の動作である。光センサーが黒部分の判定をしている時にカウントをして、0.4秒以上続いたら交差点として判別する。黒部分以外の時はClearTimer(0)でFastTimer(0)を初期化する。ここで、指定秒数を変数としてl_timeをグローバル変数として定義する。ライントレース開始時にClearTimer(1)でFastTimer(1)を初期化する。今回はラインの左側をトレースした。}黒線上にいる時間をタイマーで計測し、一定時間(CROSS_TIME)を過ぎたら交差点と認識するようにした。急なカーブで誤認識しないようにもう1つタイマーを使い、指定秒数をカウントしなければ交差点と判別しないようにした。下図のようにアームを上げ下ろしすることで、紙コップを持ち上げひっくり返しながら積み上げられる。紙コップを取得する一連の動作のプログラムはこのようになっている。光センサーが境界部分の判定をしている時にカウントをして、タイマーがBALANCE_TIME以上になったら機体の姿勢をまっすぐとして判別する。境界部分以外の時はClearTimer(0)でFastTimer(0)を初期化する。ライントレースをする時間を指定しなければ、姿勢がまっすぐにならない場合ライントレースをし続けてしまい、C,D地点に置いてある紙コップをとることが出来なくなってしまうので追加した。姿勢制御プログラム開始時にClearTimer(1)でFastTimer(1)を初期化する。姿勢制御のプログラムは交差点判別プログラムを応用しているが、黒部分の判定ではなく境界部分の判定をしている。}境界部分が長く続いた時に機体がまっすぐであると判別するようにした。タイマーがBALANCE_TIME(0.4秒)より長い時間が経過した時に機体がまっすぐであると判別する。機体が一定時間(2秒)経過してもまっすぐにならない場合、一度後退してから姿勢制御プログラムを再開する。†C地点の紙コップを取得後、左回転し右境界部分で姿勢制御を開始する。†D地点の紙コップを取得後、後退をし交差点を超えてから左回転し右境界部分で姿勢制御を開始する。右回転ではなく左回転をする理由は、左側にはアームだけしかストッパーがなく紙コップが転倒する可能性が上がるたので、左回転にした。//停止}光センサーで判別して回転するので、電池の消費による回転不足をなくすことができた。†1回目アーム先の光センサーの不具合によってうまく作動せずに紙コップを運べず、0点。2回目4つの紙コップを積んで運ぶことができ、30点を獲得。技術点は1回目の評価が採用されるので、5.2点とあまり高くなかった。今回の課題は今までと違って6人で作業をするので、短い時間でどれだけ進めることができるか、内容の濃いことができるか、ということが重要だったように思う。はじめは2つのロボットを通信させる予定だったのが急きょ1つに変更になったり、動作の安定性に問題があったりといくつかアクシデントがあったが、それらを乗り越えて優勝を獲得できてよかった。私はあまり優勝に貢献できていなかったが、チームで作り上げたものが良い結果を取るというのはやはりうれしい。私は機械・ロボット学科なので、今後このように何人かでものを作り上げるという機会があるかもしれない。そのときはこの授業で培った、話し合いアイディアを練り上げてよいものを作る、という力を生かしたい。