Trong đề tài nghiên cứu này, chúng tôi giới thiệu tính hình nghiên cứu trong và ngoài nước về thị giác máy tính sau đó thực hiện tìm hiểu cơ sở lý thuyết của dòng quang học, các thuậ
Trang 1Định Hướng Bằng Thị Giác Máy Tính Cho Thiết Bị Bay Không Người Lái Bay Dọc Theo Hành Lang
Giảng viên hướng dẫn: TS Ngô Đình Trí
Bộ môn Kỹ Thuật Hàng Không
Trường Đại học Bách Khoa
Đại học Quốc Gia Tp.Hồ Chí Minh
ngodinhtri@hcmut.edu.vn
Tóm tắt – Trong những năm gần đây, công nghệ
máy bay không người lái UAV phát triển một cách
vượt bậc, đáp ứng những nhu cầu cần thiết của cuộc
sống Nhằm phát huy tối đa những lợi ích mà UAV
mang lại, người ta luôn tìm cách để UAV có khả
năng hoạt động độc lập tốt, ổn định trong môi
trường tự nhiên có nhiều vật cản Nhiều phương án,
giải pháp được đưa ra và mỗi phương pháp có ưu
và nhược điểm riêng, tuy nhiên, chưa thật sự phù
hợp với mục đích độc lập UAV với cần điều khiển
Câu hỏi được quy lại về cho con người Tại sao con
người có thể cảm nhận gần như tuyệt đối thế gới
xung quanh chỉ bằng đôi mắt của chính mình? Đó
chính là nhờ con người có đôi mắt để cảm nhận
chiều sâu Với công nghệ hiện nay, việc dùng
camera để đo chiều sâu là khả thi, nhưng vẫn còn
tồn tại những giới hạn nhất định Vì thế, ta xem xét
đến các loài côn trùng, cụ thể là ong: 2 chùm mắt
của ong nằm hoàn toàn ở 2 bên phân biệt, do đó,
khả năng đo chiều sâu của chúng bị hạn chế Tuy
nhiên, công cụ hiệu quả mà chúng có, đó chính là
optical flow– dòng quang học Trong đề tài nghiên
cứu này, chúng tôi giới thiệu tính hình nghiên cứu
trong và ngoài nước về thị giác máy tính sau đó thực
hiện tìm hiểu cơ sở lý thuyết của dòng quang học,
các thuật toán, đồng thời giới thiệu về những dụng
cụ, thiết bị và quá trình tiến hành những thí nghiệm
để đưa ra đánh giá khả năng thực thi trên chiếc máy
bay 6 cánh – hexacopter
I GIỚI THIỆU
Bắt đầu từ những năm 1960, thị giác máy tính
(Computer Vision) được nghiên cứu cùng với trí tuệ
nhân tạo nhằm giúp máy tính nhận dạng, phân tích hình
ảnh, đưa dữ liệu đa chiều từ thực tế thành số liệu trong
Hồ Văn Quý, Nguyễn Hữu Cảnh
Khoa Kỹ Thuật Giao Thông Trường Đại học Bách Khoa Đại học Quốc Gia Tp.Hồ Chí Minh {1413206; 1410321}@hcmut.edu.vn
những định dạng nhất định Kể từ đó, thị giác máy tính được nghiên cứu và áp dụng nhiều trong điều khiển tự động, các hệ thống nhận diện, tương tác, định hướng và
tổ chức thu thập thông tin Thị giác máy tính được áp dụng hiệu quả vào máy bay không người lái như một phương pháp tăng cường tính ổn định và độc lập, tránh vật cản, định hướng đường đi ở mức độ vi mô, đồng thời hạ cánh tự động theo hệ thống các dấu hiệu
Hiện nay, có nhiều nhóm nghiên cứu trên thế giới
đã đạt được những thành tựu đáng kể trong việc điều hướng UAV dựa vào thị giác máy tính Nhóm tác giả Gianpaolo Conte, Patrick Doherty của Đại học Linköping, Linköping, SWEDEN đã nghiên cứu ứng dụng thị giác máy tính lên máy bay không người lái (UAV), nhằm khai thác khả năng sử dụng hình ảnh trên không để nâng cấp hệ thống dẫn đường cho máy bay không người lái trong trường hợp các hệ thống định vị GPS gặp hạn chế Ngoài ra nhóm tác giả Andreas Koch, Hauke Wittich, Frank Thielecke của German Aerospace Center (DLR), Braunschweig, Germany đã nghiên cứu sử dụng thuật toán Lucas - Kanade để bù lại sai lệch của GPS và bổ sung bộ lọc Kalman để kết hợp
dữ liệu từ cảm biến Nhóm tác giả Michael Blösch, Stephan Weiss, Davide Scaramuzza, Roland Siegwart của phòng thí nghiệm Autonomous Systems Lab, ETH Zurich, Switzerland đã nghiên cứu giúp UAV có thể hoạch định lại quỹ đạo hành trình ngay khi đang bay dựa vào thị giác máy tính và máy tính nhúng Nhóm tác giả S.Hrabar, G.S.Sukhatme, P.Corke, K.Usher, J.Roberts của Đại học Southern California, Los Angeles, CA, USA đã nghiên cứu về dòng quang học (optical flow) kết hợp với dòng âm thanh (stereo flow)
để điều hướng UAV bay qua các hẻm núi Cũng liên quan đến vấn đề định vị cho UAV, nhóm tác giả B.Sinopoli, M.Micheli, G.Donato, T.J.Koo của Đại học California, Berkeley, CA, USA đã nghiên cứu phát
Trang 2triển một hệ thống định vị tự động dựa trên thị giác máy
tính Từ đó giúp điều hướng UAV từ vị trí ban đầu đến
vị trí cuối cùng trong môi trường 3D kết hợp với việc
tránh vật cản và giảm thiểu chiều dài đường dẫn
Ở Việt Nam, thị giác máy tính và UAV cũng đang
có những bước tiến vượt bậc trong nhiều lĩnh vực và đã
được ứng dụng vào các sản phẩm thương mại Như
trong lĩnh vực trắc địa bản đồ, nước ta đã ứng dụng
công nghệ UAV vào việc chụp ảnh tại một số dự án tại
Việt Nam như khai thác mỏ, lập hành lang tuyến điện
cao thế, bản đồ địa hình, điển hình là Tổng công ty Tư
vấn Thiết kế GTVT - CTCP (TEDI) sử dụng công nghệ
UAV vào Dự án đường cao tốc Hạ Long - Vân Đồn
Một số ưu điểm có thể thấy được là tiến độ thực hiện,
quy trình bay, chụp và xử lý ảnh nhanh, cho độ chính
xác cao và dễ dàng tạo mô hình dữ liệu số 3D, đặc biệt
thích hợp với những dự án thành lập bản đồ khu vực
nhỏ, hẹp dạng tuyến như các công trình giao thông
Ngoài ra, tại viện Nghiên cứu và Phát triển Viettel,
Trung tâm khí cụ bay đã phát triển mẫu VT-Patrol với
cự ly hoạt động tầm 50km, trinh sát bằng camera quang
hồng ngoại có độ phân giải full HD và đặc biệt là khả
năng nhận dạng và phân biệt mục tiêu ở cự ly lên đến
600m
Tuy nhiên, so với tình hình thế giới thì lĩnh vực
máy bay không người lái của Việt Nam vẫn còn hạn
chế do những rào cản về công nghệ, giá thành Những
sản phẩm UAV có thể điều hướng bằng thị giác máy
tính chỉ được ứng dụng cho mục đích quân sự, ở các
phòng thí nghiệm hoặc các lĩnh vực đặc thù như trắc
địa bản đồ Hiện nay, việc đầu tư vào các dự án về công
nghệ cao và trí tuệ nhân tạo tại Việt Nam còn khá hạn
chế Chính vì lí do đó, thị giác máy tính, một mảng con
của trí tuệ nhân tạo, cũng chưa thể được ứng dụng trong
các sản phẩm dân dụng
Vì vậy đối với đề tài này, chúng tôi nghiên cứu
ngoài mục đích giải quyết bài toán về định vị dùng thị
giác máy tính cho máy bay không người lái (UAV):
Dùng Optical Flow để UAV di chuyển giữa hành lang
(giữa 2 bức tường, 2 vách núi) thì còn có mục đích khác
là thúc đẩy nghiên cứu ứng dụng thị giác máy tính trên
máy bay không người lái
II CƠ SỞ LÝ THUYẾT
A Khái niệm cơ bản về nhận diện và theo dõi vật thể
1 Tìm kiếm các điểm đặc biệt
Có nhiều điểm trong ảnh mà có thể được theo
dõi Rõ ràng, nếu chúng ta chọn một điểm trên một bức
tường trống thì sẽ không dễ dàng để có được điểm
tương tự trong khung tiếp theo của video Nếu tất cả
các điểm trên tường là giống hệt nhau hoặc thậm chí rất giống nhau, thì chúng ta sẽ không có nhiều may mắn khi theo dõi điểm đó trong khung tiếp theo Mặt khác, nếu chúng ta chọn một điểm đặc biệt thì cơ hội sẽ là khá tốt để tìm ra điểm đó một lần nữa Trong thực tế, các điểm được chọn phải là duy nhất hoặc gần giống duy nhất và nên được tham số theo cách sao cho nó có thể được so sánh với các điểm khác trong một hình ảnh khác
Định nghĩa được sử dụng nhiều nhất được đưa ra bởi Harris Định nghĩa này dựa vào ma trận vi phân bậc hai (∂2x, ∂2 y, ∂x ∂y) của cường độ ảnh Thuật ngữ này xuất phát từ ma trận Hessian xung quanh một điểm, được định nghĩa trong hai chiều bởi:
𝐻(𝑝) = [
𝜕 2 𝐼
𝜕𝑥 2
𝜕 2 𝐼
𝜕𝑥𝜕𝑦
𝜕 2 𝐼
𝜕𝑥𝜕𝑦
𝜕 2 𝐼
𝜕𝑦 2 ]
Đối với góc Harris, chúng ta xem xét ma trận tự tương quan của các hình ảnh vi phân cấp hai trên vùng lân cận ở quanh mỗi điểm Ma trận như vậy được xác định như sau:
𝑀(𝑥, 𝑦)
=
[
∑ 𝑤 𝑖,𝑗 𝐼 𝑥 (𝑥 + 𝑖, 𝑦 + 𝑗)
−𝐾≤𝑖,𝑗≤𝐾
∑ 𝑤 𝑖,𝑗 𝐼 𝑥 (𝑥 + 𝑖, 𝑦 + 𝑗)𝐼 𝑦 (𝑥 + 𝑖, 𝑦 + 𝑗)
−𝐾≤𝑖,𝑗≤𝐾
∑ 𝑤 𝑖,𝑗 𝐼 𝑥 (𝑥 + 𝑖, 𝑦 + 𝑗)𝐼 𝑦 (𝑥 + 𝑖, 𝑦 + 𝑗)
−𝐾≤𝑖,𝑗≤𝐾
∑ 𝑤 𝑖,𝑗 𝐼 𝑦 (𝑥 + 𝑖, 𝑦 + 𝑗)
Trong đó, 𝑤𝑖,𝑗 là trọng số trong vùng lân cận, thường được áp dụng theo trọng số Gauss
Các góc, theo quan niệm của Harris, là những vị trí trong hình ảnh, nơi ma trận tự tương quan của vi phân cấp hai có hai giá trị riêng lớn Về bản chất điều này có nghĩa là có kết cấu đi theo ít nhất hai hướng riêng lẻ xung quanh điểm đó, giống như các góc thực có ít nhất hai cạnh gặp nhau tại một điểm Các vi phân cấp 2 hữu ích bởi vì chúng không đáp ứng với các mức phân lớp đồng nhất Định nghĩa này có lợi khi chúng ta xét chỉ các trị riêng của ma trận tự tương quan, chúng ta đang xem xét các số không thay đổi đối với phép quay Nói cách khác, định nghĩa này quan trọng bởi vì các đối tượng mà chúng ta đang theo dõi có thể xoay cũng như
di chuyển
Nguyên lý ban đầu của Harris liên quan đến việc xác định định thức H(p), trừ đi vết của H(p) (nhân với một
số hệ số trọng số), và sau đó so sánh sự khác biệt này với một ngưỡng xác định trước Sau đó, Shi và Tomasi
điểm tốt để theo dõi
điểm không nên theo dõi
Hình 1 Các điểm nên và không nên theo dõi
Trang 3phát hiện ra rằng các điểm để theo dõi tốt cho kết quả
là giá trị nhỏ nhất của hai giá trị riêng lớn hơn ngưỡng
tối thiểu Phương pháp của Shi và Tomasi không chỉ
phù hợp nhưng trong nhiều trường hợp mang lại kết
quả khả quan hơn phương pháp của Harris
Hàm cvGoodFeaturesToTrack() thực hiện các định
nghĩa của Shi và Tomasi, thuận tiện tính các vi phân
bậc hai cần thiết và tính các giá trị riêng cần thiết, sau
đó sẽ trả về một danh sách các điểm đáp ứng được yêu
cầu của việc theo dõi
2 Góc điểm ảnh phụ
Nếu xử lý hình ảnh với mục đích trích xuất các phép
đo hình học, các tính năng để nhận diện thì bạn sẽ cần
phân bổ nhiều hơn các giá trị điểm ảnh đơn giản được
cung cấp bởi cvGoodFeaturesToTrack() Một cách
khác để nói rằng các điểm ảnh như vậy đi kèm với các
tọa độ nguyên, trong khi đôi khi chúng ta yêu cầu các
tọa độ có giá trị thực
Trong mô hình này, giả sử vị trí góc bắt đầu q gần
với vị trí thực tế của điểm ảnh phụ Chúng ta kiểm tra
các vector bắt đầu từ điểm q và kết thúc ở p Khi p nằm
trong một vùng đạt giá trị đỉnh, gradient có 0 Mặt khác,
nếu vector q-p dọc theo một cạnh thì gradient ở p trên
cạnh đó là trực giao với vector q-p Trong cả hai trường
hợp, tích vô hướng giữa gradient tại p và vector q-p là
0 Chúng ta có thể lắp ráp nhiều cặp gradient như vậy
tại điểm lân cận p và vectơ liên kết q-p, đặt tích vô
hướng của chúng là 0 và giải quyết sự tập hợp này Từ
đây ta có thể giải quyết bài toán dễ dàng
OpenCV có hỗ trợ hàm tìm điểm ảnh phụ
cvFindCornerSubPix()
B Giới thiệu dòng quang học
Dòng quang học là một thuật toán thông dụng cho
việc ước lượng chuyển động tương đối của các điểm
ảnh giữa các ảnh
2
i
E u I x u I x
Tìm giá trị nhỏ nhất của E SSD OF (E SSD OF là sự khác biệt về độ sáng hay màu sắc của các điểm ảnh giữa
2 ảnh) từ đó suy ra các vector dòng quang học
Bằng việc sử dụng dòng quang học, ta có thể nhận diện vật thể và tính toán được khoảng cách tương đối
từ vật thể đó tới camera, cụ thể là đối với các vật cản ở
xa thì độ lớn dòng quang học của nó sẽ nhỏ hơn các vật cản ở gần, dựa trên ý tưởng đó ta có thể tính toán được khoảng cách
Hình 3 Ví dụ về dòng quang học
C Điều kiện và cách tính dòng quang học
Tất cả các phương pháp tính dòng quang học đều dựa trên các giả thiết quan trọng sau đây:
1 Độ sáng không đổi Một pixel từ hình ảnh của một
đối tượng trong khung cảnh không thay đổi trong sự xuất hiện vì nó có thể di chuyển từ khung hình này sang khung hình khác Đối với hình ảnh màu xám (LK cũng
có thể được thực hiện trong màu sắc), điều này có nghĩa
là chúng ta giả sử rằng độ sáng của một điểm ảnh không thay đổi khi nó được theo dõi từ khung hình này sang khung hình khác
2 Duy trì thời gian hoặc "các chuyển động nhỏ" Sự
chuyển động của một mảng bề mặt thay đổi chậm theo thời gian Trong thực tế, điều này có nghĩa là gia số thời gian phải nhanh đủ để tương ứng với tủ lệ chuyển động trong hình ảnh mà đối tượng không di chuyển nhiều từ khung hình này sang khung hình khác
3 Sự gắn kết không gian Các điểm lân cận trong
một khung cảnh thuộc cùng một bề mặt, có chuyển động tương tự, và hướng tới những điểm gần đó trên mặt phẳng hình ảnh
Hình 4 Dòng quang học hai chiều Hình 2 Phương trình tìm điểm ảnh phụ
Trang 4Giả thiết:
Màu không thay đổi:
(f: phương trình đặc trưng độ sáng)
𝑓(𝑥, 𝑦, 𝑡) = 𝑓(𝑥 + 𝑑𝑥, 𝑦 + 𝑑𝑦, 𝑡 + 𝑑𝑡)
Chuyển động nhỏ: khai triển bậc một Taylor
𝑓(𝑥, 𝑦, 𝑡) = 𝑓(𝑥, 𝑦, 𝑡) +𝜕𝑓
𝜕𝑥𝑑𝑥 +
𝜕𝑓
𝜕𝑦𝑑𝑦 +
𝜕𝑓
𝜕𝑡𝑑𝑡
Từ đó ta có phương trình ràng buộc đối với các
điểm ảnh:
𝜕𝑓
𝜕𝑥𝑑𝑥 +
𝜕𝑓
𝜕𝑦𝑑𝑦 +
𝜕𝑓
𝜕𝑡𝑑𝑡 = 0
𝑓𝑥𝑑𝑥 + 𝑓𝑦𝑑𝑦 + 𝑓𝑡𝑑𝑡 = 0
𝑓𝑥𝑢 + 𝑓𝑦𝑣 + 𝑓𝑡 = 0
𝐼𝑥𝑢 + 𝐼𝑦𝑣 = −𝐼𝑡
Với Ix, Iy, và It chính là đạo hàm của giá trị đặc
trưng độ sáng theo x, y và t
𝑉⃗ = [𝑢(𝑥, 𝑦), 𝑣(𝑥, 𝑦)]𝑇 chính là dòng quang học
vector
Tuy nhiên, một phương trình ràng buộc vẫn chưa
đủ, ta có thể nhìn ví dụ ở phía dưới đây, đối với 1 điểm
ảnh ở trong ô vuông màu đỏ, có thể có vô số đường
thẳng thỏa mãn phương trình ràng buộc, do đó ta cần
đến các phương pháp tối ưu hóa đặc biệt, nổi tiếng nhất
là 2 phương pháp Horn & Schunck và Lucas Kanade
Hình 5 Ví dụ về thiếu điều kiện dòng quang học
D Kỹ thuật theo dõi dày đặc
1 Phương pháp Hurn – Schunck
Thuật toán Horn & Schunck giả thuyết toàn bộ
dòng quang học trên bức ảnh là trơn, do đó, nó sẽ tính
toán sao cho các biến dạng là nhỏ nhất đối với các dòng
quang học
Toàn bộ dòng quang học sẽ được viết dưới dạng
hàm năng lượng E, sau đó ta sẽ tìm cực tiểu của hàm
năng lượng này (hàm E này trong không gian 2D):
𝐸 = ∬[( 𝐼 𝑥 𝑢 + 𝐼 𝑦 𝑣 + 𝐼 𝑡 )2+ 𝛼 2 (‖𝛻𝑢‖ 2 + ‖𝛻𝑣‖ 2)]𝑑𝑥𝑑𝑦
𝛼 được gọi là hằng số trơn Giá trị 𝛼 càng lớn thì
dòng quang học càng trơn
Ta có thể tìm cực tiều của hàm bằng phương trình Euler – Larange đa chiều gồm 2 hàm dưới đây:
𝜕𝐿
𝜕𝑢−
𝜕
𝜕𝑥
𝜕𝐿
𝜕𝑢𝑥−
𝜕
𝜕𝑦
𝜕𝐿
𝜕𝑢𝑦= 0
𝜕𝐿
𝜕𝑣−
𝜕
𝜕𝑥
𝜕𝐿
𝜕𝑣𝑥−
𝜕
𝜕𝑦
𝜕𝐿
𝜕𝑣𝑦 = 0
Với L là hàm bên trong tích phân, giải 2 phương trình trên ta có thể tìm được giá trị cực tiểu:
𝐼𝑥(𝐼𝑥𝑢 + 𝐼𝑦𝑣 + 𝐼𝑡) − 𝛼2Δ𝑢 = 0
𝐼𝑦(𝐼𝑥𝑢 + 𝐼𝑦𝑣 + 𝐼𝑡) − 𝛼2Δ𝑣 = 0
Ta có thể xấp xỉ số học toán tử Laplace ∆𝑢(𝑥, 𝑦) = 𝑢̅(𝑥, 𝑦) − 𝑢(𝑥, 𝑦)
Với 𝑢̅(𝑥, 𝑦) là giá trị u trung bình trong vùng lân cận xung quanh điểm ảnh (x,y) đang tính toán 2 phương trình trên trở thành:
(𝐼𝑥 + 𝛼2)𝑢 + 𝐼𝑥𝐼𝑦𝑣 = 𝛼2𝑢̅ − 𝐼𝑥𝐼𝑡
𝐼𝑥𝐼𝑦𝑢 + (𝐼𝑦2+ 𝛼2)𝑣 = 𝛼2𝑣̅ − 𝐼𝑦𝐼𝑡
Các giá trị u trung bình và v trung bình là một giá trị
đã biết, bây giờ hàm sẽ tuyến tính theo u và v và có thể giải được cho từng điểm ảnh trên hình Tuy nhiên, bởi
vì kết quả của từng điểm ảnh phụ thuộc vào vùng lân cận, do đó ta phải cập nhật kết quả liên tục để tính cho các điểm ảnh tiếp theo kề nó
𝑢𝑘+1= 𝑢̅𝑘−𝐼𝑥(𝐼𝑥𝑢̅
𝑘+ 𝐼𝑦𝑣̅𝑘+ 𝐼𝑡)
𝛼2+ 𝐼𝑥 + 𝐼𝑦2
𝑣𝑘+1 = 𝑣̅𝑘−𝐼𝑦(𝐼𝑥𝑢̅
𝑘+ 𝐼𝑦𝑣̅𝑘+ 𝐼𝑡)
𝛼2+ 𝐼𝑥 + 𝐼𝑦2
Với k+1 là vòng lặp tiếp theo và được tính bới giá trị k trước đó Trên là phương pháp Jacobi, ứng dụng tính cho một hệ thống lớn, rời rạc để mà tính toán cho tất cả các điểm ảnh cùng một lúc
2 Phương pháp kết hợp khối
Thuật toán kết hợp khối cố gắng phân chia cả hình ảnh trước và hiện tại thành các khối như vậy và sau đó tính toán chuyển động của các khối này Các thuật toán loại này đóng một vai trò quan trọng trong nhiều thuật toán nén video cũng như trong dòng quang học cho thị giác máy tính Bởi vì các thuật toán kết hợp khối hoạt động trên tập hợp các điểm ảnh, chứ không phải trên các điểm ảnh độc lập, các “hình ảnh vận tốc” trả về thường có độ phân giải thấp hơn so với hình ảnh đầu vào
Màu không thay đổi Điều kiện trơn
Trang 5E Thuật toán Lucas – Kanade
Thuật toán Lucas – Kanade giả sử sự thay đổi nội
dung của 2 ảnh liên tiếp là đủ nhỏ và không thay đổi
trong một vùng lân cận điểm p
Do đó, phương trình dòng quang học được giả thiết
biểu diễn cho mọi điểm trong vùng lân cận có trung tâm
là điểm p Phương trình dòng địa phương (𝑉𝑥, 𝑉𝑦) phải
thỏa
𝐼𝑥(𝑞1)𝑉𝑥+ 𝐼𝑦(𝑞1)𝑉𝑦= −𝐼𝑡(𝑞1)
𝐼𝑥(𝑞2)𝑉𝑥+ 𝐼𝑦(𝑞2)𝑉𝑦= −𝐼𝑡(𝑞2)
…
𝐼𝑥(𝑞𝑛)𝑉𝑥+ 𝐼𝑦(𝑞𝑛)𝑉𝑦 = −𝐼𝑡(𝑞𝑛)
Trong đó, 𝑞1, 𝑞2,…, 𝑞𝑛 là cá điểm nằm trong vùng
lân cận của điểm p; 𝐼𝑥, 𝐼𝑦, 𝐼𝑡 là các đạo hàm riêng của I
theo x, y và t tương ứng
Dưới dạng ma trận, ta có: Ax=b, trong đó:
𝐴 =
[
𝐼𝑥(𝑞1) 𝐼𝑦(𝑞1)
𝐼𝑥(𝑞2)
…
𝐼𝑦(𝑞2)
…
𝐼𝑥(𝑞𝑛) 𝐼𝑦(𝑞𝑛)]
; 𝑥 = [𝑉𝑉𝑥
𝑦] ; 𝑏 = [
−𝐼𝑡(𝑞1)
−𝐼𝑡(𝑞2)
…
−𝐼𝑡(𝑞𝑛)
]
Suy ra:
[𝑉𝑉𝑥
∑ 𝐼𝑥(𝑞𝑖) 2
𝑖 ∑ 𝐼𝑥(𝑞𝑖)𝐼𝑦(𝑞𝑖)
𝑖
∑ 𝐼 𝑦 (𝑞 𝑖 )𝐼 𝑥 (𝑞 𝑖 )
𝑖
∑ 𝐼 𝑦 (𝑞 𝑖 ) 2
𝑖
]
−1 [
− ∑ 𝐼𝑥(𝑞𝑖)𝐼𝑡(𝑞𝑖) 𝑖
− ∑ 𝐼 𝑦 (𝑞 𝑖 )𝐼 𝑡 (𝑞 𝑖 ) 𝑖
]
Bên cạnh đó, để cải tiến thuật toán Lucas – Kanade,
Chúng ta sẽ thấy ngay lập tức tất cả những tính toán
này được thực hiện bởi hàm cvCalcOpticalFlowLK()
Đối với hầu hết các máy quay video chạy ở tần số
30Hz, các chuyển động lớn và không liên kết Trên thực
tế, dòng quang học Lucas-Kanade không hoạt động tốt
vì chính xác lý do này: chúng ta muốn có một vùng lớn
để bắt chuyển động lớn, nhưng một vùng lớn là phá vỡ
rất nhiều giả định chuyển động liên kết! Để giải quyết
vấn đề này, chúng ta có thể theo dõi lần đầu tiên trên
các phạm vi không gian lớn hơn bằng cách sử dụng một
hình ảnh kim tự tháp và sau đó tinh chỉnh các giả định
vận tốc ban đầu bằng cách làm theo phương pháp của
chúng tôi xuống các cấp độ của kim tự tháp hình ảnh
cho đến khi chúng tôi đến điểm ảnh thô
Do đó, kỹ thuật được đề xuất là đầu tiên để giải
quyết cho dòng quang học ở lớp trên cùng và sau đó sử
dụng kết quả ước lượng chuyển động như là điểm khởi
đầu cho lớp tiếp theo Vì vậy, chúng tôi giảm thiểu các
phạm vi giả định chuyển động và do đó có thể theo dõi
chuyển động nhanh hơn và dài hơn Chức năng phức
tạp hơn này được gọi là dòng quang học kim tự tháp Lucas-Kanade (pyramid Lucas-Kanade optical flow) Chức năng OpenCV thực hiện Pyramid Lucas-Kanade optical flow là cvCalcOpticalFlowPyrLK()
Hình 6 Tháp pyramid của thuật toán Lucas – Kanade
F Các thông số tính toán từ dòng quang học
1 Ước tính chiều sâu trong bay thẳng
Dựa vào độ lớn dòng quang học, ta có thể nhận diện được khoảng cách tới vật cản giả sử UAV chỉ bay tịnh tiến, không xoay, optical flow là một hàm của vận tốc tới v, khoảng cách tới vật cản D và góc giữa hướng đi
so với vật cản α
𝑂𝐹 =𝑣
𝐷 𝑠𝑖𝑛𝛼 → 𝐷 =
𝑣
𝑂𝐹 𝑠𝑖𝑛𝛼
2 Ảnh hưởng của các chuyển động xoay
Hình 7 Tính khoảng cách đến vật thể bằng dòng
quang học
Hình 8 Các góc Roll, Pitch, Yaw của quadcopter
Trang 6Sử dụng mô hình pinhole camera, ta sẽ giải thích
được sự bù chuyển động xoay Giả sử 2 ảnh 𝑓1 và 𝑓2
được lấy tại thời điểm 𝑡1 và 𝑡2 Từ 𝑡1 tới 𝑡2, UAV có
cả chuyển động tịnh tiến và xoay Các góc thay đổi
trong thời điểm từ 𝑡1 tới 𝑡2 tương ứng là ∆Θ, ∆Φ, và
∆Ψ cho pitch, roll, yaw Các giá trị góc thay đổi có thể
lấy từ IMU tại thời điểm 𝑡1 và 𝑡2 Bây giờ, dòng quang
học sẽ được tính từ các giá trị pixel 𝑝1 ở frame 𝑓1 bằng
phương pháp tìm góc Shi-Tomasi cộng thêm phương
pháp Pyramidal Lucas-Kanade để tìm giá trị pixel 𝑝2
trong frame 𝑓2 Bằng mô hình pinhole camera, ta hoàn
toàn có thể tìm được các pixel 𝑝1 và 𝑝2
Bây giờ ta có 2 vector 𝑟1 và 𝑟2 trong hệ trục toàn
cầu Giả sử pixel 𝑝1 và 𝑝2 có tọa độ ảnh tương ứng là
𝑥1, 𝑦1 và 𝑥2, 𝑦2, vector tương ứng trong hệ tọa độ
camera là:
𝑟1
⃗⃗⃗ = (
0 0 0 ) + 𝜆1 (
𝑥1
𝑦1
𝑓)
𝑟2
⃗⃗⃗ = (
0 0 0 ) + 𝜆2 (
𝑥2
𝑦2 𝑓 ) Với f là tiêu cự, gốc tọa độ hệ tọa độ ảnh được đặt
tại trung tâm của ảnh như được thể hiện trên hình 5
Bởi vì camera được gắn gần ngay trọng tâm của máy
bay, ta có thể giả sử rằng hệ tọa độ của camera và UAV
là trùng nhau Do đó viêc máy bay xoay quanh trục của
nó cũng giống như quay quanh các trục của camera Do
tính giá trị chiều sâu nên người ta mong muốn chuyển
động thuần tịnh tiến, do đó pixel 𝑝2 phải ở vị trí không
cỏn chuyển động xoay Để đạt được điều này, vector
𝑟2
⃗⃗⃗ được biến đổi thành vector 𝑟⃗⃗⃗ trong hệ trục mà x′, y′, 2,
và z′ không còn chuyển động xoay Sử dụng biến đổi
góc Euler:
𝑟2,
⃗⃗⃗ =
(
0 𝑐𝑜𝑠∆Φ −𝑠𝑖𝑛∆Φ
0 𝑠𝑖𝑛∆Φ 𝑐𝑜𝑠∆Φ
) ( 𝑐𝑜𝑠∆Φ 0 𝑠𝑖𝑛∆Φ
−𝑠𝑖𝑛∆Φ 0 𝑐𝑜𝑠∆Φ
) ( 𝑐𝑜𝑠∆Φ −𝑠𝑖𝑛∆Φ 0 𝑠𝑖𝑛∆Φ 𝑐𝑜𝑠∆Φ 0
) 𝑟 ⃗⃗⃗ 2
𝑟1
⃗⃗⃗ 𝑟⃗⃗⃗ = |𝑟2, 1| |𝑟2′,| 𝑐𝑜𝑠𝛾 với γ là giá trị góc giữa 𝑟⃗⃗⃗ và 𝑟1 ⃗⃗⃗ 2,
Do optical flow được tính theo giá trị rad/s, dòng quang học có thể diễn tả như sau:
𝑂𝐹 = 𝛾
∆𝑡=
𝑎𝑟𝑐𝑐𝑜𝑠( 𝑟1⃗⃗⃗⃗⃗ 𝑟2 ⃗⃗⃗⃗⃗ ,
|𝑟1|.|𝑟2′,| )
∆𝑡 , với ∆𝑡 = 𝑡2− 𝑡1
3 Biểu đồ chiều sâu
Độ chính xác khi tính toán dòng quang học tùy thuộc vào chuyển động tịnh tiến của UAV, từ đó chúng
ta tính được biểu đồ độ sâu xung quanh con UAV này
Sử dụng thông tin giá trị chiều sâu, ta có thể xây dựng một bản đồ theo thời gian về khoảng cách tới các với vật thể ở các hướng Biểu đồ độ sâu này chính là dữ liệu quan trọng nhất cho việc tính toán tránh vật cản Ở đây, môi trường kiểm tra định vị này là ở hành lang Sử dụng biểu đồ độ sâu, ta định vị được độ sâu của 2 bức tường 2 bên Để đảm bảo rằng phần dòng quang học chính gây ra bởi bức tường, dòng quang học chỉ được tính ở một vài vùng xác định trên bức hình Vùng này
có hình dạng giống như bức tường ở trên ảnh Vùng này gồm 2 phần 80°, mỗi phần ở mỗi bên con UAV như trên hình 7 Phần phía trước khoảng 50° ta không cần tính toán, bởi vì tính toán thêm vùng này chỉ tốn thời gian và bộ nhớ, đôi khi ảnh hưởng không tốt đến kết quả Trung bình có khoảng 500 điểm quan sát được phát hiện, mỗi bên khoảng 250 điểm quan sát Việc tính toán dòng quang học này yêu cầu ta phải có thêm một
bộ lọc (Kalman filter) để lọc các tín hiệu nhiễu Một ngưỡng lọc đơn giản sẽ xóa các dòng quang học có biên
độ lớn hơn ngưỡng đó
4 Ước lượng sai số
Khoảng cách ước tính từ UAV đến một điểm trên bức tường được thể hiện dưới dạng 𝐷⃗⃗ = (𝑦𝑥
𝑧 ) Mặt khác, ta chỉ quan tâm đến khoảng cách đến 2 bức tường
Hình 9 Mô hình pinhole với điểm theo dõi p1 và điểm
p2 được tìm ra bởi thuật toán Lucas - Kanade
Hình 10 Vùng cần quan sát để tính dòng quang
học
Trang 7xung quanh ở 2 bên, nên ta có thể bỏ qua z Nếu khoảng
cách trung bình của UAV đến tường bên trái là |𝑦⃗⃗⃗⃗ |, 𝐿
còn tường phải là |𝑦⃗⃗⃗⃗ |, thì sai số so với tâm của hành 𝑅
lang là:
𝜀 =|𝑦⃗⃗⃗⃗ | − |𝑦𝑅 ⃗⃗⃗⃗ |𝐿
2
Để tránh ảnh hưởng của sai số khoảng cách |𝑦⃗⃗⃗⃗ |, 𝐿
|𝑦⃗⃗⃗⃗ | do được tính từ vận tốc v, người t thưởng sử dụng 𝑅
giá trị chuẩn hóa để thuận tiện cho việc điều khiển
UAV:
𝜀𝑛=|𝑦⃗⃗⃗⃗ | − |𝑦𝑅 ⃗⃗⃗⃗ |𝐿
|𝑦⃗⃗⃗⃗ | + |𝑦𝑅 ⃗⃗⃗⃗ |𝐿 Sai số chuẩn hóa có giá trị từ −1, nếu con UAV này
ở tường bên phải, tới +1, nếu con UAV này ở bên trái
Sai số này có thể sử dụng làm tín hiệu đầu vào cho điều
khiển định vị UAV trên lối hành lang
5 Mô hình thuật toán
III THIẾT BỊ
A Máy tính xách tay
Trong gian đoạn 1 của quá trình nghiên cứu, những tính toán tổng thể được thực hiện trên máy tính xách tay với Intel Core i3 (2.4GHz) Những tính toán trên máy tính xách tay được thực hiện trong phần mềm Visual Studio kết hợp với thư viện mã nguồn mở OpenCV
B Máy tính nhúng Raspberry PI 3
Trong giai đoạn 2, máy tính nhúng Raspberry Pi được sử dụng để thực hiện tính toán Raspberry Pi lần đầu được ra mắt vào năm 2012, chạy hệ điều hành Linux Ý tưởng ban đầu dựa trên việc tạo ra một máy tính giá rẻ cho mục đích học tập, giúp học sinh dễ dàng tiếp cận với tin học Những gì chúng ta cần có là một bàn phím, chuột và nguồn 5V là có thể dùng Raspberry Pi như một máy tính
Phiên bản được sử dụng trong đề tài nghiên cứu này
là phiên bản Raspberry Pi 3 Model B với CPU ARM Cortex-A53 Quadcore 1.2GHz 64-bit, RAM 1GB và
hỗ trợ chuẩn Wifi 802.11n cùng Bluetooth 4.1 Raspberry Pi 3 sử dụng hệ điều hành Raspbian
Hình 13 Máy tính nhúng Raspberry Pi 3 Mode B
C Camera
Trong giai đoạn 1, chúng tôi sử dụng camera từ điện thoại di động Samsung Galaxy J7 Prime để ghi lại hình ảnh sau đó thực hiện xử lý và tính toán từ những hình ảnh thu được Góc của camera từ điện thoại là 60
độ và tốc độ ghi hình của camera là 24fps
Trong giai đoạn 2, chúng tôi sử dụng Camera Raspberry Pi V2 8MP Nó là phiên bản Camera Module dành cho Raspberry Pi sử dụng cảm biến ảnh IMX219 8-megapixel từ Sony Camera Raspberry Pi V2 8MP có thể quay video với độ phân giải HD 1080p30, 720p60 và 640x480p90 Tiêu cự của Camera Raspberry Pi V2 8MP là 3.04mm Trong đề tài này, chúng tôi dùng Camera Raspberry Pi V2 8MP
để quay video độ phân giải 640x480p90 từ đó xử lý và tính toán theo thời gian thực
Hình 11 UAV với dòng quang học di chuyển trong một
hành lang
Hình 12 Mô hình thuật toán tính sai số áp dụng
trên UAV
Trang 8Hình 14 Camera Raspberry Pi V2 8MP
D Cảm biến GY-521 6DOF IMU MPU6050
1 MPU6050
Trong đề tài nghiên cứu này, cảm biến MPU6050
được sử dụng để lấy các giá trị góc roll, pitch và yaw
trong quá trình chuyển động của camera (hay của
UAV) từ đó dùng ma trận biến đổi góc Euler để tính
toán lại giá trị dòng quang học (optical flow) chính xác
hơn
MPU6050 là cảm biến của hãng InvenSense
MPU6050 là một trong những giải pháp cảm biến
chuyển động đầu tiên trên thế giới có tới 6 (mở rộng
tới 9) trục cảm biến tích hợp trong 1 chip duy nhất
MPU6050 sử dụng công nghệ độc quyền
MotionFusion của InvenSense có thể chạy trên các
thiết bị di động, tay điều khiển giúp kiểm soát cân
bằng hoặc định hướng chuyển động cho robot, máy
bay, drone, hệ thống giữ thăng bằng cho camera/máy
ảnh, nhận biết sự rơi, rung, lắc
Hình 15 Cảm biến MPU6050
MPU6050 tích hợp 6 trục cảm biến bao gồm:
+ Con quay hồi chuyển 3 trục (3 – axis MEMS
gyroscope)
+ Cảm biến gia tốc 3 trục (3 – axis MEMS
accelerometer)
Ngoài ra, MPU6050 còn có 1 đơn vị tăng tốc phần
cứng chuyên xử lý tín hiệu (Digital Motion Processor
- DSP) do cảm biến thu thập và thực hiện các tính toán
cần thiết Điều này giúp giảm bớt đáng kể phần xử lý
tính toán của vi điều khiển, cải thiện tốc độ xử lý và
cho ra phản hồi nhanh hơn Đây chính là 1 điểm khác
biệt đáng kể của MPU6050 so với các cảm biến gia
tốc và gyro khác
MPU6050 có thể kết hợp với cảm biến từ trường (bên ngoài) để tạo thành bộ cảm biến 9 góc đầy đủ thông qua giao tiếp I2C
Các thông số kỹ thuật của MPU-6050:
+ Điện áp sử dụng: 3~5V (DC) + Giá trị Gyroscopes trong khoảng: +/- 250 500 1000
2000 degree/sec + Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g
+ Chuẩn giao tiếp: I2C
2 Chuẩn giao tiếp I2C
I2C là viết tắt của Inter-Intergrated Circuit – là một bus nối tiếp do Philips phát triển Ngày nay, I2C được
sử dụng rộng rãi trong việc kết nối các thiết bị ngoại
vi tốc độ thấp vào các mạch tích hợp
I2C sử dụng 2 đường truyền tín hiệu 2 chiều (một đường clock và một đường data)
I2C hoạt động theo nhiều mode:
+ Mode chuẩn (standard mode) hoạt động ở tốc độc
100kbit/s
+ Mode tốc độ thấp (low-speed mode) hoạt động ở
tốc độ 10kbit/s
Điểm mạnh của I2C là ở chỗ một vi điều khiển có thể dùng để điều khiển cả một mạng thiết bị mà chỉ tốn 2 chân của vi điều khiển
3 Ước lượng hướng của UAV dựa vào MPU6050 a) Ước lượng theo 3 trục MEMS gyroscope
Gyroscope từ cảm biến MPU-6050 trả về giá trị vận
tốc góc của UAV Theo chương Mô hình hóa động lực
học, kí hiệu:
Ω = (Ωx3, Ωy3, Ωz3)
Ta lại có quan hệ giữa vận tốc và sự thay đổi của 3 góc Euler:
[
𝛺𝑥3
𝛺𝑦3
𝛺𝑧3 ] = [
Φ̇ + Ψ̇𝑠𝑖𝑛θ
−Ψ̇cosθsinΦ + θ̇cosΦ θ̇sinΦ + Ψ̇cosθcosΦ
]
Để đơn giản, ta giả thuyết các góc Euler rất nhỏ khi UAV đang ở vị trí cân bằng
Áp dụng công thức tích phân rời rạc theo miền thời gian Từ đó ta được:
[
Φ(t) θ(t) Ψ(t) ] ≈ ∑ [
Ωx3(𝑡)
Ωy3(𝑡)
Ωz3(𝑡) ] ∆t 𝑡
𝑘=0 Với ∆t là thời gian giữa các lần đọc cảm biến
b) Ước lượng theo 3 trục MEMS accelerometer
Accelerometer từ cảm biến MPU-6050 trả về giá trị gia tốc của UAV theo từng trục, kí hiệu:
Trang 9a/R3 = (ax3, ay3, az3)
a/R2 = 𝑅(𝑡) a/R3 = (0, 0, 𝑔)𝑇
=> a/R3 = 𝑅(𝑡)𝑇 a/R2 = 𝑅(𝑡)𝑇 (0, 0, 𝑔)𝑇
Ma trận xoay biến đổi hệ tọa độ R3 về R2 theo
chương Mô hình hóa động lực học:
𝑅(𝑡) = 𝑅𝑥(𝛷(𝑡)) 𝑅𝑦(𝜃(𝑡)) 𝑅𝑧(𝛹(𝑡))
Để đơn giản, ở chương này ta sử dụng ma trận xoay
R(t) có dạng như sau để tính toán:
𝑅(𝑡) = 𝑅𝑧(𝛹) 𝑅𝑦(𝜃) 𝑅𝑥(𝛷)
Vậy ta có:
[
𝑎𝑥3
𝑎𝑦3
𝑎𝑧3
] = 𝑅(𝑡)𝑇 [
0 0 𝑔 ] => [
𝑎𝑥3
𝑎𝑦3
𝑎𝑧3 ] = 𝑔 [
−𝑠𝜃
𝑠𝛷 𝑐𝜃
𝑐𝛷 𝑐𝜃
]
Giải hệ phương trình ta được:
Φ = arctan (ay3
az3) ; θ = arctan
(
−ax3
√ay32+ az32
)
𝛹 = − arctan
𝑎𝑥3
𝑎𝑦3s𝛷 + 𝑐𝛷𝑠𝜃
𝑎𝑥3
𝑎𝑦3𝑐𝛷𝑠𝜃 − s𝛷
IV THIẾT LẬP THÍ NGHIỆM
A Giai đoạn 1
Đầu tiên, chúng tôi sử dụng bìa giấy carton để xây
dựng mô hình hành lang với chiều dài là 90cm, chiều
rộng là 30cm và chiều cao là 50cm
Ở phần cuối hàng lang và phần sàn nhà, chúng tôi
dùng giấy trắng để phủ kín với mục đích là hạn chế sự
bắt điểm ngoài ý muốn
Ở 2 bên bề mặt hàng lang, chúng tôi sử dụng bút
màu để kẻ những đường sọc ngang và dọc với mục
đích tạo thành nhiều ô vuông, từ đó tạo thành nhiều
góc giúp cho việc bắt điểm dễ hàng hơn
Hình 16 Tổng quan mô hình hành lang
Vì chưa thể sử dụng camera gắn trên UAV để thực hiện thí nghiệm này Có 1 ý tưởng là dùng webcam từ laptop rồi cho laptop chạy dọc theo hàng lang Tuy nhiên, với 1 mô hình nhỏ như vậy thì việc di chuyển laptop là khó khăn và không hợp lý Từ đó, chúng tôi đưa ra ý tưởng là dùng camera điện thoại rồi cho nó di chuyển dọc theo hành lang Trong quá trình di chuyển, chúng tôi thực hiện quay video lại sau đó đưa đoạn video trên vào chương trình để chạy thử và tính toán,
từ đó kiểm tra tính đúng đắn của thuật toán
Hình 17 Chạy chương trình trên laptop cho thuật
toán theo dõi thưa thớt
B Giai đoạn 2
Sau khi đã thực nghiệm và kiểm chứng được thuật toán trong gian đoạn 1, ở giai đoạn 2, chúng tôi thực hiện thí nghiệm trong môi trường là một hành lang thực tế Hành lang có chiều rộng 2m, chiều cao 4m, chiều dài di chuyển 10m Hành lang có những đặc điểm thuận lợi cho việc bắt điểm như có các ô cửa và song sắt
Hình 18 Tổng quan hành lang thực tế (Hình chụp ở
ký túc xá Đại học Bách Khoa)
Trong giai đoạn này, thay vì ghi lại hình ảnh rồi sau
đó xử lý và tính toán trên máy tính xách tay, chúng tôi
sử dụng máy tính nhúng Raspberry Pi 3 Mode B kết shợp với Camera Raspberry Pi V2 8MP và cảm biến
Trang 10MPU6050 để ghi lại hình ảnh theo thời gian thực rồi
tiến hành xử lý và tính toán ngay trên máy tính nhúng
để đưa ra kết quả
MPU6050 được thiết lập sao cho gần như đang ở
trạng thái nằm ngang cân bằng, tức là góc roll và góc
pitch gần bằng 0 Camera được lắp đặt sao cho mặt
thẳng đứng của nó vuông góc với mặt phẳng ngang
của cảm biến MPU6050
Hình 19 Tích hợp Camera Module và cảm biến
MPU6050 vào máy tính nhúng Raspberry
Hình 20 Chạy chương trình thời gian thực trên máy
tính nhúng Raspberry Pi
V KẾT QUẢ
A Giai đoạn 1
Chúng tôi đã thực hiện rất nhiều thí nghiệm nhưng
chỉ trình bày một vài thí nghiệm đặc trưng trong bài báo
này Sau khi thực hiện việc ghi lại hình ảnh bằng
camera từ điện thoại, chạy chương trình trên máy tính
xách tay để xử lý và tính toán, chúng tôi thu được kết
quả:
1 Camera đi giữa hành lang
a) Biểu đồ độ lệch theo thời gian:
- Chưa có bộ lọc:
- Có bộ lọc:
Trong đó:
Đường màu cam là đường độ lệch lý thuyết dựa trên đường đi của camera
Đường màu xanh là đường độ lệch thực nghiệm được tính toán sau khi chạy chương trình
Đường màu đỏ tượng trưng cho giới hạn của hành lang
b) Tính toán sai số
Sau khi chạy chương trình để tính toán độ lệch thực nghiệm, chúng tôi tính toán sai lệch trung bình (∆tb) của độ lệch theo công thức:
∆𝑡𝑏=∑ |(𝑒𝑡𝑛)𝑖− (𝑒𝑙𝑡)𝑖|
𝑁 𝑖=1
𝑁 Trong đó:
(𝑒𝑡𝑛)𝑖 là độ lệch thực nghiệm tại khung ảnh thứ i
(𝑒𝑙𝑡)𝑖 là độ lệch lý thuyết tại khung ảnh thứ i
𝑁 là tổng số khung ảnh đã xử lý
Ý nghĩa của sai lệch trung bình đó là khoảng cách chuẩn hóa trung bình của đường độ lệch thực nghiệm
so với đường độ lệch lý thuyết
Sau khi tính toán, ta có được kết quả:
Thuật toán Sai lệch trung bình (∆tb)
Theo kết quả tính toán bên trên, đối với mô hình hành lang có chiều rộng 30cm, khi camera di chuyển giữa hành lang, đường độ lệch thực nghiệm cách đường độ lệch lý thuyết một khoảng trung bình bằng