Đồ án: Xây dựng bản đồ 3D trong không gian chưa xác định sử dụng camera Kinect

Đồ án tốt nghiệp hướng dẫn chi tiết quy trình xây dựng bản đồ 3D bằng camera Kinect, ứng dụng các thuật toán xử lý ảnh ROS, OpenCV và SIFT.

Người đăng

Ẩn danh

Thể loại

Đồ Án Tốt Nghiệp

2016

82
1
0

Phí lưu trữ

30 Point

Tóm tắt

I. Giới thiệu về Camera Kinect và ứng dụng xây dựng bản đồ 3D

Camera Kinect là một thiết bị cảm biến tiên tiến được phát triển bởi Microsoft, cho phép chụp ảnh sâu và tạo dữ liệu 3D trong thời gian thực. Công nghệ này sử dụng tia hồng ngoại để đo khoảng cách và độ sâu của các vật thể trong không gian. Xây dựng bản đồ 3D bằng camera Kinect đã trở thành một giải pháp phổ biến trong các ứng dụng robot, quét không gian và thực tế ảo. Khi kết hợp với các thuật toán xử lý ảnh hiện đại như OpenCV và PCL, Kinect có khả năng chuyển đổi dữ liệu 2D thành mô hình 3D chính xác cao. Quá trình này không chỉ giúp tái tạo hình dạng không gian mà còn cung cấp thông tin về màu sắc, texture và các đặc trưng hình học của môi trường. Ứng dụng của bản đồ 3D từ Kinect bao gồm lập bản đồ robot, quét tòa nhà, và các dự án thực tế ảo immersive.

1.1. Nguyên tắc hoạt động của Camera Kinect

Camera Kinect hoạt động dựa trên nguyên tắc Time-of-Flight hoặc cấu trúc ánh sáng. Thiết bị phát ra các tia hồng ngoại và đo thời gian phản xạ để tính toán khoảng cách. Cảm biến RGB trong Kinect cung cấp thông tin màu sắc, trong khi cảm biến độ sâu tạo ra đám mây điểm 3D. Kết hợp hai loại dữ liệu này, Kinect tạo ra một đại diện toàn diện về không gian xung quanh.

1.2. Lợi ích và ứng dụng thực tiễn

Xây dựng bản đồ 3D với Kinect mang lại nhiều lợi ích: chi phí thấp, dễ lắp ráp, và độ chính xác cao. Ứng dụng bao gồm robot SLAM (Simultaneous Localization and Mapping), quét không gian nội thất, và tạo mô hình 3D cho các dự án kiến trúc. Khả năng hoạt động trong không gian chưa xác định làm cho Kinect trở thành lựa chọn lý tưởng cho các nhiệm vụ khám phá và lập bản đồ tự động.

II. Chuẩn bị và cài đặt hệ thống

Trước khi bắt đầu xây dựng bản đồ 3D, cần chuẩn bị một hệ thống phần mềm và phần cứng phù hợp. Hệ điều hành Ubuntu 14.04 được khuyến nghị vì tương thích tốt với ROS (Robot Operating System), một nền tảng mã nguồn mở giúp quản lý các thành phần robot. ROS cung cấp các công cụ, thư viện và quy ước để xây dựng các ứng dụng robot phức tạp. Cài đặt ROS Indigo cho phép truy cập các gói hỗ trợ Kinect, bao gồm driver OpenNI. Ngoài ra, cần cài đặt OpenCV để xử lý ảnh 2D và PCL (Point Cloud Library) để làm việc với đám mây điểm 3D. Các công cụ này tạo thành nền tảng mạnh mẽ cho toàn bộ quy trình xây dựng bản đồ 3D.

2.1. Cài đặt Ubuntu ROS và các driver Kinect

Cài đặt Ubuntu 14.04 là bước đầu tiên, theo sau đó là ROS Indigo. Sử dụng lệnh quản lý gói để cài đặt OpenNI driver hỗ trợ Kinect. Điều này cho phép hệ thống nhận diện và giao tiếp với thiết bị. Cấu hình các biến môi trường ROS để đảm bảo ROS có thể tìm thấy tất cả các gói và thư viện cần thiết cho xử lý 3D.

2.2. Cài đặt OpenCV và PCL

