Đề tài NCKH: Nghiên cứu mạng học sâu điều khiển Quadcopter né tránh vật cản

Đề tài NCKH chi tiết về ứng dụng mạng học sâu (Deep Learning) điều khiển Quadcopter né vật cản. Phân tích thuật toán, mô hình và kết quả nghiên cứu.

Chuyên ngành

Điện - Điện Tử

Người đăng

Ẩn danh

Thể loại

Báo cáo tổng kết đề tài nghiên cứu khoa học của sinh viên

2022

57
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Điều khiển Quadcopter và Mạng Học Sâu

Trong những năm gần đây, Quadcopter (hay còn gọi là drone tứ rotor) đã trở thành một lĩnh vực nghiên cứu quan trọng trong robotics và tự động hóa. Điều khiển Quadcopter né tránh vật cản bằng mạng học sâu (Deep Learning) là một bước tiến lớn trong công nghệ UAV (Unmanned Aerial Vehicle). Kết hợp giữa CNN (Convolutional Neural Network) và các thuật toán điều khiển hiện đại, chúng ta có thể xây dựng các hệ thống tự động nhận diện và tránh né các vật cản trong môi trường bay phức tạp. Nghiên cứu này mở ra những ứng dụng thực tiễn trong giám sát, cứu hộ, và khám phá không gian được điều khiển tự động.

1.1. Cấu trúc cơ bản của Quadcopter

Quadcopter bao gồm khung máy bay, bốn động cơ không chổi than (BLDC), ESC (Electronic Speed Control), mạch điều khiển, cảm biến, và hệ thống điều khiển bay. Mỗi thành phần đóng vai trò quan trọng trong hoạt động bay và điều khiển tự động. Khung QAV 250 được sử dụng với sợi carbon, cung cấp độ bền cao và trọng lượng nhẹ. Các động cơ MT 2204-2300KV kết hợp với mạch điều khiển F3 Racing tạo nên một hệ thống bay ổn định và đáp ứng nhanh.

1.2. Vai trò của mạng học sâu trong điều khiển tự động

Mạng học sâu (Deep Learning) với kiến trúc CNN cho phép máy bay nhận diện các vật cản từ dữ liệu camera. Yolo (You Only Look Once) là một trong những thuật toán phát hiện đối tượng hiệu quả nhất, cung cấp khả năng nhận diện vật cản theo thời gian thực. Kết hợp với bộ điều khiển PID, hệ thống có thể tự động tính toán lộ trình bay an toàn và né tránh vật cản hiệu quả.

II. Hệ Thống ROS và Kiến trúc Mạng Nơ ron Tích chập

ROS (Robot Operation System) là nền tảng phần mềm quan trọng cho điều khiển Quadcopter hiện đại. Nó cung cấp giao tiếp giữa các module phần cứng, cảm biến, và thuật toán xử lý. Kiến trúc mạng nơ-ron tích chập (CNN) được xây dựng với các lớp tích chập, pooling, và fully connected layers. Hệ thống này xử lý hình ảnh từ camera và trích xuất các đặc trưng để nhận diện vật cản. Protocol MAVLink được sử dụng để truyền nhận dữ liệu giữa các thành phần hệ thống. Sự kết hợp giữa ROS và mạng học sâu tạo nên một nền tảng mạnh mẽ cho điều khiển Quadcopter tự động và né tránh vật cản thông minh.

2.1. Cấu trúc ROS và giao tiếp dữ liệu

ROS hoạt động trên ba cấp độ: Filesystem Level, Computation Graph, và Community Level. ROS Computation Graph bao gồm các Nodes, Topics, Services, và Parameters. Giao tiếp giữa Raspberry Pi 4 và các cảm biến được quản lý thông qua ROS Nodes. Protocol MAVLink đảm bảo truyền nhận dữ liệu ổn định giữa bộ điều khiển bay và máy tính tính toán.

2.2. Kiến trúc CNN và phát hiện vật cản

