An action-first bilingual course for readers who know basic Python and are new to robotics. Start with one lesson, inspect the actual state and images, explain the result, compare one variable, then finish it. English · 한국어
For command explanations, fresh terminals, saved-result replay and feedback, use the English reader guide or 한국어 실행 안내. The redesign verification record separates local evidence from pending host checks.
During guided learning, Codex and Claude Code open the current GitHub lesson in your language and reuse that tutorial tab as you advance. Keep the conversation/terminal beside the theory page; simulation replay uses a separate viewer. Without browser control, the agent provides the exact link for manual opening. Start with 한국어 T00 or English T00.
The first lesson uses your conversation language. Each curriculum page has a top-right 한국어 | ENGLISH link to the same page in the other language. After you switch, both native Next lesson links and agent-guided continuation preserve that selection. The agent checks the current tutorial tab before navigating and remembers the last observed language for reopening.
git clone https://github.com/terryum/tutorial-robotics.git
cd tutorial-robotics
sh bootstrap.sh --planThe plan checks OS, architecture, Python, uv and free disk without creating learner state. It prints exactly what would be installed, why, where and which commands would run. Supported Core hosts are macOS arm64 and Linux x86_64.
After reading that plan:
sh bootstrap.sh --apply
source .venv/bin/activate
pal host detect --json
pal setup verify --profile core --json
pal course init --through core --json
pal course next --json
pal lesson run T00 --headless --output-dir .local/runs/core-00/first --json
pal lesson check T00 --run-dir .local/runs/core-00/first --jsonRead T00 or 한국어 T00 for the explanation, source inspection, review and finish steps. Stop after T00. An execution does not complete a lesson. course init preserves earlier completion records; use a fresh run directory for reruns.
Bootstrap reuses the Python 3.12 environment and existing lockfile. If needed, uv is installed into this checkout's .local/bin and managed Python into .local/python. It does not change system Python. ROS, GPU, learning frameworks, Isaac and large pretrained models are prepared only when their lesson needs them. System packages, drivers, firmware and physical actions retain separate approval requirements.
| Intent | 한국어 | English |
|---|---|---|
| First start | 처음 시작할게. bootstrap 계획을 보여주고 필요한 Core 환경을 준비한 뒤 T00 하나를 실행·검사·설명해줘. | Show the bootstrap plan, prepare the necessary Core environment, then run, inspect and explain only T00. |
| Next lesson | 다음 단계 실행해줘. | Run the next eligible lesson only. |
| Rerun | 다시 실행해줘. | Rerun the current lesson with a fresh execution record. |
| Feedback | [개선점] 여기에 개선할 내용을 적습니다. | [개선점] Describe the improvement here. |
“[개선점] 지금 바로 고쳐줘 …” stores urgent feedback, safely interrupts the software experiment, fixes/reverifies it and resumes the same lesson. Other feedback accumulates and is applied automatically after execution/explanation. Feedback received before starting another lesson belongs to the previous lesson.
Codex and Claude Code follow the same workflow. Both read the same local feedback queue. You can inspect it directly:
pal feedback list --json
pal feedback add "[개선점] Explain the plot units" --lesson T00 --jsonEach clone starts with no completed lessons. Your completed lessons and completion
times are saved in .local/progress.json, your last lesson and phase in
.local/session.json, and your feedback in .local/feedback.json. Execution and
review evidence stays in .local/runs/. Git ignores .local/; ordinary commits,
pushes and pulls do not share or overwrite this state.
Return to the same checkout, activate .venv, and run:
pal course list --json # All selected lessons, including completed ones
pal course status --json # Remaining lessons and any needing review
pal course next --json # Next eligible lessonpal course init preserves completion records. A lesson becomes complete only
after the run/check/review/finish workflow succeeds. Keep .local/ and its run
artifacts to resume later; a fresh clone has its own progress. See the
English reader guide or
한국어 실행 안내.
The catalog retains 49 IDs and legacy aliases: 25 Core lessons, 15 Simulation lessons, one offline runtime lesson and eight device lessons. Real MuJoCo models, measured contact/control, NumPy PPO and BC replace the earlier generic numerical fixtures. ACT and the VLA mock remain explicitly contract lessons.
Mac verification covers Core plus the generated deployment candidate and offline sink. The other 14 software lessons require actual Ubuntu/ROS/GPU/Isaac environments and remain reader_test_required until run there. The eight device lessons remain scaffolded; no simulation result authorizes physical motion. See WS1 preparation and verification.
Read the measured verification report and reviewed figures for exact results, source revision and remaining external checks.
lesson check --run-dir verifies artifact identity/hashes, finite numerical traces and nonblank required images. lesson review records a separate one-variable comparison and explanation. lesson finish rechecks readiness, evidence and unresolved feedback before recording completion. Short training verification never claims a solved policy.
All learner progress, feedback, datasets, checkpoints and private run details stay in ignored .local/. state/PUBLISHING.md holds only shared publication evidence. A separate PAL_LOCAL_DIR keeps developer verification independent of the user's learning state.
uv sync --locked --python 3.12
source .venv/bin/activate
pytest
ruff check .
mypy src
python scripts/validate_repository.py
python scripts/validate_release.py
python scripts/verify_course.py --profile core --local-dir .local/development/courseFetch the public model bundles listed in T02 before full Core integration. Unit tests check state preservation, corrupt evidence rejection and unavailable capabilities; integration commands exercise real models and policies. Missing capabilities never become completed lessons.
The metadata generator preserves authored lesson bodies, entrypoints and tests. Refresh with python scripts/generate_curriculum.py. The course is Apache-2.0; public vendor assets retain their individual licenses and exact file hashes in assets/model-lock.json. Never edit vendor checkouts.