OpenCV cung cấp các hàm xử lý ảnh essentials, bao gồm nhận diện điểm đặc trưngmatching. PCL là thư viện chuyên biệt cho đám mây điểm 3D, cung cấp các bộ lọc như Passthrough, VoxelGrid, và Remove Outlier. Cài đặt từ source code hoặc các gói được biên dịch sẵn để đảm bảo tương thích với ROS.

III. Quy trình xử lý ảnh và tạo bản đồ 3D

Quy trình xây dựng bản đồ 3D từ Kinect gồm nhiều bước xử lý tuần tự. Đầu tiên, dữ liệu từ cảm biến Kinect được chuyển đổi từ định dạng 2D sang đám mây điểm 3D bằng cách sử dụng thông tin độ sâu. Tiếp theo, các bộ lọc PCL được áp dụng để loại bỏ nhiễu và dữ liệu không cần thiết. Passthrough filter loại bỏ các điểm nằm ngoài phạm vi quan tâm, VoxelGrid giảm kích thước đám mây bằng cách nhóm các điểm lân cận, và Remove Outlier loại bỏ các điểm bất thường. Sau đó, sử dụng thuật toán SIFT (Scale-Invariant Feature Transform) để tìm và mô tả các điểm đặc trưng từ ảnh RGB. Feature matching giúp xác định sự tương ứng giữa các khung hình liên tiếp, cho phép tính toán ma trận dịch chuyển giữa các vị trí camera khác nhau. Cuối cùng, các đám mây điểm được ghép lại để tạo ra mô hình bản đồ 3D hoàn chỉnh.

3.1. Chuyển đổi dữ liệu 2D sang 3D và lọc đám mây điểm

Dữ liệu Kinect bao gồm ảnh RGB 2D và bản đồ độ sâu. Chuyển đổi ảnh 2D sang đám mây điểm 3D sử dụng ma trận camera intrinsic. Bộ lọc Passthrough giữ lại các điểm trong khoảng độ sâu xác định. VoxelGrid downsampling giảm số lượng điểm từ hàng triệu xuống hàng trăm nghìn, tăng tốc độ xử lý. Remove Outlier filter loại bỏ các điểm cô lập sử dụng statistical analysis.

3.2. Nhận diện điểm đặc trưng và ghép bản đồ

Thuật toán SIFT phát hiện điểm đặc trưng bất biến với phóng to và quay. Mỗi keypoint được gán một vector mô tả 128 chiều. Feature matching sử dụng khoảng cách Euclidean để tìm điểm tương ứng. Ma trận dịch chuyển được tính từ các cặp điểm khớp, cho phép ghép các đám mây điểm thành một mô hình 3D thống nhất.

IV. Tối ưu hóa và kiểm chứng kết quả bản đồ 3D

Sau khi tạo bản đồ 3D, cần thực hiện các bước tối ưu hóa để đảm bảo chất lượng cao. Kiểm chứng độ chính xác bao gồm so sánh bản đồ 3D với các phép đo thực tế hoặc các mô hình tham chiếu. Cloud viewer trong PCL cho phép trực quan hóa đám mây điểm trong không gian 3D, giúp phát hiện các vùng lỗi hoặc bị ghép không chính xác. Điều chỉnh các tham số bộ lọc như kích thước voxel, ngưỡng lọc outlier có thể cải thiện kết quả. ICP (Iterative Closest Point) là thuật toán nâng cao có thể tinh chỉnh căn chỉnh giữa các đám mây điểm. Lưu trữ bản đồ 3D dưới các định dạng chuẩn như PCD, PLY hoặc OBJ cho phép sử dụng trong các ứng dụng khác. Quá trình này đảm bảo rằng bản đồ 3D không chỉ đầy đủ mà còn chính xác và có thể sử dụng cho các ứng dụng thực tiễn như robot SLAM hoặc lập bản đồ không gian.

4.1. Trực quan hóa và kiểm tra chất lượng bản đồ

Sử dụng pcl_viewer hoặc RViz để hiển thị bản đồ 3D từ nhiều góc độ. Kiểm tra xem các chi tiết có được tái tạo chính xác và liệu có lỗi ghép rõ ràng không. Histogram độ sâu giúp xác định phân bố dữ liệu và phát hiện các vùng thiếu thông tin. So sánh kích thước, hình dạng của bản đồ 3D với môi trường thực để đánh giá độ chính xác tổng thể.