Mạng nơ-ron tích chập (CNN) sử dụng các lớp Convolution, Max Pooling, và Flatten để xử lý hình ảnh. Lớp Convolution với kernel size và stride khác nhau trích xuất các đặc trưng cấp độ cao. Thuật toán Yolo áp dụng CNN để phát hiện đối tượng với tốc độ nhanh, cho phép Quadcopter nhận diện và né tránh vật cản theo thời gian thực.

III. Thuật toán Nhận diện Vật cản và Phát hiện Đối tượng

Thuật toán nhận diện vật cản là trái tim của hệ thống điều khiển Quadcopter né tránh vật cản. Yolo sử dụng CNN để chia hình ảnh thành lưới và dự đoán bounding boxes cho các vật cản. Hàm IOU (Intersection Over Union) đánh giá độ chính xác của detection. Hệ thống camera lắp trên Quadcopter liên tục cung cấp dữ liệu video cho mô hình mạng học sâu. Khi phát hiện vật cản, hệ thống tính toán tọa độ không gian và truyền lệnh điều khiển cho bộ PID. Phương pháp học sâu được huấn luyện trên tập dữ liệu lớn để tăng độ nhạy cảm và giảm false positive. Quá trình này lặp lại liên tục để đảm bảo an toàn bay và né tránh vật cản hiệu quả.

3.1. Phát hiện đối tượng bằng Yolo

Yolo xử lý toàn bộ hình ảnh một lần, dự đoán bounding boxes và class probabilities. Mỗi ô lưới dự đoán vị trí vật cản với độ tin cậy cao. Hàm IOU tính tỉ lệ giao nhau giữa predicted box và ground truth box. Mạng học sâu được huấn luyện để nhận diện các loại vật cản khác nhau, từ cây cối đến tòa nhà, cáp điện.

3.2. Quy trình xử lý hình ảnh từ camera

Camera trên Quadcopter thu nhận hình ảnh RGB và gửi tới Raspberry Pi 4 qua cổng USB. Mạng CNN nhận hình ảnh đầu vào, trích xuất đặc trưng qua các lớp tích chập, và đưa ra dự đoán vị trí vật cản. Dữ liệu được xử lý với tốc độ cao để điều khiển Quadcopter phản ứng kịp thời.

IV. Bộ Điều khiển PID và Kết quả Ứng dụng Thực tiễn

Bộ điều khiển PID (Proportional-Integral-Derivative) là công cụ quan trọng để điều khiển Quadcopter né tránh vật cản một cách mịn nhạy. PID nhận tín hiệu sai số từ hệ thống mạng học sâu và điều chỉnh tốc độ động cơ để di chuyển theo lộ trình an toàn. Chỉnh định PID (PID tuning) yêu cầu xác định các hệ số Kp, Ki, Kd phù hợp với đặc tính động lực học của máy bay. Kết quả nghiên cứu chứng minh rằng Quadcopter có thể tự động nhận diện vật cản trong môi trường thực tế, tính toán lộ trình tránh né, và điều khiển bay an toàn. Mạng học sâu cùng PID tạo thành một hệ thống điều khiển vòng kín hiệu quả. Ứng dụng thực tiễn bao gồm giám sát tự động, khám phá không gian, và cứu hộ trong môi trường nguy hiểm.

4.1. Nguyên lý hoạt động của bộ điều khiển PID

PID tính sai số e(t) = setpoint - feedback và tính tổng ba thành phần: Proportional, Integral, Derivative. Thành phần P phản ứng nhanh với sai số hiện tại, I loại bỏ sai số tĩnh, D dự báo xu hướng. Kết hợp cả ba thành phần, bộ điều khiển PID giúp Quadcopter ổn định bay và né tránh vật cản mượt mà.

4.2. Kết quả và ứng dụng thực tiễn

Mô hình Quadcopter được xây dựng thành công với khả năng nhận diện vật cản đạt độ chính xác cao. Mạng học sâubộ điều khiển PID hoạt động hiệu quả trong môi trường thực. Ứng dụng bao gồm giám sát sân bay, khám phá các khu vực không thể tiếp cận, và cứu hộ tại chỗ. Nghiên cứu mở ra hướng phát triển Quadcopter tự trị thông minh.

