xây dựng và lập trình quỹ đạo bay, tuần tra của UAV với phần cứng gồm FlightController, ESC, motor, các khối cảm biến, và các phần mềm hỗ trợ mô phỏng quá trình bay của UAV như JMAVSIM và GAZEBO, Firmware PX4 , phần mềm điều khiển và kiểm soát UAV Qgroundcontrol và ngôn ngữ lập trình Python, C++.
Trang 1VIỆN ĐIỆN TỬ- VIỄN THÔNG
Hà Nội, tháng 1 năm 2021
Trang 2LỜI NÓI ĐẦU
Trước hết , cho phép chúng em được bày tỏ lòng biết ơn sâu sắc, chân thành đến Viện điện tử viễn thông và thầy Phạm Văn Tiến đã tạo mọi điều kiện hỗ trợ, giúp đỡ chúng em trong quá trình học tập và nghiên cứu đề tài, để đồ án thiết kế này được hàn thành và đạt được kết quả tốt nhất
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế nên đồ án thiết kế này không thể tránh được những thiếu sót Chúng em mong nhận được sự chỉ bảo cũng như đóng góp ý kiến của các thầy cô để chúng em có thể bổ sung kiến thức vững vàng cũng như kinh nghiệm để phục vụ tốt hơn cho các hoạt động nghiên cứu thực tế sau này
Chúng em xin chân thành cảm ơn!
Trang 4MỤC LỤC
LỜI NÓI ĐẦU……….1
MỤC LỤC……… … 3
DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT 5
TÓM TẮT ĐỒ ÁN 8
CHƯƠNG 1 TỔNG QUAN 9
1.1 Tổng quan về UAV 9
1.2 Flight Controller Board 9
1.1.1 Giới thiệu 9
1.1.2 Các thông số kỹ thuật của Holybro Pixhawl 4: 10
1.3 Firmware PX4 autopilot 10
1.3.1 Giới thiệu 10
1.3.2 Ưu điểm của PX4 autoplot 10
1.4 Giới thiệu về giao thức MAVLink 11
1.4.1 Giới thiệu 11
1.4.2 Ưu điểm của MAVLink 11
1.5 Giới thiệu về phần mềm QgroundControl 11
1.5.1 Giới thiệu 11
1.5.2 Ưu điểm của QgroundControl 11
1.6 Máy tính nhúng Raspberry Pi 12
1.6.1 Giới thiệu 12
1.6.2 Thông tin phần cứng: 12
1.6.3 Phần mềm 14
1.7 Raspberry Camera Module V2 8M 14
1.7.1 Giới thiệu 14
1.7.2 Thông số kỹ thuật 14
1.8 Giới thiệu về Gstreamer 15
CHƯƠNG 2 CƠ SỞ HỆ TỌA ĐỘ 16
2.1 Hệ tọa độ Local NED (North-East-Down) 16
2.2 Hệ tọa độ WGS-84 16
CHƯƠNG 3 LẬP TRÌNH ĐIỀU KHIỂN UAV 18
3.1 Mô phỏng và cài đặt phần mềm 18
Trang 53.2 Điều khiển thông qua phần mềm QgroundControl 18
3.3 Điều khiển thông qua thư viện MAVSDK 19
3.3.1 Lập trình bay theo hệ tọa độ Local NED 19
3.3.2 Lập trình bay theo hệ tọa độ GPS 19
3.4 Điều khiển thông qua thư viện MAVLink 19
3.5 Tiến hành cài đặt thiết bị bay 21
3.6 Streaming Video từ Raspberry về QgroundControl 21
3.7 Thiết lập giao tiếp giữa PX4 Flightcontroler và bo nhúng Raspberry Pi 21
KẾT LUẬN……… 25
TÀI LIỆU THAM KHẢO 26
Trang 6DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiệu viết tắt
- UAV - Unmanned Aerial Vehicle: Máy bay không người lái
- PX4 : Pixhawl 4 Flight controller
- GCS : Ground control station – Trạm mặt đất
- RPI : Raspberry Pi
Trang 7DANH MỤC HÌNH VẼ
Hình 1.1 PX4 FlightController 9
Hình 1.2 Rasberry Pi 3 Model B 12
Hình 1.3 Module Camera V2 8M 14
Hình 1.4 Hoạt động của Gstreamer 15
Hình 2.1 Hệ tọa độ Local NED 16
Hình 3.1 Hành trình bay mô phỏng trên QgroundControl 18
Hình 3.2 QgroundControl tự vẽ lại quỹ đạo trong khi bay 20
Hình 3.3 Thông số vị trí (Kinh độ, vĩ độ, độ cao) được truyền về GCS và hiển thị qua Teminal 20
Hình 3.4 Sơ đồ kết nối phần cứng giữa PX4 và RPI3 22
Hình 3.5 Kết nối phần cứng và cài đặt UAV 23
Hình 3.6 Xuất dữ liệu Compass và Altitude từ PX4 về RPI 24
Trang 8DANH MỤC BẢNG BIỂU
Bảng 1-1 Các thế hệ Raspberry Pi 13 Bảng 3-1 Chân FTDI tương ứng trên RPI 22
Trang 9TÓM TẮT ĐỒ ÁN
Nhiệm vụ tuần tra, giám sát luôn là những công việc vất vả, mất thời gian, cần nhiều nguồn nhân lực và chi phí để duy trì, với công nghệ phát triển máy bay không người lái hiện nay, nhiều doanh nghiệp, tổ chức đã thành công áp dụng chúng vào các hoạt động giám sát công nghiệp và những khu vực nguy hiểm Cùng với đó, các nền tảng mã nguồn
mở hỗ trợ cho việc vận hành và điều khiển bay UAV ngày càng được mở rộng và phát triển, như các bộ vi xử lý chuyên dụng cho UAV, Firmware, các phần mềm điều khiển UAV bay theo quỹ đạo, API hỗ lái UAV qua các giao thức truyền thông, các phần mềm cài đặt cho trạm mặt đất, …
Đồ án thiết kế này tập trung vào vấn đề xây dựng và lập trình quỹ đạo bay, tuần tra của UAV, kết hợp với các nền tảng mã nguồn mở hỗ trợ UAV và các ngôn ngữ lập trình phổ biến để tạo để nên chương trình điều khiển UAV ổn định nhất
Các công cụ phần cứng được sử dụng để phục vụ trong đề tài này gồm những bộ phận căn bản để tạo nên một UAV như FlightController, ESC, motor, các khối cảm biến,… Cùng với đó là các phần mềm hỗ trợ mô phỏng quá trình bay của UAV như JMAVSIM và GAZEBO, Firmware PX4 , phần mềm điều khiển và kiểm soát UAV Qgroundcontrol và ngôn ngữ lập trình Python, C++
Kết quả mong muốn của đồ án thiết kế này nhằm xây dựng thành công chương trình điều khiển quỹ đạo bay của UAV Có thể ứng dụng vào các chương trình tự lái bằng xử
lý ảnh hoặc sensor, góp phần tăng thêm tính đa dạng và thực tế vào xu hướng áp dụng UAV cho tuần tra, giám sát công nghiệp
Yêu cầu của đề tài bao gồm kỹ năng về cả phần cứng và phần mềm Do đó, qua đồ
án thiết kế I này, chúng em được trang bị những kiến thức cần thiết để xây dựng nên một hệ thống UAV hoàn chỉnh, lập trình nhúng, cải thiện kỹ năng sử dụng các ngôn
ngữ lập trình cũng như kỹ năng nghiên cứu và học tập
Trang 10CHƯƠNG 1 TỔNG QUAN
1.1 Tổng quan về UAV
UAV (tên đầy đủ là Unmanned aerial vehicle) là một máy bay không có phi công trên buồng lái và được điều khiển từ xa từ trung tâm Các loại UAV thông dụng:
- Máy bay theo nghĩa truyền thống được trang bị hệ thống điều khiển và lái tự động,
được gọi là UAS (unmanned aircraft system), xuất hiện từ những năm 1950 và đã từng
phục vụ việc do thám và trinh sát chiến trường
- Thiết bị bay kiểu mới, được chế tạo rất đa dạng, có kích thước và công suất động
cơ nhỏ đến trung bình, được gọi là drone Ứng dụng của UAV drone đang tăng lên mạnh
mẽ, từ các mục đích quân sự cho đến nghiên cứu khoa học, điện ảnh - truyền hình, nông nghiệp, thương mại, giải trí
- Các drone có lắp camera để quan sát, và thường được gọi là flycam Để thuận tiện
điều khiển thao tác thì drone có nhiều cánh quạt, thường là 4
Trong project này, drone quadcopter là một sự lựa chọn hợp lý, với giá thành rẻ, kích thước nhỏ gọn, dễ vận hành, thích hợp ứng dụng vào các nhiệm vụ tuần tra
1.2 Flight Controller Board
1.1.1 Giới thiệu
Flightcontroller Board là một vi mạch điều khiển được thiết kế để điều khiển tốc độ quay của các motor, nhận lênh từ trạm mặt đất để điều khiển các hành động hay hướng
Hình 1.1 PX4 FlightController
Trang 11bay của UAV Flightcontroller Board được tích hợp các sensor cảm biến phù hợp nhằm thu thập dữ liệu trong quá trình bay và hỗ trợ điều khiển
Để phù hợp với yêu cầu thiết kế nhỏ gọn, tối ưu tốt, dễ vận hành, cùng với các tính năng mới và cộng đồng hỗ trợ đông đảo, Holybro Pixhawk 4 là sự lựa chọn hợp lý hiện nay cho UAV Quadcopter
1.1.2 Các thông số kỹ thuật của Holybro Pixhawl 4:
- Bộ xử lý FMW chính: STM32F76 (ARMR©CortexR©M7 32 bit, Bộ xử lý216 MHz chạy NuttX RTOS)
- Hỗ trợ nhiều kết nối ngoại vi UART, I2C, SPI, CAN
- Tích hơp các cảm biến: Accel/Gyro (ICM-20689, BMI055), Magnetometer
(IST8310), Barometer (MS5611) có độ nhạy chính xác, ổn đinh nhiệt độ tốt
- Nút an toàn bên ngoài để kích hoạt động cơ dễ dàng
- Đèn LED nhiều màu
- Chỉ báo âm thanh công suất cao, đa tông
- Thẻ nhớ microSD để ghi nhật ký tốc độ cao trong thời gian dài
- 16 đầu ra PWM, 2 đầu ra I2C, 4 đầu ra SPI, 2 đầu ra CAN
- Power module output 4,9 – 5,5V, Max input voltage: 6V, Max current sensing:
120A , USB Power Input: 4.75~5.25V , Servo Rail Input: 0~36V
- Hỗ trợ tối ưu Px4 autopilot
1.3 Firmware PX4 autopilot
1.3.1 Giới thiệu
PX4 autopilot là một phần mềm mã nguồn mở hỗ trợ điều khiển cho drone và các thiết bị di chuyển không người lái Được phát triển bởi Dronecore PX4 cung cấp một bộ dụng cụ linh hoạt hỗ trợ các nhà phát triển có thể chia sẻ công nghệ và tạo ra các giải pháp phù hợp
1.3.2 Ưu điểm của PX4 autoplot
- Kiến trúc module: PX4 có tính module hóa cao và có thể dễ dàng mở rộng phát triển cả phần cứng và phần mềm
- PX4 được đồng phát triển với một cộng đồng toàn cầu Được sử dụng như một công cụ chung và được phát triển rộng rãi
- Khả năng cấu hình: PX4 cung cấp các bộ API và SDK được tối ưu hóa cao
Trang 121.4 Giới thiệu về giao thức MAVLink
1.4.1 Giới thiệu
MAVLink là một giao thức giao tiếp với drone (Dựa trên cơ chế messages) Được phát triển bởi Lorenz Meier và được phát hành vào năm 2009 MAVLink được phát
triển dựa trên sự kết hợp giữa mô hình publish-subscribe và point-to-point Các luồng
dữ liệu được truyền bằng mô hình publish-subscribe dưới dạng topics trong khi các
giao thức con sử dụng mô hình point-to-point Các messages được định dạng bằng file XML MAVLink toolchain sử dụng các XML messages tạo ra các thư viện hỗ trợ cho các ngôn ngữ lập trình khác nhau Drones, GCS và các hệ thống sử dụng MAVLink khác sử dụng bộ thư viện được tạo ra bằng MAVLink toolchain để giao tiếp với nhau
1.4.2 Ưu điểm của MAVLink
- Giao tiếp hiệu quả: MAVLink phù hợp với các ứng dụng có băng thông truyền hạn chế
- Đáng tin cậy: MAVLink đã được sử dụng từ năm 2009 đến nay trên nhiều thiết
bị điều khiển và GCS Sử dụng được trên những kênh truyền nhiều nhiễu và độ trễ cao
Nó cung cấp các phương pháp phát hiện rớt gói tin, hỏng và xác thực gói tin
- Hỗ trợ đa dạng: MAVLink hỗ trợ nhiều ngôn ngữ lập trình khác nhau, có thể chạy trên nhiều kiến trúc vi điều khiển (ARM7, ATMega, dsPic, STM32) và hệ điều hành (Windows, Linux, MacOS, Android and iOS)
- Hỗ trợ lên đến 255 thiết bị chạy đồng thời trên cùng một mạng
- Cho phép giao tiếp cả offboard lẫn onboard (giữa drone và GCS, giữa drone autopilot và camera hỗ trợ MAVLink)
- MAVLink có thư viện MAVSDK, một API tiện dụng hỗ trợ ngôn ngữ C++ và Python
1.5 Giới thiệu về phần mềm QgroundControl
1.5.1 Giới thiệu
QGroundControl là phần mềm mã nguồn mở được phát triển bởi Dronecore Đây là một phần mềm GCS mạnh mẽ cho UAV, cung cấp khả năng điều khiển và quản lý hành trình cho tất cả các UAV có hỗ trợ MAVLink, các thiết bị được cải đặt PX4 và ArduPilot
1.5.2 Ưu điểm của QgroundControl
- QgroundControl hỗ trợ trên nhiều hệ điều hành như: Window, OS X, Linux, IOS, Android
- Hỗ trợ nhiều fimware khác nhau, PX4 Pro, ArduPilot, hoặc giao tiếp bằng giao thức MAVLink
Trang 13- Hỗ trợ nhiều loại thiết bị bay khác nhau
- Màn hình bản đồ chuyến bay hiển thị vị trí phương tiện, đường bay, điểm tham chiếu và các công cụ phương tiện
1.6.2 Thông tin phần cứng:
Hình 1.2 Rasberry Pi 3 Model B
Trang 14Raspberry Pi có nhiều thế hệ, tuy nhiên chúng đều có đặc điểm chung là có hệ thống trên một chip (SoC – System on a chip) của Broadcom, với bộ xử lý trung tâm (CPU) tích hợp tương thích với ARM và bộ xử lý đồ họa trên chip (GPU)
Thế hệ đầu tiên (Raspberry Pi Model B) được phát hành vào tháng 2 năm 2012, dựa trên SoC BCM2835 của Broadcom, bao gồm một vi xử lý ARM1176JZF-S 700 MHz, VideoCore IV GPU, 256 MB RAM, socket Secure Digital (SD) Tiếp theo là Model A đơn giản hơn và rẻ hơn Vào năm 2014, Foundation đã phát hành Raspberry Pi Model B+ và A+ có thiết kế cải tiến, sử dụng MicroSD dùng làm thiết bị khởi động và bộ lưu trữ liên tục Một "Compute Module" được phát hành vào tháng 4 năm 2014, đóng gói một BCM2835 với 512 MB RAM và một flash chip eMMC vào một module để sử dụng như một phần của hệ thống nhúng
Raspberry Pi 3 Model B được phát hành vào tháng 2 năm 2016 với vi xử lý quad core 64 bit 1.2 GHz, Wi-Fi 802.11n tích hợp, Bluetooth và khả năng USB boot Vào ngày
pi (14/3) 2018, Raspberry Pi 3 Model B + đã được ra mắt với bộ vi xử lý 1.4 GHz và gigabit Ethernet nhanh hơn ba lần (thông lượng bị giới hạn ở khoảng 300 Mbit/s bởi kết nối USB 2.0 bên trong) hoặc Wi-Fi 802.11ac băng tần kép 2.4 hoặc 5 GHz (100 Mbit/s) Các tính năng khác là cấp nguồn qua Ethernet (PoE) (với PoE HAT bổ sung), USB boot
và network boot (không cần thẻ SD nữa)
Bảng 1-1 Các thế hệ Raspberry Pi
Trang 151.6.3 Phần mềm
Raspberry Pi Foundation cung cấp hệ điều hành Raspberry Pi OS (trước đây gọi là Raspbian), một bản phân phối Linux dựa trên Debian (32-bit) để tải xuống, cũng như bên thứ ba Ubuntu, Windows 10 IoT Core, RISC OS và LibreELEC Nó sử dụng Python và Scratch là ngôn ngữ lập trình chính, với sự hỗ trợ cho nhiều ngôn ngữ khác Firmware mặc định là mã nguồn đóng, tuy nhiên mã nguồn mở không chính thức thì có sẵn Nhiều
hệ điều hành khác cũng có thể chạy trên Raspberry Pi Các hệ điều hành của bên thứ ba
có sẵn trên trang web chính thức bao gồm Ubuntu MATE, Windows 10 IoT Core, RISC
Hình 1.3 Module Camera V2 8M 1.7.2 Thông số kỹ thuật
Trang 16• Trọng lượng chỉ hơn 3g
• Kết nối với Raspberry Pi thông qua cáp ribbon đi kèm dài 15 cm
• Camera Module được hỗ trợ với phiên bản mới nhất của Raspbian
1.8 Giới thiệu về Gstreamer
Gstreamer là một framework mã nguồn mở được sử dụng để phát triển các ứng dụng streaming media, xử lý được cả hình ảnh lẫn âm thanh Nó còn được ứng dụng
để xây dựng những media player hỗ trợ nhiều định dạng như MP3, Ogg/Vorbis, MPEG-1/2, AVI, Quicktime, … Gstreamer hỗ trợ nhiều thành phần xử lý media như audio playback, audio và video playback, recording, streaming và editing GStreamer được sử dụng rộng rãi để phát triển các ứng dụng đa phương tiện chạy trên nhiều nền tảng, nhiều hệ điều hành khác nhau Hỗ trợ đa nền tảng: Linux, MacOS, Windows, IOS, Android, OS/400, BSDs
Hình 1.4 Hoạt động của Gstreamer
Trang 17CHƯƠNG 2 CƠ SỞ HỆ TỌA ĐỘ
2.1 Hệ tọa độ Local NED (North-East-Down)
Hệ tọa độ NED là một hệ tọa độ địa lý dựa theo phương thẳng đứng cục bộ và trục quay của Trái đất Hệ tọa độ này được thiết kế cố định với bề mặt trái đất Dựa trên WGS 84 ellipsoid model, các trục của hệ được xác định như sau:
• Điểm gốc được cố định tùy ý vào một điểm trên bề mặt trái đất
• Trục X trỏ thẳng về hướng Bắc ellipsoid
• Trục Y trỏ thẳng về hướng Đông ellipsoid
• Trục X trỏ thẳng về hướng tâm trái đất
Hình 2.1 Hệ tọa độ Local NED
Vector vị trí P n, Vector vận tốc Vn, Vector gia tốc an được định nghĩa như sau:
WGS-84 ( Hay WGS-1984) là bản sửa đổi/bổ sung mới nhất của hệ thống trắc địa thế giới, công bố bởi Cơ quan Bản đồ Bộ quốc phòng Mỹ vào năm 1984 Hệ WGS84
Trang 18được coi là một trong những hệ chuẩn xác nhất hiện nay với sai số hai bán trục và độ lệch gốc tọa độ so với địa tâm trái đất là ± 1m
Tham số của hệ tọa độ WGS-84:
Trang 19CHƯƠNG 3 LẬP TRÌNH ĐIỀU KHIỂN UAV
3.1 Mô phỏng và cài đặt phần mềm
Hiện nay có 3 phương pháp để tiến hành điều khiển và xây dựng quỹ đạo bay
mô phỏng cho UAV:
- Điều khiển thông qua phần mềm QGroundControl được cài đặt trên trạm
mặt đất (GCS)
- Lập trình điều khiển thông qua thư viện MAVSDK (Python)
- Lập trình điều khiển thông qua thư viện MAVLink (C++)
3.2 Điều khiển thông qua phần mềm QgroundControl
Các bước tiến hành:
- Nạp Firmware PX4
- Cài đặt QGroundControl lên laptop
- Cài đặt công cụ mô phỏng JMAVSIM hoặc GAZEBO
- Sử dụng bản đồ số của Google (đã được tích hợp trên QGroundControl),
lấy tọa độ thử nghiệm tại C9 – Đại học Bách Khoa Hà Nội
- Trạm mặt đất có thể đọc các thông số truyền về theo thời gian thực (Tọa độ, độ cao, vận tốc, gia tốc, )
- Tiến hành xây dựng kịch bay trên phần mềm Qgroundcontrol, phần mềm
có tích hợp tính năng xây dựng tọa độ bay của UAV bằng cách thêm các waypoint,
sau khi xây dựng xong quỹ đạo, tiến hành nạp chương trình cho PX4
Hình 3.1 Hành trình bay mô phỏng trên QgroundControl