Logic gì để thực hiện bộ lọc hạt cho robot có cảm biến phạm vi?


7

Tôi đang cố gắng thực hiện bộ lọc hạt cho robot trong Java. Robot này đang có một cảm biến phạm vi. Thế giới có 6 chướng ngại vật - 3 ở trên và 3 ở dưới. Tôi đang tính toán khoảng cách của robot từ trung tâm của mỗi chướng ngại vật và sau đó thực hiện cùng một hoạt động cho từng hạt. Sau đó, tôi tính toán sự khác biệt giữa robot và các hạt. Các hạt mà sự khác biệt với khoảng cách đo được của robot là nhỏ, tôi cho chúng xác suất cao hơn trong việc lấy mẫu lại.

Nhưng, vấn đề với cách tiếp cận này như được bạn tôi nói là tôi cho rằng tôi đã biết vị trí của các chướng ngại vật, khiến cho tất cả quá trình này trở nên vô dụng. Làm thế nào tôi nên tiếp cận nó theo nghĩa là tôi không biết những trở ngại. Làm thế nào bộ lọc hạt có thể được thực hiện sau đó? Bộ lọc hạt sẽ hoạt động như thế nào trong trường hợp tôi không biết vị trí chướng ngại vật? Một ví dụ về quá trình sẽ giúp ích rất nhiều. Cảm ơn

Ảnh chụp màn hình ứng dụng của tôi

Câu trả lời:


6

Câu hỏi của bạn giải quyết ba vấn đề rất khác nhau, tất cả đều khó với các thuật toán loại nghiên cứu phức tạp.

  1. Bản địa hóa: Khi bạn có một bản đồ môi trường đã biết và một vị trí robot không xác định. Thuật toán phổ biến nhất cho điều này là Monte Carlo Localizataion . Đây là một bộ lọc hạt giống hệt như những gì bạn mô tả.
  2. Lập bản đồ: Khi robot thức dậy trong một môi trường không xác định và phải xây dựng bản đồ. Thông thường các thuật toán ánh xạ cho rằng bạn biết vị trí của robot, tức là từ GPS hoặc tương tự. Tôi chưa bao giờ thực hiện ánh xạ thuần túy vì vậy tôi không biết bất kỳ thuật toán nào, nhưng google nhanh chóng sẽ tìm thấy chúng.
  3. SLAM: Khi bạn kết hợp hai vấn đề, một môi trường không xác định và một vị trí không xác định, vấn đề được gọi là bản địa hóa và ánh xạ đồng thời (SLAM) . Điều này rất khó. Có các thuật toán tốt và các gói phần mềm tốt để làm điều đó, nhưng tất cả chúng vẫn còn thử nghiệm và chỉ hoạt động đối với một số loại môi trường / cảm biến nhất định. Tôi đặc biệt khuyên bạn nên sử dụng gói hiện có thay vì tự thực hiện SLAM vì có thể mất nhiều tháng nghiên cứu để điều chỉnh tất cả các tham số. Tôi không biết có các gói SLAM cho Java hay không, nhưng openslam.org có một danh sách tuyệt vời các thuật toán SLAM hiện đại. Cá nhân tôi đã sử dụng GMaps khá nhiều và tôi tin rằng nó sẽ không làm hỏng con robot trị giá 25 nghìn đô la của tôi. Hãy nhận biết rằng bạn đang bước đi trong vùng nước nghiên cứu.

Xin lỗi vì đã cho bạn một câu trả lời dài như vậy cho một câu hỏi ngắn. Đề nghị của tôi sẽ là giả định rằng bạn biết vị trí của các chướng ngại vật và thực hiện Bộ lọc hạt Monte Carlo đơn giản .


Bạn có cần biết bản đồ môi trường cho các bộ lọc hạt không? Vì vậy, sử dụng bộ lọc hạt trên các bản đồ không xác định sẽ không hoạt động ..
MoneyBall

3

Nếu bạn không biết vị trí của các chướng ngại vật và muốn áp dụng bộ lọc của mình, tôi thấy hai giải pháp:

    • Thực hiện ánh xạ nhanh bằng thuật toán đơn giản dễ thực hiện như Thuật toán lưới chiếm dụng (với điều này bạn bản địa hóa các chướng ngại vật tương đối với robot của bạn)
    • Áp dụng bộ lọc hạt của bạn
    • Di chuyển robot
    • Định vị lại robot của bạn bằng cách sử dụng đo hình
    • Sửa lỗi đo hình bằng cách sử dụng các phép đo cảm biến khác nếu có thể
  1. Sử dụng thuật toán SLAM để đồng thời Bản địa hóa và chướng ngại vật. Các thuật toán SLAM mạnh hơn đối với các cảm biến và lỗi hình học so với Thuật toán lưới chiếm dụng nhưng khó thực hiện hơn và thường cần nhiều CPU hơn.

Lưu ý: bạn phải hiểu rằng không có giải pháp "tối ưu" vì vấn đề này vẫn là một lĩnh vực nghiên cứu rất tích cực về robot, hai giải pháp này có những ưu điểm và nhược điểm. Cũng xem xét tốc độ của bộ xử lý hoặc vi điều khiển của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.