21/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. Giới thiệu về Quadcopter Nguyên lí hoạt động Một chiếc Quadcopter bao gồm bốn động cơ cố định và mỗi động cơ sẽ gắn một cánh quạt. Khi cánh quạt quay sẽ tạo ra lực nâng giúp Quadcopter bay lên và di chuyển linh hoạt. Lực nâng sẽ phụ thuộc vào tốc độ của motor và kích thước của cánh quạt được sử dụng.

Một cặp motor - cánh quạt đối diện nhau sẽ quay cùng chiều kim đồng và cặp đối diện còn lại quay ngược chiều kim đồng hồ nhằm cân bằng moment xoắn được tạo ra bởi các cánh quạt trên khung. Và cả 4 cánh phải sinh ra cùng một lực đẩy bằng nhau khi Quadcopter cất cánh và hạ cánh.1 Cấu trúc cơ bản của Quadcopter Trong chuyển động sẽ có ba loại góc thay đổi trên Quadcopter, gồm Pitch (φ), Roll (θ), và Yaw (ψ) được thể hiện ở hình 1. Pitch - Đây là chuyển động của Quadcopter về phía trước hoặc phía sau. Góc Pitch được điều khiển bằng cách thay đổi tốc độ của phía sau (cánh quạt Sau Phải - Sau Trái) và phía trước (cánh quạt Trước Phải - Trước Trái), trong khi vẫn giữ được tổng lực đẩy.

Roll - Đây là chuyển động bay nghiêng của Quadcopter về một bên, hoặc sang trái hoặc phải. Góc Roll được điều khiển bằng cách thay đổi tốc độ giữa bên phải (cánh 2 quạt Trước-Phải và cánh quạt Sau-Phải) và bên trái (Trước-trái - Sau-Trái), sao cho tổng lực đẩy do 4 rotor tạo ra không thay đổi. Yaw - Đây là góc xoay của Quadcopter hoặc sang phải sang trái. Góc Yaw được điều khiển bằng cách thay đổi tốc độ giữa cặp Trước-Phải - Cánh quạt sau bên trái và cặp cánh quạt Trước-Trái - Sau-Phải sao cho tổng lực đẩy của bốn rotor vẫn không thay đổi.2 Các chuyển động cơ bản của Quadcopter 1.

Hệ điều hành của Robot (ROS) – Robot Operation System 1. Tổng quan ROS không chỉ cung cấp các dịch vụ hệ điều hành tiêu chuẩn (trừu tượng hóa phần cứng, quản lý tranh chấp, quản lý quy trình) mà còn cung cấp các chức năng cấp cao (các cuộc gọi không đồng bộ và đồng bộ, cơ sở dữ liệu tập trung, hệ thống cấu hình robot…). Nó là một hệ điều hành mã nguồn mở, dùng cho các ứng dụng trên robot. Cũng giống như các hệ điều hành cho PC, máy chủ hoặc thiết bị độc lập, ROS là một hệ điều hành đầy đủ cho robot dịch vụ.

Về cơ bản, ROS cũng có những khả năng cần thiết cho một hệ điều hành cơ bản như khả năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu giữa các tác vụ bằng thông điệp và quản lý dữ liệu…Bên cạnh đó, để có thể ứng dụng trong lĩnh vực robotics, ROS đã phát triển các khái niệm, thư viện và công cụ chuyên biệt dành cho việc thu thập dữ liệu, xử lý, hiển thị và điều khiển…Ngoài ra, ROS còn có thể tương tác và kết hợp với nhiều framework khác như Player (một software tool cho robot và các ứng dụng về cảm biến), Orocos (điều khiển thông minh 3 trong robot và tự động hóa), Carmen (Robot Navigation Toolkit), Orca (các đối tượng cho robot)… ROS có nhiều khái niệm dựa trên graph, biểu diễn mối quan hệ giữa các thành phần trong hệ điều hành như stack, package, node, topic, message, service… cũng như các khái niệm hệ tọa độ, và phép chuyển đổi hệ tọa độ. Về khía cạnh trao đổi dữ liệu và giao tiếp, ROS có tích hợp sẵn một vài chuẩn giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics và lưu trữ dữ liệu trên Parameter Server. Hệ điều hành ROS cùng với các công cụ và thư viện hỗ trợ thường phát hành dưới dạng ROS Distribution, tương tự Linux Distribution, cung cấp những bộ phần mềm ổn định để người dùng sử dụng và phát triển thêm. ROS là một hệ điều hành mã nguồn mở, cho nên thu hút được sự quan tâm và đóng góp của cộng đồng trên khắp thế giới để xây dựng phát triển các dự án robotics, các công cụ và thư viện kèm theo.

