Real robot · SO-101 · sổ tay lý thuyết

Lý thuyết

Note “sống”
0/5
đã tự viết TL;DR
Câu hỏi checkpoint
19
để ôn không nhìn tài liệu

§L1 Ghi chú học theo chủ đề mục toan-ly-thuyet v2.1 · tuần học · tài liệu trích dẫn · bấm để mở

Nhóm 1 — Toán & lý thuyết để BUILD

1.1 exp/log trên SO(3) — toán được dùng nhiều nhất dự án~5hT4keyword 7TL;DR ✗bẫy 0artifact 0/2

Công thức clutch ở thiết kế §3.2 đã dùng E_rot = E0_rot · exp(s_r · log(P0_rot⁻¹ · P_rot)) — phải hiểu exp/log map mới debug được bug hướng (loại bug kinh điển nhất của teleop).

Keywordrotation vector φ = θ·ûexp/log mapRodriguesdouble cover (q ≡ −q)delta local vs globalclutch delta-poseSE(3) tách s_p/s_r (mục 1.4)
rotation vector φ = θ·û
mọi rotation nén được thành vector 3 số (trục đơn vị × góc); log: R → φ, exp: φ → R
exp/log map
cặp công cụ trung tâm: mọi thao tác scale/trộn/lọc rotation đều làm trên φ rồi exp về; "xoay một nửa" = exp(0.5·log R), KHÔNG phải nhân 0.5 vào quaternion
Rodrigues
công thức tính exp: exp([φ]ₓ) = I + sinθ·[û]ₓ + (1−cosθ)·[û]ₓ²; chiều ngược θ = arccos((tr R − 1)/2)
double cover (q ≡ −q)
2 quaternion đối dấu là cùng 1 rotation; trước log/slerp phải lật dấu khi dot(q₀,q₁)<0, không thì đi "đường vòng" θ>π — arm quật ngược
delta local vs global
R₀·exp(δ) áp δ trong hệ local của R₀; exp(δ)·R₀ trong hệ global; nguồn bug "xoay đúng góc, sai hướng"
clutch delta-pose
E = E₀·exp(s_r·log(P₀⁻¹P)): EE ăn theo delta phone từ lúc engage (dạng delta-local), drift reset mỗi lần engage
SE(3) tách s_p/s_r (mục 1.4)
full pose tách vị trí (cộng vector, scale s_p) và quay (exp/log, scale s_r); không dùng screw chung vì hai thành phần cần scale khác nhau
Lịch: 8/2026 (M3–M4) · tuần: T4 · 03–09/08
Câu hỏi checkpoint (5) — tự trả lời trước khi mở tài liệu
  1. Vì sao "xoay một nửa" không phải là nhân 0.5 vào các thành phần quaternion?
  2. R0·exp(δ) khác exp(δ)·R0 chỗ nào? Clutch dùng dạng nào, vì sao?
  3. Vì sao phải lật dấu một quaternion khi dot(q0, q1) < 0?
  4. Vì sao drift ARCore không tích lũy qua các phiên clutch?
  5. (mục 1.4 — SE(3), chung nhà file này) Vì sao clutch scale vị trí (s_p) và quay (s_r) tách riêng thay vì screw/twist interpolation chung trên SE(3)?
Artifact — 0/2 tick
  • tests/test_retarget.py pass: P=P0 → E=E0 · xoay 30° một trục → EE xoay s·30° cùng trục · drift reset khi re-engage
  • (mục 1.4) case full pose: invariance với transform tuyệt đối ngẫu nhiên + case s_p ≠ s_r

Dashboard chỉ hiển thị, không bấm tick được. Tick = sửa 3-nghien-cuu/ghi-chu-hoc/so3-exp-log.md rồi build lại; tick việc tuần trong 2-van-hanh/checklist-tuan.md.

Phần tự viết — TL;DR & bẫy đã gặp

TL;DR bằng lời mình

(chưa viết — tự viết sau khi học, ≤5 dòng)

Bẫy đã gặp thật

(chưa có — điền khi debug gặp thật)

✎ Thêm kiến thức: mở 3-nghien-cuu/ghi-chu-hoc/so3-exp-log.md — thêm dòng vào "Keyword cần nắm" (hoặc giải thích lại bằng lời mình), viết "TL;DR", "Bẫy đã gặp thật"; xong chạy lại build là card này cập nhật.
1.2 SVD để hiểu DLS-IK và kỳ dị~4hT5T6keyword 7TL;DR ✗bẫy 0artifact 0/1

Vì sao damping λ cứu kỳ dị, manipulability là gì — không hiểu thì lúc arm rung gần vùng duỗi thẳng chỉ biết chỉnh λ mò.

