1. ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CƠ KHÍ
**********
BÁO CÁO BÀI TẬP LỚN
ĐIỀU KHIỂN ROBOT TỰ HÀNH
Giảng viên: TS. Bùi Đình Bá
ĐỀ TÀI:
XE TỰ HÀNH VẼ BẢN ĐỒ
VÀ YOLO NHẬN DIỆN VẬT THỂ TRÊN ROS
Sinh viên thực hiện :
1 Nguyễn Duy Luận 20170816
2 Trần Văn Kha 20170784
3 Lê Văn Bình 20170654
4 Trần Đức Anh 20170646
Hà Nội, 20/02/2023
2. 1
I. Bám tường và vẽ bản đồ
1. Giới thiệu về gazebo và ROS
GAZEBO
o Gazebo là một phần mềm mô phỏng 3D mã nguồn mở.
o Gazebo tích hợp công cụ vật lý ODE (cung cấp các môi
trường mô phỏng giống thực tế, các công cụ như camera,
laser), Open CV và code hỗ trợ để mô phỏng cảm biến và điều
khiển cơ cấu chấp hành.
ROS
o Robot Operating System: Hệ điều hành robot
o ROS Noetic, Kinetic, Melodic
o Là một bộ phần mềm trung gian người máy với mã nguồn mở
o Tạo điều kiện giao tiếp giữa các tiến trình
o Chức năng
o Lập lịch tức là đóng vai trò phân bổ tài nguyên như CPU, bộ
nhớ, dung lượng đĩa, thiết bị I /O cho các chương trình khác
nhau khi được yêu cầu
o Tóm tắt phần cứng tức là Hệ điều hành cung cấp cho phần
mềm một cách dễ dàng để truy cập tài nguyên phần cứng mà
không cần biết các chi tiết bên trong của phần cứng
Mô hình đồ thị tính toán
Quy trình = ROS Master, Biểu diễn = Node, Liên kết = Topic
Các công cụ
Rviz: Công cụ biểu diễn mô hình 3D
Rosbag: Công cụ dòng lệnh ghi, xuất dữ liệu thông
điệp trên ROS
Catkin= Rosbuild
Rosbash: rosls, roscd, roscp, rosed, rosrun
Roslaunch: Khởi chạy nhiều ros node
3. 2
2. Thiết kế mô hình trên gazebo
Mô hình trên Gazebo của nhóm bao gồm 1 xe tự hành và 1 mô hình
mê cung
Gồm file
o Xe tự hành:
o Mê cung:
Tạo plugin giữa xe và camera
Tạo plugin giữa xe và cảm biến
Mô hình mê cung của nhóm
4. 3
3. Mô phỏng trên gazebo
Thuật toán mô phỏng
2m
20
m
8m
6. 5
Robot tìm
cạnh bên
trại củạ
bức tứờng
Bạt
đạủ
Robot di
chủyên doc
thêo bức
tứờng bên
trại đo
Gạp
tứờng
chạn
đứờn
g?
Rê phại
Co
Khong
7. 6
• Code lập trình
Gồm các file: bug2.py follow_wall.py go_to_point.py
• Mô phỏng việc bám tường
• Xây dựng bản đồ
•
8. 7
II. Ứng dụng YOLO để nhận dạng vật thể:
1. Giới thiệu về YOLO:
You Only Look Once là một hệ thống phát hiện đối tượng hiện đại, theo
thời gian thực. Ban đầu nó được phát triển vào khoảng năm 2015 và vượt
trội hơn mọi kỹ thuật khác tại thời điểm đó.
YOLO có kiến trúc gọn gàng của riêng mình dựa trên CNN và được
chứng minh là một kỹ thuật phát hiện đối tượng đang di chuyển cho các vấn
đề được sử dụng rộng rãi. Với dòng thời gian, nó đã trở nên nhanh hơn và
tốt hơn, với các phiên bản của nó được đặt tên là: YOLO V1, YOLO V2,…,
YOLO V7.
YOLO hoạt động như thế nào:
Với Input là 1 ảnh, đầu ra mô hình là một ma trận 3 chiều có kích
thước S×S×(5×N+M) với số lượng tham số mỗi ô là (5×N+M) với N và M
lần lượt là số lượng Box và Class mà mỗi ô cần dự đoán. Ví dụ với hình ảnh
trên chia thành 7×7 ô, mỗi ô cần dự đoán 2 bounding box và 3 object : con
chó, ô tô, xe đạp thì output là 7×7×13, mỗi ô sẽ có 13 tham số, kết quả trả
về (7×7×2=98) bounding box.
Dự đoán mỗi bounding box gồm 5 thành phần : (x, y, w, h, prediction) với
(x, y ) là tọa độ tâm của bounding box, (w, h) lần lượt là chiều rộng và chiều
cao của bounding box. Với hình ảnh trên như ta tính mỗi ô sẽ có 13 tham số,
9. 8
ta có thể hiểu đơn giản như sau tham số thứ 1 sẽ chỉ ra ô đó có chứa đối tượng
nào hay không P(Object), tham số 2, 3, 4, 5 sẽ trả về x, y ,w, h của Box1.
Tham số 6, 7, 8, 9, 10 tương tự của Box2, tham số 11, 12, 13 lần lượt là xác
suất ô đó có chứa object1( P(chó|object), object2(P(ô tô|object)), object3(P(
xe đạp|object))
Ưu điểm:
"Hiểu" được khái quát về đại diện của mỗi đối tượng. Qua đó có thể
phát hiện và phân loại chính xác vật thể trong đời thực và các tác phẩm
hội hoạ.
Nhanh.
Gọn nhẹ.
Mã nguồn mở.
Nhược điểm:
YOLO áp đặt các ràng buộc về không gian trên những bounding box,
mỗi grid cell chỉ có thể predict rất ít bounding box và duy nhất một
class. Các ràng buộc này hạn chế khả năng nhận biết số object nằm
gần nhau, cũng như đối với các object có kích thước nhỏ.
YOLO sử dụng các feature tương đối thô để predict bounding box, do
model sử dụng nhiều lớp downsampling từ ảnh đầu vào. Bởi các hạn
chế này của model khi huấn luyện để predict bounding box từ data,
dẫn đến YOLO không thực sự tốt trong việc nhận diện các object với
tỉ lệ hình khối mới hoặc bất thường so với tập data.
Ngoài ra, trong quá trình training, loss function không có sự đánh giá
riêng biệt giữa error của bounding box kích thước nhỏ so với error
của bounding box kích thước lớn. Việc coi chúng như cùng loại và
tổng hợp lại làm ảnh hưởng đến độ chính xác toàn cục của mạng.
Error nhỏ trên box lớn nhìn chung ít tác hại, nhưng error nhỏ với box
rất nhỏ sẽ đặc biệt ảnh hưởng đến giá trị IOU.
10. 9
2.Code xử lý ảnh với YOLO:
File header YoloObjectDetector.hpp:
21. 20
3. Kết quả khi áp dụng YOLO để nhận diện vật thể:
22. 21
III. Phân công công việc
Tên thành viên Công việc
Nguyễn Duy Luận
- Làm phần bám tường và vẽ bản đồ
- Lên kế hoạch
Trần Văn Kha - Làm phần YOLO
Lê Văn Bình - Viết báo cáo, PowerPoint thuyết trình
Trần Đức Anh
- Kiểm tra code
23. 22
TÀI LIỆU THAM KHẢO
[1]YOLO ROS: Real-Time Object Detection for ROS
https://github.com/leggedrobotics/darknet_ros