Hướng dẫn các câu lệnh cơ bản với topic trong ROS2 – ROS Vietnamese Tutorial

Written by Tung Ngo

15/02/2024

This tutorial is created by RA 018 Tung

Rosbotics Ambassador Program https://www.theconstruct.ai/rosbotics-ambassador/)

Chào các bạn. Trong bài viết này, mình sẽ hướng dẫn các bạn sử dụng các câu lệnh cơ bản với topic trong ROS2 sử dụng nền tảng The Construct.

Nguồn tham khảo:

  1. Nền tảng học ROS trực tuyến The Construct
  2. Khóa học ROS2 (Python): ROS2 Basics in 5 Days

Liệt kê các topic đang hoạt động

Để liệt kê tất cả các topic đang hoạt động, ta sử dụng câu lệnh sau:

ros2 topic list

Để tìm kiếm một topic cụ thể, chúng ta sử dụng thêm lệnh grep như khi sử dụng Terminal bình thường:

ros2 topic list | grep cmd_vel

Xem thông tin chi tiết về một topic

Để xem thông tin chi tiết về một topic nào đó, các bạn có thể sử dụng lệnh info. Ví dụ mình sẽ sử dụng lệnh info để xem thông tin của topic cmd_vel vừa được liệt kê ở trong phần trước:

ros2 topic info /cmd_vel

Thông tin về topic sẽ được hiển thị trên Terminal bao gồm các trường như sau:

  • Type: kiểu dữ liệu của topic
  • Publisher count: số lượng publisher đang hoạt động được kết nối tới topic
  • Subscription count: số lượng subscriber đang hoạt động được kết nối tới topic

Tương tự như vậy, các bạn có thể xem thông tin về bất cứ topic nào mà mình quan tâm. Ví dụ như topic /scan là dữ liệu mà lidar trên robot quét, topic /camera/image_raw là dữ liệu hình ảnh mà camera nhận được:

ros2 topic info /scan
ros2 topic info /camera/image_raw

Các bạn cũng có thể xem trực tiếp dữ liệu nào đang được lưu truyền trên topic bằng lệnh echo. Mình sẽ lấy ví dụ về topic cmd_vel ở trên:

ros2 topic echo /cmd_vel

Không có gì xuất hiện, các bạn có thấy gì kì lạ không?

Các bạn không thao tác nhầm ở đâu đâu. Terminal không xuất hiện gì cả vì hiện tại đang không có dữ liệu nào lưu hành trên topic này. Các bạn sẽ được hướng dẫn cách gửi dữ liệu lên topic trong phần dưới đây.

Xuất bản (Publish) dữ liệu lên một topic

Như các bạn thấy thì hiện tại topic /cmd_vel đang không có dữ liệu nào cả. Vì vậy, chúng ta sẽ tiếp tục tìm hiểu cách gửi dữ liệu, hay là publish dữ liệu lên một topic.

Để publish dữ liệu lên một topic, chúng ta cần biết kiểu dữ liệu của topic đó trước. Sử dụng lệnh sau để xem lại kiểu dữ liệu mà topic /cmd_vel sử dụng:

ros2 topic info /cmd_vel

Theo kết quả hiển thị trên Terminal, kiểu dữ liệu của /cmd_velgeometry_msgs/msg/Twist. Chúng ta cùng xem một message loại này thì gồm những thành phần gì bằng lệnh:

ros2 interface show geometry_msgs/msg/Twist

Một message geometry_msgs/msg/Twist bao gồm hai vector 3 chiều là linear (tốc độ dài) và angular (tốc độ góc) trong không gian ba chiều. Các bạn lưu ý là mỗi tọa độ của vector là một số thực (float64) nhé.

OK. Bây giờ các bạn đã có đủ thông tin để publish các message tới topic /cmd_vel. Chúng ta cùng publish một message lên topic /cmd_vel để turtlebot di chuyển trong không gian mô phỏng nhé. Ta sử dụng câu lệnh sau:

ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.0}}"

Trong đó:

  • ros2: cú pháp của ROS2
  • topic: câu lệnh liên quan tới topic
  • pub: câu lệnh publish message lên topic
  • /cmd_vel: tên topic
  • geometry_msgs/msg/Twist: tên của interface/loại message
  • Phần còn lại: nột dung message muốn publish

Sau khi lệnh trên được chạy, các bạn sẽ thấy Terminal thông báo đang publish các message lên topic /cmd_vel, đồng thời turtlebot cũng bắt đầu di chuyển thành vòng tròn.

Kiểm tra topic hoạt động

Để kiểm tra xem topic có đang hoạt động ổn định hay không, chúng ta cùng thực hiện lại các lệnh tương tự như phần đầu của bài viết và so sánh.

Đầu tiên là xem thông tin về topic bằng lệnh:

ros2 topic info /cmd_vel

Terminal hiển thị hiện tại đã có thêm một publisher, vậy là chúng ta đã publish dữ liệu lên topic thành công.

Tiếp theo, chúng ta sẽ kiểm tra dữ liệu nào đang được lưu truyền trên topic bằng lệnh:

ros2 topic echo /cmd_vel

Trên Terminal sẽ xuất hiện các message đang được lưu hành trên topic.

OK xong. Vậy là qua bài viết này các bạn đã làm quen với các câu lệnh cơ bản để làm việc với topic trong ROS2. Chúc các bạn thực hành thành công.

Video Tutorial

 


Topics: ros2 | ros2 topic
Masterclass 2023 batch2 blog banner

Check Out These Related Posts

129. ros2ai

129. ros2ai

I would like to dedicate this episode to all the ROS Developers who believe that ChatGPT or...

read more

0 Comments

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Pin It on Pinterest

Share This