Có rất nhiều mô hình robot đã được xây dựng thành công với hệ điều hành ROS này. Nao Peoplebot Baxter Qbo AscTec Lego NXT AR Drone Hình 1.3 Các Robot có sử dụng hệ thống ROS Hiện nay ROS chỉ chạy trên hệ điều hành Ubuntu và Mac OS X. Cộng đồng ROS đang thử nghiệm hỗ trợ cho các nền tảng khác như Windows, ARM Linux, Fedora và Gentoo. 4  Ưu điểm của ROS Xây dựng ứng dụng robotics trên nền ROS sẽ giảm đi một lượng đáng kể các công việc lập trình, thiết lập hệ thống, tận dụng nguồn tài nguyên mã nguồn mở vô cùng phong phú của cộng đồng.

Ta có thể so sánh khối lượng công việc kỹ thuật cơ bản (Required Engineering) và khối lượng nghiên cứu khoa học nòng cốt (Core Research) như hình 1. Required Engineering Core Research Worst Case With ROS 0 100 Hình 1.4 So sánh khối lượng công việc phải làm khi dùng và không dùng ROS Từ đó, ta thấy rằng, với sự hiệu quả từ ROS, thời gian dành cho các công việc kỹ thuật cơ bản sẽ được giảm xuống rất đáng kể, và do đó, tăng thời gian cho công việc nghiên cứu chuyên sâu, hàm lượng khoa học đạt được trong đề tài sẽ lớn hơn nhiều lần. Một số đặc điểm giúp cho ROS trở thành một hệ điều hành nên được sử dụng khi nghiên cứu phát triển một ứng dụng robot là: - ROS là hệ điều hành mã nguồn mở. - Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ.

- Vấn đề cốt lõi nhất khiến ROS trở nên mạnh mẽ đó là tính cộng đồng rất lớn. - Nguồn tài nguyên được cộng đồng đóng góp hầu như được xây dựng, phát triển từ những viện nghiên cứu và những trường đại học hàng đầu trên thế giới. Những tài nguyên được cung cấp từ ROS thể hiện được sức mạnh trong các lĩnh vực robotics như là: - Đồ họa – Visualization. - Nhận diện vật thể – Object recognition.

- Định hướng di động – Navigation. - Thao tác/Thu giữ – Manipulation/Grasping. Cấu trúc của ROS ROS có 3 khái niệm: Filesystem, Computation Graph và Community.Ngoài ra ROS còn có một số khái niệm cấp cao đặc trưng cho các ứng dụng robot như hệ tọa độ, phép chuyển đổi, thông điệp mô tả… 1. ROS Filesystem Level Filesystem là source code ROS được lưu trữ trên bộ nhớ hệ thống, nó gồm các khái niệm: Package: là đơn vị cơ bản trong tổ chức phần mềm của ROS, một gói chứa source code cho một tác vụ thực thi một chức năng đặc thù, danh mục các mã nguồn kế thừa, các file cấu hình (như file CMakeList.txt chứa các lệnh hướng dẫn biên dịch, yêu cầu tạo file thực thi .bin; hay chọn version cho các thư viện) … Manifest: là bảng kê khai thông tin mô tả một packages, cung cấp các cơ sở dữ liệu về package đó, bao gồm điều kiện thực thi và các dependency của package đó.

