
Làm sao để chạy turtlebot3 và lưu rosbag trên ROS2 Humble – ROS Vietnamese Tutorial
This tutorial is created by Rosbotics Ambassador 016 Eric
Rosbotics Ambassador Program https://www.theconstruct.ai/rosbotics-ambassador/)
Những điều bạn sẽ được biết trong blog này:
- Cách cài đặt Turtlebot3 package ở ROS2 Humble
- Chạy một ví dụ về turtlebot3 với Gazebo
- Cách lưu dữ liệu của topic sử dụng rosbag ở ROS2
Danh sách nguồn tài liệu bổ trợ trong post này
- Sử dụng rosject: https://app.theconstructsim.com/l/5bda8c95/
- The Construct: https://app.theconstructsim.com/
- Sử dụng rosject: https://app.theconstructsim.com/l/5bda8c95/
- The Construct: https://app.theconstructsim.com/
- Khóa học về ROS2 → Introduction to Gazebo Sim with ROS2: https://app.theconstructsim.com/courses/introduction-to-gazebo-ignition-with- ros2-170/
Tổng quan
Bước chân vào thế giới của Robotics, không thể nào không nhắc đến ROS(Robot Operating System), một hệ điều hành mạnh mẽ cho lập trình robots. Ở trong post này, hãy cùng nhau học cách làm sao để chạy thử mô hình turtlebot3 trên Gazebo và lưu các dữ liệu thông qua rosbag trên ROS2 Humble.
Khởi động rosject
Để có thể thực hiện các bước trong blog này, chúng ta cần có ROS2 được cài đặt trên hệ thống, cũng như ros2 ROS2 Workspace. Để thuận tiện hơn, tại The Construct đã chuẩn bị một rosject để các bạn dễ dàng truy cập và khởi tạo các project:
https://app.theconstructsim.com/l/5bda8c95/
Chỉ với một cú click chuột vào link phía trên, các bạn có thể tạo một rosject của riêng bạn, bạn có thể chỉnh sửa các nội dung liên quan. Như hình bên dưới là một rosject hoàn chỉnh, bạn chỉ việc nhấn vào nút RUN để khởi động rosject.
Sau khi nhấn vào nút RUN bạn sẽ thấy rosject được chạy trên màn hình. Ở đây, rosject cung cấp cho bạn cả terminal để có thể nhập các câu lệnh:
Bây giờ cùng nhau đến bước tiếp theo trong ví dụ này nhé.
Khởi động Turtlebot3 package
Bước đầu tiên, các bạn có thể kiểm tra trên ROS2 đã được cài đặt turtlebot3 package hay chưa bằng câu lệnh như sau:
Ở đây turtlebot3 package đã được cài đặt sẵn nên trên terminal là danh sách các packages kèm theo turtlebot3. Ngoài ra, các bạn có thể cài đặt thông qua câu lệnh dưới đây:
sudo apt install
ros-humble-turtlebot3*
Mô phỏng trên Gazebo
Sau khi đã thành công kiểm tra hoặc cài đặt turtlebot3 trong ROS2, tiếp theo các bạn sẽ mô phỏng robot trên môi trường Gazebo.
Các bạn cần lưu ý là nếu chúng ta chỉ có một robot thì mình không cần setup_domain ID, vì ROS sẽ tự động cài mặc định ROS_DOMAIN_ID=0. Trong trường hợp nếu bạn có nhiều hơn một robots thì khi đó bạn sẽ khởi tạo từng ID riêng cho robot của mình.
Để xây dựng ROS2 workspace cho turtlebot3, đầu tiên đi vào môi trường catkin workspace có sẵn:
cd
ros2_ws/
Có 2 cách để kích hoạt môi trường hoạt động, nếu bạn dùng debian package thì sử dụng:
/source
/opt/ros/humble/setup.bash
Nếu bạn sử dụng package ở trong ros package bạn tạo thì chạy dòng lệnh sau:
source
install/setup.bash
Tiếp theo lựa chọn và cài đặt mẫu robot bạn muốn sử dụng. Bạn có thể thay đổi mẫu robot bạn muốn sử dụng bằng câu lệnh bên dưới. Ở đây chúng ta sử dụng robot burger:
export
TURTLEBOT3_MODEL=burger
Tiếp theo, bạn sử dụng câu lệnh bên dưới để sử dụng turtlebot3 trong môi trường Gazebo:
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:`ros2 pkg
\ prefix turtlebot3_gazebo \
`/share/turtlebot3_gazebo/models/
Cuối cùng, khởi động turtlebot3 package ở Gazebo thông qua câu lệnh sau:
ros2 launch turtlebot3_gazebo
turtlebot3_house.launch.py
Cửa sổ Gazebo sẽ xuất hiện như trên cùng với robot burger. Chúc mừng bạn đã thành công khởi động turtlebot3 trên Gazebo.
Lưu dữ liệu cùng với Rosbag trên ROS2 Humble
Khoan đóng terminal Gazebo nhé. Vẫn còn nhiều điều hay mà trong blog này sẽ chia sẽ với các bạn. Khi làm việc với robot, các bạn sẽ phải dùng nhiều dữ liệu từ nhiều topic ngoài ra còn để truy xuất dữ liệu, trình bày trên biểu đồ,…với các ứng dụng đó thì
Rosbag chính là cứu tinh cho bạn.
Đầu tiên, chúng ta mở một cửa sổ khác để kiểm tra các topic được public trên robot.
ros2 topic list
Như các bạn có thể thấy trên đây là các topics của turtlebot3 trên Gazebo. Chúng ta có thể xem dữ liệu của topic bằng từ khóa echo , ở đây mình lấy ví dụ từ topic /odom:
ros2 topic echo
/odom
Công dụng của rosbag chỉ với một câu lệnh sẽ lưu các nội dung liên quan đến topic
bạn muốn record.
ros2 bag record
/topic_name
Với câu lệnh trên, rosbag sẽ tự động được lưu ngay trên đường dẫn mà bạn sử dụng rosbag. Ngoài ra, bạn có thể lưu nhiều topics và thay đổi tên cũng như nơi lưu bag file. Dưới đây, mình có ví dụ lưu 2 topics là /turtle1/cmd_vel và /turtle1/pose với tên file là
turtlebot. Ký tự cho phép bạn lựa chọn tên của bag file.
ros2 bag record -o turtlebot /turtle1/cmd_vel
/turtle1/pose
Sau khi lưu bag file bạn có thể kiểm tra bag file đã lưu bằng câu lệnh:
ros2 bag info
file_name
Cám ơn các bạn đã theo dõi blog đến đây. Hy vọng blog này sẽ giúp ích cho các bạn trong quá trình học và tìm hiểu về ROS cũng như Robotics. Cùng đón chờ nhiều blog bổ ích như thế này trên The Construct nhé!