Một chút nền tảng của mục tiêu của tôi
Tôi đang trong quá trình xây dựng một robot tự động di động phải điều hướng xung quanh một khu vực không xác định, phải tránh chướng ngại vật và nhận đầu vào bằng giọng nói để thực hiện các nhiệm vụ khác nhau. Nó cũng phải nhận dạng khuôn mặt, vật thể, v.v. Tôi đang sử dụng cảm biến Kinect và dữ liệu đo hình bánh xe làm cảm biến. Tôi đã chọn C # làm ngôn ngữ chính của mình làm trình điều khiển chính thức và sdk có sẵn. Tôi đã hoàn thành mô-đun Vision và NLP và đang làm việc với phần Điều hướng.
Robot của tôi hiện đang sử dụng Arduino làm mô-đun để liên lạc và bộ xử lý Intel i7 x64 bit trên máy tính xách tay làm CPU.
Đây là tổng quan về robot và thiết bị điện tử của nó:
Vấn đề
Tôi đã triển khai một thuật toán SLAM đơn giản để có được vị trí robot từ các bộ mã hóa và thêm bất cứ thứ gì nó nhìn thấy bằng cách sử dụng động vật (như một lát 2D của đám mây điểm 3D) vào bản đồ.
Đây là bản đồ của phòng tôi hiện tại trông như sau:
Đây là một đại diện thô của phòng thực tế của tôi:
Như bạn có thể thấy, chúng rất khác nhau và bản đồ rất xấu.
- Đây có phải là dự kiến từ việc sử dụng chỉ tính toán chết?
- Tôi biết các bộ lọc hạt tinh chỉnh nó và sẵn sàng thực hiện, nhưng những cách tôi có thể cải thiện kết quả này là gì?
Cập nhật
Tôi quên đề cập đến cách tiếp cận hiện tại của tôi (mà trước đó tôi đã phải quên). Chương trình của tôi đại khái thực hiện điều này: (Tôi đang sử dụng hashtable để lưu trữ bản đồ động)
- Lấy điểm đám mây từ Kinect
- Đợi dữ liệu đo hình học nối tiếp đến
- Đồng bộ hóa bằng phương pháp dựa trên dấu thời gian
- Ước tính tư thế robot (x, y, theta) bằng các phương trình tại Wikipedia và dữ liệu mã hóa
- Có được một "lát" của đám mây điểm
- Lát của tôi về cơ bản là một mảng các tham số X và Z
- Sau đó, vẽ các điểm này dựa trên tư thế robot và các thông số X và Z
- Nói lại