AutonomousVehicleControlBeginnersGuide
Python sample codes and documents about Autonomous vehicle control algorithm. This project can be used as a technical guide book to study the algorithms and the software architectures for beginners.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗子どものプログラミング学習用。Python のコードから 2D の工場(Factorio 風)を組み立て、実行するとロボットが機械を順に動かして、for・if・配列などの動きを見せる。
index.html(ブラウザで直接開ける単一ファイル。外部依存は Google Fonts のみ)細胞の中で働くオブジェクトを子ども向けに可視化する。細胞全体を1つの巨大な2D工場として描き、あちこちの部品が同時に動いている様子を見せる(ふつうの動物細胞、コード工場と同じ単一 HTML + Canvas 2D)。
cell.html(遊べるページ: https://milestone-corp.github.io/code-factory/cell.html )life.html(遊べるページ: https://milestone-corp.github.io/code-factory/life.html )。人生シミュレーター「80億分の1」のように、体の約36兆個の細胞のどれか1つとして、実際の数の割合でランダムに生まれ、その細胞の一生(生まれ方・仕事・起こる出来事・終わり方)を見るコードと工場部品の対応:
| コード | 工場での見た目 |
|---|---|
x = 5 | 青い「しまう機」。計算した答えが黄色い品物になって、倉庫の「x」の木箱へ運ばれる(古い中身は捨てられる) |
nums = [3, 8, 1] | 倉庫に番号つきの棚(配列) |
変数を読む(total + n など) | 箱の中身のコピーが品物として機械まで飛んでくる |
for / while | オレンジの「くりかえしエリア」。for は棚のマスから品物を1つ取り出してループ変数の箱へ入れる。戻り口のベルトで門へ戻る |
if / elif / else | 紫の六角形「分かれ道」。「はい」「いいえ」のベルトに分かれる |
print | 緑の「出荷機」。木箱が倉庫の下の出荷口へ運ばれ、右の一覧に並ぶ |
append | 棚の最後に値をつめる |
仕組み: 自作の小さな Python サブセット解釈器(字句解析 → 構文解析 → レイアウト → 1ステップずつ出来事を出すジェネレータ → Canvas でアニメーション)。出来事には「倉庫から読んだ値(reads)」と「倉庫へしまう値(writes)」が付き、倉庫の絵は品物が箱に届いた瞬間に更新する(実行中の変数とは別に表示用のモデルを持つ)。倉庫は工場キャンバスの右側に、スクロールしても見える位置で描く。
「注文 → 工場づくり → 検品」で遊ぶ。ヘッダーの「ステージ / 自由工場」で切りかえる(自由工場は従来のお手本つきの遊び場)。
print しただけの工場は2日目以降で不合格になるref を起動時に実際に動かし、注文(期待出力)・機械の数・歩数を求める。ステージを足すときは days(3日分の入荷)と ref を書くだけでよい| ワールド | 内容 | ステージ |
|---|---|---|
| 1. はじめての工場 | 変数・print | 1-1〜1-4、1-5 予想クイズ |
| 2. くりかえし工場 | for・range | 2-1〜2-5、2-6 予想クイズ |
| 3. 分かれ道工場 | if / else / elif | 3-1〜3-5、3-6 予想クイズ |
目標は「どんなコードでも」ではなく、入門〜中級の Python(関数・辞書・break まで)を専用部品でわかりやすく、それ以外は汎用の箱で止まらずに表示する。
自作解釈器のままだと本物の Python と細部がずれるため、次の構成に変える。
ast モジュールで構造を分解し、工場の配置に変換するsys.settrace などで「何行目を実行した」「変数がどう変わった」を記録し、ロボットの動きに変換する| 種類 | 見せ方の案 | 難しさ |
|---|---|---|
break / continue | くりかえしエリアからの近道ベルト | 易しい |
| 辞書(dict) | ラベルつきの引き出し棚 | 易しい |
input() | 受付窓口で入力を待つ | 易しい |
関数(def) | 別の部屋の「サブ工場」。呼び出しでロボットが出張する | 中くらい |
| 内包表記 | 1台に詰めた小型工場。中を開いて見られる | 中くらい |
例外(try / except) | 非常ベルトで救護室へ | 中くらい |
| 再帰 | 同じサブ工場が何重にも重なる | 難しい |
| クラス・オブジェクト | 設計図から製品を作る組立ライン | 難しい |
ライブラリ(random、math など) | 中を見せない「外注工場」 | 見せ方は簡単 |
a = b で同じ配列を2つの名前が指すと説明できない。倉庫の品物に名札をぶら下げる方式に変える必要がある