4.2. Lưu trữ và ứng dụng bản đồ 3D

Bản đồ 3D được lưu dưới định dạng PCD (Point Cloud Data) hoặc PLY để tương thích với nhiều công cụ. Các bản đồ 3D này có thể được sử dụng trong robot SLAM cho định vị tự động, quét kiến trúc để tạo mô hình tòa nhà, hoặc thực tế ảo để tạo môi trường tương tác. Lưu trữ dưới dạng định dạng tiêu chuẩn đảm bảo tính interoperability.

22/12/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1. TỔNG QUAN Chương 4: Thi công hệ thống. Đưa ra lưu đồ giải thuật chương trình, giải thích và kết quả từng phần thực hiện. Chương 5: Kết quả và đánh giá.

Đưa ra hình ảnh kết quả đã thực hiện được. Đánh giá ưu, nhược điểm của kết quả đạt được. Chương 6: Kết luận và hướng phát triển. Kết luận về đề tài và đưa ra hướng phát triển tiếp theo.

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 16 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Chương 2.1 HỆ ĐIỀU HÀNH ROS – ROBOT OPERATING SYSTEM 2.1 Giới thiệu tổng quan về ROS Robot là sự kết hợp từ các mô-đun nhỏ hơn tạo thành. Mỗi mô-đun thực hiện một nhiệm vụ khác nhau. Ví dụ robot dò line là kết hợp của bộ thu phát hồng ngoại, hai động cơ encoder, bộ xử lý trung tâm.

Còn đối với những robot lớn hơn yêu cầu càng nhiều mô đun sẽ gây khó khăn trong việc kiểm soát và giao tiếp giữa chúng. Để khắc phục nhược điểm này, năm 2007, ROS – Robot Operating System [5] đã được phát triển và đến tháng 2 năm 2013 chính thức trở thành hệ điều hành mã nguồn mở và ROS trở thành nền tảng cho lĩnh vực Robotic. Tất cả các phần mềm ROS được tổ chức dưới dạng các gói. Một gói của ROS là kết hợp của nhiều tập tin bao gổm cả tập tin thực thi và tập tin hỗ trợ.

ROS không chỉ cung cấp các gói có sẵn trong thư viện mà còn có cả một cộng đồng hỗ trợ từ nhiều nơi trên thế giới, điều này sẽ hỗ trợ rất tốt cho người nghiên cứu. ROS là một mã nguồn mở, là một siêu hệ điều hành dành cho lĩnh vực điều khiển robot. Nó cung cấp các tính năng cần thiết ở một hệ điều hành, như là khái niệm về phần cứng, điều khiển thiết bị cấp thấp, thực hiện các chức năng thông dụng như quản lý các quá trình, các gói. ROS cũng cung cấp các công cụ và thư viện cho việc thu thập, viết và chạy code thông qua nhiều máy tính.

Một hệ thống ROS bao gồm các node độc lập, khi chạy các node thì đồng thời các message của các node đã được gửi lên node master, các node sẽ giao tiếp với nhau thông qua các message bằng hình thức publish và subscribe. Ưu điểm của ROS: Đầu tiên, phải nói đến ưu điểm nổi bật là ROS giúp ta xây dựng ứng các dụng robotics trên nền ROS sẽ giảm đi một lượng đáng kể các công việc lập trình, thiết lập hệ thống bằng việc tận dụng nguồn tài nguyên mã nguồn mở vô cùng phong phú của cộng đồng ROS và các phần cứng đã được thiết kế sẵn để sử dụng trên ROS như là: Amigo, Quadrobot, Barret hand. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 17 CHƯƠNG 2.2 Trao đổi dữ liệu trong ROS ROS được tích hợp một vài chuẩn giao tiếp khác nhau bao gồm: giao tiếp đồng bộ theo chuẩn RPC qua các services, truyền dữ liệu bất đồng bộ qua topics và lưu trữ dữ liệu trên Parameter Server. ROS Master Messages Messages Messages Registration Registration ROS ROS ROS Node 1 Node 2 Node n Hình 2.

