1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xác định vị trí cho robot trong nhà sử dụng một camera

56 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 56
Dung lượng 1,44 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

TRƯỜ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 2

CỘ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 4

LỜ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 5

TÓ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 7

MỤ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 8

DANH 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 9

DANH 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 11

1.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 12

CHƯƠ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 13

chuyể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 14

6 Ướ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 17

dù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 18

bả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 19

Tậ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 20

ROS 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 21

Hì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 22

mì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 24

thể 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 25

Ngoà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

Ngày đăng: 27/04/2021, 11:26

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] B. Williams, G. Klein, and I. Reid. Real-time SLAM relocalisa- tion. In Proc. 11th IEEE International Conference on Computer Vision (ICCV’ 07), Rio de Janeiro, October 2007 Khác
[2] Stephan Weiss. Vision Based Navigation for Micro Helicopters PhD Thesis, 2012 [3] Stephan Weiss, Markus W. Achtelik, Simon Lynen, Margarita Chli and Roland Siegwart. Real-time Onboard Visual-Inertial State Estimation and Self-Calibration of MAVs in Unknown Environments. in IEEE International Conference on Robotics and Automation (ICRA), 2012 Khác
[4] Stephan Weiss, Davide Scaramuzza and Roland Siegwart, Monocular-SLAM–based navigation for autonomous micro helicopters in GPS-denied environments, Journal of Field Robotics (JFR), Vol. 28, No. 6, 2011, 854-874 Khác
[5] Markus W. Achtelik, Michael Achtelik, Stephan Weiss, and Roland Siegwart. Onboard IMU and Monocular Vision Based Control for MAVs in Unknown In- and Outdoor Environments. in IEEE International Conference on Robotics and Automation (ICRA), 2011 Khác
[6] C. Engels, H. Stewe nius, and D. Niste r. Bundle adjustment rules. In Photogrammetric Computer Vision (PCV’ 06), 2006 Khác
[7] M. Fischler and R. Bolles. Random sample consensus: A paradigm for model fitting with applications to image analysis and automated cartography. Communcations of the ACM, 24(6):381–395, June 1981 Khác
[8] Y. Genc, S. Riedel, F. Souvannavong, C. Akinlar, and N. Navab. Marker-less tracking for AR: A learning-based approach. In Proc. IEEE and ACM International Symposium on Mixed and Augmented Reality (ISMAR’ 02), Darmstadt, Germany, September 2002 Khác
[9] R. I. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge University Press, second edition, 2004 Khác
[11] B. Jiang and U. Neumann. Extendible tracking by line auto- calibration. In Proc. IEEE and ACM International Symposium on Aug- mented Reality (ISAR’01), pages 97–103, New York, October 2001 Khác
[12] R. Koch, K. Koeser, B. Streckel, and J.-F. Evers-Senne. Markerless image-based 3d tracking for real-time augmented reality applications. In WIAMIS, Montreux, 2005 Khác
[13] T. Kurata, N. Sakata, M. Kourogi, H. Kuzuoka, and M. Billinghurst. Remote collaboration using a shoulder-worn active camera/laser. In 8th International Symposium on Wearable Computers (ISWC’04), pages 62–69, Arlington, VA, USA, 2004 Khác
[14] M. Montemerlo, S. Thrun, D. Koller, and B. Wegbreit. FastSLAM 2.0: An improved particle filtering algorithm for simultaneous localization and mapping that Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w