Atlas Robotics

Kiến thức robot bằng tiếng Việt

Blog

Bài viết kỹ thuật về lập trình nhúng, ROS 2, SLAM, Nav2 và AMR/AGV — viết từ kinh nghiệm làm robot thật.

34 bài viết · ROS / ROS2

Tạo package C++ trong ROS2 từng bước
ROS2 PackageTrung bình

Tạo package C++ trong ROS2 từng bước

Từ lệnh ros2 pkg create đến node C++ đầu tiên chạy được bằng ros2 run — quy trình đầy đủ để dựng một package ament_cmake trong workspace ROS2.

10 phút đọc
Tạo package Python trong ROS2 từng bước
ROS2 PackageTrung bình

Tạo package Python trong ROS2 từng bước

Package Python không cần biên dịch nhưng vẫn phải qua colcon build — entry_points trong setup.py là chỗ khai executable, thay cho CMakeLists.txt bên C++.

10 phút đọc
CMakeLists.txt trong package ROS2 — đọc hiểu từng dòng
ROS2 PackageTrung bình

CMakeLists.txt trong package ROS2 — đọc hiểu từng dòng

CMakeLists.txt do ros2 pkg create sinh ra trông rối, nhưng chỉ có vài khối lệnh lặp lại theo khuôn cố định — hiểu đúng thứ tự là đọc/sửa được bất kỳ package C++ nào.

11 phút đọc
package.xml — bản khai lý lịch của một package ROS2
ROS2 PackageTrung bình

package.xml — bản khai lý lịch của một package ROS2

package.xml là file duy nhất mà mọi package ROS2 bắt buộc phải có — khai đúng các thẻ <depend> ở đây quyết định colcon build có tự tính đúng thứ tự build hay không.

11 phút đọc
Launch File trong ROS2 — khởi động nhiều node cùng lúc
ROS2 PackageTrung bình

Launch File trong ROS2 — khởi động nhiều node cùng lúc

Một robot thật chạy hàng chục node cùng lúc — launch file gói toàn bộ lệnh ros2 run rời rạc đó thành một file Python duy nhất, chạy bằng một lệnh ros2 launch.

11 phút đọc
Parameter trong ROS2 — cấu hình node không cần sửa code
ROS2 PackageTrung bình

Parameter trong ROS2 — cấu hình node không cần sửa code

Tốc độ tối đa, tên frame, ngưỡng cảm biến — mọi giá trị có thể cần đổi theo robot hoặc theo môi trường nên khai báo là parameter, không hardcode trong code node.

11 phút đọc
ros2 node — liệt kê và kiểm tra node đang chạy
ROS2 ToolsCơ bản

ros2 node — liệt kê và kiểm tra node đang chạy

Trước khi debug topic hay service, câu hỏi đầu tiên luôn là: node nào đang thực sự chạy? ros2 node là công cụ trả lời câu hỏi đó trong vài giây.

10 phút đọc
ros2 topic — xem, gửi và đo tốc độ dữ liệu topic
ROS2 ToolsCơ bản

ros2 topic — xem, gửi và đo tốc độ dữ liệu topic

echo để xem dữ liệu, pub để giả lập publisher, hz/bw để đo tốc độ — ros2 topic là bộ công cụ dùng nhiều nhất khi debug giao tiếp giữa các node.

11 phút đọc
ros2 service — gọi thử service từ terminal
ROS2 ToolsCơ bản

ros2 service — gọi thử service từ terminal

Không cần viết một client node riêng chỉ để test — ros2 service call gọi thẳng bất kỳ service nào từ terminal, xem kết quả ngay lập tức.

10 phút đọc
ros2 action — gửi goal và theo dõi tiến trình từ terminal
ROS2 ToolsCơ bản

ros2 action — gửi goal và theo dõi tiến trình từ terminal

Test Nav2 mà không cần mở RViz2 click chuột — ros2 action send_goal gửi thẳng toạ độ đích, in feedback theo thời gian thực ngay trong terminal.

10 phút đọc
ros2 param — đọc và đổi parameter khi node đang chạy
ROS2 ToolsCơ bản

ros2 param — đọc và đổi parameter khi node đang chạy

Bài Parameter đã nói về declare_parameter trong code — ros2 param là công cụ dòng lệnh để đọc, đổi, và sao lưu những parameter đó khi node đang chạy thật.

10 phút đọc
ros2 bag — ghi lại và phát lại dữ liệu robot
ROS2 ToolsCơ bản

ros2 bag — ghi lại và phát lại dữ liệu robot

Lỗi SLAM chỉ xảy ra 1 lần trong 10 lần chạy thử ngoài thực địa — ros2 bag ghi lại toàn bộ dữ liệu topic của lần chạy đó để phát lại và debug ở bàn làm việc, không cần mang robot ra hiện trường lần nữa.

11 phút đọc