Cấu trúc trao đổi dữ liệu trong ROS Mục đích chính của ROS là để điều khiển phần cứng ở mức thấp, cung cấp các hàm phổ biến cho mỗi mô-đun và tạo sự kết nối giữa các mô-đun thông qua thông qua cổng TCP/IP. ROS tổ chức mô-đun bao gồm nhiều node độc lập và một node Master. Mỗi node thực hiện một chức năng cụ thế như là cảm biến nhiệt độ, độ ẩm, đọc dữ liệu encoder, điều khiển phần cứng và nhiều thứ khác. Vai trò của node Master không chỉ là quản lý các node mà còn tạo mối lien kết giữa chúng trong lớp ứng dụng để cho phép các node gửi và nhận dữ liệu với nhau hoặc là node Master sử dụng mô đun để nhắn tin giữa các Publisher và Subsciber.

Cấu trúc của ROS được mô tả như Hình 2.1 Master: Là trung tâm trao nhận dữ liệu. Nếu không có master các node không thể tìm thấy nhau để trao đổi các message(message là các tin nhắn với mục đích muốn lấy thông tin gì đó) hoặc yêu cầu dịch vụ. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 18 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Node: Là một quá trình thực hiện việc tính toán.

Một hệ thống Robot thường gồm nhiều node. Ví dụ trong robot tự hành: một node thực hiện điều khiển camera Kinect, một node điều khiển động cơ bánh xe, một node thực hiện định vị, một node định hướng di chuyển, một node vẽ lại không gian và còn nhiều nhiệm vụ khác nữa. Một node của ROS được viết dựa vào các thư viện mở như là roscpp hoặc rospy. Messages: Các node giao tiếp với nhau thông qua message.

Với các kiểu dữ liệu chuẩn được hỗ trợ như integer, floating point, Boolean. Message có thể bao gồm cấu trúc kí tự lồng và mảng. Topic: Tin nhắn được định tuyến thông qua một hệ thống vận chuyển là topic publish/ subscribe. Một node gửi một message bằng cách publish nó thông qua topic.

Topic là là tên được đặt để xác định nội dung của message. Nhiều node có thể publish và subscribe trên một topic và một node cũng có thể publish/subscribe trên nhiều topic. Chúng ta có thể xem topic như là một bus message. Mỗi bus có một có một tên và bất cứ node nào cũng có thể kết nối với bus để gửi và nhận message miễn là có kiểu dữ liệu đúng.

Services: Mô-đun publish/subscribe giao tiếp rất linh hoạt. Nhưng nó bao gồm nhiều dữ liệu trong lúc truyền nhận và điều đó có thể gây nên rôi loạn hệ thống. Vì thế kiểu Request/Reply đôi khi là phù hợp. Nó giao tiếp thông qua services.

Khi một node cung cấp đề nghị một service dươi một tên sau đó node khác sử dụng service này bằng cách gửi message yêu cầu và đợi được trả lời.2 THUẬT TOÁN SIFT – SCALE INVARIAN FEATURE TRANSFORM Năm 2004, David G. Lowe đã nghiên cứu thành công thuật toán nhận dạng SIFT [6]. Với thuật toán này mỗi ảnh được đại điện bằng tập hợp các điểm đặc trưng có đặc điểm nhận dạng không phụ thuộc vào độ phóng to thu nhỏ và chiều xuất hiện trên khung ảnh. Quá trình nhận dạng bao gồm các bước: xác định vị trí của các điểm đặc trưng trên ảnh của vật mẫu và mô tả đặc tính của điểm đặc trưng.1 Xác định điểm đặc trưng trong ảnh Điểm đặc trưng (Interest Point (Keypoint)) là vị trí (điểm ảnh) “đặc trưng” trên ảnh.

“Đặc trưng” ở đây có nghĩa là điểm đó có thể có các đặc trưng bất biến với việc quay ảnh, co giãn ảnh hay thay đổi cường độ chiếu sáng của ảnh. Phương pháp trích rút các đặc trưng bất biến bằng thuật toán SIFT được tiếp cận theo phương pháp thác lọc. Theo đó, việc xác BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 19 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT định các điểm đặc trưng trong một ảnh sẽ được thực hiện theo các lý thuyết toán học mà sẽ trình bày dưới đây.