KeywordJacobian J(θ)SVD J = UΣVᵀkỳ dị / manipulability ellipsoidpseudoinverse J⁺DLS (damped least squares)condition number κ = σmax/σminSO-101 5-DOF
Jacobian J(θ)
map vận tốc khớp → vận tốc EE: ẋ = J·θ̇; IK vi phân = giải ngược phương trình này mỗi tick 50Hz
SVD J = UΣVᵀ
đọc bằng hình: quả cầu vận tốc khớp bị J biến thành ellipsoid vận tốc EE; σᵢ là "gain" theo từng hướng chính
kỳ dị / manipulability ellipsoid
σ_min → 0: ellipsoid xẹp, có hướng task-space phải "mua" bằng vận tốc khớp khổng lồ (vd arm duỗi thẳng hết)
pseudoinverse J⁺
θ̇ = Σ (uᵢᵀe)/σᵢ · vᵢ — nổ khi σᵢ → 0
DLS (damped least squares)
thay 1/σ bằng σ/(σ²+λ²): hàm bị chặn (max 1/(2λ)); λ = "ngưỡng không tin các hướng yếu"; tương đương Tikhonov ‖Jθ̇−e‖² + λ²‖θ̇‖²
condition number κ = σmax/σmin
health metric theo dõi live khi teleop (HUD)
SO-101 5-DOF
J pose 6-DoF là ma trận 6×5: một chiều quay không track được — arm đứng yên khi xoay quanh trục "thiếu" KHÔNG phải bug
Lịch: 8/2026 (M3–M4) · tuần: T5 · 10–16/08 T6 · 17–23/08
Câu hỏi checkpoint (3) — tự trả lời trước khi mở tài liệu
  1. Manipulability là gì, liên hệ với σ_min thế nào?
  2. Vì sao arm rung/giật gần tư thế duỗi thẳng, và λ cứu bằng cách nào (viết qua SVD)?
  3. Tăng λ thì được gì, mất gì?
Artifact — 0/1 tick
  • Notebook: singular values của Jacobian SO-101 dọc quỹ đạo giữa-workspace → duỗi thẳng (σ_min → 0); so nghiệm DLS vs pseudoinverse thuần đúng vùng đó

Dashboard chỉ hiển thị, không bấm tick được. Tick = sửa 3-nghien-cuu/ghi-chu-hoc/svd-dls-ik.md rồi build lại; tick việc tuần trong 2-van-hanh/checklist-tuan.md.

Phần tự viết — TL;DR & bẫy đã gặp

TL;DR bằng lời mình

(chưa viết — tự viết sau khi học, ≤5 dòng)

Bẫy đã gặp thật

(chưa có — điền khi debug gặp thật)

✎ Thêm kiến thức: mở 3-nghien-cuu/ghi-chu-hoc/svd-dls-ik.md — thêm dòng vào "Keyword cần nắm" (hoặc giải thích lại bằng lời mình), viết "TL;DR", "Bẫy đã gặp thật"; xong chạy lại build là card này cập nhật.
1.3 Lý thuyết lọc tín hiệu — chính là ablation của paper~3hT6T7keyword 7TL;DR ✗bẫy 0artifact 0/1

Cutoff frequency, phase lag, trade-off latency ↔ smoothness. Đủ để trả lời câu reviewer kinh điển "why not Kalman?" (One-Euro: không cần model động học, 2 tham số, latency thấp hơn ở tần số cao — và mình đo được).

Keywordtrade-off latency ↔ smoothnessEMA / low-pass bậc 1One-Euro = cutoff thích ứngphase lag có con sốdải tần tay ngườirecipe Casiez"why not Kalman"
trade-off latency ↔ smoothness
lọc mạnh → mượt nhưng trễ (arm đi sau tay); lọc nhẹ → bám nhanh nhưng rung; toàn bộ bài toán filter nằm ở đây
EMA / low-pass bậc 1
x̂ = α·x + (1−α)·x̂₋₁ với α tính từ cutoff fc và chu kỳ thật Tₑ giữa 2 gói
One-Euro = cutoff thích ứng
fc = fc_min + β·|v̂|: đứng yên → mượt tối đa; vung nhanh → lag co lại; chỉ 2 tham số mincutoff, beta
phase lag có con số
LPF bậc 1 trễ ~1/(2π·fc): fc = 1Hz ⇒ ~160ms — đo được, không phải cảm giác
dải tần tay người
run sinh lý ~4–12Hz, chuyển động chủ đích <2Hz → cutoff đặt vào khoảng trống giữa 2 dải (chọn từ FFT trace thật)
recipe Casiez
đặt β=0, tăng fc_min đến hết jitter lúc đứng yên → tăng β đến khi vung nhanh hết "bơi"
"why not Kalman"
KF chỉ tối ưu khi có motion model + covariance đúng (tay người thì không); One-Euro không model, lag đo được thấp hơn ở tốc độ cao
Lịch: 8/2026 (M3–M4) · tuần: T6 · 17–23/08 T7 · 24–30/08
Câu hỏi checkpoint (3) — tự trả lời trước khi mở tài liệu
  1. Phase lag là gì? Vì sao lọc mạnh thì trễ nhiều?
  2. mincutoffbeta mỗi cái điều khiển gì? Arm rung khi giữ yên tay thì chỉnh cái nào?
  3. Ba lý do (đo được) chọn One-Euro thay vì Kalman cho hệ này?