Ngoài ra, manifests còn chứa những thông tin về đặc trưng của ngôn ngữ lập trình như cờ báo (flags) của trình biên dịch. Stacks: là tập hợp các packages phối hợp để thực hiện một chức năng cụ thể. Stack còn mô tả cách thức biên dịch ROS và thông tin về phiên bản ROS tương thích (gọi là distro, ví dụ như các phiên bản ROS hydro, groovy hay fuerte). Ví dụ pcl_ros là một stack chứa các package có chức năng cung cấp các bộ lọc cho point cloud như bọc lọc PassThrough (giới hạn point cloud theo các chiều x, y, z), VoxelGrid (lượng tử hóa point cloud thành các ô 3 chiều), Inlier/Outlier (tìm các điểm trong/ngoài một mặt theo các thông số của mặt đó trong point cloud).5 Mối quan hệ giữa Stack và các Packages Stack Manifests (.xml): cung cấp mô tả cơ sở dữ liệu về một stack, gồm điều kiện cho phép và thông tin về các stack dependency khác.

6 Dependency: là mô tả trong manifest của một package hoặc stack về các file system ngang cấp (stack hoặc package khác) mà stack hay package kế thừa.msg): thông tin mô tả message, được lưu trữ trong file có dạng my_package/msg/MyMessageType.msg, định nghĩa các cấu trúc dữ liệu của messages được gửi trong ROS. Ví dụ ta có mô tả của message PointCloud2 được mô tả trong file sensor_msgs/PointCloud2.srv): thông tin mô tả các services, được lưu trữ trong my_package/srv/MyServiceType.srv, định nghĩa cấu trúc dữ liệu cho các lệnh truy cập (request) và các phản hồi (response) của các services trong ROS.launch): là các file .launch dùng để khởi tạo một tập hợp các node cùng lúc và gán giá trị cho các parameter và gán các topic liên kết các node bằng lệnh roslaunch. ROS Computation Graph Computation Graph hay còn được gọi là lược đồ tính toán, là mạng peer-to-peer các tác vụ khi thực thi của ROS, trong đó các dữ liệu được trao đổi và xử lý giữa các node. Các khái niệm cơ bản của computation Graph của ROS là các Node, Master, Parameter Sever, Message, Service, topics và bags.

Node: là đơn vị thực hiện một tác vụ xử lý, tính toán, điều khiển. Một node có thể được khởi tạo khi biên dịch thành công một package và có thể được khởi tạo nhiều node từ cùng một package. Một hệ thống thường có nhiều node. Ví dụ một node điều motor, một node thực hiện tác vụ xử lý, một node nhận giá trị từ cảm biến.

Master: ROS Master cung cấp tên đăng ký và tìm kiếm đến phần còn lại của Computation Graph. Nhờ có Master, các nodes mới liên kết với nhau để trao đổi thọng tin hay còn gọi là services. Parameter Server: là một phần của Master, cho phép dữ liệu được lưu trữ trong một tại vị trí trung tâm và cho phép các node truy cứu tới.6 Mô tả cơ chế quản lý Parameter trên Master 7 Message: các nodes trao đổi với nhau thông qua các messages. Một message trong computation graph là dữ liệu cụ thể có cấu trúc như trong khai báo của file .msg tương ứng.

Các kiểu dữ liệu chuẩn như integer, floating, Boolean… và array (mảng) với kiểu chuẩn đều được hỗ trợ. Cùng với đó, message cũng có thể gồm các cấu trúc và các mảng lồng nhau như trong ngôn ngữ C. Các node khi nhận Message cần phải xác định queue đệm để xử lý dữ liệu đã nhận được. Topic: Messages được định tuyến thông qua một hệ thống vận chuyển (transport system), trong đó phân loại thành hai công việc chính: publish (đăng tin) và subcribe (đăng ký nhận tin).

Một node gửi đi một message qua việc gửi thông tin tới một topic (chủ đề). Một topic có tên và kiểu message được xác định. Một node chỉ subscribe đến duy nhất topic có tên và kiểu dữ liệu đã được khai báo. Một topic có thể có nhiều đối tượng đưa tin (publishers) và cũng có thể có nhiều đối tượng đăng ký nhận tin (subcribers).

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