Làm sao để sử dụng gói ROS Localization trong tích hợp cảm biến(sensor fusion) cùng với Turtlebot 3 – Vietnamese ROS Tutorial

Written by Eric Nguyen

08/03/2024

Những điều bạn sẽ được biết trong blog này:

  1. Cách cài đặt IMU tools, Turtlebot 3 simulation, Robot Localization package ở ROS2 foxy
  2. Chạy một ví dụ về gazebo và Rviz cùng turtlebot3
  3. Chỉnh sửa file urdf để thêm các cảm biến cần thiết vào turtlebot3

Danh sách nguồn tài liệu bổ trợ trong post này

  1. Sử dụng rosject: **https://app.theconstructsim.com/rosjects/750453**
  2. The Construct**: https://app.theconstructsim.com/**
  3. Khóa học về ROS2 →
    1. Introduction to Gazebo Sim with ROS2: https://app.theconstructsim.com/courses/introduction-to-gazebo-ignition-with-ros2-170/
    2. URDF for Robot Modeling in ROS2: https://app.theconstructsim.com/courses/83
    3. TF ROS2: https://app.theconstructsim.com/courses/217

Tổng quan

Trong bài toán định vị (localization) ở robot, chúng ta cần sự trợ giúp từ các cảm biến như IMU, GPS, và Odometry. Bằng cách kết hợp các tín hiệu từ các cảm biến lại với nhau(sensor fusion) một lượng thông tin bổ ích sẽ giúp cho robot định vị được tọa độ chính xác trong các môi trường khác nhau. Trong project này, mình sẽ giới thiệu tới các bạn Robot Localization package một công cụ hữu ích để tích hợp sensor fusion cùng với turtlebot 3. Ở project này, mức độ đòi hỏi các bạn cần có một số kiến thức cơ bản như urdf, frames,… để có thể chỉnh sửa và thay đổi các file sẵn có. Hy vọng blog này sẽ mang lại cái nhìn tổng quan về chủ đề sensor fusion và localization ở robotics.

Khởi động rosject

The Construct đã tạo ra một công cụ rất hữu ích là rosject, nơi các bạn dễ dàng truy cập và khởi tạo các project cùng với ROS ở các phiên bản khác nhau:

**https://app.theconstructsim.com/rosjects/750453**

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:

https://flic.kr/p/2pBd9pz

Bây giờ cùng nhau đến bước tiếp theo trong ví dụ này nhé.

Cài đặt các package cần thiết

Đầu tiên các bạn cần cài đặt các package cần thiết để có thể thực hiện project này, sau khi vào môi trường làm việc catkin là ros2_ws các bạn làm theo bằng cách thực hiện các câu lệnh sau đây:

cd ros2_ws/src

git clone https://github.com/Eric-nguyen1402/turtlebot3_localization_ws.git

sudo apt update

cd ..

sudo rosdep install --from-paths src --ignore-src -r -y

Sau bước này thì các bạn sẽ cần một ít thời gian để có thể cài đặt thành công các gói cần thiết cho chương trình.

https://flic.kr/p/2pBfpkb

Tiếp theo sử dụng câu lệnh sau để build môi trường catkin

colcon build --symlink-install

https://flic.kr/p/2pBfpjV

Mình sẽ giải thích lý do tại sao các bạn lại phải sử dụng đường link github phía bên trên. Vì ở trong project này mình muốn tổng hợp và sử dụng những packages cần thiết và chỉnh sửa một số nội dung file nên mình đã gom thành một package lớn bao gồm các packages nhỏ để tiện cho việc chạy chương trình.

https://flic.kr/p/2pBe84i

Mô phỏng trên Gazebo cùng robot

Sau khi đã cài đặt đầy đủ các package cần thiết. Bước tiếp theo bạn cần chọn model robot cho project của bạn. mình sử dụng waffle trong project này:

source ~/ros2_ws/install/setup.bash

export TURTLEBOT3_MODEL=waffle

Sau đó để sử dụng môi trường gazebo và robot, bạn cần truy xuất môi trường gazebo và chạy ros launch package:

export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:~/ros2_ws/src/turtlebot3_simulations/turtlebot3_gazebo/models/

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

Cửa sổ Gazebo sẽ xuất hiện như trên cùng với robot waffle.

https://flic.kr/p/2pBe83G

Chạy Robot Localization package

Như bạn thấy môi trường và robot đã có, điểm quan trọng trong project lần này là biết cách áp dụng các cảm biến như IMU, Odometry, GPS,.. cùng với robot trong nhiệm vụ tổng hợp các tiến hiệu từ các cảm biến khác để giải quyết bài toán định vị cho robot. Ở cửa sổ thứ 2, các bạn thực hiện câu lệnh sau đây:

source ~/ros2_ws/install/setup.bash

ros2 launch robot_localization ekf.launch.py

https://flic.kr/p/2pBe83w

Tạo và mô phỏng robot cùng cảm biến trên Rviz

Sau khi đã có môi trường cho robot hoạt động là gazebo, có các cảm biến được tích hợp trên robot, nhiệm vụ là làm sao để có thể xác định và sử dụng các cảm biến để phục vụ cho bài toán định vị trên robot. Ở đây trên Rviz sẽ mô phỏng và cho thấy các trục tọa độ của từng thành phần được gắn vào robot. Trong các thư mục được cài đặt mình cũng đã chỉnh sửa phần mô phỏng để cho thấy sự thay đổi khi sử dụng gói Robot Localization:

source ~/ros2_ws/install/setup.bash

rviz2 -d ~/ros2_ws/src/turtlebot3_localization_ws/turtlebot3_simulations/turtlebot3_gazebo/rviz/tb3_gazebo_robot_localization.rviz

https://flic.kr/p/2pBeMz2

Các bạn lưu ý là ở đây odom sẽ là frame chính của chúng ta, sau khi mô phỏng trên RViz thành công bây giờ các bjan có thể tận dụng các cảm biến đưuọc cài đặt sẵn trên robot và phục vụ cho project của các bạn như SLAM,…

Thêm một chút gợi ý nho nhỏ cho các bạn để kiểm tra rằng mình đã có các topic và frame được liên kết với nhau chưa. Đầu tiên mình sử dụng:ros2 topic list và kết quả xuất hiện các topic như GPS, IMU, Odometry.

https://flic.kr/p/2pB8KvY

Bên cạnh đó, ROS cung cấp câu lệnh để kiểm tra sự kết nối giữa các frame được khai báo: ros2 run tf2_tools view_frames.py

Sau đó file sẽ được lưu dưới dạng pdf và bạn chỉ việc mở lên để kiểm tra bằng câu lệnh sau:

evince frames.pdf

https://flic.kr/p/2pBfpiH

Để có được kết quả như trên, thì chủ yếu mình đã chỉnh sửa và thêm vào IMU và GPS tại urdf file. Các bạn có thể mở gói turtlebot3_description để chỉnh sửa tùy theo project của mình.

https://flic.kr/p/2pBeMA4

Hy vọng qua blog này các bạn đã có thêm một số kiến thức cũng như công cụ hỗ trợ cho các dự án liên quan tới robotics sử dụng ROS. Bên cạnh đó, các bạn có thể theo dõi các blog khác cũng như các khóa học liên quan trên The Construct nhé.


Video Tutorial

Masterclass 2023 batch2 blog banner

Check Out These Related Posts

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