Artifact — 0/1 tick
  • latency_probe.py mở rộng: bơm sine giả lập tay rung, đo amplitude + lag theo (mincutoff, beta) → hình ablation filter

Dashboard chỉ hiển thị, không bấm tick được. Tick = sửa 3-nghien-cuu/ghi-chu-hoc/loc-tin-hieu-one-euro.md rồi build lại; tick việc tuần trong 2-van-hanh/checklist-tuan.md.

Phần tự viết — TL;DR & bẫy đã gặp

TL;DR bằng lời mình

(chưa viết — tự viết sau khi học, ≤5 dòng)

Bẫy đã gặp thật

(chưa có — điền khi debug gặp thật)

✎ Thêm kiến thức: mở 3-nghien-cuu/ghi-chu-hoc/loc-tin-hieu-one-euro.md — thêm dòng vào "Keyword cần nắm" (hoặc giải thích lại bằng lời mình), viết "TL;DR", "Bẫy đã gặp thật"; xong chạy lại build là card này cập nhật.
1.4 SE(3) — vì sao clutch tách vị trí/quay~2hT5T10ghi chú chung nhà 1.1

Clutch xử lý full pose, không chỉ rotation: vị trí scale bằng s_p (cộng vector thuần), quay scale bằng s_r (exp/log). Câu hỏi reviewer/advisor sẽ hỏi: vì sao không dùng twist/screw interpolation trên SE(3) cho cả cụm? Trả lời được (decoupled scaling cho phép s_p ≠ s_r — tay người cần scale…

Keywordfull pose (giải thích sẽ nằm trong note khi tạo)
Lịch: 8–9/2026 (bám M1–M4) · tuần: T5 · 10–16/08 T10 · 14–20/09
Tài liệu trích dẫn
  • Modern Robotics Ch.3.3
SE(3) tách s_p/s_r (mục 1.4)
full pose tách vị trí (cộng vector, scale s_p) và quay (exp/log, scale s_r); không dùng screw chung vì hai thành phần cần scale khác nhau
Câu hỏi checkpoint của mục này (trong note chung nhà)
  1. (mục 1.4 — SE(3), chung nhà file này) Vì sao clutch scale vị trí (s_p) và quay (s_r) tách riêng thay vì screw/twist interpolation chung trên SE(3)?

Toàn bộ note (artifact, TL;DR) nằm trong card 1.1 — ghi chú chung nhà.

✎ Thêm kiến thức mục 1.4: viết vào 3-nghien-cuu/ghi-chu-hoc/so3-exp-log.md, đánh dấu "(mục 1.4)" như các dòng có sẵn.
1.5 VIO/ARCore — nguồn tín hiệu của cả hệ~2hT7keyword 5TL;DR ✗bẫy 0artifact 0/2

Cả hệ đứng trên pose 6-DoF của ARCore mà chưa có dòng nào về nó hoạt động thế nào, sai kiểu gì. Cần cho 3 việc: debug M3 (tracking nhảy/lost khi vung nhanh, thiếu texture, mờ chuyển động); tham số drift thực cho simulation của mệnh đề 3.1 (giả định "drift trong 1 phiên clutch bị chặn" phải có…

KeywordVIO (visual-inertial odometry)scale tuyệt đốidrift tĩnh vs độngtracking lostsai số đóng vòng (loop closure error)
VIO (visual-inertial odometry)
camera track feature điểm + IMU đo gia tốc/quay, fusion ra pose 6-DoF; không có ground truth tuyệt đối → drift tích lũy
scale tuyệt đối
camera đơn không đo được depth; IMU cho gia tốc thật → VIO ra mét thật
drift tĩnh vs động
đứng yên: jitter nhỏ; di chuyển: sai số tích lũy theo quãng đường/thời gian; clutch chỉ chặn drift giữa các phiên, không chặn drift trong phiên
tracking lost
vung nhanh (motion blur), bề mặt trơn/ít texture, thiếu sáng — đúng các tình huống teleop dễ gặp → hệ phải auto-disengage
sai số đóng vòng (loop closure error)
đo drift thực: di chuyển vòng kín về đúng điểm xuất phát, đo độ lệch — số nuôi mệnh đề 3.1 + ngưỡng an toàn
Lịch: 8–9/2026 (bám M1–M4) · tuần: T7 · 24–30/08
Tài liệu trích dẫn
Câu hỏi checkpoint (4) — tự trả lời trước khi mở tài liệu
  1. VIO lấy đâu ra scale tuyệt đối (mét thật) trong khi camera đơn không đo được depth?
  2. Drift tĩnh (đứng yên) và drift động (di chuyển) khác nhau thế nào — cái nào clutch chặn được?
  3. Ba tình huống làm ARCore mất tracking khi teleop là gì, hệ phải phản ứng ra sao?
  4. Số drift đóng-vòng của phone mình là bao nhiêu — và nó đặt ngưỡng auto-disengage thế nào?
Artifact — 0/2 tick
  • scripts/drift_probe.py: (a) đứng yên 60s — jitter + drift tĩnh · (b) vòng kín về điểm đánh dấu — sai số đóng vòng · (c) vung nhanh — đếm tracking lost
  • Số đo ghi vào đây + dùng cho: ngưỡng auto-disengage M4 · tham số sim mệnh đề 3.1 · 1 câu characterization trong paper

Dashboard chỉ hiển thị, không bấm tick được. Tick = sửa 3-nghien-cuu/ghi-chu-hoc/vio-arcore-drift.md rồi build lại; tick việc tuần trong 2-van-hanh/checklist-tuan.md.

Phần tự viết — TL;DR & bẫy đã gặp

TL;DR bằng lời mình

(chưa viết — tự viết sau khi học, ≤5 dòng)

Bẫy đã gặp thật

(chưa có — điền khi debug gặp thật)

✎ Thêm kiến thức: mở 3-nghien-cuu/ghi-chu-hoc/vio-arcore-drift.md — thêm dòng vào "Keyword cần nắm" (hoặc giải thích lại bằng lời mình), viết "TL;DR", "Bẫy đã gặp thật"; xong chạy lại build là card này cập nhật.
1.6 Servo STS3215 nhìn từ bên trong~2hT5T6keyword 5TL;DR ✗bẫy 0artifact 0/2

Roadmap §2.3 mới phủ bus protocol; chưa có gì về control loop bên trong servo — mà "sai số servo giá rẻ" chính là fallback claim (residual calibration, overview) và là thứ phải characterize trước khi đổ lỗi cho IK/filter khi arm không bám.

Keywordposition loop trong servodeadbandbacklashcompliance dưới tải + nhiệtrepeatability
position loop trong servo
chip trong servo tự chạy vòng P/I/D tới target; lệnh từ bus chỉ là setpoint — "sai số servo rẻ" nằm ở vòng này + cơ khí
deadband
vùng chết quanh target mà chip không chỉnh nữa; chỉnh được qua memory table, thu nhỏ thì đổi lấy rung/nóng
backlash
khe hở gear: tới cùng một target từ 2 chiều ra 2 vị trí khác nhau; đo tách bằng tiếp cận 2 chiều
compliance dưới tải + nhiệt
lệch khi có moment giữ; nóng lên thì trôi thêm — 2 nguồn sai số calibrate phần mềm khó bù
repeatability
std vị trí khi lặp cùng target ×20; con số nền cho ngưỡng calibrate M1 + dòng hardware characterization trong paper
Lịch: 8–9/2026 (bám M1–M4) · tuần: T5 · 10–16/08 T6 · 17–23/08
Tài liệu trích dẫn
  • memory table STS3215
  • 1 bài về position control loop trong hobby servo
Câu hỏi checkpoint (4) — tự trả lời trước khi mở tài liệu
  1. Gửi cùng một target 20 lần, vị trí đạt được lệch nhau vì những nguồn nào? Nguồn nào đo tách ra được bằng cách tiếp cận 2 chiều?
  2. Deadband trong memory table chỉnh được không — trade-off khi thu nhỏ nó là gì (rung/nhiệt)?
  3. Sai số nào calibrate phần mềm bù được, sai số nào không (và vì sao)?
  4. Số repeatability của 6 servo mình là bao nhiêu — ngưỡng "đủ tốt" cho fk_check đặt từ đâu?
Artifact — 0/2 tick
  • scripts/servo_char.py: 1 khớp đi-về cùng target ×20, 2 chiều tiếp cận → std vị trí + backlash; chạy đủ 6 servo sau M1
  • Bảng repeatability dán vào đây → ngưỡng calibrate M1 + 1 dòng hardware characterization trong paper

Dashboard chỉ hiển thị, không bấm tick được. Tick = sửa 3-nghien-cuu/ghi-chu-hoc/servo-sts3215.md rồi build lại; tick việc tuần trong 2-van-hanh/checklist-tuan.md.

Phần tự viết — TL;DR & bẫy đã gặp

TL;DR bằng lời mình

(chưa viết — tự viết sau khi học, ≤5 dòng)

Bẫy đã gặp thật

(chưa có — điền khi debug gặp thật)

✎ Thêm kiến thức: mở 3-nghien-cuu/ghi-chu-hoc/servo-sts3215.md — thêm dòng vào "Keyword cần nắm" (hoặc giải thích lại bằng lời mình), viết "TL;DR", "Bẫy đã gặp thật"; xong chạy lại build là card này cập nhật.

Nhóm 2 — Toán để BẢO VỆ paper ~24h

2.1 Thống kê & thiết kế thí nghiệm~10h2/20275/20276/20277/2027note tạo khi đến lịch

Không có phần này thì bảng kết quả chỉ là con số trần, reviewer bắn thủng được.

KeywordWilson confidence intervaln≥8 ngườiequivalence test (TOST)CounterbalancingLatin squareMultiple comparisons (giải thích sẽ nằm trong note khi tạo)
Lịch: 6–7/2027 (trước M6) · tuần: 2/2027 5/2027 6/2027 7/2027
Tài liệu trích dẫn
  • StatQuest
  • section Experiments của robomimic và GELLO
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §2.1 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.
2.2 Metric "độ mượt" — chốt TRƯỚC khi thu data so sánh~3h7/2027note tạo khi đến lịch

Jerk = đạo hàm bậc 3 của tín hiệu 50Hz nhiễu → tính naive ra rác. Chuẩn ngành:

KeywordSPARCLDLJ (giải thích sẽ nằm trong note khi tạo)
Lịch: 6–7/2027 (trước M6) · tuần: 7/2027
Tài liệu trích dẫn
  • Balasubramanian et al. 2015
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §2.2 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.
2.3 Lý thuyết IL đủ để viết Methods~5h1/2027note tạo khi đến lịch
KeywordCovariate shift & compounding errorTemporal ensembling (giải thích sẽ nằm trong note khi tạo)
Lịch: 12/2026–1/2027 (M5, trước Tết) · tuần: 1/2027
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §2.3 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.
2.4 CNN/ResNet — lỗ hổng vision của "hiểu từ gốc"~4hT712/2026note tạo khi đến lịch

Karpathy Zero-to-Hero không dạy CNN (micrograd → makemore → GPT đều là MLP/Transformer trên text) — mà encoder ảnh của ACT là ResNet18. Không vá thì mục tiêu "đọc code ACT như đọc truyện" đứt đúng ở nửa đầu forward pass, và mọi quyết định camera/augmentation ở M5 thành cầu may.

KeywordKarpathy Zero-to-Hero không dạy CNNResNet18 (giải thích sẽ nằm trong note khi tạo)
Lịch: 11–12/2026 (trước ACT) · tuần: T7 · 24–30/08 12/2026
Tài liệu trích dẫn
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §2.4 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.
2.5 Chất lượng demo — biến "data quality" thành số đo được~2h1/2027note tạo khi đến lịch

Ứng viên claim số 1 của paper là interface × chất lượng data × policy (overview) — nhưng chưa có định nghĩa vận hành "chất lượng data" là gì. Chốt sớm bộ metric trên demo (không phải trên policy) để mọi dataset từ M5 trở đi tự ghi kèm số:

Lịch: 12/2026–1/2027 (M5, trước Tết) · tuần: 1/2027
Tài liệu trích dẫn
  • section data quality/demo analysis của robomimic
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §2.5 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.

Nhóm 3 — Lý thuyết thành điểm cộng ~5h

3.1 Mệnh đề nhỏ về clutch delta-pose (12/2026 — chủ đích GIỮ sớm, không dời theo pha 4)12/2026note tạo khi đến lịch

Formal hóa mapping §3.2 và chứng minh 2 tính chất:

Lịch: 12/2026 (release cuối 2026) · tuần: 12/2026
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §3.1 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.
3.2 Vocabulary teleop cổ điển~2h9/2027note tạo khi đến lịch

Skim "Bilateral teleoperation: An historical survey" (Hokayem & Spong 2006) — biết passivity, transparency, time-delay nghĩa là gì và vì sao hệ unilateral của mình né được cả cụm vấn đề đó (1 câu trong paper). Thêm v2.1: skim Fitts' law (1 trang Wikipedia đủ) — vocabulary chuẩn khi…

Lịch: 7–8/2027 (viết) · tuần: 9/2027
Tài liệu trích dẫn
  • Hokayem & Spong 2006
  • Fitts' law
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §3.2 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.

Nhóm 4 — Lý thuyết pha 3: control & RL

4.1 Control đủ để giải thích artifact tune~3h4/2027note tạo khi đến lịch
Lịch: 3–6/2027 (pha 3) · tuần: 4/2027
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §4.1 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.
4.2 RL đủ để đọc-hiểu PPO~2h5/2027note tạo khi đến lịch
Lịch: 3–6/2027 (pha 3) · tuần: 5/2027
✎ Chưa có note — khi đến lịch: tạo file mới trong 3-nghien-cuu/ghi-chu-hoc/ theo template 5 phần (Keyword · TL;DR · Câu hỏi · Bẫy · Artifact, xem README), thêm 1 dòng vào bảng File của README với mục §4.2 — card này sẽ tự nhận keyword, câu hỏi, artifact khi build lại.

§L2 Ôn checkpoint tự trả lời xong mới bấm “hiện nguồn” · quên → hiện lại dày hơn

Bấm “Câu tiếp” để bắt đầu.
0%đã nhớ

§L3 Lịch trục lý thuyết toan-ly-thuyet.md v2.1 · ~52h · checkpoint “đã đủ”

Lịch tuần cụ thể (tick từng ô): checklist-tuan.md.

Thời gianMụcGiờCheckpoint "đã đủ"
8/2026 (M3–M4)1.1 + 1.2 + 1.3~12hUnit test retarget pass; giải thích DLS bằng SVD không nhìn tài liệu; vẽ được lag One-Euro theo tham số
8–9/2026 (bám M1–M4)1.4 + 1.5 + 1.6~6hdrift_probe có số drift/đóng vòng của chính phone mình; bảng repeatability 6 servo; trả lời được vì sao tách s_p/s_r
11–12/2026 (trước ACT)2.4~4hNotebook ResNet18 trên frame demo của mình; giải thích ảnh→vector vào Transformer
12/2026–1/2027 (M5, trước Tết)2.3 + 2.5~7hNói được compounding error + map loss ACT ↔ code; demo_stats.py chạy trên 30 demo đầu
12/2026 (release cuối 2026)3.1~3hNửa trang mệnh đề + sim kiểm chứng (tham số drift lấy từ 1.5); thành mục toán của blog
3–6/2027 (pha 3)4.1 + 4.2~5hGiải thích plot tune theo từng khâu; note RL vs IL bằng vocabulary MDP
6–7/2027 (trước M6)2.1 + 2.2~13hstats.py + smoothness.py chạy trên data giả; protocol 1 trang có Latin square; bảng kết quả mẫu có CI
7–8/2027 (viết)3.2~2h1 câu định vị hệ unilateral vs teleop cổ điển

§L4 Bản đồ tài liệu Chính / Backup / Bỏ qua · từ tai-lieu-hoc.md

Tạo 10/07/2026. Cột Chính giữ nguyên lựa chọn của roadmap-hoc-tap.md — file này không đổi lựa chọn, chỉ thêm ba thứ roadmap chưa nói: vì sao chọn, backup khi bí, và nổi tiếng nhưng bỏ qua (kèm lý do, cố tình không kèm link để đỡ cám dỗ).

Ba quy tắc dùng (chống trôi, khớp roadmap §0 và §8):

  1. Đến lịch chủ đề nào → mở đúng dòng Chính của chủ đề đó, đi hết. Một chính/chủ đề.
  2. Backup chỉ mở khi bí ≥2 buổi liên tiếp; nếu đổi hẳn thì đổi MỘT lần, ghi lý do vào nhat-ky-doc-code.md; không học song song 2 tài liệu cùng chủ đề.
  3. Mục "bỏ qua" = không mở trước 9/2027, kể cả "xem thử 1 video". Tài liệu mới xuất hiện 2026–2027 chỉ được thêm vào đây sau câu hỏi: nó thay dòng Chính nào, có đáng đổi giữa chừng không? (thường là không).

0. Python nền — nay → giữa 8/2026 (lớp roadmap giả định đã có)

Vai tròTài liệuVì sao / liên quan dự án
ChínhPython for Everybody ch.1–10Free, bài tập tự chấm; ch.6–10 (string, file, dict, tuple) đúng dạng thao tác config/dataset sẽ gặp hằng ngày trong LeRobot
Công cụpythontutor.com + VS Code debuggerNhìn biến/stack từng bước — nền của mọi kỹ thuật trong brainstorm-hieu-code.md §4
Luyệnexercism.org PythonSau khi tự giải được đọc solution người khác = luyện đọc code có đáp án
BackupAutomate the Boring StuffNếu sau ~2 tuần py4e thấy khô: đổi hẳn 1 lần (sách này thực dụng, script hóa việc thật), không học song song
Đúng-lúcasyncioKHÔNG học riêng — học qua docs websockets đúng tuần M3 cần đến

Bỏ qua: CS50P (bài bản nhưng ~12 tuần lecture — quỹ 5–10h/tuần không cho phép) · Fluent Python (sách Python nâng cao hay nhất, nhưng cho người đã vững — hẹn sau 2027) · LeetCode (luyện phỏng vấn, không nằm trên đường tới robot).

1. Pha 1 — Toán 3D & kinematics (nay → 10/2026)

Vai tròTài liệuVì sao / liên quan dự án
Warm-up3B1B Essence of Linear Algebra (~3h) + quaternion Ben Eater (~1h)Trực giác ma trận-là-phép-biến-đổi và quaternion tương tác — đọc MR đỡ vấp một nửa
ChínhModern Robotics Ch.2–6 + bài tập chọn lọcPDF free; dùng product-of-exponentials — đúng công thức FK/IK sẽ code cho SO-101; có thư viện MR Python để đối chiếu fk_check.py (M1); exp/log SO(3) ăn thẳng vào ghi chú so3-exp-log.md đã lên lịch 8/2026
BackupBản Coursera của MR (Lynch giảng)Đọc chay bí → xem video + quiz; cùng sách nên không tính là đổi tài liệu
Backup nhanhQUT Robot Academy (Peter Corke)Video 5–10′/khái niệm khi cần trực giác nhanh một mục lẻ, không cày tuần tự

Bỏ qua: Craig Introduction to Robotics (kinh điển nhưng dạy DH parameters — trộn formalism với PoE của MR sẽ rối đầu) · Corke RVC trọn sách (từ điển tốt, đọc tuần tự thì lạc đề) · Tedrake Underactuated (control/dynamics nâng cao — sau 9/2027) · MIT 6.4212 (đã nằm trong danh sách cấm v2, chỉ tra cứu).

Điện servo + web stack (WebXR/websockets/One-Euro/Buss) giữ nguyên roadmap §2.3–2.4, không cần backup — đều là docs chính chủ ngắn. JS chỉ mức "sửa được ví dụ": kẹt cú pháp thì tra javascript.info như từ điển, cấm học JS bài bản.

2. Pha 1–2 — LeRobot & hệ sinh thái (tài liệu chính chủ)

Giữ nguyên 4 mục roadmap §2.1: HF Robotics Course (bản đồ hệ sinh thái, học lúc chờ hàng M0) · LeRobot docs SO-101 + assemble (đọc TRƯỚC khi hàng về — lỗi gãy servo khi lắp là lỗi phổ biến nhất) · il_robots (xương sống M2/M5) · Robot Learning: A Tutorial (đọc lướt lấy bản đồ, quay lại pha 2).

Không có backup — docs chính chủ của stack mình dùng; bí thì đọc thẳng code (bài tập mức 2 của brainstorm-hieu-code.md) và hỏi Discord LeRobot.

3. Pha 2 — Deep learning từ gốc (11/2026 → 2/2027)

Vai tròTài liệuVì sao / liên quan dự án
Warm-up3B1B Neural networks playlist (~2h)Trực giác backprop bằng hình trước khi tự code nó trong micrograd
Chính 1PyTorch Learn the Basics (~10h)Dừng đúng lúc tự viết được vòng train MLP — đủ cho bước BC tay không
Chính 2Karpathy Zero to Hero FULL (~20h)Xây từ đạo hàm → GPT bằng code thuần, đúng nghĩa "hiểu từ gốc, không hộp đen"; ACT = Transformer + CVAE — học xong, đọc lerobot/policies/act là đọc lại thứ mình từng tự viết (mức 3 của lộ trình đọc code); checkpoint pha 2 "build lại GPT-mini không copy" chấm theo đây
Tra cứuUnderstanding Deep Learning (Prince, PDF free)Từ điển khi cần định nghĩa/hình chuẩn (VAE, attention…); CẤM đọc tuần tự

Bỏ qua: fast.ai (dạy top-down qua thư viện fastai che mất PyTorch — ngược chiều mục tiêu hiểu gốc) · CS231n (CV-centric, dài, không phải đường IL) · Goodfellow Deep Learning (2016, nặng lý thuyết, không code) · Andrew Ng DL Specialization (Keras/TF — khác stack).

ACT/SmolVLA/BC: theo đúng thứ tự 6 bước roadmap §3 — paper nhóm A đọc 3-pass, đối chiếu code từng khối (đây chính là mức 3 của brainstorm-hieu-code.md §6).

4. Pha 3 — ROS 2, control, RL (3 → 6/2027, mỗi trụ timebox 1 tháng)

TrụChínhBackup khi bíBỏ qua + lý do
ROS 2Official Jazzy tutorials: CLI tools → client libraries → port teleop thành node graphArticulated Robotics (Josh Newans) — mental model nhanh khi docs khôKhóa ROS Udemy (không hơn official, tốn tiền) · MoveIt/Nav2 (arm đứng yên trên bàn — chỉ mở MoveIt nếu DLS-IK tự viết thật sự không đủ)
ControlBrian Douglas playlist cho trực giác + MR Ch.11 làm nguồn bài tập (cặp này = 1 lựa chọn, roadmap cho phép)Steve Brunton Control Bootcamp — khi cần state-space sâu hơn (cảnh báo: dễ quá đà so với nhu cầu tune PID 1 arm)Ogata Modern Control Engineering (textbook đầy đủ classical control — quá khổ cho artifact "plot tracking error trước/sau tune")
RLHF Deep RL Course units chính → PPO trên MuJoCo SO-101 (mo-phong.md tầng 2–3)Spinning Up — đọc Key Concepts + trang PPO như từ điểnSutton–Barto trọn sách (cấm v2 — chỉ tra chương được dẫn) · David Silver lectures (kinh điển nhưng 2015, thiên lý thuyết) · CS285 (sau 9/2027 nếu còn theo RL)

5. Pha 4 — Thống kê & viết (7 → 9/2027)

Giữ nguyên roadmap §5 (Wilson CI, Wilcoxon n≥8, TOST, SPARC/LDLJ, ≥3 seed; template Experiments của GELLO/robomimic; Overleaf ieeeconf; talk Simon Peyton Jones; outline ngược 5 paper ICRA). Bổ sung nhẹ:

  • Backup trực giác thống kê: StatQuest (YouTube) — xem đúng video lẻ (CI, Wilcoxon, bootstrap) khi công thức không "click"; không cày playlist.
  • Thêm 1 essay (~1h): Gopen & Swan, The Science of Scientific Writing — SPJ dạy cấu trúc paper, essay này dạy cấu trúc câu/đoạn; cặp với nhau vừa đủ, không cần sách viết nào khác.

6. Xuyên suốt — đọc code, git, đọc paper

  • Phương pháp đọc code: brainstorm-hieu-code.md — file này trả lời "học GÌ", file kia trả lời "đọc THẾ NÀO".
  • The Programmer's Brain (Felienne Hermans) — sách duy nhất đáng đọc về chính kỹ năng đọc code (gốc khoa học nhận thức: vì sao quên, vì sao lạc). Optional: chỉ mở ch.1–4 khi nào cảm giác "đọc mãi không vào" kéo dài; không nằm trong lịch bắt buộc.
  • Git: học qua chính repo so101-phone-teleop từ M0 (init, branch, commit message tử tế — 6-code/README); kẹt lệnh thì tra docs. Bỏ: đọc Pro Git trọn sách.
  • Đọc paper: Keshav 3-pass + Zotero + template ghi-chu-paper/ — đã chốt trong roadmap §6, không thêm.

Bỏ qua (nhóm "sách dev phải đọc" trên mạng): Clean Code (nhiều lời khuyên gây tranh cãi, không phải giai đoạn này) · Pragmatic Programmer, A Philosophy of Software Design (đáng đọc — sau 2027, khi đã có vài nghìn dòng code của mình) · Design Patterns/GoF (quá sớm, Python-idiomatic khác Java-patterns).

7. Tổng giờ ước lượng phần "mới" so với roadmap

Python nền (§0): ~25–35h trong 5–6 tuần tới, tính là giờ build. Các phần khác không thêm giờ — chỉ thêm lựa chọn backup và ranh giới. Nếu §0 làm quỹ tuần căng: giảm giờ MR tháng 7–8 (MR chính thức cần từ 8/2026), KHÔNG giảm giờ theo lịch M0–M1.