3.4.1. Phương thức điều khiển tự động
Chuẩn giao thức Liên kết phương tiện trên không siêu nhỏ - Micro Aerial Vehicle Link (MAVLink) là phương thức đảm bảo liên lạc giữa các hệ thống không người lái và các trạm mặt đất.
MAVLink là một giao thức mã nguồn mở tuần tự hóa tin nhắn nhẹ được thiết lập tốt dành riêng cho các hệ thống không người lái, bao gồm cả máy bay không người lái UAV. Lorenz Meier là người đã phát triển MAVLink, phát hành vào năm 2009 theo giấy phép LGPL.
HÌNH 3.24. Phương thức điều khiển thiết bị bay từ trạm mặt đất.
Dronekit-Python là một API truyền thông sử dụng chuẩn giao thức MAVLink. Nó cung cấp quyền truy cập theo chương trình vào thông tin từ xa thông qua các kênh truyền được đề cập trong phần phụ lục về MAVLink Phương thức truyền MAVLink, nhận tất cả các tham số trạng thái và thông số tham số của thiết bị bay như góc quay, góc nghiêng, dữ liệu định vị như vị trí, góc chỉ hướng, độ cao;
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
và cho phép cả quản lý nhiệm vụ và kiểm soát trực tiếp chuyển động và vận hành của thiết bị bay UAV.
Chiến lược điều khiển thiết bị bay của thiết bị bay là dựa trên dữ liệu hình ảnh phản hồi mà trạm GCS nhận được có nhận dạng có người hay là không mà trạm sẽ ra quyết định. Nếu không có phát hiện ra người thì thiết bị bay sẽ bay theo chế độ tìm kiếm theo các điểm đã được định trước, còn nếu phát hiện ra người thì trạm mặt đất sẽ dựa trên hình ảnh nhận được để ra quyết định. Nếu vị trí người lệch tâm thì ta sẽ tính sai lệch rồi điều khiển góc yaw sao cho heading chỉ thẳng vào vị trí của đối tượng bị phát hiện, sau đó ta sẽ tính vị trí tọa độ tương đối rồi gửi thông tin đó về cho trạm điều khiển mặt đất. Sau khi xác nhận rõ là người thì thiết bị bay sẽ chuyển chế độ bay về điểm xuất phát ban đầu.
3.4.2. Lưu đồ thuật toán điều khiển UAV
Chương trình điều khiển bay của thiết bị bay UAV gồm có 3 chế độ: Chế độ 1 bay thử, Chế độ 2 bay bằng tay, Chế độ 3 bay tìm kiếm người. Các hình lưu đồ dưới đây thể hiện cách thức hoạt động của từng chế độ bay khác nhau.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Chế độ 3: Bay tìm kiếm. Đây là chế độ bay tích hợp với mạng học sâu YOLO được viết trên cơ sở thư viện trí tuệ nhân tạo Pytorch. Thiết bị bay sẽ lần lượt bay đến các vị trí định sẵn và sử dụng mạng học sâu để kiểm tra có người hay là không, trước khi ra quyết định bay đến điểm tiếp theo.
HÌNH 3.26. Lưu đồ thuật toán điều khiển tìm kiếm người. Bắt đầu Bay đến điểm thứ i Đúng Cất cánh Đạt đến độ cao Vehicle.Mode = “GUIDED” YOLO Sai Phát hiện người ? Điều khiển góc Yaw i > 4 ? Hạ cánh Đúng Đúng Sai Sai Hiển thị hình ảnh và báo vị trí i++ Tính sai lệnh vị trí của đối tượng
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
3.4.3. Điều khiển thiết bị bay UAV
3.4.3.1. Điều khiển góc Yaw
Lấy điểm giữa của khung ảnh làm điểm đối chiếu, việc điều khiển để đưa hình ảnh vật thể vào tâm của khung ảnh có hai vấn đề, điều khiển góc yaw và điều khiển độ cao. Bằng việc chia giá trị góc nhìn của máy ảnh fov cho số lượng pixel tương ứng, chúng ta có thể ước chừng giá trị góc tương ứng với từng pixel
𝑎𝑛𝑔𝑙𝑒𝑠𝑡𝑒𝑝 = 𝑓𝑜𝑣
𝑛𝑝𝑖𝑥𝑒𝑙𝑠 (16)
Khi có kết quả của nhận dạng vật thể, ta sẽ có tọa độ của hộp giới hạn xmin ymin xmax ymax. Tọa độ tâm của hộp giới hạn được tính qua công thức (17)
(𝑢𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑, 𝑣𝑐𝑒𝑛𝑡𝑟𝑜𝑖𝑑) = (𝑥𝑚𝑎𝑥−𝑥𝑚𝑖𝑛
2 ,𝑦𝑚𝑎𝑥−𝑦𝑚𝑖𝑛
2 ) (17)
Từ tâm của khung hình đến tâm của hộp giới hạn có khoảng cách pixel theo chiều ngang và chiều dọc lần lượt là ℎ𝑝𝑖𝑥𝑒𝑙 và 𝑣𝑝𝑖𝑥𝑒𝑙 như diễn tả trong hình 3.27. Với khoảng cách đó ta có thể sử dụng để tính chuyển vị góc ℎ𝑎𝑛𝑔𝑙𝑒 và 𝑣𝑎𝑛𝑔𝑙𝑒, như trong hình 3.28, sử dụng công thức (18) sau để tính:
𝑎𝑛𝑔𝑙𝑒𝑑𝑖𝑠𝑝 = 𝑝𝑖𝑥𝑒𝑙𝑑𝑖𝑠𝑝 × 𝑎𝑛𝑔𝑙𝑒𝑠𝑡𝑒𝑝 (18) Góc Yaw cần chỉnh ℎ𝑎𝑛𝑔𝑙𝑒 có thể được tính từ công thức trên (18), trong đó 𝑝𝑖𝑥𝑒𝑙𝑑𝑖𝑠𝑝 là ℎ𝑝𝑖𝑥𝑒𝑙, tương tự như vậy 𝑣𝑝𝑖𝑥𝑒𝑙 có thể tính theo công thức trên. Ta cũng có được sai số phương ngang 𝑒𝑟𝑟𝑜𝑟ℎ𝑜𝑟𝑖𝑧𝑜𝑛 = 𝑎𝑛𝑔𝑙𝑒𝑑𝑖𝑠𝑝 , do fov của camera là góc nhìn của camera và độ phân giải của hình ảnh cũng được biết trước.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
HÌNH 3.28. Tính góc sai lệch phương ngang bằng fov.
3.4.3.2. Xác định vị trí của đối tượng
Phần điều khiển phương ngang hoạt động theo trục hướng thẳng từ máy ảnh trên UAV đến vật thể nhận dạng, và đó cũng là trục của máy ảnh. Phần điều khiển này sẽ ra quyết định sẽ bay tiến đến vật hoặc lùi ra xa vật để giữ khoảng cách an toàn cố định giữa người và thiết bị bay. Khoảng cách chúng ta muốn
𝑑𝑡𝑎𝑟𝑔𝑒𝑡 = ℎ𝑒𝑖𝑔ℎ𝑡𝑟𝑒𝑎𝑙
tan(ℎ𝑎𝑛𝑔𝑙𝑒)+ 𝑑𝑏𝑖𝑎𝑠 (19) Trong đó ℎ𝑒𝑖𝑔ℎ𝑡𝑟𝑒𝑎𝑙 là độ cao đo được thực tế của đối tượng, ℎ𝑎𝑛𝑔𝑙𝑒 là góc tìm được qua công thức (18). Nếu đối tượng người tiến đến gần hoặc rời ra xa hơn máy ảnh, kích thước pixel của hộp giới hạn sẽ thay đổi, tuy độ cao thực tế của người thì không thay đổi nhưng mỗi đối tượng người lại có chiều cao thực tế khác nhau, vậy nên phải thêm biến nhiễu 𝑑𝑏𝑖𝑎𝑠 =∆ℎ𝑒𝑖𝑔ℎ𝑡𝑚𝑒𝑎𝑛
tan(∆ℎ𝑎𝑛𝑔𝑙𝑒) là giá trị trung bình sai lệch của chiều cao trung bình thực tế của người khoảng 1,70m chia cho tan sai lệch trung bình của pixel tương ứng với chiều cao đó.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
3.5.KẾT QUẢ THỬ NGHIỆM
3.5.1. Kết quả ứng dụng mạng học sâu để phát hiện người từ trên cao
Kết quả mạng học sâu chuyển giao YOLOv3-spp-uav được so sánh với các mạng YOLOv3 và RetinaNet-101 tron hình 3.35 dưới đây. Kết quả thu được chạy trên máy tính của em với bộ xử lý hình ảnh GTX 1650 4Gb, kết quả so sánh được thử với từng kích thước đầu vào lần lượt 352x352, 416x416 và 640x640.
HÌNH 3.29. Độ chính xác và thời gian chạy của các mạng học sâu.
Đồ thị trên cho thấy cả độ chính xác và thời gian chạy đều tỉ lệ thuận với kích thước ảnh đầu vào, kết quả cho thấy đổi lại thời gian chạy chậm hơn so với YOLOv3 ban đầu thì YOLOv3-spp-uav sau khi học chuyển giao đã được cải thiện đáng kể độ chính xác tốt hơn, đặc biệt là độ chính xác trong việc phát hiện người từ xa. Dưới đây là một số hình ảnh kết quả chạy YOLOv3-spp-uav, tất cả hình ảnh này đều không nằm trong tập huấn luyện.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
(b)
(c)
HÌNH 3.30. Một số kết quả phát hiện người của mạng YOLOv3-spp-uav.
Hình 3.30 (b) cho thấy trong một khung hình tỷ lệ phát hiện nhầm chiếm khá ít, trong 9 ô thì có 1 ô xác định nhầm chiếc xe máy là người, vấn đề này xảy ra có thể do khi dán nhãn tập huấn luyện thì đã dán nhãn nhầm cả xe máy. Còn ở hình 3.30 (c) cho thấy với đám đông đứng tụ tập chen chúc nhau, mạng không thể nhận ra hết các đối tượng bị che lấp, bởi theo như yêu cầu dán nhãn đặt ra thì các vật bị che khuất 60% đều được bỏ qua nên mạng YOLOv3-spp-uav chỉ nhìn thấy được những người xuất hiện rõ ràng ở ngoài đám đông. Nhìn chung qua các kết quả ở các hình 3.30 trên cho thấy kết quả phát hiện người từ trên cao có thể chấp nhận được cho ứng dụng thực tế.
3.5.2. Kết quả chế độ bay tìm kiếm
Thử nghiệm bay chế độ thứ 3 cho ứng dụng tìm kiếm và cứu nạn, ta sẽ cho thiết bị bay UAV đầu tiên bay theo các điểm định trước để đi tìm vật thể. Vị trí của người trong trường hợp này là không đổi. Quĩ đạo bay của thiết bị bay UAV được vẽ lại trong hình 3.31 dưới đây.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
HÌNH 3.31. Tọa độ bay của chế độ tìm kiếm cứu nạn.
HÌNH 3.32. UAV cất cánh tự động.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
(a)
(b)
HÌNH 3.34. Một số hình ảnh phát hiện người từ hình ảnh trực tiếp hiển thị tại GCS.
(a)
(b)
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Kết quả thử nghiệm thiết bị bay đã hoạt động chính xác theo như chương trình, thiết bị bay UAV đã bay theo các điểm định trước, thiết bị có thể cất cánh và hạ cánh thẳng đứng tự động. Khi gặp phát hiện ra “người”, thiết bị UAV gửi dữ liệu về trạm điều khiển mặt đất vị trí phát hiện người, dưới đây là một số kết quả trong quá trình thử nghiệm:
Select mode:
1. Manual
2. Test Flight
3. Search and Rescue
cmd~$: 3 Arming motors Try to arm... Try to arm... Try to arm... Taking off!
Start mission Search and Rescue
Detected Person at heading: 17.9703125
UAVs current position: LocationGlobalRelative:lat=21.0269827,lon=105.80
30295,alt=10.051
Object to UAV distance is: 4.425605038251876
Detected Person at heading: 21.1484375
UAVs current position: LocationGlobalRelative:lat=21.0269833,lon=105.80
30265,alt=10.01
Object to UAV distance is: 4.81044025896943
Detected Person at heading: 18.93125
UAVs current position: LocationGlobalRelative:lat=21.0269834,lon=105.80
30268,alt=10.024
Object to UAV distance is: 3.951433069867746
Detected Person at heading: 18.93125
UAVs current position: LocationGlobalRelative:lat=21.0269834,lon=105.80
30268,alt=10.024
Object to UAV distance is: 3.68800419854323
Detected Person at heading: 18.6140625
UAVs current position: LocationGlobalRelative:lat=21.0269838,lon=105.80
30265,alt=10.044
Object to UAV distance is: 44.25605038251876
Detected Person at heading: 21.10625
UAVs current position: LocationGlobalRelative:lat=21.026984,lon=105.803
0264,alt=10.067
Object to UAV distance is: 46.10005248179038
Detected Person at heading: 16.5296875
Dựa theo kết quả trên, so sánh vị trí kinh độ vĩ độ trên bản đồ và vị trí thực tế theo hai hình 3.35a và 3.35b bên trên ta có thể thấy vị trí khá tương đương nhau vì góc hướng heading chỉ trong khoảng 17 đến 21 độ tức là người nằm ở phía Bắc so với vị trí của UAV, nhưng giá trị khoảng cách tính từ thiết bị bay UAV đến người có sai số rất lớn do máy bay rung lắc và đường truyền Wifi không tốt nên hình ảnh khi truyền về trạm không có chất lượng tốt.
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1.KẾT LUẬN
Với mục tiêu đề ra em đã giải quyết được các vấn đề sau:
• Xây dựng hệ thống tìm kiếm trong cứu hộ sử dụng máy bay không người lái ứng dụng mạng học sâu.
• Điều khiển thiết bị bay không người lái từ trạm điều khiển mặt đất dựa trên dữ liệu video phản hồi.
• Nhận dạng người từ góc trên cao trên cơ sở mạng học sâu YOLO. • Lập trình python cho ứng dụng điều khiển thiết bị bay.
• Lập trình python cho huấn luyện và nhận dạng vật thể sử dụng thư viện trí tuệ nhân tạo và mạng học sâu Pytorch.
4.2.VẤN ĐỀ CÒN TỒN TẠI
Trong quá trình thực hiện đề tài những vấn đề còn tồn tại mà em chưa giải quyết được là:
• Kết quả nhận dạng của mạng học sâu dễ bị ảnh hưởng bởi yếu tố độ sáng của hình ảnh, nhận dạng nhầm những vật thể tối như tán cây hoặc sáng chói như xe màu trắng.
• Không thể phát hiện người bị che lấp quá 60%
• Chất lượng hình ảnh truyền về trạm qua wifi còn kém, mất khung hình, hình ảnh không ổn định.
• Sai số hơn 30% trong tính toán vị trí đối tượng so với thiết bị bay không người lái do thông số hiệu chuẩn chưa chính xác.
4.3.HƯỚNG PHÁT TRIỂN
Đề tài của em có thể cái thiện với các hướng phát triển sau
• Nâng cao chất lượng hình ảnh truyền về trạm GCS bằng việc nâng số lượng bít truyền hình ảnh qua wifi
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
PHỤ LỤC
1. Phương thức truyền MAVLink
Giao thức MAVLink xác định cơ chế về cấu trúc của các thông báo và cách tuần tự hóa chúng ở lớp ứng dụng. Các thông điệp này sau đó được chuyển tiếp đến các lớp thấp hơn (lớp vận chuyển, lớp vật lý) để truyền. Tốc độ dữ liệu tối đa có thể đạt tới 250 kbps và phạm vi tối đa thường được dự kiến là 500 m, nhưng phụ thuộc nhiều vào môi trường và mức độ thiết lập nhiễu và ăng ten. Bảng () trình bày các tính năng của một số thiết bị đo từ xa thường được sử dụng.
Thiết bị truyền dữ liệu Tần số (MHz) Khoảng cách truyền (km) Điện áp (V) Độ nhạy (dBm) Công suất truyền (dBm) Bluetooth 2402-2480 50 6 -80 +4 Sik Radio v2 900 / 433 500 3.3 -122 20 RFD9000 900 / 868 >40000 3.3-5 >121 +30 Robsence 433 3-5 5 -148 20
Cách thay thế thứ hai là sử dụng giao diện mạng, thường là WiFi hoặc Ethernet và truyền phát các tin nhắn MAVLink qua Mạng IP. Trong trường hợp này, hệ thống lái tự động chạy giao thức MAVLink thường hỗ trợ cả kết nối UDP và TCP ở tầng vận chuyển giữa trạm mặt đất và máy bay không người lái, tùy thuộc vào mức độ tin cậy mà ứng dụng yêu cầu.
Cấu trúc gói dữ liệu MAVLink
Độ dài tin nhắn tối thiểu của MAVLink 1.0 là 8 byte cho các gói xác nhận nếu trường dữ liệu bằng 0. Mặt khác, độ dài tối đa của tin nhắn MAVLink 1.0 là 263byte cho toàn bộ dữ liệu. Các Byte được miêu tả trong bảng ()
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Byte Số Byte Chức năng
STX 0XFE Byte bắt đầu khung truyền tin
LEN 0 – 255 Thể hiện độ dài của gói truyền tin SEQ 0 – 255 Kiểm tra xem gói tin có bị mất không SYS 1 – 255 ID của thiết bị bay nhận gói tin COMP 0 – 255 ID của thiết bị gửi gói tin
MSG 0 – 255 Tham số sẽ gửi
Payload 0 – 255 Dữ liệu của nội dung của tham số MSG CKA và
CKB (CRC)
hoặc checksum
2 byte Bit kiểm tra lỗi
2. Hiệu chuẩn máy ảnh
Sử dụng các tham số đó để sửa hiệu ứng biến dị hình ảnh do thấu kính gây nên, có thể đo kích thước thực tế của vật, hoặc có thể xác định vị trí của máy ảnh so với vật trong không gian.
Những chiếc máy ảnh hiện đại ngày nay mà chúng ta vẫn thường sử dụng trong hoạt động đời sống hằng ngày, như máy ảnh phim, máy ảnh kỹ thuật số, máy quay phim hay thậm chí cả chiếc máy ảnh trên chiếc điện thoại thông minh mà chúng ta vẫn thường sử dụng để bắt những khoảnh khắc quanh ta. Tất cả những chiếc máy ảnh đó, chúng đều được lấy cảm hứng từ phát minh rất xa xưa, đó chính là máy ảnh lỗ kim (pin-hole camera).
Máy ảnh lỗ kim là mô hình máy ảnh đầu tiên nên nó rất đơn giản và sơ khai, Khi các tia sáng đi qua lỗ kim nó sẽ chiếu hình ảnh ngược của vật lên bề mặt đối diện của máy ảnh, như trong hình 3.24
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Người ta sử dụng hệ tọa độ đồng nhất (homogeneous coordinates) để miêu tả tọa độ không gian, phép biến đổi không gian 3 chiều và phép hình chiếu. Trong hệ tọa độ đồng nhất, tọa độ của vật trong không gian 3 chiều là:
(𝑥, 𝑦, 𝑧) → [ 𝑥 𝑦 𝑧
]
Và tọa độ đồng nhất trên ảnh của vật là:
(𝑥, 𝑦) → [𝑥𝑦]
Bằng việc thêm vào một tọa độ nữa để cho biến đổi tuyến tính, tọa độ của vật trong không gian ba chiều và tọa độ của vật trên ảnh trở thành hai tọa độ lần lượt dưới đây: (𝑥, 𝑦, 𝑧) → [ 𝑥 𝑦 𝑧 1 ] (𝑥, 𝑦) → [ 𝑥 𝑦 1 ]
Tọa độ của hình chiếu của vật trên ảnh được tìm thông qua ma trận hình chiều và tiêu cự, trong công thức (20)
[ 1 0 0 0 1 0 0 0 1 𝑓⁄ 0 0 0 ] [ 𝑥 𝑦 𝑧 1 ] = [ 𝑥 𝑦 𝑧 𝑓 ⁄ ] → (𝑓𝑥 𝑧; 𝑓 𝑦 𝑧) ≡ (𝑢, 𝑣)
SVTH: Nguyễn Nhật Anh Lớp: KTDT & THCN K56
Trong đó, 𝑓 là tiêu cự có giá trị bất biến, (𝑢, 𝑣) là tọa độ của hình chiếu trên ảnh