自動運転のプログラミング

自分で作った道を、自分のプログラムで。みんなの道をみんなで走る。

CATZでは、ブラウザ内の教習所で運転の命令を書いて車を動かし、自分でコースを作ってみんなで試し、コードで車を走らせることができます。

CATZは、お子さまが直接申し込むスクールではなく、プログラミング教室や塾が授業で使う学習環境です。車はシミュレータの中にあり、生徒が書いた命令で動きます。

ブラウザの3D教習所で、まず命令を書いて車を動かします

最初の教材はドライブ教習所です。1面クリアすると、次の1面が開きます。

面が進むと、もし〜なら、で書いたり。ここが自動運転の入り口です。ブロックで書いたものは、同じ画面でPythonとしても見られます。

ドライブ教習所の画面。左にアクセル・ブレーキ・もし〜のブロック、右に3Dの道路と「とまれ」の円、下に速度とのこりの計器
ドライブ教習所(面5「近くなったら止まろう」)。ブロックで命令を書き、右の3Dで車が動く
  • ブラウザで完結。インストールはいらない
  • アクセル → ハンドル → ブレーキ → のこりを見て止まる、の順に1面ずつ
  • ブロックで書いて、Pythonでも見られる

コースメーカーで、道を作って、その場で走って確かめます

直線とカーブをつないで、自分の道を作ります。俯瞰で形を見て、「走って見る」に切り替えると、その道を車が走る様子を3Dで眺められます。速さは変えられます。

「自分の制御器で走らせる」に切り替えると、教習所と同じブロックやPythonの制御器で、いま作った道を車が走ります。道から外れたら、同じ画面で命令を直して、もう一度走らせます。

作った道はCATZに下書きとして残るので、次の授業で続きから直せます。

コースメーカーの画面。左に直線・カーブの部品ボタンと押した順、右にSTARTからGOALまでの道の形
コースメーカー(俯瞰)。部品を押した順に道がつながる
同じ道を3Dで走って見ている画面。カーブを曲がる赤い車と、右上に道全体のミニマップ
同じ道を「走って見る」。右上は道全体
  • 部品は直線とカーブ。つなぐと道になる
  • 同じ画面で、俯瞰・走行・自分の制御器での走行を切り替える
  • 外れたら、命令を直してもう一度
  • 下書きはCATZに残る

Pythonでは、車の位置やずれを見ながら、ハンドルやアクセルを調整します

自動運転のコードは、車に付いたセンサーの値を見て命令を切り替える、もし〜なら、の集まりです。前に障害物があればブレーキ、信号が赤なら止まる、道の真ん中からずれたら逆へ切る。CATZでは car.throttle、car.brake、car.steer のような短い命令と、距離やずれを読む関数で書きます。「どのくらい近づいたら」「どのくらい戻すか」の数字は、生徒が自分で決めます。

学ぶ順番は、のこりを見る → ずれを見る → 強さを変える → 上限をつける → 少しずつ変える → 先を見る。専門用語を先に覚えるのではなく、困ったところで命令とセンサーが増えていきます。

car.throttle(0.6)

if car.speed > 50:
    car.brake(1.0)

if distance_to_obstacle("front") < 10:
    car.brake(1.0)

if traffic_light_is_red():
    car.brake(1.0)
CATZのPython画面。if文で速さや前方の障害物を見て、ブレーキやハンドルの命令を書いている。右にカーブを走る車の3D
Pythonで書いた命令と、走っている車
  • 命令: car.throttle / car.brake / car.steer
  • 見るもの: 速さ、障害物までの距離、信号、道の真ん中からのずれ
  • しきい値の数字は生徒が決める。模範コードは持たない

CATZで、今できる自動運転

  1. 車速を見る
  2. 車線のずれを見る
  3. 障害物との距離を見る
  4. 信号を見る
  5. 条件を判断する
  6. ハンドル・アクセル・ブレーキを変える

ブラウザの3D教習所

  • アクセル・ブレーキ・ハンドルを、プログラムから動かす
  • 車速と、ゴールまでの距離を読む
  • 車線からのずれを見て、ハンドルの強さを変える
  • ハンドルに上限をつける、少しずつ変える、少し先を見る
  • 条件分岐を組み合わせて、自分の走行ルールを書く
  • コースメーカーで作った自分の道を、同じ制御器で走らせる

教室PCのCARLA

  • 3Dの街の中で、車をPython/ブロックから動かす
  • 信号、前方の障害物までの距離を読んで、判断に使う
  • 進む・止まる・曲がる・避けるを、自分のプログラムで組み立てる
  • 実車ではなく、自動運転シミュレータの上で試す

CATZは、実車を自動運転するシステムではありません。公道での自動運転レベルを取得・認定する教材でもありません。

ブラウザやCARLAのシミュレーションの上で、自動運転の「見る・判断する・動かす」をプログラムします。

教室のPCでは、CARLAを使った自動運転にも進めます

CARLAは、オープンソースの自動運転シミュレータです。教室のPCにCARLAとCATZのエージェントを入れると、CATZで書いたPython(またはブロック)で、3Dの街の中の車を動かせます。信号、前の車との距離、障害物までの距離を読みながら、止まる・曲がる・避けるを自分の命令で書きます。

CARLAはブラウザでは動きません。教室のPCに入れて使います。判定は走った結果で行い、模範コードや正解の数値は用意していません。

CARLAの3Dの街。信号のある交差点に青い車が止まっている
CARLAの街。教室のPCで、自分の車がここを走る
  • CARLA: オープンソースの自動運転シミュレータ。教室のPCで動く
  • CATZで書いたPython / ブロックで、3Dの街の車を動かす
  • 判定は走った結果。模範コード・正解の数値は持たない

教室で、こう使います

教習所はブラウザで完結するので、授業のはじめの短い時間の日課にも置けます。コースメーカーの下書きは、生徒ごとにCATZに残ります。CARLAは教室のPCに入れて使い、Pythonで書いた命令を実行すると、そのPCの3Dの街で自分の車が動きます。

どの段階でも、判定は車がどう走ったかで行います。模範コードや正解の数値は用意していません。どの数字で止まるか、どれだけ戻すかは、その子が決めます。

  • 教習所: ブラウザで完結。日課に置ける
  • コースメーカー: 下書きが生徒ごとに残る
  • CARLA: 教室のPCに入れて使う

教室で使う学習環境です

CATZは、プログラミング教室・塾が授業で使うために作られています。ご家庭から直接お申し込みいただく形ではありません。教室への導入をお考えの方は、教室向けのページから、いまの教室に合う使い方をご確認ください。