ROS2 Multi Nodes Project
- Project Structure
Tạo cấu trúc thư mục như sau:
~/ros2_ws/src/my_cpp_pkg
├── CMakeLists.txt
├── launch
│ └── all_nodes.launch.py
├── package.xml
└── src
├── camera_node.cpp
├── tcp_server_node.cpp
└── uart_node.cpp- Install Required System Packages
Trước khi bắt đầu, cài đặt các package cần thiết cho OpenCV và ROS2 image processing:
sudo apt update
sudo apt install -y \
ros-jazzy-cv-bridge \
ros-jazzy-image-transport \
python3-opencv \
libopencv-dev- Verify Installation
Kiểm tra package cv_bridge đã được cài thành công:
ros2 pkg list | grep cv_bridgeKết quả mong đợi:
cv_bridge- Rebuild Workspace
Sau khi cài đặt dependencies:
cd ~/ros2_ws
source /opt/ros/jazzy/setup.bash
colcon build- Build And Run Project
Sau khi hoàn tất việc thêm source code:
cd ~/ros2_ws
colcon build --packages-select my_cpp_pkg
source install/setup.bash
ros2 launch my_cpp_pkg all_nodes.launch.py- Important Notes
Sau mỗi lần chỉnh sửa source code, cần rebuild và source lại workspace để đảm bảo chương trình hoạt động ổn định.
cd ~/ros2_ws
colcon build --packages-select my_cpp_pkg
. install/setup.bashKhi chạy all_nodes.launch.py, hệ thống sẽ khởi tạo đồng thời cả 3 ROS2 nodes. camera_node thực hiện việc thu nhận và xử lý hình ảnh để detect vật thể, sau đó tính toán tọa độ (x, y) và publish dữ liệu lên ROS2 topic. uart_node subscribe dữ liệu này và truyền tọa độ về laptop thông qua giao tiếp UART, trong khi tcp_server_node phát dữ liệu tọa độ theo thời gian thực tới các TCP client kết nối vào server thông qua địa chỉ IP của Raspberry Pi và port 9000.