Bài 8. Thực hành tổng hợp và xử lý lỗi
Mục tiêu: tự thực hiện một công việc nhỏ từ đầu đến cuối, sau đó biết cách cung cấp thông tin khi gặp lỗi.
Chuẩn bị: đã học bài 3–6. Phần kiểm tra robot là tùy chọn nếu chưa có robot bên cạnh.
1. Nhiệm vụ thực hành
Bạn sẽ tạo một thư mục, lưu ghi chú và ghi nhận cấu hình Ubuntu. Toàn bộ thao tác thực hiện trong Ubuntu.
Bước 1. Tạo thư mục bài tổng hợp
mkdir -p ~/hoc_ubuntu/tong_hop
cd ~/hoc_ubuntu/tong_hop
pwd
Kết quả cần thấy: đường dẫn kết thúc bằng /hoc_ubuntu/tong_hop.
Bước 2. Ghi nhận phiên bản Ubuntu
cat /etc/os-release
Tìm dòng PRETTY_NAME hoặc VERSION_ID. Môi trường theo bộ tài liệu này cần là Ubuntu 22.04. Lệnh trên chỉ đọc thông tin hệ điều hành.
Tiếp tục:
whoami
Ghi nhớ tên tài khoản mà lệnh trả về.
Bước 3. Tạo tệp kết quả
nano ket_qua.txt
Nhập mẫu sau và thay nội dung theo máy của bạn:
Ten tai khoan: ghi ten vua thay
Phien ban Ubuntu: ghi phien ban vua thay
Dang dung: may ao VMware hoac Ubuntu truc tiep
Thu muc thuc hanh: ghi ket qua lenh pwd
Toi da biet dung Ctrl+C de dung lenh ping.
Lưu bằng Ctrl + O, Enter, rồi thoát bằng Ctrl + X. Kiểm tra:
cat ket_qua.txt
Kết quả cần thấy: các thông tin bạn vừa ghi, không còn nguyên phần yêu cầu “ghi tên vừa thấy”.
Bước 4. Tìm lại tệp bằng giao diện
Mở Files → Home → hoc_ubuntu → tong_hop. Bạn cần thấy ket_qua.txt.
Đây là tệp thật trên Ubuntu. Khi khởi động lại máy ảo bình thường, tệp vẫn còn, trừ khi bạn chủ động xóa hoặc khôi phục máy ảo về trạng thái cũ.
Bước 5. Đọc tệp từ vị trí khác
Trong Terminal, chạy:
cd ~
cat ~/hoc_ubuntu/tong_hop/ket_qua.txt
Nếu đọc được đúng nội dung, bạn đã hiểu cách dùng đường dẫn mà không phụ thuộc thư mục hiện tại.
2. Kiểm tra thêm nếu đã có môi trường robot
Chạy:
printenv ROS_DISTRO
Nếu chưa hiện humble, quay lại phần môi trường ở bài 6. Tiếp theo:
ros2 --help
Bạn cần thấy phần trợ giúp. Nếu robot đã bật và kết nối đúng mạng:
ip -br -4 addr
ping -c 4 192.168.4.1
Địa chỉ trên chỉ dùng khi robot vẫn sử dụng cấu hình mặc định. Kết quả IP và ping được đọc theo bài 7.
Hoàn thành bước này mới cho thấy môi trường cơ bản đã sẵn sàng. Chưa có chương trình bringup chạy thì không nên dùng việc thiếu topic robot để kết luận phần cứng bị lỗi.
3. Gặp lỗi thì kiểm tra theo thứ tự nào?
flowchart TD
A["Một bước không chạy được"] --> B{"Đang nhập trong Terminal Ubuntu?"}
B -->|"Không"| C["Mở đúng Terminal"]
B -->|"Có"| D{"Lỗi tên lệnh hoặc đường dẫn?"}
D -->|"Có"| E["Kiểm tra lệnh, pwd và ls"]
D -->|"Không"| F{"Bước này cần kết nối mạng?"}
F -->|"Có"| G["Kiểm tra Wi-Fi, IP và kết nối đích"]
F -->|"Không hoặc vẫn lỗi"| H["Lưu nguyên thông báo để kiểm tra"]
G --> H
Không cần cài lại Ubuntu khi mới gặp một lỗi. Trước tiên, xác định lỗi thuộc thao tác, tệp, phần mềm hay mạng.
4. Bảng tra lỗi nhanh
| Bạn thấy gì? | Có thể do đâu? | Làm gì tiếp? |
|---|---|---|
command not found |
Gõ sai hoặc công cụ chưa được cài/nạp môi trường | Kiểm tra tên lệnh; xem bài 6 |
No such file or directory |
Sai vị trí hoặc tệp chưa có | Dùng pwd, ls; xem bài 5 |
Permission denied |
Không đủ quyền với tệp hoặc thiết bị | Ghi lại tệp/cổng bị lỗi; không tự thêm sudo vào lệnh ROS 2 |
| Nhập mật khẩu mà không thấy ký tự | Terminal đang ẩn mật khẩu | Gõ đủ mật khẩu rồi Enter |
| Terminal chưa trả dấu nhắc | Chương trình còn chạy hoặc chờ nhập | Đọc dòng cuối; giữ mở hoặc Ctrl + C tùy mục đích |
Dấu > xuất hiện sau lệnh vừa gõ |
Có thể thiếu dấu nháy hoặc cấu trúc lệnh chưa đóng | Ctrl + C rồi nhập lại lệnh đầy đủ |
| Robot Wi-Fi báo No Internet | Mạng robot chỉ dùng nội bộ | Giữ kết nối, thử ping robot |
| Windows có Internet, Ubuntu không có | Cấu hình card ảo/IP khác Windows | Xem lại Bridged và IPv4 trong Ubuntu |
| Tải tệp xong nhưng không tìm thấy | Tải ở hệ điều hành khác hoặc thư mục khác | Xác định trình duyệt Windows hay Ubuntu |
Package ... not found trong ROS 2 |
Chưa nạp workspace hoặc chưa có gói | Kiểm tra đúng môi trường và workspace của sản phẩm |
5. Gửi thông tin lỗi thế nào để dễ hỗ trợ?
Một ảnh chỉ có dòng “Error” thường thiếu nguyên nhân. Hãy gửi cả lệnh đã chạy và đoạn thông báo liên quan trước/sau lỗi.
Bạn có thể dùng mẫu sau:
Tôi đang làm bài: ...
Bước bị lỗi: ...
Tôi dùng Ubuntu trực tiếp / VMware: ...
Phiên bản Ubuntu: ...
Lệnh đã chạy: ...
Kết quả tôi mong đợi: ...
Thông báo thực tế: ...
Nếu lỗi mạng: Wi-Fi đang kết nối, IP Ubuntu, kết quả ping.
Trong Terminal, bôi chọn nội dung rồi Ctrl + Shift + C để sao chép. Hoặc chụp cửa sổ có cả câu lệnh và thông báo. Không cần gửi mật khẩu Wi-Fi cá nhân hay mật khẩu tài khoản.
6. Bạn đã sẵn sàng học phần robot chưa?
Nếu mục tiêu là hiểu phần mềm trước khi vận hành robot, học tiếp Robot và ROS 2 cơ bản: bài truyền nhận mẫu không cần robot. Nếu muốn sử dụng robot ngay, làm theo các bước sản phẩm bên dưới.
| Việc cần làm | Tự kiểm tra |
|---|---|
| Mở đúng Terminal Ubuntu | Tôi không nhập nhầm vào PowerShell |
| Sao chép và chạy lệnh | Tôi chỉ chạy phần lệnh, không chạy phần kết quả |
| Đọc đường dẫn | Tôi tìm được tệp trong Home |
| Giữ một chương trình chạy | Tôi biết mở Terminal thứ hai |
| Dừng chương trình | Tôi biết Ctrl + C và chờ dấu nhắc trở lại |
| Kiểm tra môi trường | Tôi phân biệt được cài phần mềm với source |
| Kiểm tra mạng robot | Tôi biết tìm IP Ubuntu và đọc kết quả ping |
Nếu đã làm được các việc trên, chuyển sang khu vực ESP32 LiDAR trên website. Làm bài Khởi động và kiểm tra dữ liệu trước, sau đó mới Chạy thử lần đầu.
Nếu Ubuntu của bạn chưa có ROS 2 và workspace, hoàn thành các bài Cài ROS 2 và Cài workspace của sản phẩm trước bước khởi động.
Tài liệu đọc thêm
Sau khi hoàn thành bài thực hành, bạn có thể học thêm các thao tác Terminal qua hướng dẫn dòng lệnh cho người mới của Ubuntu.