UnityとPythonによる自動運転のシミュレーション

自動運転 プログラミング学習

未来学校の研究科では、機械学習の基礎勉強が終わったら、自由に好きな内容を学ぶことができます。今回1人の生徒の成果を紹介したいと思います。現在中学3年生の女の子ですが、今年機械学習の基礎課題をすべて終え、面談した「何を作りたいですか」と聞きましたら、「自動運転」に興味があり、勉強したいとおっしゃいました。また中学生である生徒は、高校数学の知識を持っていないので、機械学習の中身を追求するより、機械学習を活用することを決めました。できるところまで一緒に考えて作っていくることにしました。

ステップとしては、
1.ネットから必要な情報を収集する
2.使えるかどうかを試す
3.実際にプログラムを組んで見る

ステップ2は開発にとって最も重要な段階です。ネットからいろんな道路の写真をダウンロードして、認識させてみました。自ら道路の写真をとって認識してみました。なかなか識別がうまく行かないことが多いです。試行錯誤に半年間もかかりました。その間、私は、これからの開発は、生徒の家でもすすめることができないか、ずっと考えました。本来Raspberry Piでロボットカーを作って、試したいと考えましたが、家ではテストできません。そして、思いついたのがUnityです。Unityに車と道路を作って、そのUnityの中の車を生徒のプログラム(Python)でコントロールできれば、家でも実物のロボッカーがなくても開発ができます。アルバイトの先生にお願いして、Unity部分を制作してもらいました。

そして、次の難関は、PythonとUnityの通信部分となります。私自身も初めての制作なので、8月教室夏休みなので、1ヶ月をかけて通信部分の制作をなんとかクリアできました。これで、生徒に教えることができました。もちろん、そのまま教えるのではなく、私と同じように、ネットから情報を収集し、繰り返してテストを行い、送信と受信のプログラムを少しずつ生徒自分で完成してもらいます。わからないところもありましたが、私はサポート役を徹して、アドバイス、ヒントだけ教えることにしました。

そして、先日、ついに、授業のとき、その生徒が「先生、できましたよ」と嬉しそうな顔で教えてくれました。すごい!早速みせてもらいました。Unityの中に、「自動運転」が本当に実現できました。仕組みは、Unity側は車のブロックにカメラをセットし、道路の写真を撮ります。撮った写真をPythonに送り、Pythonで写真を分析、道路を識別し、左曲がるか、右曲がるか、直進するか、を決め、再びUnityに信号を送ります。UnityはPythonから送ってきた信号を読み取り、車のブロックを回転または前進を行います。動画はこれです。

生徒の努力を本当に「感動」しました。その時、生徒と一緒に喜んでいました。しかし、まだまだ終わってはいないので、まだ道路の形を変え、いろんな道路に対応できるようにしてもらいます。またRaspberry Piのロボットカーにも実装してもらいたいです。生徒は、信号機を設置したいと言い出しましたので、よし、次は信号機の巻です。

毎日頑張っている生徒に「お疲れさまです。応援しています。」と伝えたいです。未来学校の生徒は本当にすごいです。