Các điểm đặc trưng được xác định bởi SIFT sẽ tương thích với các cực trị địa phương của bộ lọc sai phân Gaussian ở các tỉ lệ khác nhau, định nghĩa không gian tỉ lệ của một hình ảnh là hàm 𝐺(𝑥, 𝑦, 𝑘𝜎). Gọi 𝐼(𝑥, 𝑦) là ma trận tập hợp các giá trị mức xám của ảnh vật mẫu cần phân tích, (𝑥, 𝑦) là toạ độ điểm ảnh. Hàm Gaussian có phương sai tăng dần được cho bởi công thức (2.1) 2𝜋𝑘 𝜎 Ảnh ngõ vào 𝐼(𝑥, 𝑦) được nhân chập với hàm 𝐺 (𝑥, 𝑦, 𝑘𝜎) để tạo ra các phiên bản 𝐿(𝑥, 𝑦, 𝑘𝜎) khác nhau tùy theo hệ số k = 1, 2, 3, 4, 5 được cho bởi công thức (2.2) Khi hệ số k tăng lên, phương sai của hảm 𝐺 (𝑥, 𝑦, 𝑘𝜎)cũng sẽ tăng, và ảnh ngõ ra 𝐿(𝑥, 𝑦, 𝑘𝜎) tại các vị trí tương ứng sẽ được sẵn sàng để giảm mẫu mà không bị thay đổi hình dạng của các chi tiết xuất hiện trên ảnh. Giá trị ban đầu của 𝜎 được chọn 𝜎 = √2 ≈ 1.6, sau đó hệ số k được tăng dần từ 1 đến 5 để tạo ra các phiên bản ảnh khác nhau với kích thước ban đầu.

Tiếp đến ảnh gốc sẽ được giảm mẫu 2 lần, quá trình cứ tiếp tục khi tăng hệ số k. Kết quả của quá trình này là một tập hợp các phiên bản ảnh khác nhau của vật mẫu như Hình 2. Theo lý thuyết vị trí của những điểm có giá trị cực đại hoặc cực tiểu của phép biến đổi bậc hai Laplace của hàm lọc Gaussian (𝜎 2 ∇2 𝐺) chính là những điểm ổn định theo độ phóng to thu nhỏ của ảnh vật mẫu. Giá trị (𝜎 2 ∇2 𝐺) được xấp xỉ bằng các công thức (2.5) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 20 CHƯƠNG 2.

CƠ SỞ LÝ THUYẾT Ảnh giảm mẫu lần thứ nhất Ảnh chưa giảm mẫu Ảnh sau khi nhân chập với hàm Gaussian Hình 2. Các phiên bản ảnh của vật mẫu tương ứng với các hệ số k và σ Như vậy, vị trí cực đại (hoặc cực tiểu) của hàm (𝜎 2 ∇2 𝐺) cũng là vị trí cực đại (hoặc cực tiểu) của hàm sai khác 𝐷 (𝑥, 𝑦, 𝑘𝜎). Như vậy, các phiên bản ảnh vật mẫu tương ứng với các hệ số 𝑘 liên tiếp nhau sẽ được tính sai phân để tìm ra được 𝐷 (𝑥, 𝑦, 𝑘𝜎), như công thức (2. Trên ảnh 𝐷 (𝑥, 𝑦, 𝑘𝜎), để tìm vị trí có giá trị cực đại hoặc cực tiểu, mỗi vị trí trên 𝐷 (𝑥, 𝑦, 𝑘𝜎) sẽ được so sánh với 26 vị trí lân cận tại cùng độ phóng to thu nhỏ và hai độ phóng to thu nhỏ liền kề như minh họa trong Hình 2.

Nếu vị trí này có giá trị lớn hơn hay nhỏ hơn giá trị của 26 vị trí này, thì vị trí được xem xét sẽ được chọn làm vị trí đặc trưng. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 21 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Ảnh giảm mẫu lần thứ nhất Ảnh chưa giảm mẫu Ảnh sai phân Gaussian Ảnh sau khi nhân chập với hàm Gaussian Hình 2. Các phiên bản ảnh sai khác 𝐷 (𝑥, 𝑦, 𝑘𝜎) tương ứng với các hệ số 𝑘 và σ Scale Hình 2.

Hai mươi sáu vị trí được so sánh với vị trí X để tìm giá trị cực đại và cực tiểu BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 22 CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Những vị trí được chọn sẽ được lọc lại sao cho tránh nằm trên các đường biên của khung ảnh và nằm tại vị trí có độ tương phản phù hợp. Bước này giúp loại bỏ những điểm không cần thiết cho quá trình nhận dạng và giúp tiết kiệm thời gian cho những bước xử lí tiếp theo.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