Nhan đề : Xác định vị trí cho robot trong nhà sử dụng một camera Tác giả : Dương Quốc Hùng Người hướng dẫn: Ngô Lam Trung Từ khoá : Robot; PTAM; Hệ thống theo dõi và lập bản đồ Năm xuất bản : 2020 Nhà xuất bản : Trường đại học Bách Khoa Hà Nội Tóm tắt : Tổng quan cơ sở lí thuyết xác định vị trí, PTAM với hệ điều hành ROS, xây dựng và thử nghiệm định vị cho robot trong nhà dùng PTAM.
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Giảng viên hướng dẫn: TS Ngô Lam Trung
HÀ NỘI, 6/2020
Chữ ký của GVHD
Trang 2CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ
Họ và tên tác giả luận văn: Dương Quốc Hùng
Đề tài luận văn: Xác định vị trí cho robot trong sử dụng một camera
Chuyên ngành: Kỹ thuật máy tính
Mã số HV: CA170383
Tác giả, Người hướng dẫn khoa học và Hội đồng chấm luận văn xác nhận tác giả đã sửa chữa, bổ sung luận văn theo biên bản họp Hội đồng ngày
20/06/2020 với các nội dung sau:
Chỉnh sửa các lỗi chính tả trong luận văn
Bổ sung Danh mục từ viết tắt
Chỉnh sửa tên tiêu đề các chương
Ngày tháng năm
CHỦ TỊCH HỘI ĐỒNG
Trang 3ĐỀ TÀI LUẬN VĂN
Xác định vị trí cho robot trong nhà sử dụng một camera
Giáo viên hướng dẫn
Ký và ghi rõ họ tên
Trang 4LỜI CẢM ƠN
Trước hết em xin gửi lời cám ơn chân thành tới các thầy cô và cán bộ giảng dạy tại trường đại học Bách Khoa Hà Nội, các thầy cô trong bộ môn kỹ thuật máy tính khoa kỹ thuật máy tính và truyền thông đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập
và nghiên cứu khoa học tại trường Các thầy cô không chỉ dạy kiến thức, phương pháp làm việc và nghiên cứu khoa học, mà còn giúp đỡ chúng em trưởng thành hơn trong cuộc sống
Em xin gửi lời tri ân chân thành nhất tới thầy Ngô Lam Trung đã luôn nhiệt tình giúp
đỡ, hướng dẫn và tạo điều kiện tốt nhất giúp em nghiên cứu trong suốt quá trình thực tập tại phòng thí nghiệm CSLAB 505 – Tòa nhà B1 đại học Bách Khoa Hà Nội
Cuối cùng, em xin gửi lời cám ơn tới gia đình, bạn bè đã giúp đỡ, động viên trong thời gian em học tập và nghiên cứu tại trường
Hà Nội, tháng 6 năm 2020 Dương Quốc Hùng Viện CNTT&TT ĐH Bách Khoa Hà Nội
Trang 5TÓM TẮT LUẬN VĂN THẠC SĨ
Đề tài: Xác định vị trí cho robot trong nhà sử dụng một camera
Người hướng dẫn: TS Ngô Lam Trung
Nội dung tóm tắt:
Luận văn thực hiện tìm hiểu, nghiên cứu thuật toán PTAM (Parallel Tracking and Mapping) Xây dựng thử nghiệm định vị vị trí cho robot trong nhà (vị trí của camera gắn trên robot trong nhà) sử dụng một camera
Mục đích nghiên cứu
Tìm hiểu thuật toán PTAM (Parallel Tracking and Mapping) và thử nghiệm định vị cho robot trong nhà sử dụng một camera
Luận văn có hai mục tiêu:
- Tìm hiểu thuật toán PTAM
- Xây dựng thử nghiệm PTAM trong việc định vị robot trong nhà dùng một camera
Đối tượng và phạm vi nghiên cứu
Đối tượng: thuật toán PTAM
Phạm vi: cài đặt thuật toán trên môi trường ROS, thử nghiệm với môi trường trong nhà
Phương pháp nghiên cứu
Nghiên cứu các công nghệ xác định vị trí robot các ưu nhược điểm của các phương pháp này
Nghiên cứu thuật toán PTAM
Nghiên cứu hệ điều hành ROS với PTAM
Áp dụng PTAM xây dựng thử nghiệm định vị robot trong nhà sử dụng một camera
Trang 6 Tìm hiểu thuật toán PTAM với hệ điều hành ROS (ethzasl_ptam gói phần mềm mã nguồn mở)
Tải và build gói phần mềm mã nguồn mở ethzasl_ptam và các gói phần mềm kèm theo
Xây dựng thử nghiệm định vị di chuyển của camera với điều kiện trong nhà
Đánh giá kết quả mà thuật toán PTAM thực hiện được
HỌC VIÊN
Ký và ghi rõ họ tên
Trang 7MỤC LỤC
LỜI CẢM ƠN 2
DANH MỤC HÌNH ẢNH 7
DANH MỤC TỪ VIẾT TẮT 8
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 9
1.1 Đặt vấn đề 9
1.2 Mục đích nghiên cứu 9
1.3 Đối tượng và phạm vi nghiên cứu 10
1.4 Phương pháp nghiên cứu 10
CHƯƠNG 2 LÍ THUYẾT XÁC ĐỊNH VỊ TRÍ VÀ THUẬT TOÁN PTAM 11
2.1 Cơ sở lí thuyết xác định vị trí 11
2.2 Hệ thống PTAM 11
2.2.1 Giới thiệu hệ thống PTAM 11
2.2.2 Thuật toán SLAM trong PTAM 11
2.2.3 Bản Đồ 12
2.2.4 Theo dõi (Tracking) 12
2.2.5 Ánh xạ 15
2.3 PTAM với hệ điều hành ROS 18
2.3.1 Hệ điều hành ROS 18
2.3.2 Cấu trúc ROS 21
2.3.3 PTAM với ROS (Ethzasl_ptam) 24
2.4 Xây dựng thử nghiệm định vị cho robot trong nhà dùng PTAM 30
2.4.1 Cài đặt PTAM 30
2.4.2 Xây dựng node camera cho PTAM 34
2.4.3 Hiệu chuẩn Camera 38
2.4.4 Thử nghiệm PTAM xác định vị trí camera 41
2.4.5 Thử nghiệm dùng node remote_ptam điều khiển node ptam 45
2.4.6 Đánh giá 47
CHƯƠNG 3 KẾT LUẬN 52
3.1 Những công việc đã hoàn thành 52
3.2 Kết quả thử nghiệm 52
3.3 Những hạn chế của thuật toán PTAM 52
3.4 Chú ý khi sử dụng ethzasl_ptam 53
3.5 Hướng phát triển của đồ án trong tương lai 53
TÀI LIỆU THAM KHẢO 54
Trang 8DANH MỤC HÌNH ẢNH
Hình 2.2.1: Hoạt động của luồng ánh xạ 15
Hình 2.3.1: Sơ đồ khối hệ điều hành ROS 19
Hình 2.3.2: Sơ đồ tương tác giữa các node và topic 20
Hình 2.4.1: Camera yokoo 35
Hình 2.4.2: Thông tin bus usb camera 35
Hình 2.4.3: Thông tin về camera 36
Hình 2.4.4: Danh sách topic 37
Hình 2.4.5: Hình ảnh rgb từ camera 37
Hình 2.4.6: Hình ảnh đa mức xám từ camera 38
Hình 2.4.7: Hình ảnh hiệu chỉnh camera 39
Hình 2.4.8: Giao diện hiệu chỉnh camera 39
Hình 2.4.9: Hiệu chỉnh camera 40
Hình 2.4.10: Kết quả hiệu chỉnh camera 40
Hình 2.4.11: Chạy node ptam 41
Hình 2.4.12: node rqt_reconfigure 42
Hình 2.4.13: Khởi tạo khung hình chính 1 42
Hình 2.4.14: Khởi tạo khung hình chính 2 43
Hình 2.4.15: Bản đồ Feature và mặt phẳng 43
Hình 2.4.16: Vị trí mặt phẳng khi di chuyển camera 44
Hình 2.4.17: Bản đồ 3D vị trí camera và features 44
Hình 2.4.18: Cửa sổ vlsam/preview 46
Hình 2.4.19: Hiển thị đường đi trong rViz 47
Hình 2.4.20: Khoảng cách đơn vị trên bản đồ 48
Hình 2.4.21: Bản đồ 3D tại vị trí 1 và 2 48
Hình 2.4.22: Vị trí camera tại điểm 3 48
Hình 2.4.23: Bản đồ features map trường hợp camera hướng lên trần 49
Hình 2.4.24: Bản đồ 3D vị trí camera tại điểm 1 và 2 50
Hình 2.4.25: Bản đồ 3D vị trí camera tại vị trí 3 50
Trang 9DANH MỤC TỪ VIẾT TẮT
ROS Ros Operating System Hệ điều hành Robot
GPS Global Positioning System Hệ thống định vị vệ tinh toàn cầu
GNSS Global Navigation Satellite
System
Hệ thống dẫn đường sử dụng vệ tinh
IPS Indoor Positioning System Hệ thống định vị trong nhà
PTAM Parallel Tracking And Mapping Hệ thống theo dõi và tạo lập bản đồ SLAM Simultaneous Localization And
Mapping
Hệ thống sử dụng thông tin ảnh thu được
từ camera để tái tạo môi trường bên ngoài
CPU Central Processing Unit Đơn vị sử lí trung tâm
Trang 10
CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI
1.1 Đặt vấn đề
Cuộc cách mạng công nghiệp là những bước phát triển vượt bậc của con người, cuộc cách mạng cho phép ứng dụng rộng rãi các robot trong nhiều lĩnh vực của cuộc sống Yếu tố này phù hợp với nhận thức về vấn đề an toàn trong công việc, robot thay thế cho con người trong sản xuất, trong lao động, trong các nhà máy… điều đó đã góp phần vào sự xuất hiện nhu cầu sử dụng các robot Để robot có thể hoạt động cần có một
hệ thống định vị để dẫn đường cho robot có thể hoạt động được
Ngày nay công nghệ định vị ngày một phát triển và độ chính xác cũng tăng lên rất
nhiều Nói đến định vị không thể không nhắc đến GPS (Global Positioning System)
GPS là hệ thống xác định vị trí dựa trên vị trí của các vệ tinh nhân tạo, do Bộ quốc phòng Hoa Kỳ thiết kế, xây dựng, vận hành và quản lý Trong cùng một thời điểm, tọa
độ của một điểm trên mặt đất sẽ được xác định nếu xác định được khoảng cách từ điểm
đó đến ít nhất ba vệ tinh Tuy hệ thống GPS xác định vị trí cực kì chính xác nhưng thiết
bị GPS không thể vận hành nếu chưa nhận được tín hiệu trực tiếp từ vệ tinh nên người
ta thường phải sử dụng ngoài trời Hơn nữa, GPS không đủ chính xác khi dùng nó để tìm kiếm trong phòng hoặc người ở một địa điểm nào đó Các tín hiệu vệ tinh bị suy yếu
và phân tán bởi nhiều vật cản như mái nhà, tường và các đối tượng khác Còn riêng đối với hệ thống vệ tinh dẫn đường toàn cầu (GNSS) có thể đáp ứng được nhiều nhu cầu hơn GPS Tuy nhiên, GNSS lại không tương thích nhiều với các phần cứng được thiết
kế với các hoạt động trong nhà Ngoài ra sai số trung bình cho hệ thống GNSS thường
là lớn hơn nhiều đối với những lĩnh vực đòi hỏi độ chính xác cao
Vì vậy, công nghệ định vị trong nhà ra đời (Indoor Positioning System - IPS) Hiện nay
có nhiều phương pháp định vị cho môi trường trong nhà, như dùng cảm biến siêu âm, cảm biến laser, camera đo độ sâu, đánh dấu marker xung quanh tường Những phương pháp này có chung 1 đặc điểm là sử dụng các cảm biến chuyên dụng nên phần cứng phức tạp, chi phí đắt đỏ
Luận văn này lựa chọn phương pháp định vị dùng 1 camera vì ưu điểm: phần cứng đơn giản (chỉ cần 1 camera)
Kết quả của đề tài sẽ được sử dụng để phát triển robot dịch vụ có khả năng di chuyển trong nhà dựa trên bản đồ được xây dựng từ hình ảnh mà camera gắn trên robot thu được, ứng dụng trong robot hút bụi, robot dẫn đường, robot vận chuyển hàng …
1.2 Mục đích nghiên cứu
Mục đích nghiên cứu là tìm hiểu một thuật toán định vị cho robot ở môi trường trong nhà
Luận văn có hai mục tiêu:
Tìm hiểu thuật toán PTAM
Xây dựng thử nghiệm PTAM trong việc định vị robot trong nhà dùng một camera
Trang 111.3 Đối tượng và phạm vi nghiên cứu
Đối tượng: thuật toán PTAM
Phạm vi: cài đặt thuật toán trên môi trường ROS, thử nghiệm với môi trường
trong nhà
1.4 Phương pháp nghiên cứu
Nghiên cứu các công nghệ xác định vị trí robot các ưu nhược điểm của các phương pháp này
Nghiên cứu thuật toán PTAM
Nghiên cứu hệ điều hành ROS với PTAM
Áp dụng PTAM xây dựng thử nghiệm định vị robot trong nhà sử dụng một camera
Đánh giá thử nghiệm
Trang 12CHƯƠNG 2 LÍ THUYẾT XÁC ĐỊNH VỊ TRÍ VÀ THUẬT TOÁN PTAM 2.1 Cơ sở lí thuyết xác định vị trí
Xác định vị trí robot là việc tìm ra được trạng thái (bao gồm vị trí và định hướng) của robot trong môi trường của nó Trong đó, có thể là xác định vị trí trong một bản đồ cho trước hoặc tìm vị trí tương đối sau khi di chuyển so với vị trí bắt đầu (trường hợp không biết trước bản đồ)
Giải thuật cơ bản nhất sử dụng dữ liệu chuyển động của động cơ để ước tính thay đổi vị trí theo thời gian (odometry) Tuy nhiên triển khai trong thực tế gặp nhiều sai số do rất nhiều lí do như: sai lệch giữa thiết kế và thực tế của động cơ, sai lệch giữa các động cơ trong cùng một robot, các sai số từ môi trường như vật cản, gió, bề mặt di chuyển không bằng phẳng, …
Ngày nay công nghệ camera đang phát triển rất mạnh Các thuật toán định vị dựa vào
dữ liệu thu được từ camera cũng ra đời, một trong số đó là thuật toán PTAM
2.2 Hệ thống PTAM
2.2.1 Giới thiệu hệ thống PTAM
PTAM (Parallel Tracking and Mapping) là hệ thống camera theo dõi cho thực tế tăng cường Nó không yêu cầu đánh dấu, bản đồ được tạo sẵn, các mẫu đã biết hoặc cảm biến gia tốc PTAM chỉ đơn thuần dùng một camera duy nhất
PTAM được thiết kế đặc biệt để theo dõi (tracking) camera cầm tay trong không gian làm việc nhỏ Chính vì vậy hệ thống phân chia 2 nhiệm vụ theo dõi (tracking) và ánh xạ thành thành hai nhiệm vụ riêng biệt, và được xử lí trên các luồng song song trên máy tính lõi kép: một luồng xử lí nhiệm vụ theo dõi chuyển động, trong khi các luồng khác tạo ra bản đồ 3D về các đặc trưng (features) của các khung hình video quan sát được Kết quả là một hệ thống tạo ra các chi tiết bản đồ với hàng ngàn điểm cỏ thể được theo dõi ở tốc độ khung hình
2.2.2 Thuật toán SLAM trong PTAM
Hệ thống PTAM sử dụng thuật toán SLAM có thể tóm tắt bởi các điểm sau:
Theo dõi (tracking) và ánh xạ được tách riêng và chạy trong hai luồng song song
Ánh xạ dựa trên các khung hình chính, được xử lí bằng kĩ thuật tính toán theo lô (Batch Techniques)
Bản đồ được khởi tạo với thuật toán 5-point agorithm
Điểm mới được khởi tạo với tìm kiếm Epipolar
Ánh xạ hàng ngàn điểm đặc trưng (features point)
Do các máy tính hiện đại đều có CPU đa nhân nên việc phân chia theo dõi (tracking) và ánh xạ được lên lịch riêng để có thể chạy song song Vấn đề gánh nặng tính toán của việc cập nhật bản đồ ở mọi khung hình được giải quyết, luồng theo dõi (tracking) có thể thực hiện quá trình theo dõi được kỹ lưỡng hơn, tăng hiệu suất hơn
Việc sử dụng mọi khung hình của camera để theo dõi và ánh xạ là không cần thiết vì nhiều khung hình video chứa thông tin dư thừa, đặc biệt là khi máy ảnh không di
Trang 13chuyển Hệ thống sẽ lãng phí thời gian để lọc lại cùng một khung dữ liệu, hệ thống có thể tập trung xử lí một số lượng nhỏ hơn các khung hình chính hữu ích hơn Các khung hình chính mới sau đó được xử lí và hoàn thành trước thời điểm khung hình chính tiếp theo được thêm vào và điều này cho phép hoạt động với kích thước bản đồ lớn hơn Việc tính toán theo lô cũng làm tăng hiệu suất trong khi vẫn có độ chính xác cao
2.2.3 Bản Đồ
Bản đồ trong PTAM là tập hợp các đặc trưng (features) nằm trong khung toạ độ
W Mỗi đặc trưng đại diện cho một kết cấu bên ngoài không gian thực tế
Bản đồ cũng chứa N khung hình chính: Đây là những ảnh chụp nhanh được chụp bởi camera tại nhiều thời điểm khác nhau Mỗi khung hình chính có khung tọa độ tập trung vào camera liên quan, ký hiệu là Ki cho khung hình chính thứ i Mỗi khung hình chính cũng lưu trữ một kim tự tháp bốn cấp hình ảnh 8bpp thang độ xám; mức 0 lưu trữ ảnh chụp nhanh camera 640x480 pixel đầy đủ và được lấy mẫu phụ xuống cấp ba ở mức 80x60 pixel
Các pixel tạo nên mỗi đặc trưng không được lưu trữ theo cách thông thường, thay vào
đó, mỗi điểm đặc trưng có một khung hình nguồn - thường là khung hình chính đầu tiên trong đó điểm này được quan sát Do đó, mỗi điểm bản đồ lưu trữ một tham chiếu đến một khung hình nguồn đơn, một mức kim tự tháp nguồn duy nhất trong khung hình chính này và vị trí pixel trong cấp độ này Ở cấp độ kim tự tháp nguồn, các bản vá tương ứng với các ô vuông 8 × 8 pixel, kích thước và hình dạng của một miếng vá phụ thuộc vào cấp độ kim tự tháp, khoảng cách từ điểm trung tâm đến máy ảnh, khung hình chính nguồn và hướng của miếng vá thông thường
Bản đồ có thể chứa một số M = 2000 đến 6000 điểm và N = 40 đến 120 khung hình chính
2.2.4 Theo dõi (Tracking)
Phần này mô tả hoạt động của hệ thống theo dõi (tracking) theo điểm, với giả định rằng bản đồ 3D đã được tạo Hệ thống theo dõi (tracking) thu nhận hình ảnh từ camera
và duy trì ước lượng thời gian thực vị trí camera và bản đồ đã được xây dựng Sử dụng ước lượng này, đồ hoạ tăng cường sau đó có thể được vẽ trên khung hình video Tại mỗi khung hệ thống thực hiện quy trình theo dõi(tracking) hai giai đoạn sau:
1 Khung hình mới được lấy từ camera và vị trí ước tính được tạo ra từ một
mô hình chuyển động
2 Mỗi điểm trên bản đồ được chiếu vào hình ảnh theo vị trí ước lượng của khung hình
3 Một số lượng nhỏ (50) đặc trưng được tìm kiếm trong hình ảnh
4 Vị trí camera được cập nhật từ những đặc trưng tìm được
5 Một lượng lớn hơn (1000) điểm được chiếu lại và tìm kiếm trong hình ảnh
Trang 146 Ước tính vị trí cuối cùng cho khung hình từ tất cả các điểm đã tìm thấy
Thu nhận ảnh
Camera cung cấp khung hình YUV411 640 × 480 pixel ở 30Hz Các khung này được chuyển đổi thành ảnh đa mức xám 8bpp để theo dõi và hình ảnh RGB để hiển thị tăng cường
Các biến dạng xuyên tâm mô hình biến đổi r → r ′ là mô hình FOV của [6] Các thông
số camera cho độ dài tiêu cự (fu, fv), điểm chính (u0, v0) và biến dạng (ω) được giả sử
là đã biết:
Một yêu cầu cơ bản của hệ thống theo dõi (và cả bản đồ) là khả năng phân biệt phương trình (2) liên quan đến những thay đổi trong camera đặt Ecw Thay đổi về tư thế máy ảnh được thể hiện bằng phép nhân với chuyển động camera 4 × 4 M:
Trong đó chuyển động của camera cũng là một thành viên của (3) và có thể được tối ưu hóa tối thiểu với một vectơ Thông thường, ba phần tử đầu tiên của biểu diễn một bản dịch và ba phần tử sau đại diện cho trục xoay và độ lớn
Tìm kiếm Patch
Để tìm một điểm bản đồ p trong khung hình hiện tại, chúng ta thực hiện tìm kiếm hình ảnh trong phạm vi cố định xung quanh vị trí hình ảnh dự đoán điểm Để thực hiện tìm kiếm này, chúng ta tính đến sự thay đổi giữa bản vá quan sát đầu tiên và vị trí máy ảnh hiện tại Chúng được đặc trưng bởi ma trận A, trong đó
Trang 15
và {us, vs} tương ứng với các chuyển vị pixel ngang và dọc ở cấp độ hình chóp nguồn
vá Patch và {uc, v} tương ứng với các chuyển vị pixel trong mức độ hình chóp khung hình zeroth (fullsize) hiện tại của máy ảnh Ma trận này được tìm thấy bằng cách dịch chuyển pixel đơn vị chiếu ngược ở mức kim tự tháp khung chính nguồn lên mặt phẳng
vá, sau đó chiếu chúng vào khung mục tiêu hiện tại Việc thực hiện các phép chiếu này đảm bảo rằng ma trận A (theo thứ tự đầu tiên) không chỉ thay đổi về phối cảnh và tỷ lệ
mà còn cả các biến thể của biến dạng ống kính trên ảnh
Yếu tố quyết định của ma trận A được sử dụng để quyết định mức độ hình chóp của khung hiện tại mà bản vá cần được tìm kiếm Hệ số xác định của A tương ứng với diện tích, tính bằng pixel vuông, một pixel nguồn đơn sẽ chiếm trong hình ảnh có độ phân giải đầy đủ; det (A) / 4 là khu vực tương ứng trong kim tự tháp cấp một, v.v Cấp độ kim tự tháp mục tiêu l được chọn sao cho det (A) / 4 gần nhất với sự thống nhất, tức là chúng ta cố gắng tìm bản vá ở cấp độ kim tự tháp phù hợp nhất với quy mô của nó Mẫu tìm kiếm bản vá 8 × 8 pixel được tạo từ cấp nguồn bằng cách sử dụng phép nội suy dọc A / 2 và song tuyến Cường độ pixel trung bình được trừ khỏi các giá trị pixel riêng
lẻ để cung cấp một số khả năng phục hồi cho các thay đổi ánh sáng Tiếp theo, kết quả phù hợp nhất cho mẫu này trong bán kính cố định xung quanh vị trí dự đoán của nó được tìm thấy ở cấp kim tự tháp mục tiêu Điều này được thực hiện bằng cách đánh giá điểm SSD trung bình bằng 0 tại tất cả các vị trí góc FAST trong vùng tìm kiếm vòng tròn và chọn vị trí có điểm số chênh lệch nhỏ nhất Nếu đây là dưới ngưỡng cài đặt trước, bản vá được coi là tìm thấy
Trong một số trường hợp, đặc biệt ở các mức kim tự tháp cao, một vị trí pixel nguyên không đủ chính xác để tạo ra kết quả theo dõi trơn tru Vị trí bản vá định vị có thể được tinh chỉnh bằng cách thực hiện giảm thiểu lỗi lặp Chúng ta sử dụng phương pháp tiếp cận thành phần nghịch đảo của [1] Tuy nhiên, điều này là quá tốn kém về mặt tính toán
để thực hiện cho mọi bản vá được theo dõi
Chất lượng theo dõi (tracking) và sửa lỗi
Bất chấp những nỗ lực để làm cho việc theo dõi mạnh mẽ nhất có thể, thất bại theo dõi cuối cùng có thể được coi là không thể tránh khỏi Vì lý do này, hệ thống theo dõi ước tính chất lượng theo dõi ở mọi khung hình, sử dụng tỷ lệ quan sát đã thành công Nếu phần này giảm xuống dưới một ngưỡng nhất định, chất lượng theo dõi được coi là kém Theo dõi tiếp tục như bình thường, nhưng hệ thống không được phép gửi các khung hình chính mới đến bản đồ Những khung hình như vậy có thể có chất lượng kém, tức là bị tổn hại do mờ chuyển động hoặc ước tính vị trí không chính xác
Nếu phân số nằm dưới ngưỡng thậm chí thấp hơn nhiều khung hình (trong đó mô hình chuyển động có thể kết nối thành công các khung không thể theo dõi) thì việc theo dõi
Trang 16được coi là bị mất và quy trình phục hồi theo dõi được bắt đầu Sau khi phương pháp này đã tạo ra một ước tính tư thế, theo dõi tiến hành như bình thường
2.2.5 Ánh xạ
Phần này mô tả quá trình xây dựng bản đồ điểm 3D Xây dựng bản đồ xảy ra theo hai giai đoạn riêng biệt: Thứ nhất, bản đồ ban đầu được xây dựng bằng kỹ thuật stereo Sau này, bản đồ liên tục được tinh chỉnh và mở rộng bởi luồng ánh xạ khi các khung hình chính mới được thêm vào Hoạt động của luồng ánh xạ được minh họa trong Hình 1 Các bước tạo bản đồ được mô tả chi tiết
Hình 2.2.1: Hoạt động của luồng ánh xạ
Khởi tạo bản đồ
Khi hệ thống được khởi động lần đầu tiên, sử dụng thuật toán five-point stereo Cần có sự hợp tác của người dùng: trước tiên người dùng đặt camera phía trên không gian làm việc để được theo dõi và nhấn phím Ở giai đoạn này, khung hình chính đầu tiên của hệ thống được lưu trữ trên bản đồ và 1000 rãnh ghi 2D được khởi tạo ở mức kim tự tháp thấp nhất tại các vị trí hình ảnh nổi bật (góc FAST tối đa.) Sau đó, người
Trang 17dùng sẽ dịch (và có thể xoay) camera một cách trơn tru đến một vị trí khác cho một lần nhấn phím tiếp theo Các bản vá 2D được theo dõi thông qua chuyển động mượt mà, và lần nhấn phím thứ hai do đó cung cấp khung hình chính thứ hai và các đặc trưng tương ứng mà thuật toán năm điểm và RANSAC có thể ước tính một ma trận thiết yếu và tam giác hóa bản đồ cơ sở Bản đồ kết quả được tinh chỉnh thông qua điều chỉnh bó
Bản đồ ban đầu này có tỷ lệ tùy ý và được căn chỉnh với một camera ở điểm gốc Để cho phép gia tăng ở một vị trí và tỷ lệ có ý nghĩa, bản đồ trước tiên được chia tỷ
lệ thành đơn vị số liệu Điều này được thực hiện bằng cách giả sử rằng máy ảnh đã dịch 10cm Tiếp theo, bản đồ được xoay và dịch sao cho mặt phẳng phát hiện chiếm ưu thế nằm ở z = 0 Điều này được thực hiện bởi RANSAC: nhiều bộ ba điểm được chọn ngẫu nhiên để đưa ra giả thuyết một mặt phẳng trong khi các điểm còn lại được kiểm tra sự đồng thuận Giả thuyết chiến thắng được cải tiến bằng cách đánh giá giá trị trung bình
và phương sai không gian của tập hợp đồng thuận, và hàm riêng nhỏ nhất của ma trận hiệp phương sai tạo thành mặt phẳng phát hiện bình thường
Khung hình chính và tìm kiếm epipolar
Bản đồ ban đầu chỉ chứa hai khung hình chính và mô tả một không gian tương đối nhỏ Khi máy ảnh rời khỏi vị trí ban đầu, các khung hình chính và đặc trưng bản đồ mới được thêm vào hệ thống, để cho phép bản đồ phát triển
Các khung hình chính được thêm vào bất cứ khi nào đáp ứng các điều kiện sau: Chất lượng theo dõi phải tốt; thời gian kể từ khi khung hình chính cuối cùng được thêm vào phải vượt quá hai mươi khung hình; và máy ảnh phải cách một điểm tối thiểu gần nhất trong bản đồ Yêu cầu khoảng cách tối thiểu sẽ tránh được vấn đề máy ảnh đứng yên làm hỏng bản đồ và đảm bảo đường cơ sở Khoảng cách tối thiểu được sử dụng phụ thuộc vào độ sâu trung bình của các đặc trưng quan sát, do đó các khung hình chính được đặt gần nhau hơn khi máy ảnh ở rất gần bề mặt và cách xa nhau hơn khi quan sát các bức tường ở xa
Mỗi khung hình chính ban đầu giả định hệ thống theo dõi vị trí máy ảnh và tất cả các phép đo đặc trưng được thực hiện bởi hệ thống theo dõi Do các ràng buộc thời gian thực, hệ thống theo dõi chỉ có thể đo được một tập hợp con các đặc trưng có thể nhìn thấy trong khung; do đó, luồng ánh xạ đo các đặc trưng bản đồ còn lại và thêm các quan sát thành công vào danh sách các phép đo của nó
Hệ thống theo dõi đã tính toán một tập hợp các góc FAS cho từng cấp độ hình chóp của khung hình chính Dựa trên điểm số Shi-Tomasi để thu hẹp tập hợp này xuống các điểm nổi bật nhất trong mỗi cấp độ kim tự tháp Tiếp theo, các điểm nổi bật gần các quan sát thành công của các tính năng hiện có sẽ bị loại bỏ Mỗi điểm nổi bật còn lại là một ứng cử viên để trở thành một điểm bản đồ mới
Điểm bản đồ mới yêu cầu thông tin chuyên sâu Điều này không có sẵn từ một khung hình chính duy nhất và cần phải thực hiện tam giác với một chế độ xem khác Chọn khung hình chính gần nhất (về vị trí camera) đã có trong bản đồ làm chế độ xem thứ hai Sự tương ứng giữa hai chế độ xem được thiết lập bằng tìm kiếm epipolar: các
Trang 18bản vá pixel xung quanh các điểm góc nằm dọc theo đường epipole trong chế độ xem thứ hai được so sánh với các điểm bản đồ ứng cử viên sử dụng SSD không có nghĩa Hơn nữa, chúng ta không tìm kiếm một dòng epipole vô hạn, mà sử dụng một giả thuyết trước về độ sâu có khả năng của các điểm ứng cử viên mới (phụ thuộc vào sự phân bố
độ sâu của các điểm hiện có trong khung hình chính mới) Nếu được tìm thấy, điểm bản
đồ mới sẽ được tam giác hóa và chèn vào bản đồ
Điều chỉnh gói
Liên kết của khung hình chính thứ i trong bản đồ là một tập hợp các phép đo hình ảnh Ví dụ: điểm bản đồ thứ j được đo trong khung hình chính sẽ được tìm thấy tại (uij,
vij)T với độ lệch chuẩn của các pixel ij Trạng thái hiện tại của bản đồ là {EK1W,…EKnW}
và {p1,…pM}, mỗi phép đo hình ảnh cũng được tính lỗi từ phương trình (9) Điều chỉnh gói lặp đi lặp lại điều chỉnh bản đồ với hàm tối thiểu hoá:
(10)
Điều chỉnh gói đầy đủ như được mô tả ở trên sẽ điều chỉnh tư thế cho tất cả các khung hình chính (ngoài cái đầu tiên, đó là mốc thời gian cố định) và tất cả các vị trí điểm trên bản đồ Nó khai thác sự thưa thớt vốn có trong bài toán chuyển động cấu trúc để giảm
độ phức tạp của các yếu tố ma trận chi phí khối từ O ((N + M) 3) đến O (N3), và do đó,
hệ thống cuối cùng sẽ chia tỷ lệ với khối khung hình chính trong thực tế, đối với các kích thước bản đồ được sử dụng ở đây, tính toán trong hầu hết các trường hợp được định nghĩa bởi các sản phẩm bên ngoài camera-camera-camera O (N2M) Bằng cách này hay cách khác, nó trở thành một tính toán ngày càng đắt đỏ khi kích thước bản đồ tăng lên: Ví dụ: cần hàng chục giây cho một bản đồ có hơn 150 khung hình chính để hội tụ Điều này có thể chấp nhận được nếu máy ảnh không khám phá (tức là hệ thống theo dõi
có thể hoạt động với bản đồ hiện tại) nhưng sẽ nhanh chóng bị hạn chế trong quá trình khai thác, khi nhiều đặc trưng chính và bản đồ mới được khởi tạo (và nên được điều chỉnh theo gói) liên tiếp
Vì lý do này, các luồng ánh xạ cũng thực hiện điều chỉnh bó; ở đây chỉ có một tập hợp con của tư thế khung hình chính được điều chỉnh Tập hợp các khung hình chính để điều chỉnh thành X, một bộ các khung hình chính cố định Y và tập hợp các điểm bản đồ Z, thu nhỏ (viết tắt hàm mục tiêu) trở thành
(11)
Điều này tương tự như hoạt động của việc triển khai hình ảnh thị giác liên tục khám phá nhằm tối ưu hóa 3 khung hình cuối cùng bằng cách sử dụng các phép đo từ 7 lần trước
đó Tuy nhiên, có một sự khác biệt quan trọng trong việc lựa chọn các tham số được tối
ưu hóa và lựa chọn các phép đo được sử dụng cho các ràng buộc
Trang 19Tập hợp X của khung hình chính để tối ưu hóa bao gồm năm khung hình chính: khung hình chính mới nhất và bốn khung hình chính khác gần nhất trong bản đồ Tất cả các điểm trên bản đồ có thể nhìn thấy trong bất kỳ khung hình chính nào tạo thành tập Z Cuối cùng, Y chứa bất kỳ khung hình chính nào mà phép đo bất kỳ điểm nào trong Z đã được thực hiện Đó là, điều chỉnh gói cục bộ tối ưu hóa tư thế của khung hình chính gần đây nhất và hàng xóm gần nhất của nó, và tất cả các điểm trên bản đồ được nhìn thấy bằng cách sử dụng tất cả các phép đo từng được thực hiện từ các điểm này
Sự phức tạp của điều chỉnh bó cục bộ vẫn có tỷ lệ với kích thước bản đồ, nhưng trong trường hợp xấu nhất là xấp xỉ O (NM), và điều này cho phép tỷ lệ thăm dò hợp lý Nếu một khung hình chính được thêm vào bản đồ trong khi tiến hành điều chỉnh gói, điều chỉnh bị gián đoạn để khung hình mới có thể được tích hợp trong thời gian ngắn nhất
Khi một đặc trưng mới được thêm vào bằng tìm kiếm epipolar, các phép đo cho đặc trưng ban đầu chỉ tồn tại trong hai khung hình chính Tuy nhiên, có thể đặc trưng này cũng hiển thị trong các khung hình chính khác Đây là trường hợp các phép đo được thực hiện nếu chúng được thêm thành công vào bản đồ
Tương tự, các phép đo được thực hiện bởi hệ thống theo dõi có thể không chính xác Điều này thường xuyên xảy ra ở các khu vực bao gồm các mẫu lặp đi lặp lại Các phép
đo như vậy được cho trọng số thấp bởi công cụ ước lượng M được sử dụng trong điều chỉnh bó Nếu chúng nằm trong vùng không trọng số của công cụ ước tính Tukey, chúng được gắn cờ là ngoại lệ Mỗi phép đo ngoại lệ được đưa ra một cơ hội thứ hai trước khi phân định: nó được đo lại trong khung hình chính bằng cách sử dụng vị trí dự đoán của tính năng và vùng tìm kiếm chặt chẽ hơn nhiều so với sử dụng để theo dõi Nếu một phép đo mới được tìm thấy, nó sẽ được chèn lại vào bản đồ Nếu một phép đo như vậy vẫn được coi là một ngoại lệ, nó sẽ bị xóa vĩnh viễn khỏi bản đồ
Các tinh chỉnh liên kết dữ liệu này được ưu tiên thấp trong luồng ánh xạ và chỉ được thực hiện nếu không có nhiệm vụ cấp bách nào khác trong tay Giống như điều chỉnh gói, chúng bị gián đoạn ngay khi một khung hình chính mới xuất hiện
2.3 PTAM với hệ điều hành ROS
2.3.1 Hệ điều hành ROS
ROS (Robot Operating System) là một hệ thống phần mềm chuyên dụng để lập trình và điều khiển robot, bao gồm các công cụ để lập trình, hiển thị, tương tác trực tiếp với phần cứng, và kết nối cộng đồng robot trên toàn thế giới 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ụ
Trang 20ROS trên thực tế là một hệ điều hành meta, một cái gì đó giữa một hệ điều hành và phần mềm trung gian
Nó 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, v.v.)
Cơ bản về cách hoạt động của ROS:
Về cơ bản ROS files được bố trí và hoạt động như sau, từ trên xuống theo thứ tự như sau, metapackages, packages, packages manifest, Misc, messages, Services, codes:
Hình 2.3.1: Sơ đồ khối hệ điều hành ROS
Trong đó gói tổng (Metapackages) là một nhóm các gói (packages) có liên quan
tới nhau Lấy ví dụ như, trong ROS có một gói tổng tên là Navigation, gói này
có chứa tất cả các gói liên quan tới việc di chuyển của robot, bao gồm di chuyển thân, bánh, các thuật toán liên quan như Kalman, Particle filter… Khi chúng ta cài đặt gói tổng, nghĩa là tất cả các gói con trong nó cũng được cài đặt
Trong một gói gồm có, ROSnode, datasets, configuration files, source files, tất
cả được gói lại trong một “gói” Tuy nhiên, mặc dù có nhiều thứ trong một, gói, nhưng để làm việc, chúng ta chỉ cần quan tâm 2 thứ trong 1 gói, đó chính là src folder, chứa source code của chúng ta, và file Cmake.txt, đây là nơi ta khai báo những thư viện cần thiết để thực thi(compile) code
Sự Tương tác giữa các node trong ROS
ROS computation graph là bức tranh toàn cảnh về sự tương tác của các nodes, topics với nhau
Trang 21Hình 2.3.2: Sơ đồ tương tác giữa các node và topic
Ở hình trên ta có thể thấy Master chính là nodes kết nối tất cả các node còn lại, các nodes còn lại muốn giao tiếp với nhau phải thông qua node Master
Nodes: ROS nodes chỉ đơn giản là quá trình sử dụng ROS API để giao tiếp với nhau Một robot có thể có rất nhiều nodes để thực hiện quá trình giao tiếp của nó
Ví dụ như, một con robot tự lái sẽ có những node sau, node đọc dữ liệu từ Laser scanner, Kinect camera, localization and mapping, node gửi lệnh vận tốc cho hệ thống bánh lái
Master: ROS master đóng vai trò như một node trung gian kết nối giữa các node khác nhau Master bao quát thông tin về tất cả các nút chạy trong môi trường ROS Nó sẽ trao đổi chi tiết của một nút với nút khác để thiết lập kết nối giữa chúng Sau khi trao đổi thông tin, giao tiếp sẽ bắt đầu giữa hai nút ROS Khi chạy một chương trình ROS, lúc nào ros_master cũng phải chạy trước Có thể chạy ros master bằng cách ->terminal->roscore
Message: Các nút ROS có thể giao tiếp với nhau bằng cách gửi và nhận dữ liệu dưới dạng ROS mesage ROS message là một cấu trúc dữ liệu được sử dụng bởi các nút ROS để trao đổi dữ liệu Nó giống như là một protocol, định dạng thông tin gửi đi nữa các node, ví dụ như string, float, int…
Topic: Một trong những phương pháp để giao tiếp và trao đổi tin nhắn giữa hai node được gọi là ROS Topic ROS Topic giống như một kênh tin nhắn, trong kênh đó dữ liệu được trao đổi bằng ROS message Mỗi chủ đề sẽ có một tên khác nhau tùy thuộc vào những thông tin mà nó sẽ phụ trách cung cấp Một Node sẽ đăng bài(publish) thông tin cho một Topic và một nút khác có thể đọc từ Topic bằng cách đăng ký (subcrible) với nó Cũng giống như muốn xem video của mình thì phải subcrible channel của mình vậy Nếu muốn xem thử chương trình
Trang 22mình đang chạy có những topic nào, thì câu lệnh là rostopic list, nếu muốn xem một topic nào đó xem thử có những node nào đang publish hoặc subcrible vào
nó Thì câu lệnh là rostopic info /têntopic Nếu muốn xem trong topic đó có gì thì type rostopic echo /tên topic
Service: Service là một loại phương pháp giao tiếp khác với Topic Topic
sử dụng tương tác publish hoặc subcrible nhưng trong dịch vụ, nó tương tác theo kiểu request – response Một nút sẽ hoạt động như một server, có một server thường xuyên chạy và khi Node client gửi yêu cầu dịch vụ cho server Máy chủ
sẽ thực hiện dịch vụ và gửi kết quả cho máy khách Client node phải đợi cho đến khi máy chủ phản hồi với kết quả Server đặc biệt hữu dụng khi chúng ta cần thực hiện một lệnh gì đó mà cần thời gian lâu để xử lý, vậy thì chúng ta để nó ở server, khi cần thì ta gọi
2.3.2 Cấu trúc ROS
ROS có 3 cấp 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ả…
ROS Filesystem Level
Filesystem là nguồn tài nguyên source code ROS được lưu trữ trên bộ nhớ hệ thống,
nó bao gồm các khái niệm:
Package: Gói ứng dụng 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 (dependency, là các filesystem ngang cấp được đơn vị này dựa trên), 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 (manifest.xml), cung cấp các cơ sở dữ liệu về package đó, bao gồm điều kiện thực thi (license) 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 với nhau để 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)
Stack Manifests (.xml): cung cấp mô tả cơ sở dữ liệu về một stack, bao gồm điều kiện cho phép (license) và thông tin về các stack dependency khác
Dependency: là mô tả trong manifest của một package hay stack về các file system ngang cấp (stack hoặc package khác) mà stack hay package kế thừa
Message (.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
Trang 23 Service (.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 (.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, đồng thời 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 trong Command Terminal của Linux
ROS Computation Graph
Computation Graph, tạm 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ụ 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 điều khiển thường bao gồm nhiều node Ví dụ một node điều khiển động cơ, một node thực hiện tác vụ định
vị, một node vẽ quỹ đạo đường đi
Master: ROS Master cung cấp tên đăng ký và tra cứu đến phần còn lại của Computation Graph Nếu không có Master, các nodes sẽ không tìm thấy nhau để trao đổi thông tin hay gọi services
Parameter Server: là một phần của Master, cho phép dữ liệu được lưu trữ trong một vị trí trung tâm và cho phép các node truy cứu tới
Message: các nodes giao tiếp 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, point, Boolean…
và mảng (array) với kiểu chuẩn đều được hỗ trợ Bên cạnh đó, message cũng có thể bao gồm các cấu trúc và các mảng lồng nhau như cấu trúc 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 bằng việc đưa thông tin tới một topic (chủ đề) Một topic có tên và kiểu message xác định Một node chỉ subscribe đến đúng topic có tên và kiểu dữ liệu như đã 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) Mỗi node cũng có thể truyền tin trên nhiều topic khác nhau, cũng như có thể nhận tin từ nhiều topic khác nhau Các nguồn truyền tin và các đối tượng nhận tin nhìn chung không cần phải biết về sự tồn tại của nhau Ý tưởng xây dựng ROS ở đây là tách biệt nguồn tạo ra thông tin với bộ phận sử dụng thông tin đó Topic được xem như là một kênh truyền các thông điệp được định kiểu Mỗi kênh truyền này có một tên riêng, và node nào cũng có
Trang 24thể kết nối với kênh này để gửi/nhận thông điệp, miễn là thông điệp cùng kiểu với topic đó
Service: Mô hình truyền thông theo mẫu publish/subcribe như trình bày ở trên là một mô hình rất linh hoạt, tuy vậy, đặc điểm của nó là thông tin được truyền đa đối tượng, một chiều (many-to-many, one-way) đôi khi lại không phù hợp với các trường hợp cần tương tác theo kiểu request/reply (yêu cầu/đáp ứng), kiểu tương tác này thường gặp trong các hệ thống phân phối Do vậy, cần có thêm một thành phần nữa trong ROS Graph, đó là service, nhằm thực hiện được các yêu cầu tương tác theo kiểu request/reply Service là một cặp cấu trúc thông điệp: một thông điệp để gửi yêu cầu và một thông điệp dành cho đáp ứng Một node cung ứng một service với một thuộc tính name, một client sử dụng service
đó bằng cách gửi đi một thông điệp yêu cầu (request message) rồi đợi phản hồi Trong thư viện client của ROS, phương thức tương tác này thường được cung cấp như một hàm được gọi từ xa
Bag: là một định dạng để lưu trữ và phát lại dữ liệu từ ROS messages Bags là một cơ chế quan trọng để lưu trữ dữ liệu
Cách xây dựng hệ thống trong ROS cho phép nguồn cung cấp tin và đối tượng nhận tin
có thể tách rời nhau, và mối liên hệ được thực hiện thông qua thuộc tính name Name là thuộc tính đóng vai trò rất quan trọng trong ROS: các nodes, topics, services, và các parameters đều được đặt tên Mỗi thư viện ROS Client đều hỗ trợ command-line để liên kết các tên này (remapping names), nhờ đó mà chương trình đã được biên dịch có thể cấu hình lại được khi chạy ngay cả khi hoạt động trong một cấu trúc Computation Graph khác
ROS Community level
ROS Community được định nghĩa là nguồn tài nguyên ROS mà các đơn vị nghiên cứu có thể trao đổi phần mềm và kiến thức Các nguồn tài nguyên bao gồm:
Distribution: ROS Distributions là bộ phiên bản các stack tương thích mà người dùng có thể cài đặt Phiên bản mới nhất hiện nay là phiên bản thứ bảy Hydro Medusa Luận văn sử dụng phiêm bản thứ sáu là Groovy Galapagos nhằm đảm bảo tương thích mới một số package như ccny_rgbd ước lượng tọa độ bằng thị giác (visual odometry)
Repository: ROS là nguồn tài nguyên dựa trên cộng đồng mã nguồn mở, trong đó các viện nghiên cứu, trường đại học khác nhau có thể cùng phát triển đồng thời và công bố những mã nguồn trên mô hình robot của riêng họ
ROS wiki: là bách khoa mở lưu trữ các tài liệu, hướng dẫn về ROS Bất kỳ ai cũng có thể đăng ký tài khoản để chia sẻ tài liệu, cập nhật, hay sử dụng, viết bài hướng dẫn và đặt câu hỏi… Đây là một kênh tham khảo quan trọng bậc nhất khi làm quen với ROS
Các khái niệm cấp cao của ROS (Higher-level Concept)
Trang 25Ngoài các khái niệm cơ bản dựa trên cấu trúc cơ bản của một Operating System ROS còn quy chuẩn một số khái niệm liên quan đặc trưng tới các ứng dụng robot Trong phạm vi luận văn, có một số khái niệm quan trọng cần quan tâm như cordinate frame (hệ tọa độ), tf (transform – phép chuyển đổi giữa các hệ tọa độ), và định dạng mô
tả robot tổng quát (universal robot description format),…
Coordinate Frame/Transform: Khái niệm hệ tọa độ (frame) và phép chuyển đổi hệ
tọa độ (tf) liên quan đến các phần tử không gian của robot và mối quan hệ giữa các phần
tử này, giúp cho việc hiểu đúng các dữ liệu từ cảm biến và giám sát, điều khiển robot trong không gian Các frame trong ROS tuân theo cấu trúc cây, nghĩa là mỗi frame có tối đa một frame mẹ, và có thể có các frame con Mỗi một nhánh trên cây này tồn tại một tf chuyển đổi giữa frame mẹ và frame con Package tf cung cấp các hàm dùng để chuyển hệ trục tọa độ, tính toán vị trí và quan hệ giữa các hệ trục tọa độ theo thời gian
Định dạng mô tả robot tổng quát – Universal Robot Description Format: Đây là
ngôn ngữ mô tả các phần tử (part), các kết nối giữa các phần tử trên robot (joint) Các joint có thể được khai báo là cố định hoặc chuyển động URDF là cần thiết cho các mô hình phức tạp có các phần tử như cánh tay robot, robot omni,… URDF giúp cho việc
mô phỏng trong quá trình nghiên cứu phát triển robot
2.3.3 PTAM với ROS (Ethzasl_ptam)
Ethzasl_ptam là một phiên bản của thuật toán monocular SLAM:
Nó tương thích với ROS
Có thể chạy trên một nền tảng giới hạn khả năng tính toán
Ethzasl_ptam bao gồm các Nodes:
ptam: The main node described here
remote_ptam: Node for displaying PTAM information and managing PTAM from a remote (ground) station
ptam_visualizer: Node to store map, keyframe and path information and visualize it in RViz
cameracalibrator: Node to calibrate the camera Copy the obtained calibration to the fix parameter file
Node ptam
PTAM tương thích với hệ điều hành ROS như sau:
Hình ảnh đầu vào được lấy từ một node hình ảnh và hình ảnh xác minh bao gồm các đặc trưng được tìm thấy, được published Điều này cho phép người dùng xử
lý PTAM trên một hệ thống nhúng mà không cần giao diện người-máy
Trực quan hóa các khung hình chính, quỹ đạo và các tính năng của máy ảnh được chuyển đến RVIZ sao cho việc trực quan hóa có thể được thực hiện từ xa, nếu cần thiết
Trang 26 Tham số điều chỉnh có thể được thay đổi linh hoạt trong GUI để cấu hình lại động
Trong PTAM, bản đồ được xác định là một tập hợp các khung hình chính cùng với các đặc trưng được quan sát của chúng Để giảm thiểu độ phức tạp tính toán,
ở đây số lượng khung hình chính tối đa được giữ lại trên bản đồ được thiết lập Nếu vượt quá số lượng này, khung hình chính xa nhất với tư thế MAV hiện tại sẽ
bị xóa cùng với các đặc trưng được liên kết với nó Nếu số lượng khung hình chính được giữ lại tối đa là vô hạn, thì thuật toán tương đương với PTAM ban đầu, trong khi nếu chúng ta đặt tối đa 2 khung hình chính, chúng ta sẽ có được khung hình học trực quan Đương nhiên, số lượng khung hình chính được giữ lại càng lớn, độ trôi ước lượng càng thấp, nhưng độ phức tạp tính toán càng lớn Trên mỗi khung hình, PTAM chiếu các điểm 3D từ bản đồ vào hình ảnh hiện tại theo mô hình chuyển động trước đó, cho phép các điểm tương ứng điểm được thiết lập để theo dõi Vì không có khả năng lọc về khả năng hiển thị điểm trước bước này, nên nó sẽ chia tỷ lệ tuyến tính với số điểm trong bản đồ Việc tìm kiếm các điểm có thể nhìn thấy được thực hiện bằng cách chiếu lại một tập hợp nhỏ các điểm bản đồ riêng biệt từ mỗi khung hình chính cho phép suy luận về khả năng hiển thị của chúng từ khung hình chính hiện tại Do đó, tổng số điểm cần đánh giá bằng cách từ chối giảm đáng kể dẫn đến việc chia tỷ lệ hệ thống theo thứ tự tuyến tính của các khung hình chính có thể nhìn thấy thay vì theo thứ tự tuyến tính với tổng số khung hình chính trong bản đồ
Để sử dụng ETHZASL_PTAM, cần một môi trường có đủ độ tương phản (nghĩa
là kết cấu) và ánh sáng Nếu tốc độ màn trập trên 5ms để có được một hình ảnh
có độ tương phản đủ, rất có thể thuật toán không hoạt động chính xác vì mờ chuyển động Điều này phụ thuộc vào chuyển động và rung động của camera Để
có hiệu suất tốt cần đảm bảo:
Tốc độ màn trập dưới 5ms
Không có trên / dưới vùng ảnh bão hoà
Không có cấu trúc tương tự
Mẫu máy ảnh được sử dụng trong PTAM được chế tạo cho ống kính góc rộng (>
90 °)
Thông thường, robot mà PTAM chạy không có bất kỳ phương tiện hiển thị nào
và PTAM được điều khiển từ xa bằng remote_ptam Trong các trường hợp như vậy, tham số GUI PTAM bị vô hiệu hóa để dành các tài nguyên tính toán bổ sung: cài đặt tham số gui = False Để tăng tốc hơn nữa và tăng hiệu suất của PTAM trên robot, hệ thống PTAM còn có các cài đặt sau:
Trang 27 InitLevel: 1 cho robot khởi tạo nhanh trên các cấu trúc tự tương
tự
MaxStereoInitLoops: 4 cho khởi tạo nhanh và chống bị treo
MaxPatchesPerFrame: 300 là số lượng đặc trưng tối đa trên mỗi khung hình
MaxKF: 15 số lượng KF tối đa được giữ lại trên bản đồ, không đi xuống dưới 5 để duy trì hiệu suất trôi tốt
UseKFPixelDist: True tạo KF mới dựa trên chênh lệch pixel
NoLevelZeroMapPoints: True
Node PTAM Subscribed Topics:
image (sensor_msgs/Image) : hình ảnh đầu vào được xử lí bởi PTAM
vslam/key_pressed (std_msgs/String): topic được sử dụng bởi node remote_ptam để gửi câu lệnh từ bàn phím đến node PTAM
Node PTAM Published Topics:
vslam/info (ptam_com/ptam_info) : Chứa thông tin về trạng thái hiện tại của PTAM như tốc độ khung hình, số lượng khung hình chính, chất lượng theo dõi và bản đồ cũng như thông báo
vslam/preview (sensor_msgs/Image): hình ảnh được lấy mẫu được sử dụng bởi nút remote_ptam để trực quan hóa chế độ xem camera hiện tại
và trạng thái PTAM
Các dịch vụ:
vslam/pointcloud: point cloud service to visualize 3D points in RViz
vslam/keyframes: keyframe service to visualize keyframes in RViz
Các tham số PTAM:
~Scale (double, default: 1.0): Scale Range: 0.01 đến 30.0
~MotionModelSource (str, default: CONSTANT): selects the source for the motion model Possible values are: MM_CONSTANT (CONSTANT): use constant motion model., MM_IMU (IMU): use imu orientation for the motion model., MM_FULL_POSE (FULL_POSE): use full pose estimated externally for motion model
~MaxPatchesPerFrame (double, default: 500.0): max features per frame Range: 10.0 to 1000.0
~MaxKFDistWiggleMult (double, default: 3.0): 'distance' after which a new
kf is requested Range: 0.1 to 10.0
~UseKFPixelDist (bool, default: False): use AutoInitPixel as new KF request criteria
Trang 28 ~NoLevelZeroMapPoints (bool, default: False): do not add map points at level zero
~EpiDepthSearchMaxRange (double, default: 100.0) : depth variance to search for features Range: 1.0 to 100.0
~CoarseMin (double, default: 20.0): min number of features for coarse tracking Range: 1.0 to 100.0
~CoarseMax (double, default: 60.0): max number of features for coarse tracking Range: 1.0 to 100.0
~CoarseRange (double, default: 30.0): Pixel search radius for coarse features Range: 1.0 to 100.0
~CoarseSubPixIts (double, default: 8.0): coarse tracking sub-pixel iterations Range: 1.0 to 100.0
~DisableCoarse (bool, default: False): enable/disable coarse tracking
~CoarseMinVelocity (double, default: 0.006): speed above which coarse stage
~UpdateSquaredConvergenceLimit (double, default: 1e-06): limit for convergence in bundle adjustment Range: 0.0 to 1.0
~BundleDebugMessages (bool, default: False): print bundle debug messages
~FASTMethod (str, default: FAST9_nonmax): FAST corner method Possible values are: FAST9 (FAST9): FAST 9, FAST10 (FAST10): FAST 10, FAST9_nonmax (FAST9_nonmax): FAST 9 with nonmax suppression, AGAST12d (AGAST12d): AGAST 12 pixel diamond, OAST16 (OAST16): AGAST 16 pixel circular
~Thres_lvl0 (int, default: 10): threshold for FAST features on level 0 Range: 0
to 255