diff --git a/README-vi.md b/README-vi.md
new file mode 100644
index 0000000..76be27c
--- /dev/null
+++ b/README-vi.md
@@ -0,0 +1,55 @@
+
+
+# Chào mừng đến với Khóa học 🤗 Robotics
+
+**Language / Ngôn ngữ:** [English](README.md) | [Tiếng Việt](README-vi.md)
+
+## [🪧 Tham gia khóa học trên Hub](https://huggingface.co/robotics-course)
+
+Khóa học miễn phí này sẽ đưa bạn vào một hành trình, **từ robotics cổ điển đến các phương pháp học tập hiện đại**, trong việc hiểu, triển khai và áp dụng các kỹ thuật machine learning vào các hệ thống robot thực tế.
+
+Khóa học này dựa trên [Robot Learning Tutorial](https://huggingface.co/spaces/lerobot/robot-learning-tutorial), một hướng dẫn toàn diện về robot learning dành cho các nhà nghiên cứu và thực hành. Ở đây, chúng tôi đang cố gắng chắt lọc tutorial thành một định dạng dễ tiếp cận hơn cho cộng đồng.
+
+Unit đầu tiên này sẽ giúp bạn làm quen. Bạn sẽ thấy chương trình học và mục tiêu học tập, hiểu về cấu trúc và điều kiện tiên quyết, gặp gỡ đội ngũ đứng sau khóa học, tìm hiểu về LeRobot và hệ sinh thái Hugging Face xung quanh, và khám phá các tài nguyên cộng đồng hỗ trợ hành trình của bạn.
+
+> [!TIP]
+> Khóa học này kết nối lý thuyết và thực hành trong Robotics! Nó được thiết kế cho sinh viên quan tâm đến việc hiểu cách machine learning đang biến đổi robotics. Dù bạn mới bắt đầu với robotics hay muốn hiểu các phương pháp dựa trên học tập, khóa học này sẽ hướng dẫn bạn từng bước.
+
+## Bạn sẽ mong đợi gì từ khóa học này?
+
+Trong suốt khóa học, bạn sẽ nghiên cứu nền tảng robotics cổ điển và các phương pháp học tập hiện đại, học cách sử dụng LeRobot, làm việc với các bộ dữ liệu robotics thực tế, và triển khai các thuật toán tiên tiến. Trọng tâm là các kỹ năng thực hành mà bạn có thể áp dụng vào các hệ thống robot thực tế.
+
+Cuối khóa học này, bạn sẽ hiểu:
+
+- cách robot học từ dữ liệu
+- tại sao các phương pháp dựa trên học tập đang biến đổi robotics
+- cách triển khai các kỹ thuật này bằng các công cụ hiện đại như LeRobot
+
+## Chương trình học là gì?
+
+Đây là chương trình học tổng quát cho khóa học robotics. Mỗi unit được xây dựng dựa trên các unit trước đó để cung cấp cho bạn sự hiểu biết toàn diện về Robotics.
+
+| # | Chủ đề | Mô tả | Đã phát hành |
+| - | ----- | ----------- | -------- |
+| 0 | Giới thiệu khóa học | Chào mừng, điều kiện tiên quyết và tổng quan khóa học | ✅ |
+| 1 | Giới thiệu về Robotics | Tại sao Robotics quan trọng và hệ sinh thái LeRobot | ✅ |
+| 2 | Robotics cổ điển | Các phương pháp truyền thống và hạn chế của chúng | ✅ |
+| 5 | Reinforcement Learning | Cách robot học thông qua thử và sai | Sắp ra mắt |
+| 6 | Imitation Learning | Học từ các mô phỏng và behavioral cloning | Sắp ra mắt |
+| 7 | Foundation Models | Các mô hình quy mô lớn cho robotics tổng quát | Sắp ra mắt |
+
+## Lời cảm ơn
+
+Chúng tôi muốn bày tỏ lòng biết ơn đến các dự án và cộng đồng sau:
+
+- [LeRobot](https://github.com/huggingface/lerobot) - Thư viện robotics mã nguồn mở cung cấp sức mạnh cho khóa học này
+- [PyTorch](https://pytorch.org) - Framework deep learning được sử dụng xuyên suốt
+- Cộng đồng **nghiên cứu robotics** rộng lớn hơn vì đã tạo ra và chia sẻ các bộ dữ liệu và thuật toán làm cho Robotics trở nên khả thi
+
+## Tôi tìm thấy lỗi, hoặc tôi muốn cải thiện khóa học
+
+Các đóng góp rất **được chào đón** 🤗
+
+* Nếu bạn _tìm thấy lỗi hoặc sai sót_, vui lòng [mở một issue](https://github.com/huggingface/robotic-course/issues/new) và **mô tả vấn đề**.
+* Nếu bạn _muốn cải thiện khóa học_, bạn có thể đóng góp cho cộng đồng robotics thông qua phát triển LeRobot.
+* Nếu bạn _muốn thêm nội dung hoặc đề xuất cải thiện_, hãy tương tác với cộng đồng robotics và chia sẻ ý tưởng của bạn.
diff --git a/README.md b/README.md
index 1df5b0f..292660a 100644
--- a/README.md
+++ b/README.md
@@ -3,6 +3,8 @@
# Welcome to the 🤗 Robotics Course
+**Language / Ngôn ngữ:** [English](README.md) | [Tiếng Việt](README-vi.md)
+
## [🪧 Join the course on the Hub](https://huggingface.co/robotics-course)
This free course will take you on a journey, **from classical robotics to modern learning-based approaches**, in understanding, implementing, and applying machine learning techniques to real robotic systems.
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000..07f7b93
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,2 @@
+huggingface_hub
+python-dotenv
diff --git a/scripts/translation.py b/scripts/translation.py
new file mode 100644
index 0000000..9aa6c0a
--- /dev/null
+++ b/scripts/translation.py
@@ -0,0 +1,78 @@
+import os
+import sys
+import re
+from huggingface_hub import InferenceClient
+
+# Get the directory containing the current script
+script_dir = os.path.dirname(os.path.abspath(__file__))
+default_inp_dir = os.path.join(script_dir, '..', 'units/en')
+default_model = "deepseek-ai/DeepSeek-R1"
+default_client = InferenceClient(
+ provider="together",
+ # api_key is read from the environment
+)
+
+def auto_translate(
+ output_lang: str,
+ prompt: callable,
+ inp_dir: str = default_inp_dir,
+ model: str = default_model,
+ client: InferenceClient = default_client
+):
+ get_output_path = lambda x: x.replace('/en', f'/{output_lang}')
+ escape_special_tokens = lambda x: x.replace('', '<%%think%%>').replace('', '<%%/think%%>')
+ unescape_special_tokens = lambda x: x.replace('<%%think%%>', '').replace('<%%/think%%>', '')
+
+ # Get the list of all files in the directory, recursively
+ inp_files: list[str] = []
+ print('Collecting files...')
+ for root, dirs, files in os.walk(inp_dir):
+ for file in files:
+ if file.endswith('.mdx') or file == "_toctree.yml":
+ fname = os.path.join(root, file)
+ print(' +', fname)
+ inp_files.append(fname)
+
+ def write_out_file(fpath: str, content: str):
+ base_path = os.path.dirname(fpath)
+ os.makedirs(base_path, exist_ok=True)
+ with open(fpath, 'w', encoding='utf-8') as f:
+ f.write(content)
+
+ # Read the content of the file and process
+ for i, inp_file in enumerate(inp_files):
+ out_file = get_output_path(inp_file)
+ if os.path.exists(out_file):
+ print(f'[{i+1}/{len(inp_files)}] Skipping file: {inp_file}')
+ continue
+ with open(inp_file, 'r', encoding='utf-8') as f:
+ content: str = f.read()
+ content = escape_special_tokens(content)
+ if content.strip() == "":
+ print(f'[{i+1}/{len(inp_files)}] Skipping empty file: {inp_file}')
+ write_out_file(out_file, "")
+ continue
+
+ print(f'[{i+1}/{len(inp_files)}] Processing file: {inp_file}')
+ stream = client.chat.completions.create(
+ model=model,
+ temperature=0.0,
+ messages=[
+ {"role": "user", "content": prompt(content)},
+ ],
+ stream=True,
+ )
+ final_text = ""
+ for chunk in stream:
+ print(chunk.choices[0].delta.content, end="")
+ sys.stdout.flush()
+ final_text += chunk.choices[0].delta.content
+ # Optionally filter ... reasoning process
+ final_text = final_text.split('').pop().strip()
+ # Write the output to the file
+ final_text = unescape_special_tokens(final_text)
+ write_out_file(out_file, final_text)
+ print()
+ print(f' -> Translated to: {out_file}')
+ print("--" * 20)
+ #break
diff --git a/scripts/vi.py b/scripts/vi.py
new file mode 100644
index 0000000..c7c2040
--- /dev/null
+++ b/scripts/vi.py
@@ -0,0 +1,119 @@
+from translation import auto_translate
+import os
+from dotenv import load_dotenv
+
+# Load environment variables from .env file
+load_dotenv()
+
+# Set HF_TOKEN from environment variable
+os.environ["HF_TOKEN"] = os.getenv("HF_TOKEN")
+
+
+output_lang = "vi"
+
+prompt = lambda content: f'''
+
+You are a translator for the Vietnamese translation team. You are tasked with translating the following texts into Vietnamese. You must follow these instructions:
+- Translate the texts into Vietnamese, while keeping the original formatting (either Markdown, MDX or HTML)
+- Inside code blocks, translate the comments but leave the code as-is; If the code block contains quite plain texts, you MUST provide the translation in tag
+- Do not translate inline code, the URLs and file paths
+- If the term is abbreviated, keep the original term and provide the translation in parentheses for the first time it appears in the text
+- If there are any slag or funny joke in english, keep it (do not translate) and give an explanation so Vietnamese reader can understand
+- Use "ta", "mình, "chúng ta", "chúng mình", "các bạn" as pronouns
+
+KEEP THESE TERMS (DO NOT TRANSLATE, do NOT add translation in parentheses): Hugging Face, LeRobot, Transformer, LeRobotDataset, Metadata
+For these terms, use the pre-defined translation:
+- Onboarding: Làm quen
+- Course: Khóa học
+- Unit: Chương
+- Bonus Unit: Chương bổ trợ
+- Module: Mô-đun
+- Lesson ...: Bài ...
+- Quick Quiz: Kiểm tra nhanh
+- Model: Mô hình
+- Dataset: Bộ dữ liệu
+- Q&A: Hỏi và Đáp
+- Hands-on: Thực hành
+- Challenge: Bài tập lớn
+- Training: Huấn luyện
+- Machine learning: Học máy
+
+Here is an example:
+- Original text: This free course will take you on a journey, **from classical robotics to modern learning-based approaches**, in understanding, implementing, and applying machine learning techniques to real robotic systems.
+- Translation: Khóa học miễn phí này sẽ đưa bạn vào một hành trình, **từ robot cổ điển đến các phương pháp hiện đại dựa trên học máy**, để hiểu, triển khai và áp dụng các kỹ thuật học máy vào các hệ thống robot thực tế.
+
+Here is another example:
+- Original text: For more information about robot learning, check out the [Hugging Face documentation](https://huggingface.co/docs/lerobot) and explore our [LeRobot datasets](https://huggingface.co/datasets/lerobot) to get started with your own projects.
+- Translation: Để biết thêm thông tin về robot learning, hãy xem [tài liệu Hugging Face](https://huggingface.co/docs/lerobot) và khám phá [bộ dữ liệu LeRobot](https://huggingface.co/datasets/lerobot) của chúng ta để bắt đầu với các dự án của riêng bạn.
+
+Here is an example for academic references:
+- Original text: **RT-1: Robotics Transformer for Real-World Control at Scale** (2023)
+ Anthony Brohan et al.
+ This paper demonstrates how to apply transformers to real-world robot control at scale, showing the power of learning from large and diverse datasets.
+ [arXiv:2212.06817](https://huggingface.co/papers/2212.06817)
+- Translation: **RT-1: Robotics Transformer for Real-World Control at Scale** (2023)
+ Anthony Brohan et al.
+ Bài báo này minh chứng cách áp dụng transformer cho việc điều khiển robot thực tế trên quy mô, cho thấy sức mạnh của việc học từ các tập dữ liệu lớn và đa dạng.
+ [arXiv:2212.06817](https://huggingface.co/papers/2212.06817)
+
+If the code block contains many plain texts, prove translation in collapsible tag. Example:
+- Original text:
+ ```python
+ # Simple: current observation → current action
+ delta_timestamps = {{
+ "observation.images.wrist_camera": [0.0], # Just current frame
+ "action": [0.0] # Just current action
+ }}
+
+ dataset = LeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+ )
+ ```
+- Translation (add the collapsible ABOVE of the original code block):
+
+ Bấm để xem bản dịch tiếng Việt
+ ```python
+ # Đơn giản: quan sát hiện tại → hành động hiện tại
+ delta_timestamps = {{
+ "observation.images.wrist_camera": [0.0], # Chỉ frame hiện tại
+ "action": [0.0] # Chỉ hành động hiện tại
+ }}
+
+ dataset = LeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+ )
+ ```
+
+ ```python
+ # Simple: current observation → current action
+ delta_timestamps = {{
+ "observation.images.wrist_camera": [0.0], # Just current frame
+ "action": [0.0] # Just current action
+ }}
+
+ dataset = LeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+ )
+ ```
+
+IMPORTANT:
+- Only output the final translated text and nothing else
+- Do NOT include any sections, explanations, or step-by-step analysis
+- Do NOT show original text alongside translation
+- Do NOT include any commentary or instructions
+- Just provide the clean, final Vietnamese translation
+
+Please translate the following texts to Vietnamese:
+
+=== BEGIN OF TEXT ===
+{content}
+=== END OF TEXT ===
+'''.strip()
+
+auto_translate(
+ prompt=prompt,
+ output_lang=output_lang,
+)
diff --git a/units/vi/_toctree.yml b/units/vi/_toctree.yml
new file mode 100644
index 0000000..cf0ab10
--- /dev/null
+++ b/units/vi/_toctree.yml
@@ -0,0 +1,30 @@
+- title: "0. Chào mừng đến với Khóa học Robotics"
+ sections:
+ - local: unit0/1
+ title: Chào mừng đến với Khóa học Robotics
+ - local: unit0/2
+ title: Bắt đầu với LeRobot
+
+- title: "1. Giới thiệu Khóa học"
+ sections:
+ - local: unit1/1
+ title: Giới thiệu về Robot Learning
+ - local: unit1/2
+ title: LeRobot - Thư viện Mã nguồn Mở
+ - local: unit1/3
+ title: LeRobotDataset
+ - local: unit1/4
+ title: "Ví dụ mã: Batching một Bộ dữ liệu (Streaming)"
+
+- title: "2. Robotics Cổ điển"
+ sections:
+ - local: unit2/1
+ title: Giới thiệu về Robotics Cổ điển
+ - local: unit2/2
+ title: Các loại chuyển động của Robot
+ - local: unit2/3
+ title: Động học Robot
+ - local: unit2/4
+ title: Hệ thống Điều khiển và các Hạn chế
+ - local: unit2/5
+ title: Từ Robotics Cổ điển đến Robotics dựa trên Học máy
\ No newline at end of file
diff --git a/units/vi/unit0/1.mdx b/units/vi/unit0/1.mdx
new file mode 100644
index 0000000..1806d0d
--- /dev/null
+++ b/units/vi/unit0/1.mdx
@@ -0,0 +1,101 @@
+# Chào mừng bạn đến với 🤗 Khóa học Robotics
+
+
+
+Khóa học miễn phí này sẽ đưa bạn vào một hành trình, **từ robot cổ điển đến các phương pháp hiện đại dựa trên học máy**, để hiểu, triển khai và áp dụng các kỹ thuật học máy vào các hệ thống robot thực tế.
+
+Khóa học này dựa trên [Robot Learning Tutorial](https://huggingface.co/spaces/lerobot/robot-learning-tutorial), một hướng dẫn toàn diện về robot learning dành cho nhà nghiên cứu và người thực hành. Tại đây, chúng ta cố gắng chắt lọc hướng dẫn thành định dạng dễ tiếp cận hơn cho cộng đồng.
+
+Chương đầu tiên này sẽ giúp bạn làm quen. Bạn sẽ xem giáo trình và mục tiêu học tập, hiểu cấu trúc và điều kiện tiên quyết, gặp gỡ đội ngũ đứng sau khóa học, tìm hiểu về LeRobot và hệ sinh thái Hugging Face xung quanh, đồng thời khám phá các tài nguyên cộng đồng hỗ trợ hành trình của bạn.
+
+> [!TIP]
+> Khóa học này kết nối lý thuyết và thực hành trong Robotics! Nó được thiết kế cho sinh viên quan tâm đến việc hiểu cách học máy đang biến đổi ngành robotics. Dù bạn mới bắt đầu với robotics hay muốn hiểu các phương pháp dựa trên học máy, khóa học này sẽ hướng dẫn bạn từng bước.
+
+## Bạn sẽ nhận được gì từ khóa học này?
+
+Xuyên suốt khóa học, bạn sẽ nghiên cứu nền tảng robotics cổ điển và các phương pháp hiện đại dựa trên học máy, học cách sử dụng LeRobot, làm việc với bộ dữ liệu robotics thực tế và triển khai các thuật toán tiên tiến nhất. Trọng tâm là các kỹ năng thực hành bạn có thể áp dụng vào hệ thống robot thực tế.
+
+Kết thúc khóa học, bạn sẽ hiểu:
+- cách robot học từ dữ liệu
+- tại sao các phương pháp dựa trên học máy đang biến đổi ngành robotics
+- cách triển khai các kỹ thuật này bằng công cụ hiện đại như LeRobot
+
+## Giáo trình gồm những gì?
+
+Đây là giáo trình chung cho khóa học robotics. Mỗi chương xây dựng dựa trên chương trước để mang đến cho bạn hiểu biết toàn diện về Robotics.
+
+| # | Chủ đề | Mô tả | Đã phát hành |
+| - | ----- | ----------- | -------- |
+| 0 | Giới thiệu khóa học | Chào mừng, điều kiện tiên quyết và tổng quan khóa học | ✅ |
+| 1 | Tổng quan khóa học | Lộ trình học tập và mục tiêu | ✅ |
+| 2 | Giới thiệu về Robotics | Tại sao Robotics quan trọng và hệ sinh thái LeRobot | ✅ |
+| 3 | Robotics cổ điển | Các phương pháp truyền thống và hạn chế của chúng | ✅ |
+| 4 | Tổng kết khóa học | Chuyển tiếp từ phương pháp cổ điển sang dựa trên học máy | ✅ |
+| 5 | Học tăng cường | Cách robot học qua thử và sai | Sắp ra mắt |
+| 6 | Học bắt chước | Học từ minh họa và sao chép hành vi | Sắp ra mắt |
+| 7 | Mô hình nền tảng | Mô hình quy mô lớn cho robotics tổng quát | Sắp ra mắt |
+
+
+
+## Điều kiện tiên quyết là gì?
+
+Bạn nên thành thạo Python cơ bản (biến, hàm, vòng lặp). Đại số tuyến tính và giải tích sơ cấp sẽ giúp hiểu toàn diện nhưng không bắt buộc.
+
+Quen thuộc chung với ML là điểm cộng, nhưng chúng ta sẽ giải thích khái niệm khi chúng xuất hiện. Quan trọng nhất, hãy mang theo sự tò mò về cách máy móc học để hành động trong thế giới vật lý.
+
+> [!TIP]
+> **Mới làm quen với robotics?** Khóa học này được thiết kế thân thiện với người mới bắt đầu! Chúng ta bắt đầu từ kiến thức cơ bản và xây dựng lên các khái niệm nâng cao. Nếu có thắc mắc hoặc cần trợ giúp, hãy xem [cộng đồng khóa học](https://huggingface.co/spaces/robotics-course/README/discussions) trên Hugging Face Hub.
+
+## Tôi cần công cụ gì?
+
+
+
+> [!TIP]
+> **Không có robot?** Không sao! Bạn có thể theo dõi bằng môi trường mô phỏng và bộ dữ liệu. Các khái niệm có thể áp dụng trực tiếp vào phần cứng thực khi bạn sẵn sàng.
+
+## Học tập và Đánh giá
+
+Khóa học này được thiết kế cho **học tập tự định hướng** với các bài đánh giá tích hợp để giúp bạn theo dõi tiến độ.
+
+**Tính năng khóa học:**
+* **Câu đố tương tác** cuối mỗi chương chính để kiểm tra hiểu biết
+* **Ví dụ mã thực hành** sử dụng LeRobot
+* **Độ khó tăng dần** từ khái niệm cơ bản đến kỹ thuật nâng cao
+* **Ứng dụng thực tế** kết nối lý thuyết với vấn đề robotics thực tiễn
+
+**Không yêu cầu chứng chỉ chính thức** - mục tiêu là đạt kiến thức và kỹ năng thực hành trong Robotics mà bạn có thể áp dụng vào dự án và nghiên cứu riêng.
+
+## Tốc độ học được khuyến nghị?
+
+Khóa học được thiết kế **tự định hướng và linh hoạt**. Mỗi chương nên mất khoảng **30-45 phút** để hoàn thành, bao gồm đọc, hiểu khái niệm và làm việc với ví dụ mã.
+
+**Cách tiếp cận được khuyến nghị:**
+* **Dành thời gian** cho từng khái niệm - Robotics xây dựng dựa trên nền tảng hiểu biết
+* **Thử các ví dụ mã** - trải nghiệm thực hành củng cố việc học
+* **Làm các câu đố** - chúng giúp xác định lĩnh vực cần ôn tập thêm
+* **Nghỉ giải lao** giữa các chương để khái niệm thấm nhuần
+
+## Làm thế nào để tận dụng tối đa khóa học?
+
+Để tận dụng tối đa khóa học robot này, chúng ta khuyến nghị:
+
+1. **Tham gia với cộng đồng**: Thảo luận [tại đây](https://huggingface.co/spaces/robotics-course/README/discussions), khám phá [tài liệu LeRobot](https://huggingface.co/docs/lerobot/index) và kết nối với người học khác quan tâm đến Robot.
+2. **Thực hành với các ví dụ mã**: Cách tốt nhất để hiểu Robot là thông qua trải nghiệm thực tế với bộ dữ liệu và thuật toán thực.
+3. **Làm các bài kiểm tra nghiêm túc**: Chúng được thiết kế để củng cố khái niệm chính và xác định lĩnh vực bạn cần ôn tập thêm.
+4. **Khám phá ngoài khóa học**: Thử các ví dụ LeRobot, thử nghiệm với bộ dữ liệu khác nhau và xem cách áp dụng khái niệm vào sở thích riêng.
+
+## Lời cảm ơn
+
+Chúng ta muốn gửi lời cảm ơn đến các dự án và cộng đồng sau:
+
+- [LeRobot](https://github.com/huggingface/lerobot) - Thư viện robot mã nguồn mở hỗ trợ khóa học này
+- [PyTorch](https://pytorch.org) - Framework học sâu được sử dụng xuyên suốt
+- **Cộng đồng nghiên cứu robot** rộng lớn đã tạo và chia sẻ bộ dữ liệu cùng thuật toán giúp Robot khả thi
+
+## Tôi tìm thấy lỗi, hoặc tôi muốn cải thiện khóa học
+
+Đóng góp rất **được hoan nghênh** 🤗
+
+* Nếu bạn _phát hiện lỗi hoặc sự cố_, hãy [mở issue](https://github.com/huggingface/robotic-course/issues/new) và **mô tả vấn đề**.
+* Nếu bạn _muốn cải thiện khóa học_, bạn có thể đóng góp cho cộng đồng robot thông qua phát triển LeRobot.
+* Nếu bạn _muốn thêm nội dung hoặc đề xuất cải tiến_, hãy tương tác với cộng đồng robot và chia sẻ ý tưởng.
\ No newline at end of file
diff --git a/units/vi/unit0/2.mdx b/units/vi/unit0/2.mdx
new file mode 100644
index 0000000..9437a01
--- /dev/null
+++ b/units/vi/unit0/2.mdx
@@ -0,0 +1,16 @@
+# Bắt đầu với LeRobot
+
+Trong suốt khóa học này, chúng ta sẽ sử dụng LeRobot - thư viện robot mã nguồn mở toàn diện của Hugging Face giúp phổ biến rộng rãi các kỹ thuật robot learning tiên tiến. LeRobot giải quyết một trong những rào cản lớn nhất trong giáo dục và nghiên cứu robot: sự phức tạp khi làm việc với các hệ thống robot thực tế và dữ liệu.
+
+Thư viện cung cấp cách xử lý bộ dữ liệu trực quan, giúp làm việc với dữ liệu robot phức tạp trở nên đơn giản như làm việc với văn bản hoặc hình ảnh trong học máy truyền thống. Bạn sẽ có quyền truy cập vào các mô hình đã được huấn luyện sẵn, đóng vai trò là điểm khởi đầu vững chắc cho các dự án của riêng bạn, cho phép bạn xây dựng dựa trên các thuật toán đã được chứng minh thay vì bắt đầu từ đầu. LeRobot cũng hỗ trợ triển khai trên phần cứng robot thực tế, thu hẹp khoảng cách giữa mô phỏng và ứng dụng thực tế. Có lẽ quan trọng nhất, nó kết nối bạn với một cộng đồng ngày càng phát triển gồm những người thực hành robot learning, từ các nhà nghiên cứu tại các tổ chức hàng đầu đến những người đam mê xây dựng các dự án tuyệt vời tại nhà.
+
+> [!TIP]
+> **Xem trước phần cài đặt:** Chúng ta sẽ hướng dẫn cài đặt LeRobot trong Chương 2, nhưng nếu bạn đang háo hức muốn bắt đầu:
+>
+> ```bash
+> pip install lerobot
+> ```
+>
+> Hãy xem [kho lưu trữ GitHub của LeRobot](https://github.com/huggingface/lerobot) để biết thêm chi tiết!
+
+Bạn đã sẵn sàng bắt đầu hành trình robot learning của mình? Hãy cùng bắt đầu bằng việc tìm hiểu tại sao các phương pháp robot cổ điển có những hạn chế và học máy có thể giúp vượt qua chúng như thế nào.
\ No newline at end of file
diff --git a/units/vi/unit1/1.mdx b/units/vi/unit1/1.mdx
new file mode 100644
index 0000000..2d61861
--- /dev/null
+++ b/units/vi/unit1/1.mdx
@@ -0,0 +1,55 @@
+# Giới thiệu về Robot Learning
+
+Robot learning bắt đầu với một ý tưởng đơn giản: dạy robot cải thiện từ dữ liệu và kinh nghiệm thay vì lập trình sẵn mọi hành vi. Trong thực tế, điều đó có nghĩa là sử dụng các ví dụ (video, dữ liệu cảm biến, minh họa) và phản hồi để giúp robot thực hiện tốt hơn các tác vụ như nhặt, đặt, đẩy hoặc đi lại.
+
+Tại sao bây giờ? Hai xu hướng khiến điều này khả thi: học máy hiện đại ngày càng giỏi tìm ra các mẫu phức tạp, và các bộ dữ liệu robotics đang trở nên dễ thu thập và chia sẻ hơn. Cùng nhau, chúng cho phép ta chuyển từ phương pháp cổ điển "viết vật lý và bộ điều khiển" sang các phương pháp dựa trên học máy thích ứng từ dữ liệu.
+
+Ví dụ, một cánh tay robot có thể học cách cầm nắm khối bằng cách thử hành động và nhận phần thưởng cho tiến bộ (reinforcement learning - học tăng cường), hoặc thậm chí bằng cách quan sát và bắt chước thao tác của con người (imitation learning - học bắt chước). Theo thời gian, cùng ý tưởng này có thể mở rộng cho nhiều tác vụ và cả các dạng robot khác nhau.
+
+> [!TIP]
+> Kết thúc chương này, bạn sẽ:
+> - Hiểu đơn giản "robot learning" là gì và tại sao nó hữu ích
+> - Xem ví dụ cụ thể về học từ minh họa và thử-sai
+> - Biết chúng ta sẽ xây dựng gì trong các chương tiếp theo và LeRobot đóng vai trò gì
+
+# Một chút lịch sử
+
+Robotics giúp con người thực hiện các tác vụ lặp lại, mệt mỏi hoặc nguy hiểm. Chúng ta đã nghiên cứu thách thức này từ thập niên 1950. Gần đây, tiến bộ trong học máy mở ra cách tiếp cận mới để chế tạo robot. Thay vì yêu cầu chuyên gia viết hướng dẫn chi tiết và mô hình cho mọi tác vụ, giờ đây ta có thể sử dụng lượng lớn dữ liệu và điện toán để giúp robot tự học hành vi.
+
+> [!TIP]
+> Bối cảnh...
+>
+> Thập niên 1950 chứng kiến sự ra đời của cả trí tuệ nhân tạo (AI) và robotics như những lĩnh vực riêng biệt. Robot đầu tiên là [Unimate](https://en.wikipedia.org/wiki/Unimate), phát minh năm 1961. Phải mất gần 70 năm để các lĩnh vực này hội tụ theo cách ý nghĩa thông qua robot learning!
+
+# Tương lai của Ngành Robotics
+
+Các nhà nghiên cứu robotics hiện nay đang chuyển hướng khỏi phương pháp truyền thống là viết mô hình chi tiết và hệ thống điều khiển. Thay vào đó, họ ứng dụng học máy để tạo robot có thể:
+
+- Học kết nối trực tiếp từ những gì chúng nhìn thấy đến những gì chúng làm, mà không cần hệ thống riêng biệt cho cảm biến và điều khiển.
+- Trích xuất thông tin hữu ích từ nhiều loại cảm biến (camera, cảm biến cảm ứng, micro) bằng cách sử dụng phương pháp dựa trên dữ liệu.
+- Làm việc hiệu quả mà không cần có mô hình hoàn hảo về cách thế giới hoạt động.
+- Tận dụng số lượng ngày càng tăng của các bộ dữ liệu robotics mở cho phép bất kỳ ai cũng có thể truy cập và học từ đó.
+- Làm việc hiệu quả mà không cần có mô hình hoàn hảo về cách thế giới hoạt động.
+
+Bạn có thể xem [video này](https://www.youtube.com/watch?v=VEs1QYEgOQo) để hiểu rõ hơn về sự chuyển đổi thời gian hiện tại trong robotics.
+
+> [!WARNING]
+> **Ý tưởng chính:** Sự chuyển đổi này biểu thị sự thay đổi cơ bản về cách chúng ta nghĩ về robotics - từ việc thiết kế giải pháp chính xác đến việc học hành vi thích ứng từ dữ liệu.
+
+Xu hướng này đặc biệt quan trọng vì nó giống như cách các mô hình nền tảng như GPT và CLIP được phát triển. Các hệ thống học máy, hay còn gọi là trí tuệ nhân tạo, học để hiểu và làm việc với văn bản và hình ảnh bằng cách huấn luyện trên các tập dữ liệu lớn. Khi các tập dữ liệu robotics ngày càng lớn và robot được trang bị thêm nhiều cảm biến khác nhau (camera thông thường, camera infrared, LIDAR, micro), áp dụng các phương pháp học tương tự vào robotics trở nên càng mạnh mẽ hơn.
+
+Robotics tự nhiên yêu cầu kiến thức về cả phần mềm và phần cứng. Thêm học máy vào đó có nghĩa là các nhà nghiên cứu và ứng dụng robotics cần một tập hợp kỹ năng rộng hơn, điều này làm tăng mức độ cho cả nghiên cứu và ứng dụng thực tế.
+
+## Tham khảo
+
+Để xem danh sách đầy đủ các tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **ALVINN: An Autonomous Land Vehicle in a Neural Network** (1988)
+ Dean A. Pomerleau
+ Bài báo này giới thiệu một trong những demo đầu tiên về học end-to-end cho tự lái xe tự hành, trong đó một mạng nơ-ron học để ánh xạ trực tiếp các đầu vào cảm biến thành các lệnh lái.
+ [Paper](https://proceedings.neurips.cc/paper_files/paper/1988/file/812b4ba287f5ee0bc9d43bbf5bbe87fb-Paper.pdf)
+
+- **Reinforcement Learning: An Introduction** (2018)
+ Richard S. Sutton and Andrew G. Barto
+ Sách giáo khoa cơ bản về học tăng cường, bao gồm các nguyên tắc cơ bản về cách robot học thông qua thử nghiệm và sai sót.
+ [Book Website](http://incompleteideas.net/book/the-book-2nd.html)
\ No newline at end of file
diff --git a/units/vi/unit1/2.mdx b/units/vi/unit1/2.mdx
new file mode 100644
index 0000000..4c8d167
--- /dev/null
+++ b/units/vi/unit1/2.mdx
@@ -0,0 +1,33 @@
+# LeRobot: Thư viện Học Máy Robot Từ Đầu Đến Cuối
+
+
+
+Giờ chúng ta đã tìm hiểu một chút về lịch sử, hãy cùng khám phá thư viện Python chính mà chúng ta sẽ sử dụng xuyên suốt khóa học này: LeRobot.
+
+LeRobot là một thư viện mã nguồn mở dành cho robot do Hugging Face phát triển. Hãy coi nó như một bộ công cụ hoàn chỉnh xử lý mọi thứ từ việc điều khiển robot thực đến huấn luyện các thuật toán học máy tiên tiến, tất cả trong một nơi sử dụng PyTorch.
+
+Điều làm cho LeRobot đặc biệt là nó được "tích hợp theo chiều dọc". Điều này có nghĩa là nó cung cấp một cách thống nhất để làm việc với robot thực, xử lý dữ liệu đa phương thức phức tạp (như kết hợp luồng camera với dữ liệu cảm biến) và tích hợp liền mạch với các công cụ PyTorch và Hugging Face mà bạn có thể đã biết. Về cơ bản, LeRobot hướng tới trở thành thư viện một cửa cho các dự án học máy robot.
+
+> [!TIP]
+> **Robot được hỗ trợ:** LeRobot hiện hỗ trợ các nền tảng dễ tiếp cận như **SO-100/SO-101** (cánh tay có thể in 3D) và **ALOHA/ALOHA-2** (thao tác hai tay). Để xem danh sách cập nhật các nền tảng được hỗ trợ, hãy xem [tài liệu chính thức](https://huggingface.co/docs/lerobot).
+
+Một lợi thế chính là LeRobot sử dụng cách tiếp cận tiêu chuẩn để kết nối với các nền tảng robot khác nhau. Điều này có nghĩa là việc thêm hỗ trợ cho các robot mới yêu cầu ít công việc hơn so với việc bắt đầu từ đầu. Thư viện cũng giới thiệu `LeRobotDataset`, một định dạng đặc biệt cho dữ liệu robotics mà cộng đồng mã nguồn mở đã sử dụng để chia sẻ dữ liệu một cách hiệu quả.
+
+LeRobot bao gồm các triển khai của nhiều thuật toán học máy tiên tiến, tất cả được xây dựng với PyTorch cho hiệu suất. Nó cũng cung cấp các công cụ để chạy thí nghiệm và theo dõi kết quả. Điều quan trọng nhất cho các ứng dụng thực tế là LeRobot tách phần "suy nghĩ" (lập kế hoạch việc gì làm) khỏi phần "làm" (thực hiện hành động). Việc tách này là quan trọng vì nó cho phép robot phản ứng nhanh hơn và thích ứng tốt hơn khi các thứ không diễn ra chính xác như dự kiến.
+
+> [!WARNING]
+> **Ghi chú về hiệu suất:** Stack inference tối ưu của LeRobot là quan trọng cho việc điều khiển robot thực tế, nơi việc trễ của thời gian thậm chí chỉ vài mili giây cũng ảnh hưởng đến hiệu suất. Việc tách phần lập kế hoạch và thực hiện là một điểm đột phá quan trọng.
+
+## Tham khảo
+
+Để xem danh sách đầy đủ các tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **RT-1: Robotics Transformer for Real-World Control at Scale** (2023)
+ Anthony Brohan et al.
+ Bài báo này minh chứng cách áp dụng transformer cho việc điều khiển robot thực tế trên quy mô, cho thấy sức mạnh của việc học từ các tập dữ liệu lớn và đa dạng.
+ [arXiv:2212.06817](https://huggingface.co/papers/2212.06817)
+
+- **Open X-Embodiment: Robotic Learning Datasets and RT-X Models** (2023)
+ Open X-Embodiment Collaboration
+ Một nỗ lực hợp tác nhằm tạo ra các tập dữ liệu robot đa dạng, quy mô lớn trên nhiều phương án thực hiện, chứng minh tầm quan trọng của việc chia sẻ dữ liệu trong việc thúc đẩy quá trình học tập của robot.
+ [arXiv:2310.08864](https://huggingface.co/papers/2310.08864)
\ No newline at end of file
diff --git a/units/vi/unit1/3.mdx b/units/vi/unit1/3.mdx
new file mode 100644
index 0000000..b3591cf
--- /dev/null
+++ b/units/vi/unit1/3.mdx
@@ -0,0 +1,71 @@
+# LeRobotDataset
+
+LeRobotDataset là một định dạng bộ dữ liệu chuẩn hóa được thiết kế để giải quyết các nhu cầu cụ thể của nghiên cứu học máy robot. Trong vài phút tới, bạn sẽ thấy các vấn đề nó giải quyết, cách nó được tổ chức và nơi cần xem đầu tiên khi tải dữ liệu.
+
+Định dạng này cung cấp quyền truy cập thống nhất, thuận tiện vào dữ liệu robot đa phương thức, bao gồm dữ liệu cảm biến-vận động, nhiều luồng camera và trạng thái điều khiển từ xa. LeRobotDataset cũng lưu trữ thông tin chung về dữ liệu được thu thập, bao gồm mô tả nhiệm vụ dạng văn bản, loại robot được sử dụng và các chi tiết đo lường như khung hình trên giây cho cả luồng hình ảnh và trạng thái robot, cùng với loại camera được sử dụng, độ phân giải và tốc độ khung hình.
+
+> [!TIP]
+> **Tại sao cần định dạng chuyên biệt?** Các bộ dữ liệu học máy truyền thống (như ImageNet) rất đơn giản: một hình ảnh, một nhãn. Dữ liệu robot phức tạp hơn nhiều:
+> - **Đa phương thức**: Hình ảnh + dữ liệu cảm biến + hành động, tất cả đồng bộ hóa
+> - **Thời gian**: Cả quan sát và hành động đều được ghi lại theo thời gian, theo trình tự tuần tự
+> - **Theo tập**: Dữ liệu được tổ chức thành các quỹ đạo/tập
+> - **Chiều cao**: Nhiều góc nhìn camera (tức nhiều hình ảnh), trạng thái khớp, lực, v.v.
+>
+> LeRobotDataset xử lý mọi độ phức tạp này một cách liền mạch!
+
+LeRobotDataset cung cấp giao diện thống nhất để xử lý dữ liệu đa phương thức theo chuỗi thời gian và tích hợp liền mạch với hệ sinh thái PyTorch và Hugging Face.
+
+Nó có thể mở rộng và tùy chỉnh, đồng thời đã hỗ trợ dữ liệu mở sẵn trên nhiều nền tảng khác nhau trong LeRobot, từ nền tảng thao tác như SO-100 và ALOHA-2 đến cánh tay người máy, bộ dữ liệu dựa trên mô phỏng và cả lái xe tự hành.
+
+Định dạng được xây dựng để hiệu quả cho huấn luyện và đủ linh hoạt để chứa các loại dữ liệu đa dạng, đồng thời thúc đẩy khả năng tái tạo và dễ sử dụng.
+
+
+
+## Thiết kế Lớp Dataset
+
+Bạn có thể đọc thêm về các lựa chọn thiết kế đằng sau lớp dataset của chúng ta [tại đây](https://huggingface.co/blog/lerobot-datasets-v3).
+Một lựa chọn thiết kế cốt lõi của LeRobotDataset là tách biệt lưu trữ dữ liệu nền tảng khỏi giao diện người dùng. Điều này cho phép lưu trữ hiệu quả trong khi vẫn trình bày dữ liệu ở định dạng trực quan, sẵn sàng sử dụng.
+
+Hãy coi nó như hai lớp: bố cục trên đĩa gọn nhẹ để tối ưu tốc độ và quy mô, và giao diện Python sạch sẽ tạo ra tensor sẵn sàng huấn luyện.
+
+Các bộ dữ liệu luôn được tổ chức thành ba thành phần chính:
+
+- **Dữ liệu dạng bảng**: Dữ liệu tần số cao, chiều thấp như trạng thái khớp và hành động được lưu trong các tệp bộ nhớ ánh xạ hiệu quả, thường được chuyển sang thư viện `datasets` trưởng thành hơn của Hugging Face, cung cấp tốc độ cao với mức tiêu thụ bộ nhớ hạn chế.
+- **Dữ liệu hình ảnh**: Để xử lý khối lượng lớn dữ liệu camera, các khung hình được nối và mã hóa thành tệp MP4. Các khung hình từ cùng một tập luôn được nhóm chung vào một video, và nhiều video được nhóm theo camera. Để giảm tải cho hệ thống tệp, các nhóm video cho cùng một góc nhìn camera cũng được chia thành nhiều thư mục con.
+- **Metadata**: Một tập hợp các tệp JSON mô tả cấu trúc bộ dữ liệu về mặt metadata, đóng vai trò tương quan với cả chiều dữ liệu dạng bảng và hình ảnh. Metadata bao gồm các lược đồ tính năng khác nhau, tốc độ khung hình, thống kê chuẩn hóa và ranh giới tập.
+
+Khi bạn duyệt một bộ dữ liệu trên đĩa, hãy ghi nhớ ba nhóm này - chúng giải thích hầu hết mọi thứ bạn sẽ thấy.
+
+Để mở rộng quy mô và hỗ trợ các bộ dữ liệu có hàng triệu quỹ đạo (dẫn đến hàng trăm triệu hoặc tỷ khung hình camera riêng lẻ), chúng ta hợp nhất dữ liệu từ các tập khác nhau vào cùng một cấu trúc cấp cao.
+
+Cụ thể, một tệp dữ liệu duy nhất (lưu bằng tệp parquet) hoặc bản ghi (lưu ở định dạng MP4) thường chứa nhiều tập. Điều này giới hạn số lượng tệp và tăng tốc I/O. Sự đánh đổi là metadata trở thành "bản đồ" cho biết mỗi tập bắt đầu và kết thúc ở đâu. Đến lượt nó, metadata có chức năng "tương quan" hơn nhiều, tương tự như cách trong cơ sở dữ liệu quan hệ, các khóa chung cho phép truy xuất thông tin từ nhiều bảng.
+
+Cấu trúc ví dụ cho một LeRobotDataset sẽ xuất hiện như sau:
+
+- `meta/info.json`: Metadata này là tệp metadata trung tâm. Nó chứa lược đồ bộ dữ liệu đầy đủ, định nghĩa mọi tính năng (ví dụ: `observation.state`, `action`), hình dạng và kiểu dữ liệu của chúng. Nó cũng lưu thông tin quan trọng như khung hình trên giây (`fps`) của bộ dữ liệu, phiên bản LeRobot tại thời điểm thu thập và mẫu đường dẫn dùng để định vị tệp dữ liệu và video.
+- `meta/stats.json`: Tệp này lưu thống kê tổng hợp (trung bình, std, min, max) cho mỗi tính năng trên toàn bộ bộ dữ liệu, được sử dụng để chuẩn hóa dữ liệu cho hầu hết các mô hình chính và có thể truy cập từ bên ngoài thông qua `dataset.meta.stats`.
+- `meta/tasks.jsonl`: Tệp này chứa bản định nghĩa từ ngữ tự nhiên đến chỉ số nhiệm vụ tương ứng, được sử dụng cho huấn luyện chính quyền dựa trên nhiệm vụ.
+- `meta/episodes/*`: Thư mục này chứa metadata về mỗi tập riêng lẻ, chẳng hạn như độ dài, nhiệm vụ tương ứng và con trỏ đến nơi dữ liệu của nó được lưu trữ trong các tệp của bộ dữ liệu. Để mở rộng quy mô, thông tin này được lưu trữ trong các tệp thay vì một tệp JSON lớn.
+- `data/*`: Chứa dữ liệu nhật ký dạng bảng cơ bản, sử dụng tệp parquet để cho phép truy cập nhanh chóng, ánh xạ bộ nhớ. Để cải thiện hiệu suất và xử lý bộ dữ liệu lớn, dữ liệu từ nhiều tập được nối vào các tệp lớn hơn. Các tệp này được tổ chức thành các thư mục con theo chủ đề để giữ cho kích thước thư mục quản lý được. Một tệp duy nhất thường chứa dữ liệu cho nhiều tập riêng lẻ.
+- `videos/*`: Chứa các tệp video MP4 cho tất cả các luồng quan sát hình ảnh. Tương tự như thư mục `data/`, video từ nhiều tập được nối vào các tệp MP4 duy nhất. Chiến lược này giảm số lượng tệp trong bộ dữ liệu, hiệu quả hơn cho hệ thống tệp hiện đại.
+
+Hướng dẫn đọc: bắt đầu với `meta/info.json` để hiểu lược đồ và fps; sau đó kiểm tra `meta/stats.json` để chuẩn hóa; cuối cùng, xem một tệp trong `data/` và `videos/` để nối các dấu chấm.
+
+> [!TIP]
+> **Hiệu suất lưu trữ:** Bằng cách nối các tập vào các tệp lớn hơn, LeRobotDataset tránh vấn đề "small files problem" có thể làm chậm hệ thống tệp. Một bộ dữ liệu với 1 triệu tập có thể chỉ có vài trăm tệp thực tế trên đĩa!
+>
+> **Mẹo thực hành:** Các tệp metadata hoạt động như một chỉ mục cơ sở dữ liệu, cho phép truy cập nhanh chóng đến các tập riêng lẻ mà không cần tải toàn bộ tệp video.
+
+## Tham khảo
+
+Để xem danh sách đầy đủ các tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **Implicit Behavioral Cloning** (2022)
+ Pete Florence et al.
+ Bài báo này giới thiệu mô hình dựa trên năng lượng cho việc học hành vi, chứng minh cách mô hình ẩn không gian hành động nhiều hơn mô hình rõ ràng—một yếu tố quan trọng khi thiết kế định dạng dữ liệu cho học máy robot.
+ [Paper (CoRL 2022)](https://proceedings.mlr.press/v164/florence22a.html)
+
+- **A Dataset for Interactive Vision-Language Navigation with Unknown Command Feasibility** (2022)
+ Various Authors
+ Bài báo này giới thiệu một ví dụ về cách định dạng dữ liệu đặc biệt cho phép khả năng mới trong học máy robot, đặc biệt là việc xử lý dữ liệu đa phương thức và cấu trúc tập theo chuỗi thời gian.
+ [arXiv:2202.02312](https://huggingface.co/papers/2202.02312)
\ No newline at end of file
diff --git a/units/vi/unit1/4.mdx b/units/vi/unit1/4.mdx
new file mode 100644
index 0000000..aee6c50
--- /dev/null
+++ b/units/vi/unit1/4.mdx
@@ -0,0 +1,466 @@
+# Ví dụ về mã: Bộ dữ liệu trong thực tế
+
+Phần này sẽ hướng dẫn bạn cách làm việc với các bộ dữ liệu robotics từ Hugging Face bằng cách sử dụng lớp LeRobotDataset. Chúng ta sẽ bắt đầu với các ví dụ đơn giản và dần dần thêm độ phức tạp, để bạn có thể sao chép và điều chỉnh cách tiếp cận phù hợp nhất với dự án của mình.
+
+Điều quan trọng cần hiểu là bất kỳ bộ dữ liệu nào trên Hub tuân theo định dạng của LeRobot (với dữ liệu dạng bảng, dữ liệu hình ảnh và siêu dữ liệu đi kèm) đều có thể được tải chỉ với một dòng mã.
+
+Khi làm việc với dữ liệu robotics, bạn thường cần xem xét nhiều bước thời gian cùng một lúc thay vì từng điểm dữ liệu riêng lẻ. Tại sao? Vì hầu hết các thuật toán học robot cần thấy mọi thứ thay đổi theo thời gian như thế nào. Ví dụ, để nhặt một vật thể, robot có thể cần xem những gì đã xảy ra trong vài khoảnh khắc trước đó để hiểu rõ hơn tình hình hiện tại. Tương tự, nhiều thuật toán hoạt động tốt hơn khi chúng có thể lên kế hoạch cho một số hành động tiếp theo thay vì chỉ quyết định phải làm gì ngay lúc này.
+
+LeRobotDataset giúp việc này trở nên dễ dàng với "cửa sổ thời gian". Bạn chỉ cần khai báo các độ lệch thời gian mong muốn (ví dụ: khung hình hiện tại cộng với hai khung hình trước đó), và nó tự động xử lý sự phức tạp của việc lấy các khung hình đó, ngay cả khi một số khung có thể bị thiếu ở đầu hoặc cuối một tập.
+
+
+
+> [!TIP]
+> **Giải thích về Cửa sổ Thời gian:**
+> - **Lịch sử quan sát**: `[-0.2, -0.1, 0.0]` cung cấp cho bạn các quan sát tại 200ms, 100ms trước và hiện tại
+> - **Chuỗi hành động**: `[0.0, 0.1, 0.2]` cung cấp hành động hiện tại và 2 hành động tiếp theo (cách nhau 100ms)
+> - **Tự động đệm**: Các khung hình bị thiếu ở ranh giới tập được xử lý tự động. Bộ dữ liệu luôn trả về đúng số khung hình được yêu cầu, và nó áp dụng đệm khi cần thiết.
+> - **Bao gồm mặt nạ**: Biết được khung hình nào là thực và khung hình nào được đệm để huấn luyện đúng cách
+
+Một cách tiện lợi, bằng cách sử dụng LeRobotDataset với `DataLoader` của PyTorch, ta có thể tự động kết hợp các từ điển mẫu riêng lẻ từ bộ dữ liệu thành một từ điển duy nhất chứa các tensor đã gộp lô để huấn luyện hoặc suy luận tiếp theo. LeRobotDataset cũng hỗ trợ sẵn chế độ streaming cho bộ dữ liệu. Người dùng có thể stream dữ liệu từ một bộ dữ liệu lớn được lưu trữ trên Hugging Face Hub, chỉ với một dòng thay đổi trong mã triển khai. Các bộ dữ liệu streaming hỗ trợ xử lý hàng loạt hiệu suất cao (khoảng 80-100 it/s, tùy thuộc vào kết nối) và mức độ ngẫu nhiên hóa khung hình cao, những tính năng quan trọng cho các thuật toán BC thực tế mà nếu không có thì có thể chậm hoặc hoạt động trên dữ liệu không i.i.d. Tính năng này được thiết kế để cải thiện khả năng tiếp cận sao cho người dùng có thể xử lý các bộ dữ liệu lớn mà không cần lượng lớn bộ nhớ và dung lượng lưu trữ.
+
+Dưới đây là các cách khác nhau để thiết lập cửa sổ thời gian tùy thuộc vào trường hợp sử dụng của bạn. Hãy xem lướt qua các tùy chọn và chọn một để bắt đầu - việc chuyển đổi sau này chỉ là thay đổi từ điển.
+
+
+
+
+**Mô phỏng Hành vi Cơ bản** (học hành động hiện tại từ quan sát hiện tại):
+
+```python
+# Đơn giản: quan sát hiện tại → hành động hiện tại
+delta_timestamps = {
+ "observation.images.wrist_camera": [0.0], # Chỉ khung hình hiện tại
+ "action": [0.0] # Chỉ hành động hiện tại
+}
+
+dataset = LeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+)
+```
+
+
+
+
+**Mô phỏng Hành vi dựa trên Lịch sử** (sử dụng lịch sử quan sát để đưa ra quyết định tốt hơn):
+
+```python
+# Sử dụng lịch sử quan sát để có ngữ cảnh
+delta_timestamps = {
+ "observation.images.wrist_camera": [-0.2, -0.1, 0.0], # Lịch sử 200ms
+ "action": [0.0] # Hành động hiện tại
+}
+
+dataset = LeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+)
+
+sample = dataset[100]
+# Hình ảnh có kích thước: [3, C, H, W] - 3 khung hình lịch sử
+# Hành động có kích thước: [action_dim] - một hành động hiện tại
+```
+
+
+
+
+**Chia nhỏ Hành động** (dự đoán chuỗi hành động để kiểm soát mượt mà hơn):
+
+```python
+# Dự đoán nhiều hành động tương lai cùng một lúc
+delta_timestamps = {
+ "observation.images.wrist_camera": [-0.1, 0.0], # Gần đây + hiện tại
+ "action": [0.0, 0.1, 0.2, 0.3] # Hiện tại + 3 hành động tương lai
+}
+
+dataset = LeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+)
+
+sample = dataset[100]
+# Hình ảnh có kích thước: [2, C, H, W] - 2 khung quan sát
+# Hành động có kích thước: [4, action_dim] - 4 dự đoán hành động
+```
+
+
+
+
+### Truyền phát các bộ dữ liệu lớn
+
+> [!TIP]
+> **Khi nào nên sử dụng truyền phát:**
+> - **Bộ dữ liệu > khả năng lưu trữ** - Truyền các bộ dữ liệu không tương thích với khả năng lưu trữ của bạn
+> - **Thí nghiệm** - Thử nghiệm nhanh với các bộ dữ liệu khác nhau mà không cần tải xuống
+> - **Huấn luyện trên đám mây** - Giảm thời gian khởi động bằng cách truyền từ Hub của Hugging Face
+> - **Kết nối internet ổn định** - Cần kết nối internet ổn định trong suốt quá trình huấn luyện
+>
+> **Hiệu suất:** Truyền phát đạt 80-100 it/s với kết nối tốt! Điều này (trung bình) tương đương với các bộ dữ liệu được lưu trữ cục bộ, bỏ qua chi phí khởi động.
+
+
+
+
+**Tải xuống Bộ dữ liệu** (huấn luyện nhanh hơn, cần không gian lưu trữ):
+
+```python
+from lerobot.datasets.lerobot_dataset import LeRobotDataset
+
+# Tải xuống bộ dữ liệu vào cache cục bộ
+dataset = LeRobotDataset("lerobot/svla_so101_pickplace")
+
+# Truy cập nhanh sau khi tải xuống
+sample = dataset[100]
+```
+
+
+
+
+**Truyền phát Bộ dữ liệu** (không cần không gian lưu trữ, cần kết nối internet):
+
+```python
+from lerobot.datasets.streaming_dataset import StreamingLeRobotDataset
+
+# Truyền dữ liệu mà không cần tải xuống
+streaming_dataset = StreamingLeRobotDataset(
+ "lerobot/svla_so101_pickplace",
+ delta_timestamps=delta_timestamps
+)
+
+# Hoạt động giống như bộ dữ liệu thông thường
+sample = streaming_dataset[100]
+```
+
+
+
+
+## Tích hợp Huấn luyện
+
+Bạn có thể dễ dàng tích hợp các bộ dữ liệu thông thường và streaming với các loader dữ liệu PyTorch. Điều này giúp việc tích hợp bất kỳ LeRobotDataset nào với bạn (`torch`) huấn luyện vòng lặp đơn giản. Vì chúng ta lấy tất cả các khung hình từ các bộ dữ liệu dưới dạng tensor, việc lặp lại qua một bộ dữ liệu với huấn luyện trở nên rất tiện lợi.
+
+### PyTorch DataLoader
+Bạn có thể dễ dàng tích hợp các bộ dữ liệu thông thường và streaming với các loader dữ liệu PyTorch. Điều này giúp việc tích hợp bất kỳ LeRobotDataset nào với bạn (`torch`) huấn luyện vòng lặp đơn giản. Vì chúng ta lấy tất cả các khung hình từ các bộ dữ liệu dưới dạng tensor, việc lặp lại qua một bộ dữ liệu với huấn luyện trở nên rất tiện lợi.
+```python
+import torch
+from torch.utils.data import DataLoader
+# Tạo DataLoader cho huấn luyện
+dataloader = DataLoader(
+ dataset,
+ batch_size=16,
+ shuffle=True,
+ num_workers=4
+)
+
+# Vòng lặp huấn luyện
+device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+
+for batch in dataloader:
+ # Di chuyển đến thiết bị
+ observations = batch["observation.state"].to(device)
+ actions = batch["action"].to(device)
+ images = batch["observation.images.wrist_camera"].to(device)
+
+ # Huấn luyện mô hình ở đây
+ # loss = model(observations, images, actions)
+ # loss.backward()
+ # optimizer.step()
+```
+
+## Tại Sao Điều Này Quan Trọng
+
+API đơn giản này ẩn chứa độ phức tạp đáng kể:
+- ✅ **Đồng bộ hóa đa phương thức** - Hình ảnh và cảm biến được căn chỉnh hoàn hảo
+- ✅ **Lưu trữ hiệu quả** - Video nén, mảng ánh xạ bộ nhớ
+- ✅ **Xử lý thời gian** - Truy cập dễ dàng vào chuỗi quan sát/hành động
+- ✅ **Khả năng mở rộng** - Cùng mã nguồn hoạt động cho cả bộ dữ liệu nhỏ và khổng lồ
+
+So sánh với cách xử lý dữ liệu robot truyền thống thường yêu cầu:
+- Bộ phân tích tùy chỉnh cho mỗi định dạng dữ liệu
+- Đồng bộ hóa thủ công giữa các phương thức
+- Bộ đệm phức tạp cho cửa sổ thời gian
+- Mã tải riêng biệt cho từng nền tảng
+
+LeRobotDataset **chuẩn hóa và đơn giản hóa** tất cả những điều này!
+
+
+
+## Bài Kiểm tra Phần
+
+Kiểm tra hiểu biết của bạn về LeRobot và vai trò của nó trong robot learning:
+
+### 1. Điều gì khiến LeRobot khác biệt so với thư viện robot truyền thống?
+
+
+
+### 2. Đâu KHÔNG phải là thành phần chính trong cách tiếp cận của LeRobot?
+
+
+
+### 3. Lợi thế chính của ngăn xếp suy luận tối ưu hóa của LeRobot là gì?
+
+
+
+### 4. LeRobot hỗ trợ những loại nền tảng robot nào?
+
+
+
+### 5. "Tích hợp end-to-end với hệ sinh thái robot" trong ngữ cảnh LeRobot nghĩa là gì?
+
+
+
+### 6. Mục đích chính của tham số `delta_timestamps` trong LeRobotDataset là gì?
+
+
+
+### 7. Ba thành phần chính của LeRobotDataset được mô tả tốt nhất bởi phát biểu nào sau đây?
+
+
+
+### 8. Điều gì xảy ra khi bạn dùng `StreamingLeRobotDataset` thay vì `LeRobotDataset`?
+
+
+
+### 9. Trong bối cảnh robot learning, "temporal windowing" (cửa sổ thời gian) đề cập đến điều gì?
+
+
+
+### 10. Lợi thế chính của cách tiếp cận lưu trữ dữ liệu video trong LeRobotDataset là gì?
+
+
+
+### 11. Phát biểu nào về tính tương thích của LeRobotDataset là chính xác?
+
+
+
+## Tài liệu tham khảo
+
+Để xem danh sách đầy đủ các tài liệu tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **Diffusion Policy: Visuomotor Policy Learning via Action Diffusion** (2024)
+ Cheng Chi et al.
+ Bài báo này giới thiệu mô hình khuếch tán (diffusion models) cho việc học chính sách robot và thảo luận cách sử dụng cửa sổ thời gian (temporal windowing) và phân đoạn hành động (action chunking) để kích hoạt điều khiển thị giác-vận động mượt mà.
+ [arXiv:2303.04137](https://huggingface.co/papers/2303.04137)
+
+- **RT-2: Vision-Language-Action Models Transfer Web Knowledge to Robotic Control** (2023)
+ Anthony Brohan et al.
+ Minh chứng cách các mô hình thị giác-ngôn ngữ có thể được tinh chỉnh cho điều khiển robot, bao gồm thảo luận về cửa sổ ngữ cảnh thời gian (temporal context windows) và tầm nhìn dự đoán hành động (action prediction horizons).
+ [arXiv:2307.15818](https://huggingface.co/papers/2307.15818)
\ No newline at end of file
diff --git a/units/vi/unit2/1.mdx b/units/vi/unit2/1.mdx
new file mode 100644
index 0000000..40ed723
--- /dev/null
+++ b/units/vi/unit2/1.mdx
@@ -0,0 +1,183 @@
+# Robot Cổ điển
+
+Trong phần này, chúng ta sẽ xây dựng nền tảng về robot cổ điển để giúp bạn hiểu tại sao các phương pháp dựa trên học máy lại mạnh mẽ đến vậy.
+
+Chúng ta sẽ bắt đầu bằng cách khám phá cách robot tạo ra chuyển động, xem xét các loại chuyển động robot phổ biến, và làm việc qua một ví dụ cụ thể trước khi thảo luận về những hạn chế thúc đẩy các phương pháp hiện đại.
+
+> [!TIP]
+> ## Điểm chính
+>
+> Các phương pháp robot dựa trên học máy giải quyết những thách thức cơ bản mà phương pháp truyền thống gặp khó khăn.
+>
+> Robot hiện đại cần các phương pháp có thể hoạt động trên nhiều tác vụ và loại robot khác nhau, cho phép một cách tiếp cận hoạt động hiệu quả trong nhiều tình huống thay vì yêu cầu giải pháp tùy chỉnh cho từng vấn đề. Chúng ta cũng cần giảm sự phụ thuộc vào chuyên gia con người - những người tự thiết kế quy tắc và mô hình cho mọi tình huống. Cuối cùng, lĩnh vực này cần các cách tiếp cận có thể tận dụng bộ sưu tập dữ liệu robot đang phát triển nhanh chóng, học hỏi từ tri thức tập thể được ghi lại trong các bộ dữ liệu quy mô lớn này.
+
+## Các Cách Tiếp Cận Khác Nhau Để Tạo Chuyển Động Robot
+
+Hãy bắt đầu với bức tranh tổng thể: các cách tiếp cận khác nhau khiến robot di chuyển như thế nào?
+
+
+
+Các phương pháp khác nhau để tạo chuyển động robot có thể được nhóm dựa trên việc chúng sử dụng mô hình toán học tường minh hay học các mẫu ẩn từ dữ liệu.
+
+Đây chỉ là tổng quan về các phương pháp tạo chuyển động khác nhau và rõ ràng là chưa đầy đủ. Tuy nhiên, nó cung cấp kiến thức cơ bản tốt về các cách tiếp cận phổ biến nhất trong bối cảnh này. Nhóm quan trọng nhất cho đến nay phụ thuộc vào việc các phương pháp khác nhau mô hình hóa tương tác robot-môi trường một cách tường minh (_dựa trên động lực học_) hay ẩn (_dựa trên học máy_).
+
+Hơn nữa, kiến thức về kỹ thuật cơ khí, điện, phần mềm, cũng như cơ học vật rắn và lý thuyết điều khiển đã được chứng minh là thiết yếu trong robot kể từ khi lĩnh vực này lần đầu tiên phát triển vào những năm 1950. Gần đây, Học máy (ML) cũng tỏ ra hiệu quả trong robot, bổ sung cho các lĩnh vực truyền thống hơn này.
+
+Là hệ quả trực tiếp của bản chất đa ngành (ít nhất là kết hợp phần cứng và phần mềm), robot đã phát triển thành một loạt các phương pháp, tất cả đều hướng đến mục đích chính là **tạo ra chuyển động nhân tạo trong thế giới vật lý**.
+
+
+
+Trong phần này, mục tiêu của chúng ta là giới thiệu nơi các phương pháp cổ điển vượt trội, nơi chúng gặp khó khăn và tại sao các **cách tiếp cận dựa trên học máy** lại hữu ích.
+
+> [!TIP]
+> **Mô hình Tường minh vs Ẩn:**
+>
+> **Cách tiếp cận Ẩn (dựa trên học máy)** áp dụng chiến lược cơ bản khác bằng cách học các mẫu trực tiếp từ dữ liệu thay vì yêu cầu mô hình toán học tường minh. Các phương pháp này yêu cầu ít kỹ thuật chuyên ngành hơn và có thể thích ứng với môi trường phức tạp, không chắc chắn mà khó có thể mô hình hóa bằng phân tích. Mạng nơ-ron và thuật toán học tăng cường là những ví dụ điển hình của cách tiếp cận này.
+>
+> **Cách tiếp cận Tường minh (dựa trên động lực học)** dựa vào các mô hình toán học thủ công về vật lý và yêu cầu chuyên môn sâu về lĩnh vực để triển khai hiệu quả. Các phương pháp này hoạt động đặc biệt tốt cho các kịch bản được hiểu rõ, kiểm soát được nơi vật lý có thể được mô hình hóa chính xác. Ví dụ cổ điển bao gồm bộ điều khiển PID và hệ thống Điều khiển Dự đoán Mô hình vốn là xương sống của robot công nghiệp trong nhiều thập kỷ.
+>
+> **Cách tiếp cận Lai** đại diện cho một vùng đất trung gian thú vị, kết hợp độ tin cậy của kiến thức vật lý với khả năng thích ứng của hệ thống học. Các phương pháp này sử dụng kiến thức vật lý để hướng dẫn và ràng buộc quá trình học, thường đạt hiệu suất tốt hơn so với từng cách tiếp cận riêng lẻ.
+
+## Các Loại Chuyển Động Khác Nhau
+
+Giờ chúng ta đã nắm được bức tranh tổng thể, hãy xác định vấn đề: robot thường thực hiện những loại chuyển động nào?
+
+
+
+Các loại chuyển động khác nhau đạt được bằng các nền tảng robot có thể rất khác biệt. Từ trái sang phải, trên xuống dưới: ViperX, SO-100, Boston Dynamics' Spot, Open-Duck, 1X's NEO, Boston Dynamics' Atlas. Đây là danh sách ví dụ về các nền tảng robot và (rất) chưa đầy đủ.
+
+Ở mức độ tổng quan, hầu hết hệ thống bạn gặp thuộc một trong ba loại sau. Biết mình thuộc nhóm nào giúp bạn chọn mô hình, bộ dữ liệu và bộ điều khiển phù hợp.
+
+Trong đa số trường hợp, robot tạo ra chuyển động bằng cách kích hoạt các khớp nối các liên kết gần như hoàn toàn cứng nhắc. Sự khác biệt chính giữa các lĩnh vực trọng tâm trong robot học là liệu chuyển động tạo ra có thay đổi trạng thái tuyệt đối của môi trường thông qua tương tác khéo léo, thay đổi trạng thái tương đối của robot so với môi trường thông qua di chuyển, hay kết hợp cả hai khả năng.
+
+**Thao tác** (Manipulation) liên quan đến việc tạo chuyển động để thực hiện hành động tạo ra các thay đổi mong muốn trong môi trường. Những hiệu ứng này thường đạt được *thông qua* robot - ví dụ, cánh tay robot cầm nắm vật thể, lắp ráp linh kiện hoặc sử dụng công cụ. Robot thay đổi thế giới xung quanh trong khi vẫn ở một vị trí cố định.
+
+**Di chuyển** (Locomotion) bao gồm các chuyển động làm thay đổi vị trí vật lý của robot trong môi trường. Loại này gồm cả *di chuyển bánh xe* (như bệ di động và xe tự hành) và *di chuyển chân* (như robot đi bộ và robot bốn chân), tùy thuộc vào cơ chế robot sử dụng để di chuyển.
+
+
+
+> [!TIP]
+> Phân loại nhanh: hỏi "cái gì thay đổi?". Nếu chủ yếu thế giới thay đổi (tư thế/trạng thái vật thể), bạn đang ở lĩnh vực thao tác. Nếu chủ yếu trạng thái robot thay đổi, bạn đang ở lĩnh vực di chuyển. Nếu cả hai thay đổi đáng kể trong nhiệm vụ, bạn đang ở lĩnh vực thao tác di động. Bài kiểm tra đơn giản này giúp ích khi thiết kế quan sát, hành động và đánh giá.
+
+Chúng ta sẽ tái sử dụng phân loại này khi thảo luận về bộ dữ liệu (bạn cần cảm biến gì) và chính sách (bạn dự đoán không gian hành động nào) trong các phần tiếp theo.
+
+## Ví Dụ: Thao Tác Trên Mặt Phẳng
+
+Hãy minh họa các ý tưởng bằng một ví dụ cụ thể, tối giản mà bạn có thể phân tích từng bước.
+
+Bộ thao tác robot thường gồm một chuỗi liên kết và khớp, khớp nối thành chuỗi cuối cùng kết nối với *bộ tác động cuối* (end-effector). Các khớp được kích hoạt có nhiệm vụ tạo chuyển động cho các liên kết, trong khi bộ tác động cuối dùng để thực hiện hành động cụ thể tại vị trí mục tiêu (ví dụ: cầm/nhả vật thể bằng cách đóng/mở gripper, sử dụng công cụ chuyên dụng như tuốc-nơ-vít, v.v.).
+
+Gần đây, sự phát triển của bộ thao tác chi phí thấp như nền tảng ALOHA, ALOHA-2 và SO-100/SO-101 đã giảm đáng kể rào cản gia nhập ngành robot, xét về khả năng tiếp cận tăng lên so với các nền tảng truyền thống như cánh tay Franka Emika Panda.
+
+
+
+Các robot rẻ hơn, dễ tiếp cận hơn đang bắt đầu cạnh tranh với các nền tảng truyền thống như Panda trong các kịch bản hạn chế tài nguyên. Đặc biệt, SO-100 có chi phí chỉ vài trăm Euro, có thể in 3D hoàn toàn trong vài giờ, trong khi cánh tay Panda sản xuất công nghiệp tốn hàng chục nghìn Euro và không có sẵn công khai.
+
+### Động Học Thuận và Động Học Nghịch
+
+
+
+Cánh tay SO-100 được đơn giản hóa thành bộ thao tác 2D mặt phẳng bằng cách hạn chế chuyển động một số khớp.
+
+Xét phiên bản đơn giản hóa của SO-100 nơi ta ngăn một số khớp di chuyển. Điều này giảm độ phức tạp từ 6 bậc tự do xuống chỉ còn 2 (cộng với gripper). Ta có thể điều khiển hai góc θ₁ và θ₂, cùng xác định cấu hình robot: q = [θ₁, θ₂].
+
+
+
+*Tự do chuyển động*
+
+
+
+*Giới hạn bởi bề mặt*
+
+
+
+*Giới hạn bởi bề mặt và chướng ngại vật (cố định)*
+
+Xét ví dụ này, ta có thể viết giải tích vị trí bộ tác động cuối $p \in \mathbb{R}^2$ dưới dạng hàm cấu hình robot $p = p(q)$:
+
+$$p(q) = \begin{pmatrix} l \cos(\theta_1) + l \cos(\theta_1 + \theta_2) \\ l \sin(\theta_1) + l \sin(\theta_1 + \theta_2) \end{pmatrix}$$
+
+**Động học thuận (Forward Kinematics - FK)** ánh xạ cấu hình robot sang tư thế bộ tác động cuối tương ứng, trong khi **Động học nghịch (Inverse Kinematics - IK)** dùng để tái cấu trúc cấu hình từ tư thế bộ tác động cuối cho trước.
+
+Trong trường hợp đơn giản này, ta có thể giải bài toán điều khiển vị trí bộ tác động cuối tới mục tiêu $p^*$ bằng cách giải giải tích $q: p(q) = p^*$. Tuy nhiên, trong trường hợp tổng quát, ta thường không thể giải giải tích mà phải dùng phương pháp tối ưu lặp:
+
+$$\min_{q \in \mathcal{Q}} \|p(q) - p^*\|_2^2$$
+
+Giải pháp giải tích chính xác cho IK càng kém khả thi khi xét tới sự hiện diện của chướng ngại vật trong không gian làm việc, tạo ra các ràng buộc lên giá trị khả dĩ của $q$.
+
+> [!TIP]
+> Nếu công thức toán có vẻ dày đặc, hãy tập trung vào ánh xạ: FK trả lời "tay ở đâu khi biết khớp?", IK hỏi "khớp nào giúp tay tới vị trí đó?". Phần còn lại của chương sẽ giải thích tại sao hướng tiếp cận IK trở nên khó khăn trong bối cảnh thực tế.
+
+### Động học nghịch vi phân
+
+Khi IK khó giải trực tiếp, ta thường tiến triển bằng cách làm việc với chuyển động nhỏ (vận tốc) thay vì vị trí tuyệt đối.
+
+Gọi $J(q)$ là ma trận Jacobian chứa đạo hàm riêng của hàm FK. Áp dụng quy tắc dây chuyền cho $p(q)$ bất kỳ, ta có $\dot{p} = J(q) \dot{q}$, liên hệ biến thiên cấu hình robot với biến thiên tư thế.
+
+Với quỹ đạo bộ tác động cuối mong muốn, động học nghịch vi phân tìm $\dot{q}(t)$ giải quyết *vận tốc* khớp thay vì *cấu hình*:
+
+$$\dot{q}(t) = \arg\min_\nu \|J(q(t)) \nu - \dot{p}^*(t)\|_2^2$$
+
+Phương pháp này thường có nghiệm dạng đóng $\dot{q} = J(q)^+ \dot{p}^*$, với $J^+(q)$ là giả nghịch đảo Moore-Penrose của $J(q)$.
+
+
+
+### Bổ sung vòng phản hồi
+
+
+
+Dù hiệu quả khi quỹ đạo mục tiêu được xác định rõ, hiệu suất động học nghịch vi phân có thể suy giảm đáng kể do sai số mô hình/bám, hoặc động lực học không được mô hình hóa trong môi trường.
+
+Để giảm thiểu ảnh hưởng của sai số mô hình, nhiễu cảm biến và nhiễu loạn khác, các pipeline cổ điển thực sự tăng cường động học nghịch vi phân bằng điều khiển phản hồi vòng kín. Trong thực tế, bám theo quỹ đạo với vòng phản hồi kín có thể bao gồm việc truyền ngược sai số giữa tư thế mục tiêu và đo được $\Delta p = p^* - p(q)$, từ đó điều chỉnh tín hiệu điều khiển thành $\dot{q} = J(q)^+ (\dot{p}^* + k_p \Delta p)$, với $k_p$ là hệ số khuếch đại (tỷ lệ).
+
+Các kỹ thuật điều khiển nâng cao hơn như tuyến tính hóa phản hồi, điều khiển PID, Bộ điều chỉnh bậc hai tuyến tính (LQR) hay Điều khiển dự báo mô hình (MPC) có thể được sử dụng để ổn định bám và loại bỏ nhiễu loạn vừa phải.
+
+
+
+## Hạn chế của robot học dựa trên động lực học
+
+Điều này dẫn tới câu hỏi "vậy thì sao?": các công cụ cổ điển gặp khó khăn gì trong thực tế, và tại sao điều đó thúc đẩy học máy?
+
+Dù đã có hơn 60 năm nghiên cứu robot, hệ thống tự hành vẫn chưa thể thực hiện tác vụ ở mức độ con người trong thế giới vật lý, tổng quát hóa qua (1) các hiện thực robot khác nhau (cánh tay thao tác, nền tảng di chuyển,...) và (2) tác vụ đa dạng (buộc dây giày, thao tác nhiều vật thể).
+
+
+
+Các phương pháp robot dựa trên động lực học gặp phải một số hạn chế: (1) việc điều phối nhiều thành phần tạo ra thách thức tích hợp; (2) nhu cầu phát triển các pipeline xử lý tùy chỉnh cho các phương thức cảm biến và nhiệm vụ được xem xét cản trở khả năng mở rộng; (3) các mô hình phân tích đơn giản hóa của các hiện tượng vật lý hạn chế hiệu suất trong thế giới thực. Cuối cùng, (4) các phương pháp dựa trên động lực học bỏ qua các xu hướng về tính sẵn có và sự phát triển của dữ liệu robot.
+
+### Những hạn chế chính
+
+**1. Thách thức tích hợp**
+Các pipeline robot dựa trên động lực học trong lịch sử đã được **phát triển tuần tự, thiết kế các khối khác nhau** hiện có trong hầu hết các kiến trúc cho các mục đích cụ thể. Tức là, cảm biến, ước lượng trạng thái, lập bản đồ, lập kế hoạch, (diff-)IK và điều khiển cấp thấp truyền thống được phát triển như các mô-đun riêng biệt với giao diện cố định. Việc xây dựng pipeline các mô-đun cụ thể này dễ bị lỗi, và sự dễ vỡ xuất hiện — cùng với các lỗi tích lũy — bất cứ khi nào có thay đổi.
+
+**2. Khả năng mở rộng hạn chế**
+Các bộ lập kế hoạch cổ điển hoạt động trên các biểu diễn trạng thái nhỏ gọn, được giả định là đủ; việc mở rộng chúng để lập luận trực tiếp trên các luồng dữ liệu thô, không đồng nhất và nhiễu là không tầm thường. Điều này dẫn đến **khả năng mở rộng hạn chế đối với dữ liệu đa phương thức và cài đặt đa nhiệm**, vì việc kết hợp các đầu vào cảm nhận chiều cao (RGB, độ sâu, xúc giác, âm thanh) truyền thống đòi hỏi nỗ lực kỹ thuật đáng kể để trích xuất các đặc trưng có ý nghĩa cho điều khiển.
+
+**3. Hạn chế về mô hình hóa**
+Bỏ qua các thách thức tích hợp và khả năng mở rộng: việc phát triển mô hình chính xác về tiếp xúc, ma sát và tuân thủ cho các hệ thống phức tạp vẫn còn khó khăn. Các xấp xỉ vật thể cứng thường không đủ khi có các vật thể biến dạng, và **việc dựa vào các mô hình xấp xỉ cản trở khả năng áp dụng thực tế** của các phương pháp được phát triển.
+
+**4. Bỏ qua xu hướng dữ liệu
+Cuối cùng, các phương pháp dựa trên động lực học (một cách tự nhiên) bỏ qua **sự gia tăng gần đây về tính sẵn có của các bộ dữ liệu robot mở**. Việc quản lý các bộ dữ liệu học thuật bởi các nhóm chuyên gia con người tập trung lớn trong lĩnh vực robot hiện đang ngày càng được bổ sung bởi **số lượng ngày càng tăng các bộ dữ liệu robot được đóng góp một cách phi tập trung** bởi các cá nhân có chuyên môn đa dạng.
+
+Tổng hợp lại, những hạn chế này thúc đẩy việc khám phá các phương pháp dựa trên học máy có thể:
+1. **Tích hợp nhận thức và điều khiển chặt chẽ hơn**
+2. **Thích ứng qua các nhiệm vụ và thể hiện** với ít can thiệp mô hình hóa chuyên gia hơn
+3. **Mở rộng hiệu suất một cách uyển chuyển** khi có nhiều dữ liệu robot hơn
+
+
+
+
+## Tài liệu tham khảo
+"Để xem danh sách đầy đủ các tài liệu tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **Modern Robotics: Mechanics, Planning, and Control** (2017)
+ Kevin M. Lynch and Frank C. Park
+ Sách giáo khoa toàn diện về cơ sở của robot cổ điển, bao gồm động học, động lực học và điều khiển. Đọc chủ yếu để hiểu các phương pháp truyền thống được thảo luận trong đơn vị này.
+ [Book Website](http://hades.mech.northwestern.edu/index.php/Modern_Robotics)
+
+- **Springer Handbook of Robotics** (2016)
+ Edited by Bruno Siciliano and Oussama Khatib
+ Một tài liệu tham khảo có thẩm quyền bao gồm mọi khía cạnh của robot, từ lý thuyết điều khiển cổ điển đến các phương pháp tiếp cận dựa trên phương pháp học tập mới nổi.
+ [DOI:10.1007/978-3-319-32552-1](https://doi.org/10.1007/978-3-319-32552-1)
+
diff --git a/units/vi/unit2/2.mdx b/units/vi/unit2/2.mdx
new file mode 100644
index 0000000..3e0eeed
--- /dev/null
+++ b/units/vi/unit2/2.mdx
@@ -0,0 +1,51 @@
+# Các Loại Chuyển Động Của Robot
+
+
+
+Các loại chuyển động khác nhau đòi hỏi nền tảng robot rất khác biệt. Từ trái sang phải, trên xuống dưới: ViperX, SO-100, Boston Dynamics' Spot, Open-Duck, 1X's NEO, Boston Dynamics' Atlas.
+
+Trong phần này, chúng ta sẽ tổ chức không gian hành vi robot để bạn nhanh chóng nhận dạng loại vấn đề đang giải quyết và chọn công cụ phù hợp.
+
+Hầu hết ngành robot học liên quan đến việc tạo chuyển động bằng cách điều khiển các khớp nối liên kết cứng. Điểm khác biệt chính giữa các lĩnh vực robot nằm ở thứ robot đang cố thay đổi: thế giới xung quanh, vị trí của chính nó, hoặc cả hai.
+
+Hầu hết vấn đề thuộc một trong ba loại:
+
+**Thao tác (Manipulation)** liên quan đến việc robot thay đổi môi trường xung quanh trong khi giữ nguyên vị trí. Robot tác động lên thế giới - cầm nắm vật thể, lắp ráp bộ phận, hoặc sử dụng công cụ. Hãy nghĩ về cánh tay robot trong nhà máy nhặt các bộ phận và lắp ráp chúng.
+
+**Di chuyển (Locomotion)** liên quan đến việc robot thay đổi vị trí trong môi trường. Bao gồm robot bánh xe (như nền di động và xe tự hành) và robot chân (như robot đi bộ và robot bốn chân) di chuyển qua môi trường.
+
+**Thao tác Di động (Mobile Manipulation)** kết hợp cả hai khả năng, tạo ra hệ thống vừa di chuyển qua môi trường vừa thao tác vật thể. Những vấn đề này phức tạp hơn vì cần phối hợp nhiều biến điều khiển hơn so với chỉ di chuyển hoặc chỉ thao tác.
+
+
+
+> [!TIP]
+> Mẹo nhanh: hỏi "cái gì thay đổi nhiều nhất?" Nếu chủ yếu thế giới (tư thế/trạng thái vật thể) thay đổi, đó là thao tác. Nếu chủ yếu tư thế robot thay đổi, đó là di chuyển. Nếu cả hai thay đổi theo cách kết hợp chặt chẽ, đó là thao tác di động. Dùng quy tắc này để quyết định cảm biến cần ghi và không gian hành động cần dự đoán.
+
+Gần đây, sự phát triển của bộ thao tác chi phí thấp như nền tảng ALOHA, ALOHA-2 và SO-100/SO-101 đã giảm đáng kể rào cản gia nhập ngành robot, xét đến khả năng tiếp cận tăng lên so với nền tảng truyền thống như cánh tay Franka Emika Panda.
+
+
+
+Robot rẻ hơn, dễ tiếp cận hơn đang bắt đầu cạnh tranh với nền tảng truyền thống như cánh tay Panda trong các kịch bản hạn chế tài nguyên. Đặc biệt, SO-100 có chi phí khoảng vài trăm Euro, và có thể in 3D hoàn toàn trong vài giờ, trong khi cánh tay Panda sản xuất công nghiệp tốn hàng chục nghìn Euro và không mở bán công khai.
+
+Khối lượng công trình truyền thống phát triển từ buổi sơ khai của ngành robot ngày càng được bổ sung bởi các phương pháp dựa trên học máy. Học máy đã chứng minh tính chuyển đổi đặc biệt trên toàn bộ chồng công nghệ robot, đầu tiên trao quyền cho kỹ thuật dựa trên lập kế hoạch với ước lượng trạng thái cải tiến dùng cho lập kế hoạch truyền thống, sau đó thay thế hoàn toàn bộ điều khiển, tạo ra hiệu quả các phương pháp từ nhận thức đến hành động.
+
+Trong khi các mô hình tường minh đã chứng minh tính nền tảng trong việc đạt các cột mốc quan trọng phát triển robot hiện đại, các công trình gần đây sử dụng mô hình ẩn tỏ ra đặc biệt hứa hẹn trong việc vượt qua thách thức về khả năng mở rộng và ứng dụng thông qua học máy.
+
+
+
+Chúng ta sẽ tái sử dụng phân loại này trong các chương sau khi thảo luận về dữ liệu (modalities to record) và chính sách (what action chunks to predict) cho mỗi loại.
+
+## Tài liệu tham khảo
+"Để xem danh sách đầy đủ các tài liệu tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **ALOHA 2: An Enhanced Low-Cost Hardware for Bimanual Teleoperation** (2024)
+ Jorge Aldaco et al.
+ Bài báo mô tả tiến bộ trong nền tảng thao tác dễ tiếp cận, minh chứng cách phần cứng rẻ tiếp cận kích hoạn nghiên cứu trên các nhiệm vụ thao tác.
+ [Project Page](https://aloha-2.github.io/)
+
+- **Learning Agile and Dynamic Motor Skills for Legged Robots** (2019)
+ Joonho Hwangbo et al.
+ Một bài báo quan trọng minh chứng các phương pháp dựa trên học máy để di chuyển, chứng minh cách học máy có thể kích hoạt robot bốn chân thực hiện chuyển động đa dạng và động.
+ [arXiv:1901.08652](https://huggingface.co/papers/1901.08652)
\ No newline at end of file
diff --git a/units/vi/unit2/3.mdx b/units/vi/unit2/3.mdx
new file mode 100644
index 0000000..3c5cd9c
--- /dev/null
+++ b/units/vi/unit2/3.mdx
@@ -0,0 +1,115 @@
+# Hiểu về Động học Robot
+
+Trong phần này, chúng ta sẽ xây dựng trực giác về động học robot thông qua một ví dụ cụ thể. Động học mô tả mối quan hệ toán học giữa góc khớp và vị trí bộ tác động cuối - với cấu hình khớp cho trước, tay robot sẽ ở đâu? Chúng ta sẽ khám phá khái niệm cơ bản này bằng cách đi qua một trường hợp đơn giản nhưng tiêu biểu.
+
+Hãy cùng xem cách tiếp cận robot truyền thống hoạt động thông qua một ví dụ cụ thể mà bạn có thể làm theo từng bước.
+
+## Từ Phức tạp đến Đơn giản: Ví dụ SO-100
+
+Chúng ta bắt đầu với một nền tảng robot quen thuộc và đơn giản hóa có hệ thống để tách biệt các nguyên tắc động học cốt lõi mà không cần độ phức tạp không cần thiết.
+
+
+
+Cánh tay SO-100 được đơn giản hóa thành bộ thao tác phẳng 2D bằng cách giới hạn một số khớp.
+
+SO-100 là cánh tay robot 6 bậc tự do (6-DOF). Để hiểu các nguyên tắc, hãy đơn giản hóa nó thành **bộ thao tác phẳng 2-DOF** bằng cách giới hạn một số khớp.
+
+## Robot Đơn giản hóa
+
+
+
+Để giữ cho toán học rõ ràng, robot đơn giản của chúng ta có:
+- **Hai khớp** với góc θ₁ và θ₂
+- **Hai liên kết** có cùng chiều dài *l*
+- **Cấu hình** q = [θ₁, θ₂] ∈ [-π, +π]²
+
+## Động học Thuận: Từ Khớp đến Vị trí
+
+**Câu hỏi:** Với góc khớp θ₁ và θ₂ cho trước, bộ tác động cuối ở đâu?
+
+**Trả lời:** Ta có thể tính toán vị trí bộ tác động cuối bằng toán học:
+
+$$p(q) = \begin{pmatrix} l \cos(\theta_1) + l \cos(\theta_1 + \theta_2) \\ l \sin(\theta_1) + l \sin(\theta_1 + \theta_2) \end{pmatrix}$$
+
+Đây gọi là **Động học Thuận (FK)** - ánh xạ từ không gian khớp sang không gian tác vụ.
+
+
+
+> [!TIP]
+> **Hiểu Toán học:** Phương trình này đến từ lượng giác cơ bản!
+> - Liên kết đầu: điểm cuối tại $(l \cos(\theta_1), l \sin(\theta_1))$
+> - Liên kết thứ hai: bắt đầu từ cuối liên kết đầu, xoay góc $\theta_1 + \theta_2$
+> - Vị trí cuối: tổng đóng góp của cả hai liên kết
+>
+> **Tại sao quan trọng:** Với robot đơn giản, FK tương đối dễ - cho góc khớp, ta luôn tính được vị trí tay robot. Robot phức tạp hơn - ví dụ bàn tay khéo léo - sẽ khó mô hình hóa hơn.
+
+## Động học Nghịch: Từ Vị trí đến Khớp
+
+Giờ hãy thử đảo ngược ánh xạ: với vị trí tay mong muốn, cấu hình khớp nào đạt được nó?
+
+**Câu hỏi:** Với vị trí bộ tác động cuối mong muốn p*, ta nên dùng góc khớp nào?
+
+**Trả lời:** Đây là **Động học Nghịch (IK)** - thường phức tạp hơn để giải, vì liên quan đến ma trận Jacobian của hàm động học thuận!
+
+Ta cần giải: $p(q) = p^*$
+
+Tổng quát, nó trở thành bài toán tối ưu:
+$$\min_{q \in \mathcal{Q}} \|p(q) - p^*\|_2^2$$
+
+
+
+> [!WARNING]
+> **Tại sao IK Khó:**
+> - **Nhiều nghiệm** - Cùng vị trí cuối có thể đạt được bằng góc khớp khác nhau
+>
+> - **Phương trình phi tuyến** - Một số hàm khiến nghiệm phân tích khó khăn
+> - **Ràng buộc** - Giới hạn khớp và vật cản làm phức tạp thêm bài toán
+>
+> Đây là lý do kỹ sư robot dành nhiều thời gian cho thuật toán IK!
+
+## Thách thức của Ràng buộc
+
+
+
+*Di chuyển tự do*
+
+
+
+*Bị giới hạn bởi sàn*
+
+
+
+*Nhiều vật cản*
+
+Robot thực tế đối mặt **ràng buộc**:
+- **Giới hạn vật lý** - Không thể di chuyển xuyên sàn
+- **Vật cản** - Phải tránh va chạm
+- **Giới hạn khớp** - Phạm vi chuyển động hữu hạn
+
+Những ràng buộc này khiến không gian cấu hình khả thi $\mathcal{Q}$ phức tạp hơn nhiều!
+
+## Hiểu biết Chính
+
+Ngay cả với **robot 2-DOF đơn giản** này, giải IK với ràng buộc không hề tầm thường. Robot thực tế có:
+- **6+ bậc tự do**
+- **Hình học phức tạp**
+- **Môi trường động**
+- **Mô hình không chắc chắn**
+
+Cách tiếp cận truyền thống đòi hỏi **mô hình toán học phức tạp** và **kiến thức chuyên môn** cho từng trường hợp cụ thể.
+
+> [!TIP]
+> Mô hình tư duy: FK là máy tính trực tiếp (q → p) và thường dễ; IK là tìm kiếm (p → q) và trở nên khó khi thêm giới hạn không gian làm việc, vật cản, hoặc ràng buộc khớp. Khi IK trở nên dễ vỡ, chúng ta sẽ chuyển sang lập luận vi phân (tốc độ) trong bước tiếp theo.
+
+## Tài liệu tham khảo
+"Để xem danh sách đầy đủ các tài liệu tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **Modern Robotics: Mechanics, Planning, and Control** (2017)
+ Kevin M. Lynch and Frank C. Park
+ Chương 4 cung cấp một xử lý sâu sắc về động học thuận với nhiều ví dụ, trong khi Chương 6 xử lý động học nghịch với cả phương pháp phân tích và số học.
+ [Book Website](http://hades.mech.northwestern.edu/index.php/Modern_Robotics)
+
+- **Introduction to Robotics: Mechanics and Control** (2005)
+ John J. Craig
+ Một sách giáo khoa cổ điển với bao phủ chi tiết về động học robot, bao gồm phương pháp Denavit-Hartenberg và các phương pháp hệ thống để giải các bài toán động học thuận và nghịch.
+ [Publisher Link](https://www.pearson.com/en-us/subject-catalog/p/introduction-to-robotics-mechanics-and-control/P200000003519)
diff --git a/units/vi/unit2/4.mdx b/units/vi/unit2/4.mdx
new file mode 100644
index 0000000..fe6d0ce
--- /dev/null
+++ b/units/vi/unit2/4.mdx
@@ -0,0 +1,157 @@
+# Hệ Thống Điều Khiển và Giới Hạn của Chúng
+
+Trong phần này, chúng ta chuyển từ động học sang điều khiển. Đầu tiên ta sẽ trình bày cách lập luận với vận tốc (động học ngược vi phân, diff-IK), sau đó đóng vòng lặp với phản hồi, và cuối cùng tổng kết những điểm mà các quy trình cổ điển gặp khó khăn trong thực tế.
+
+## Động Học Vi Phân: Cách Tiếp Cận Thông Minh Hơn
+
+Thay vì giải trực tiếp vị trí khớp, ta có thể làm việc với **vận tốc**:
+
+### Điểm Mấu Chốt
+Nếu biết mối quan hệ giữa vận tốc khớp và vận tốc đầu công tác, ta có thể điều khiển chuyển động mượt mà hơn:
+
+$$\dot{p} = J(q) \dot{q}$$
+
+Trong đó $J(q)$ là **ma trận Jacobian** - mối quan hệ giữa vận tốc khớp và vận tốc không gian tác vụ.
+
+
+
+### Giải Pháp Động Học Ngược Vi Phân
+Cho vận tốc đầu công tác mong muốn $\dot{p}^*$, tìm vận tốc khớp:
+
+$$\dot{q} = J(q)^+ \dot{p}^*$$
+
+Trong đó $J(q)^+$ là **giả nghịch đảo** của Jacobian.
+
+## Thêm Điều Khiển Phản Hồi
+
+Theo dõi vòng hở dễ gãy dưới lỗi mô hình và nhiễu loạn. Ta đóng vòng lặp bằng cách phản hồi sai số theo dõi.
+
+
+
+*Xử lý chướng ngại vật di chuyển đòi hỏi điều khiển phản hồi.*
+
+Môi trường thực tế **năng động và không chắc chắn**. Ta cần phản hồi để xử lý:
+- **Lỗi mô hình** - Phương trình không hoàn hảo
+- **Nhiễu loạn** - Lực hoặc chướng ngại vật bất ngờ
+- **Nhiễu cảm biến** - Đo lường có độ không chắc chắn
+
+### Giải Pháp Điều Khiển Phản Hồi
+
+Kết hợp chuyển động mong muốn với hiệu chỉnh sai số:
+
+$$\dot{q} = J(q)^+ (\dot{p}^* + k_p \Delta p)$$
+
+Trong đó $\Delta p = p^* - p(q)$ là sai số vị trí.
+
+
+> [!TIP]
+> Bắt đầu với $k_p$ nhỏ và tăng dần trong khi theo dõi dao động. Sử dụng watchdog (dừng an toàn) và bão hòa lệnh để giữ hệ thống trong giới hạn an toàn.
+
+## Tại Sao Cách Tiếp Cận Cổ Điển Gặp Khó Khăn
+
+Với lập luận vi phân và phản hồi, nhiều tác vụ theo dõi có thể giải được—trên lý thuyết. Trong thực tế, hệ thống vẫn gãy dưới độ phức tạp thực tế vì các lý do sau.
+
+
+
+
+*Bốn giới hạn chính của cách tiếp cận robot dựa trên động lực học.*
+
+
+### 1. **Thách Thức Tích Hợp**
+Quy trình cổ điển được xây dựng từ **các mô-đun riêng biệt**:
+- Cảm biến → Ước lượng Trạng thái → Lập kế hoạch → Điều khiển → Tác động
+
+**Vấn đề:**
+- Lỗi tích lũy qua quy trình
+- Dễ gãy khi bất kỳ thành phần nào thất bại
+- Khó thích ứng với tác vụ hoặc robot mới
+
+### 2. **Khả Năng Mở Rộng Hạn Chế**
+Phương pháp truyền thống gặp khó khăn với:
+- **Dữ liệu cảm biến chiều cao** (camera, LIDAR)
+- **Kịch bản đa tác vụ** (mỗi tác vụ cần lập kế hoạch tùy chỉnh)
+- **Tích hợp đa phương thức** (thị giác + xúc giác + bản thể cảm)
+
+### 3. **Giới Hạn Mô Hình Hóa**
+Vật lý thực tế phức tạp:
+- **Động học tiếp xúc** - Khó mô hình hóa chính xác
+- **Vật thể biến dạng** - Vượt quá giả định vật thể cứng
+- **Ma sát và độ đàn hồi** - Khó đặc trưng hóa
+
+### 4. **Bỏ Qua Xu Hướng Dữ Liệu**
+Phương pháp cổ điển không tận dụng:
+- **Bộ dữ liệu robot ngày càng tăng** - Hàng triệu minh họa có sẵn
+- **Học chéo robot** - Hiểu biết từ nền tảng khác
+- **Kiến thức cộng đồng** - Thu thập dữ liệu phi tập trung
+
+## Giải Pháp Học Máy Thay Thế
+
+Để giải quyết những giới hạn này, ta đối chiếu quy trình mô-đun cổ điển với chính sách học đầu-cuối.
+
+
+
+
+**Cách Tiếp Cận Robot Cổ Điển:**
+
+```
+Nhận thức → Ước lượng Trạng thái → Lập kế hoạch → Điều khiển → Tác động
+```
+
+**Thách thức:**
+- Mỗi mô-đun cần điều chỉnh chuyên gia
+- Lỗi tích lũy qua quy trình
+- Khó thích ứng với tác vụ/robot mới
+- Đòi hỏi mô hình thế giới chính xác
+
+
+
+
+**Cách Tiếp Cận Dựa Trên Học Máy:**
+
+```
+Cảm biến Thô → Mạng Nơ-ron → Hành động
+```
+
+**Lợi ích:**
+- Học từ dữ liệu - Sử dụng minh họa và kinh nghiệm
+- Huấn luyện đầu-cuối - Tối ưu toàn bộ quy trình cùng nhau
+- Tổng quát hóa qua các nhiệm vụ - Chia sẻ kiến thức giữa các mục đích khác nhau
+- Thích ứng với các robot mới - Chuyển giao kiến thức qua các nền tảng khác nhau
+
+
+
+
+Đây là lời hứa của **robot learning**!
+
+> [!TIP]
+> **Tận dụng ưu điểm của cả hai:** Robot learning hiện đại thường kết hợp những hiểu biết cổ điển với học máy. Ví dụ, ta có thể kết hợp học máy với các ràng buộc an toàn từ lý thuyết điều khiển.
+>
+> Pure learning (học thuần túy) so với pure classical (cổ điển thuần túy) là một sự phân đôi sai lầm - các phương pháp hybrid (lai) đã có những thành công.
+
+---
+
+## Những điểm chính
+
+- Ngành robotics cổ điển dựa vào các mô hình toán học rõ ràng và kiến thức chuyên gia
+- Động học thuận (Forward kinematics) thì đơn giản, nhưng chỉ khả thi trong các kịch bản khá đơn giản. Động học nghịch (Inverse kinematics) thì tổng quát hơn, nhưng có thể khó phát triển trong thực tế
+- Động học vi phân (Differential kinematics) làm việc với vận tốc thay vì vị trí để kiểm soát tốt hơn
+- Các phương pháp cổ điển gặp khó khăn với sự tích hợp, khả năng mở rộng, độ chính xác của mô hình và việc sử dụng dữ liệu
+- Các phương pháp dựa trên học máy (learning-based methods) đưa ra giải pháp cho những hạn chế cơ bản này
+- Tương lai nằm ở các phương pháp lai (hybrid approaches) kết hợp những hiểu biết cổ điển với khả năng học
+
+> [!TIP]
+> Tiếp theo, chúng ta sẽ thấy các phương pháp dựa trên học máy (reinforcement learning - học tăng cường và imitation learning - học bắt chước) hấp thụ một phần sự phức tạp này bằng cách tối ưu hóa trực tiếp từ dữ liệu.
+
+## Tài liệu tham khảo
+
+Để xem danh sách đầy đủ các tài liệu tham khảo, hãy xem [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **Feedback Systems: An Introduction for Scientists and Engineers** (2008)
+ Karl Johan Åström and Richard M. Murray
+ Một giới thiệu toàn diện về hệ thống điều khiển phản hồi, bao gồm các nguyên tắc cơ bản nằm ở đóng vòng lặp điều khiển trong robot.
+ [Book Website](http://www.cds.caltech.edu/~murray/amwiki/index.php/Main_Page)
+
+- **Real-Time Obstacle Avoidance for Manipulators and Mobile Robots** (1986)
+ Oussama Khatib
+ Một bài báo quan trọng giới thiệu phương pháp trường tiềm ẩn nhân tạo cho tránh chướng ngại vật, minh chứng cách phản hồi có thể được sử dụng cho điều khiển phản ứng trong môi trường động.
+ [DOI:10.1177/027836498600500106](https://doi.org/10.1177/027836498600500106)
\ No newline at end of file
diff --git a/units/vi/unit2/5.mdx b/units/vi/unit2/5.mdx
new file mode 100644
index 0000000..4a0ce81
--- /dev/null
+++ b/units/vi/unit2/5.mdx
@@ -0,0 +1,350 @@
+# Từ Robot Cổ Điển đến Robot Học Máy
+
+Chương này kết nối các công cụ cổ điển bạn đã học với động lực cho các phương pháp học máy, sau đó chỉ dẫn bạn đến nội dung tiếp theo. Chúng ta sẽ giữ nội dung súc tích và thêm các chỉ dẫn để bạn biết nên tập trung vào đâu.
+
+> [!TIP]
+> Đừng lo nếu trang này hơi dày đặc, chúng ta sẽ phân tích kỹ hơn trong các chương tiếp theo.
+
+## Những gì chúng ta đã học
+
+Đầu tiên, hãy điểm lại nhanh các khái niệm quan trọng đã đề cập trong các chương nền tảng.
+
+
+
+**Động lực cho Robot Học Máy:** Bạn đã khám phá sự thay đổi cơ bản đang diễn ra trong robot hiện nay, chuyển từ các phương pháp cổ điển dựa trên mô hình sang các phương pháp học dựa trên dữ liệu. Chúng ta đã thiết lập lý do tại sao robot học đang trở nên thiết yếu để tạo ra các hệ thống robot có khả năng tổng quát hóa tốt hơn, và cách các công cụ như LeRobot giúp những kỹ thuật tiên tiến này dễ tiếp cận hơn với cộng đồng nghiên cứu và thực hành rộng lớn hơn.
+
+**Hệ sinh thái LeRobot:** Bạn đã hiểu cơ bản về cách tiếp cận robot của LeRobot. Điều này bao gồm hiểu tầm nhìn đằng sau LeRobot như một thư viện robot end-to-end, hướng tới việc tích hợp các khía cạnh khác nhau của robot. Bạn cũng đã học về định dạng LeRobotDataset, xử lý sự phức tạp của dữ liệu robot đa phương thức, và có kinh nghiệm thực tế với việc tải và xử lý các bộ dữ liệu robot thực cho các ứng dụng học máy.
+
+Tiếp theo, bạn sẽ học cách tổng hợp các hành vi điều khiển tự động trực tiếp từ dữ liệu, và triển khai chúng trên robot thực tế bằng lerobot.
+
+**Nền tảng Robot Cổ điển:** Chúng ta đã xem xét chi tiết các phương pháp tiếp cận truyền thống trong robot, bao gồm các loại chuyển động robot khác nhau như thao tác, di chuyển và thao tác di động. Bạn đã học về động học thuận và động học ngược, động học vi phân và hệ thống điều khiển phản hồi. Quan trọng nhất, bạn đã phát triển sự hiểu biết về lý do tại sao các phương pháp cổ điển, bất chấp sự chặt chẽ toán học của chúng, lại gặp khó khăn với sự phức tạp và biến đổi của các ứng dụng robot thực tế.
+
+## Cuộc Cách mạng Học Máy
+
+Thông qua khám phá về robot cổ điển, bạn đã hiểu rõ tại sao các phương pháp dựa trên học máy đại diện cho một bước tiến quan trọng trong lĩnh vực này.
+
+**Các phương pháp cổ điển đối mặt với những hạn chế cơ bản** trở nên rõ ràng khi xử lý sự phức tạp của thế giới thực. Những phương pháp này yêu cầu mô hình hóa toán học mở rộng cho mọi khía cạnh của môi trường và tương tác của robot, điều này trở nên quá khó khăn cho các kịch bản phức tạp.
+
+Chúng gặp khó khăn trong việc tích hợp các nguồn dữ liệu đa phương thức như thị giác, xúc giác và cảm giác bản thể một cách thống nhất. Có lẽ quan trọng nhất, các phương pháp cổ điển không mở rộng tốt trên các tác vụ hoặc hiện thực robot khác nhau—mỗi ứng dụng mới thường yêu cầu kiến thức chuyên môn và thiết kế lại đáng kể.
+
+**Các phương pháp dựa trên học máy mang lại lợi thế thuyết phục** giải quyết trực tiếp những hạn chế này. Thay vì yêu cầu chuyên gia mô hình hóa mọi khía cạnh của vấn đề, các phương pháp này có thể học các hành vi và biểu diễn phù hợp trực tiếp từ dữ liệu.
+
+Chúng tự nhiên xử lý các đầu vào đa phương thức, đa chiều thông qua kiến trúc mạng nơ-ron được thiết kế cho sự phức tạp như vậy, có thể tổng quát hóa qua các nhiệm vụ và thể hiện khác nhau, và mở rộng khi có nhiều dữ liệu và tài nguyên tính toán hơn.
+
+
+
+## Nội Dung Tiếp Theo
+
+Kiến thức nền tảng bạn đã tích lũy sẽ chuẩn bị cho bạn tiếp cận các chủ đề nâng cao sắp tới.
+
+**Reinforcement Learning for Robotics (Học tăng cường cho Robot)** sẽ khám phá cách robot học các hành vi tối ưu thông qua tương tác thử-sai với môi trường. Bạn sẽ học cách thiết kế tín hiệu phần thưởng phù hợp cho nhiệm vụ robot, hiểu các phương pháp học tăng cường giúp robot cải thiện hiệu suất theo thời gian, và giải quyết thách thức quan trọng về hiệu quả mẫu—học hiệu quả với dữ liệu tương tác thực tế hạn chế. Chúng ta cũng sẽ tìm hiểu cách LeRobot triển khai các thuật toán học tăng cường này trong thực tế.
+
+**Imitation Learning via Behavioral Cloning (Học bắt chước qua Nhân bản Hành vi)** sẽ minh họa cách robot tiếp thu kỹ năng phức tạp bằng cách quan sát và sao chép trình diễn của chuyên gia. Phương pháp này đặc biệt giá trị vì cho phép robot học từ chuyên môn con người trong thế giới thực mà không cần thiết kế phần thưởng rõ ràng, tránh được những khó khăn khi áp dụng RL trong thực tế. Bạn sẽ hiểu cách xử lý vấn đề dịch chuyển phân phối khi robot gặp tình huống không có trong dữ liệu huấn luyện, khám phá kỹ thuật học bắt chước nâng cao vượt xa nhân bản hành vi đơn thuần, và tích lũy kinh nghiệm thực hành triển khai các phương pháp này bằng công cụ LeRobot.
+
+**Foundation Models for Robotics (Mô hình Nền tảng cho Robot)** sẽ bao gồm các phát triển tiên phong tạo ra hệ thống robot tổng quát và mạnh mẽ hơn. Bạn sẽ khám phá cách học đa nhiệm cho phép chia sẻ kiến thức giữa các nền tảng và nhiệm vụ robot khác nhau, hiểu chính sách điều kiện ngôn ngữ giúp robot tuân theo hướng dẫn ngôn ngữ tự nhiên, và tìm hiểu định luật mở rộng chi phối cách hiệu suất cải thiện với mô hình và bộ dữ liệu lớn hơn. Phần này sẽ trang bị cho bạn kiến thức để hiểu và đóng góp vào sự phát triển của các hệ thống robot thực sự tổng quát.
+
+## Kỹ Năng Thực Hành Đạt Được
+
+Thông qua phần nền tảng của khóa học, bạn đã phát triển cả năng lực kỹ thuật và hiểu biết khái niệm làm nền tảng cho các chủ đề nâng cao.
+
+**Kỹ Năng Kỹ Thuật:** Giờ đây bạn hiểu dữ liệu robot khác biệt thế nào so với bộ dữ liệu học máy truyền thống và tại sao cần định dạng chuyên biệt. Bạn đã có kinh nghiệm thực tế làm việc với API LeRobotDataset, bao gồm tải và xử lý dữ liệu robot đa phương thức kết hợp thị giác, cảm giác bản thể và thông tin hành động. Bạn cũng đã học về truyền phát bộ dữ liệu lớn hiệu quả—yếu tố quan trọng khi làm việc với các tập dữ liệu khổng lồ cung cấp năng lượng cho hệ thống học robot hiện đại.
+
+**Hiểu Biết Khái Niệm:** Quan trọng nhất, bạn đã hình thành mô hình tinh thần rõ ràng về sự tiến hóa đang diễn ra trong ngành robot ngày nay. Bạn hiểu bối cảnh lịch sử của phương pháp cổ điển, nền tảng toán học và những hạn chế cơ bản khi áp dụng vào kịch bản thực tế phức tạp. Bạn đã thấu hiểu cách tiếp cận dựa trên học máy giải quyết những hạn chế này và tại sao sự sẵn có của dữ liệu robot quy mô lớn đang thay đổi khả năng trong lĩnh vực này.
+
+## Sẵn Sàng Cho Thử Thách Tiếp Theo?
+
+> [!WARNING]
+> **Bạn đã sẵn sàng cho học robot nâng cao!** Các khái niệm bạn đã học về xử lý dữ liệu, xử lý đa phương thức và hạn chế của phương pháp cổ điển sẽ rất cần thiết khi chúng ta đi sâu vào:
+>
+> - **Học Tăng Cường** - Cách robot học hành vi tối ưu qua thử-sai
+> - **Học Bắt Chước** - Cách robot học bằng cách xem trình diễn của con người
+> - **Mô hình Nền tảng** - Cách mô hình quy mô lớn tạo ra trí tuệ robot đa năng
+>
+> **Sắp ra mắt:** Các chương nâng cao này sẽ xây dựng trực tiếp trên nền tảng bạn vừa nắm vững.
+
+## Tóm Tắt Khóa Học
+- Học robot đại diện cho sự thay đổi mô hình từ phương pháp dựa trên mô hình sang hướng dữ liệu
+- LeRobot dân chủ hóa tiếp cận kỹ thuật học robot tiên tiến
+- Robot cổ điển cung cấp nền tảng quan trọng nhưng có hạn chế cơ bản về khả năng mở rộng
+- Phương pháp dựa trên học máy có thể tổng quát hóa qua nhiệm vụ, robot và môi trường
+- Tương lai nằm ở việc kết hợp hiểu biết cổ điển với khả năng học máy
+- Bộ dữ liệu quy mô lớn và mô hình nền tảng đang thay đổi khả năng trong ngành robot
+
+## Cộng Đồng và Tài Nguyên
+
+Khi bạn tiếp tục hành trình học robot:
+
+**Tiếp Tục Học:**
+- [Khám phá tài liệu LeRobot](https://huggingface.co/docs/lerobot)
+- [Thử ví dụ LeRobot](https://github.com/huggingface/lerobot)
+- [Đọc hướng dẫn chi tiết của chúng ta](https://huggingface.co/spaces/lerobot/robot-learning-tutorial)
+- [Tham gia thảo luận cộng đồng](https://huggingface.co/lerobot)
+
+**Tham Gia:**
+- Đóng góp bộ dữ liệu cho cộng đồng
+- Chia sẻ thử nghiệm học robot của bạn
+- Giúp cải thiện công cụ và tài liệu LeRobot
+
+> [!TIP]
+> Nếu bạn đang chọn dự án đầu tiên, hãy bắt đầu với nhiệm vụ học bắt chước nhỏ sử dụng LeRobotDataset (pick-and-place trên SO-100/SO-101). Bạn sẽ có trải nghiệm end-to-end—dữ liệu, mô hình, đánh giá—mà không cần thiết kế phần thưởng hay trình mô phỏng.
+
+**Chúc mừng bạn đã hoàn thành các chương nền tảng!** Giờ bạn đã sẵn sàng khám phá thế giới thú vị của các thuật toán robot dựa trên học máy.
+
+## Tài liệu tham khảo
+
+Để xem danh sách đầy đủ tài liệu tham khảo, hãy kiểm tra [hướng dẫn](https://huggingface.co/spaces/lerobot/robot-learning-tutorial).
+
+- **End-to-End Training of Deep Visuomotor Policies** (2016)
+ Sergey Levine et al.
+ Bài báo đột phá chứng minh cách học sâu có thể dùng cho điều khiển thị giác-vận động trực tiếp, bỏ qua các mô-đun nhận thức và lập kế hoạch truyền thống. Đây là bước tiến quan trọng trong chuyển đổi từ robot cổ điển sang robot dựa trên học máy.
+ [arXiv:1504.00702](https://huggingface.co/papers/1504.00702)
+
+- **Learning Dexterous In-Hand Manipulation** (2018)
+ OpenAI et al.
+ Nghiên cứu này minh họa cách học tăng cường với domain randomization giải quyết các tác vụ thao tác phức tạp vốn rất khó lập trình bằng phương pháp cổ điển, nổi bật ưu điểm của cách tiếp cận dựa trên học máy.
+ [arXiv:1808.00177](https://huggingface.co/papers/1808.00177)
+
+## Câu hỏi cuối chương
+
+Kiểm tra hiểu biết của bạn về chương Robot Cổ điển. Chọn câu trả lời đúng nhất cho mỗi câu hỏi.
+
+### 1. Tập hợp nào phân loại tốt nhất các dạng chuyển động robot được thảo luận?
+
+
+
+### 2. Khác biệt cốt lõi giữa động học thuận (FK) và động học nghịch (IK) là gì?
+
+
+
+### 3. Trong động học vi phân, Jacobian J(q) đại diện cho điều gì?
+
+
+
+### 4. Giải pháp IK vi phân dạng đóng sử dụng J(q)^+. Ký hiệu '+' biểu thị gì?
+
+
+
+
+### 5. Trong luật phản hồi tỷ lệ \(\dot q = J^+(\dot p^* + k_p \Delta p)\), \(\Delta p\) là gì?
+
+
+
+### 6. Chướng ngại vật và giới hạn khớp ảnh hưởng thế nào đến bài toán nghịch đảo động học (IK) trong ví dụ tay máy phẳng?
+
+
+
+### 7. Phát biểu nào đặc trưng tốt nhất cho các quy trình robot cổ điển như được trình bày trong chương này?
+
+
+
+### 8. Tập hợp nào liệt kê các hạn chế cốt lõi được nêu bật cho các phương pháp dựa trên động lực học?
+
+
+
+### 9. Lợi thế chính của các phương pháp dựa trên học máy được nhấn mạnh để tương phản với các phương pháp cổ điển là gì?
+
+
+
+### 10. Tại sao tính sẵn có của các bộ dữ liệu robot mở lại quan trọng trong ngữ cảnh của chương này?
+
+
\ No newline at end of file