Hướng dẫn chi tiết về ROS Package và Workspace cho người mới

Hướng dẫn chi tiết về ROS Package và Workspace cho người mới

TỔNG QUAN VỀ ROS PACKAGE VÀ WORKSPACE
Trong ROS, phần mềm được tổ chức thành các package (gói). Mỗi package là một thư mục chứa mã nguồn, tệp thực thi (executable files), và các tài nguyên hỗ trợ cho một chức năng cụ thể (ví dụ: xử lý hình ảnh từ camera). Sau khi build, bạn có thể chạy và kiểm tra package từ terminal. Các package được quản lý trong một không gian làm việc gọi là catkin workspace - nơi chứa toàn bộ cấu trúc build của ROS.

Cấu trúc thư mục ROS PACKAGE

CẤU TRÚC CATKIN WORKSPACE
Một workspace điển hình (ví dụ: catkin_ws) gồm các thư mục:

  1. src: Chứa các ROS package (ví dụ: my_camros_mobile_robot).
  2. build & devel: Tự động sinh ra khi build, chứa các file cấu hình và mã đã biên dịch.
  3. logs: Lưu thông tin debug từ quá trình build.

Lưu ý:

  • Catkin là hệ thống build mặc định của ROS, được phát triển bởi Willow Garage.
  • Không đặt package trực tiếp ngoài thư mục src.

Cách tạo một workspace:

  1. Mở terminal và chạy lệnh:
mkdir -p ~/catkin_ws/src
    • mkdir: Tạo thư mục mới.
    • -p: Tự động tạo các thư mục cha nếu chưa tồn tại.
    • ~: Thư mục Home của bạn.
  1. Di chuyển vào thư mục workspace:
cd ~/catkin_ws
  1. Build workspace bằng lệnh:
catkin build

Lưu ý: Trước khi chạy lệnh trên, hãy chắc chắn bạn đã chạy:

source ~/catkin_ws/devel/setup.bash

Sau khi build xong, bạn sẽ thấy các thư mục build, devel, và logs được tạo ra.

3. Tạo một ROS package

Package là thư mục con trong thư mục src của workspace. Mỗi package cần có:

  • Tệp package.xml: Lưu thông tin về package như tên, tác giả, giấy phép, và các phụ thuộc (dependencies).
  • Tệp CMakeLists.txt: Dùng để cấu hình build.

Ngoài ra:

  • Các package không được lồng nhau.
  • Mỗi package cần có thư mục riêng.

Cách tạo package:

  1. Mở terminal và chuyển đến thư mục src:
cd ~/catkin_ws/src
  1. Dùng lệnh catkin_create_pkg để tạo package:
catkin_create_pkg <tên_package> <các_dependencies>

Ví dụ:

catkin_create_pkg my_cam rospy sensor_msgs
Tạo package tên my_cam.
Package này phụ thuộc vào các thành phần rospysensor_msgs.

Sau khi tạo, package sẽ có cấu trúc:

my_cam/
├── package.xml
├── CMakeLists.txt
└── src/

4. Vai trò của package.xml và CMakeLists.txt

  • package.xml: Lưu thông tin về package, bao gồm:
    • Tên package.
    • Tên người bảo trì.
    • Giấy phép.
    • Danh sách các phụ thuộc (dependencies).
  • CMakeLists.txt: Cấu hình build script. Đây là nơi bạn định nghĩa cách chương trình sẽ được build, bao gồm:
    • Các thư viện cần liên kết.
    • Các phụ thuộc đã khai báo trong package.xml.

Ví dụ: Một phần trong CMakeLists.txt:

find_package(catkin REQUIRED COMPONENTS
  rospy
  sensor_msgs
)

Hai thành phần rospysensor_msgs được định nghĩa ở đây để build chương trình.

5. Sự khác biệt giữa package.xml và CMakeLists.txt

  • package.xml: Chứa thông tin mô tả package, giúp ROS và các tài liệu khác nhận diện được.
  • CMakeLists.txt: Hướng dẫn cách build package.

6. Tóm tắt

  • Package trong ROS là thư mục chứa các chương trình và tệp hỗ trợ cho một mục đích cụ thể.
  • Workspace trong ROS là nơi bạn quản lý và build các package.
  • Mỗi package cần có package.xmlCMakeLists.txt, cùng một thư mục src để lưu mã nguồn.