ml.run_forever(speed_sp=l,stop_action='brake')#lの速度で左車輪を動かす。mr.run_forever(speed_sp=r,stop_action='brake')#rの速度で右車輪を動かす。以上4つのライントレースのプログラムに加え、今回は変数の値(秒数)経過したら、ライントレースを終わるプログラムを作った。#左車輪をlの速度で回す。#右車輪をrの速度で回す。#j秒後にライントレースを停止。缶の場所を探査したい場所に到着した時に使用する。任意の変数だけ回転し、超音波センサが最も近い物体を検知した時に回転し始めてからどれほどの角度を回ったかジャイロセンサで把握しておき、変数分回転したあとに最も近い物体の方向を先程とは逆回りで回転しながら向く。その後、缶に向かって前進する。課題の特性上、缶の配置によって前進する距離が異なるので、缶に超音波センサがぶつかる(センサの値が2550になる)まで前進を続ける。缶にぶつかったら車体は止まり、ベルトコンベアを回転させ、ボールを落下させる。缶まで進んだ分後退し、探査開始時に戻るまで車体角度を調節する。この定義は左回りの探査と右回りの探査の二種類がある。stop()discoverは以下の画像のような動きをする。†まずはスタートからGに行き、赤ボールを拾う。次に、青ボールを拾う。#ボールを掬うその後、Eまで到達する。linetrace_lin()E到達後、ボールを載せに向かう。ここではinputを使用し、サイコロを振って出た目の番号(rとする)を入力することでそれに対応した動きをする。#交差点Eの黒線を越えてマップ視点で左向きに車体を向かせる以上の4パターンの動きはいづれも同じ場所(マップ視点で黒線EIの下部)で終了する。ここから青の缶を探査する場所Kまで移動する。#ライントレースでKまで到達この後に青のボールを放つ。ここでは、赤の缶の時のように場合分けをしてダミーかどうかを判別することが困難であったので、ダミー缶の想定はせずに、単純に最も近い缶にボールを載せるプログラムを作った。#60度左向きになり、探査準備をする。以上のプログラムをまとめたプログラムを定義してある。説明してあるので改めて説明するのは割愛する。numberaと表示され、赤ボールを載せる缶がある位置の番号を入力すると、任意の缶に載せる。今回の課題の目的の一つとしてダミー缶が判別できるかどうかが重要であった。サイコロの出目に応じてinputでロボットの動きを選択するのは正直かなりグレーであったが、一応start()という一つのプログラムで稼働させたのでギリギリセーフであると主張したい。†ロボコンの結果は優勝だった。いえ、正しい缶にボールを設置することができなかった。本番以外では3~4割で高いとは言えないが、成功する可能性も十分にあっただけにこの結果が悔やまれる。課題3では、課題1や2に比べて成功率が不安定だった。問題の要因はジャイロセンサであった。EV3を起動させた後にジャイロセンサが正常に作動しているかばらつきがある。正常な作動ができないと、今回の重要なプログラムであるkaitenが使えなくなる等、課題の達成を困難にさせる。EV3の調子に左右されることのない制御をするつもりだったが、ジャイロセンサを始めて使ったこともあり、ジャイロセンサの脆弱性に気付くことができなかった。ジャイロセンサの性能は我々にはどうしようもないので仕方がないにしても、結果的に低い成功率だったので残念だった。ジャイロセンサよりもEV3の調子に左右されないプログラムを作ることが成功率を上げるためには必要だったと思う。ロボット本体について。ライントレースとコンベアにモータを3つとセンサを3つだけ使用した。他の班に比べてモータやセンサの数が少なく、EV3に大きな負担をかけずに済んだ。ロボット自体は縦方向に大きくなったものの、どの動きも円滑にできていたおり課題達成に十分であったので良かった。今回は通信を行っていない。本来ならば通信を行うべきだったが、mosquittoの扱いが上手くいかずに断念した。いえ一つのEV3で十分に課題完全達成の兆しは見えていたので結果的に通信ができなかったことによる損害は少ないように思う。受講前、私は機械・ロボット学科でありながら、ロボットに関する知識が非常に乏しかった。この授業を通してロボットの製作や制御を学び、実践して自分の糧とすることが出来て良かった。大変だったのは制御の不安定性であった。同じプログラムで動かしても毎回結果が異なり、如何に安定した動きをさせるかに集中してプログラムを組んだ。そのためにはロボットの形も重要であった。動作の確実性を高くするための設計を心掛けた。プログラムかロボット製作のどちらが大変だったかと言えばプログラムだが、両者の関係は相補的であると痛感した。ロボットを疎かにしてはプログラムで苦労し、ロボットをできるだけ満足のいく出来にすればプログラミングの負担が減る。一回目の課題では顕著にこの関係性が表れた。プリンター型のロボットを作っていた周りの班は安定して成功していたが、車型で文字を書いた私の班は制御に手間取った。それをきっかけに課題2以降はロボットの設計にこだわるようになり、それが安定したプログラムの実行に繋がり、発表日に間に合わせることができていたので良かった。長く書いたが、結論として言いたいのは当たり前かもしれないが、ロボットもプログラムも両方手を抜かないことが成功の近道だった。学科のカリキュラム上、これからもロボットとは必ず関わるが、この講義で学んだことを存分に活かしたいと思う。