3. ROS Message

ROS Message nguyên lý và cách sử dụng

Giao tiếp giữa các topic xảy ra bằng cách gửi các message ROS giữa các node. Đối với publisher node (turtle_teleop_key) và subscriber node (turtlesim_node) để giao tiếp, publisher nodesubscriber node phải gửi và nhận cùng một loại message. Loại message gửi trên một topic có thể được xác định bằng cách sử dụng rostopic type

3.1 Rostopic type

rostopic type /turtle1/cmd_vel

Bạn có thể thấy loại topic ở đây là

geometry_msgs/Twist

Bạn có thể xem chi tiết loại message bằng lệnh rosmsg

rosmsg show geometry_msgs/Twist
geometry_msgs/Vector3 linear
  float64 x
  float64 y
  float64 z
geometry_msgs/Vector3 angular
  float64 x
  float64 y
  float64 z

Bạn có thể tìm hiểu thêm về loại message geometry_msgs/Twistđây. Định dạng Twist message bao gồm vận tốc tuyến tính (linear velocity) với đơn vị là m/s và vận tốc góc (angular velocity) đơn vị rad/s theo 3 trục x, y, z.

3.2 Rostopic pub

Để publish các message qua topic của ROS các bạn dùng lệnh với cú pháp sau:

rostopic pub [topic] [msg_type] [args]

Ví dụ để điều khiển turtle sim chạy với vận tốc tuyến tính mô phỏng x= 1.8m/s và vận tốc góc z=1.8 rad/s ta dùng lệnh sau. -1 có nghĩa là 1 message sẽ được truyền đi.

rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'

Nếu bạn muốn turtlesim tiếp tục di chuyển với vận tốc trên, bạn cần phải cấu hình lại rostopic pub -r 1 để message được truyền với tần số ổn định 1 Hz.

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'

3.3 Rostopic hz

Kiểm tra tần truyền nhận của message bằng lệnh rostopic hz. Ví dụ bạn muốn kiểm tra tần số truyền nhận của /turtle1/pose:

rostopic hz [topic]
$ rostopic hz /turtle1/pose

Bạn sẽ nhận được tần số truyền nhận của topic /turtle1/pose rơi vào khoảng ~59 Hz

subscribed to [/turtle1/pose]
average rate: 59.354
        min: 0.005s max: 0.027s std dev: 0.00284s window: 58
average rate: 59.459
        min: 0.005s max: 0.027s std dev: 0.00271s window: 118
average rate: 59.539
        min: 0.004s max: 0.030s std dev: 0.00339s window: 177
average rate: 59.492
        min: 0.004s max: 0.030s std dev: 0.00380s window: 237
average rate: 59.463
        min: 0.004s max: 0.030s std dev: 0.00380s window: 290

Toàn bộ tài liệu được Robotlab.vn biên soạn vì mục đích giáo dục và đang trong quá trình hoàn thiện. Các bạn có thể tham gia các khóa học Online về lập trình robot, ROS tại địa chỉ: www.robotlab.vn Nếu có sai sót các bạn hãy liên hệ qua địa chỉ email sau: robotlab.vn@gmail.com. Nếu bạn thấy nội dung này hữu ích với bạn xin bạn hãy like, share các bài viết này và thích trang: https://www.facebook.com/RobotLab.vn các bạn nhé. Mọi đóng góp của các bạn là động viên lớn đối với chúng tôi. Bản quyền bài viết thuộc về robotlab.vn mọi hành vi sao chép phải được sự cho phép của tác giả. Xin trân trọng cảm ơn.

Last updated