Robot biết nhìn là gì
Bài 2 trong khóa Robot Thế hệ 3 — Thị giác máy tính và nhận diện vật thể

G3 01 - Robot biết nhìn là gì
Linh kiện cần chuẩn bị
- 1 ESP32-S3 DevKit.
- 1 LED trạng thái và điện trở 220 ohm nếu không dùng LED có sẵn.
- 1 buzzer chủ động.
- 3 thẻ hoặc vật thể màu rõ: đỏ, xanh lá, xanh dương.
- 1 tờ giấy trắng và 1 tờ giấy tối màu để so sánh nền.
- Máy tính có Arduino IDE hoặc Arduino CLI, cáp USB data, Serial Monitor.
- Bảng quan sát gồm: vật thể, nền, ánh sáng, điều robot nên làm, ghi chú rủi ro.
Code bài này chỉ dùng ESP32-S3, LED, buzzer và Serial Monitor. Chưa dùng camera module, motor, WiFi hoặc cảm biến khoảng cách trong bài này.
Bài này giúp bạn làm được gì?
Robot “biết nhìn” không có nghĩa là robot hiểu mọi thứ như con người. Với robot học tập, biết nhìn nghĩa là robot lấy dữ liệu ảnh, rút ra đặc điểm đơn giản và biến đặc điểm đó thành quyết định có kiểm chứng.
Kết quả cuối bài:
- Học viên mô tả được pipeline thị giác máy tính cơ bản.
- Robot in log các bước:
CAPTURE,FEATURE,DECIDE,ACT. - LED/buzzer phản hồi theo quyết định mẫu.
- Nhóm lập bảng rủi ro: ánh sáng, nền, góc camera, vật thể bị che.
Pipeline nhìn của robot
Camera hoặc dữ liệu ảnh
-> frame
-> pixel
-> feature: màu, vùng sáng, cạnh, kích thước
-> decision: thấy/không thấy, trái/phải, gần/xa
-> action: log, LED, buzzer, motor
Bài này chưa chụp ảnh thật. Ta học trước cách suy nghĩ theo pipeline để khi gắn camera ở G3 03, học viên biết debug từng tầng thay vì đoán mò.
Thực hành từng bước
Bước 1: Quan sát bằng mắt như robot
Đặt thẻ đỏ trên giấy trắng, rồi trên giấy tối. Trả lời:
- Màu đỏ có dễ tách khỏi nền không?
- Nếu đèn phòng yếu hơn, vật thể còn rõ không?
- Nếu vật thể nằm sát mép ảnh, robot có nên tin kết quả không?
Bước 2: Upload sketch pipeline
Upload code của bài, mở Serial Monitor 115200 baud. Gửi một trong các lệnh:
RED
GREEN
BLUE
UNKNOWN
Robot sẽ in pipeline và phản hồi bằng LED/buzzer.
Bước 3: Ghi bảng quyết định
| Lệnh | Feature giả định | Quyết định | LED/buzzer | Nhận xét |
|---|---|---|---|---|
| RED | màu mục tiêu | target_found | LED sáng | |
| GREEN | màu khác | watch | LED nháy | |
| BLUE | màu khác | watch | LED nháy | |
| UNKNOWN | không chắc | no_target | buzzer ngắn |
Code mẫu hoàn chỉnh
Code đầy đủ nằm trong file:
code/g3-01-robot-biet-nhin-la-gi/g3-01-robot-biet-nhin-la-gi.ino
Đoạn quyết định mẫu:
if (command == "RED") {
decision = "target_found";
} else if (command == "UNKNOWN") {
decision = "no_target";
} else {
decision = "watch";
}
Kiểm thử robot thật
| Test | Thao tác | Kết quả mong đợi | Pass? |
|---|---|---|---|
| 1 | Gửi RED | Serial có đủ 4 bước pipeline, LED sáng | |
| 2 | Gửi GREEN | Decision là watch, LED nháy | |
| 3 | Gửi UNKNOWN | Buzzer kêu ngắn, robot không kết luận bừa | |
| 4 | Trình bày thẻ màu thật | Nhóm nêu được rủi ro nền/ánh sáng |
Lỗi thường gặp và cách sửa
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
| Không thấy Serial | Sai baud | Chọn 115200 baud |
| LED không sáng | Sai chân hoặc thiếu điện trở | Kiểm GPIO2 và GND |
| Học viên nói robot “hiểu ảnh” quá rộng | Chưa tách feature/decision | Quay lại pipeline |
| Nhầm bài này đã dùng camera | Chưa, đây là bài định hướng | Camera bắt đầu ở G3 03 |
Checklist hoàn thành
- Giải thích được frame, pixel, feature, decision, action.
- Chạy được sketch pipeline.
- Có bảng rủi ro ánh sáng/nền/góc nhìn.
- Không kết luận vượt quá dữ liệu.
- Sẵn sàng học pixel ở G3 02.
Bài tiếp theo
G3 02 sẽ đi vào pixel: ảnh số được tạo bởi các điểm ảnh, mỗi điểm có độ sáng hoặc màu. Đây là nền để nhận diện màu ở các bài sau.
Điều hướng bài học
Bài tiếp theo: G3 02 - Camera, ảnh số và pixel