Thuật toán mê cung nhanh nhất cho robot


7

Tôi đang lên kế hoạch lập trình một robot dựng sẵn để giải quyết một mê cung nhanh nhất có thể. Robot có cảm biến chướng ngại vật phía trước (không có cảm biến bên) và gia tốc kế 3 trục. Tôi đang lên kế hoạch sử dụng thuật toán theo tường. Đây có phải là thuật toán nhanh nhất có thể? Ngoài ra, vì không có cảm biến bên, robot cần liên tục quay đầu để kiểm tra xem có tường nào ở bên cạnh không, vậy có cách nào thông minh để sử dụng gia tốc kế và cảm biến không?


Giải quyết mê cung là một chủ đề phức tạp, và một số cách tiếp cận phụ thuộc vào bản chất của mê cung. Có bất kỳ kiến ​​thức trước về mê cung? Được biết là có thể giải được với tường sau?
apnorton

Tôi không biết trước mê cung này và nó có thể được giải quyết bằng bức tường sau. Mê cung nên đơn giản.
dùng1159

Các quy tắc là gì? Bạn có được phép bao gồm một quả bóng buộc bằng một máy ảnh gắn liền với robot của bạn không? * 8 ')
Gian hàng Mark

Là vị trí ban đầu và vị trí mục tiêu luôn ở hai bên của mê cung? Hay họ có thể ở đâu đó ở giữa nó?
Shahbaz

nếu mê cung là một cái cây (không có chu kỳ), thì tường theo sau có lẽ là phương pháp tốt nhất và đơn giản nhất
ronalchn

Câu trả lời:


2

Bạn không thể nói nhiều về việc giải quyết một mê cung trừ khi bạn được phép khám phá trước, hoặc biết trước mê cung. Mặt khác, thật dễ dàng để xây dựng một mê cung sẽ mất nhiều thời gian để giải quyết bằng cách sử dụng tường, nhưng có một giải pháp đơn giản. Xem ví dụ sau.

Giáo sư!  Chúng tôi theo sai tường

Trong trường hợp này, trung bình sẽ nhanh hơn khi chỉ chọn lượt ngẫu nhiên. Vì vậy, có lẽ đây là một vấn đề khó khăn đòi hỏi một chút suy nghĩ. Trong một số bối cảnh, một cách tiếp cận sâu sắc lặp đi lặp lại không phải là xấu. Bắt đầu nghiên cứu của bạn ở đó, và trở lại khi bạn có câu hỏi cụ thể.


Trong trường hợp này, tôi sẽ quay lại thuật toán 'luôn rẽ trái';)
profMamba

Vâng, bởi vì bạn "biết trước mê cung"
Josh Vander Hook

2

Thuật toán theo tường sẽ được hưởng lợi nhiều hơn từ các cảm biến ở một bên. Vì bạn đi theo phía cho đến khi bạn tìm thấy một khoảng trống, sau đó bạn biến thành khoảng trống đó. Sau đó, bạn có thể sử dụng gia tốc kế để cảm nhận một vết sưng khi bạn va vào tường phía trước. Tuy nhiên không chắc chắn làm thế nào bạn có thể xác định rằng bạn đã ra khỏi mê cung (trong trường hợp bạn cần phải làm điều đó). Chỉ là một ý tưởng ...


0

Đối với bất kỳ algoritm nào (không biết trước mê cung), có một mê cung cụ thể, trong đó thuật toán không chọn cách nhanh nhất trong lần thử đầu tiên.

Nhiều thuật toán thực hiện mánh khóe, rằng chúng di chuyển mọi cách trong mê cung trước, ghi lại đường đi, hơn là chúng tìm ra cách tối ưu và lần thứ hai, chúng chỉ lái xe tới mục tiêu bằng cách nhanh nhất.

Nếu mê cung của bạn được biết đến là một cái cây (không có vòng lặp), với những cách chỉ rộng để robot di chuyển, nhưng không quá rộng và nếu nó chỉ đúng góc (mà nhiều mê cung đơn giản), thì bạn có thể sử dụng một số thủ thuật để giải quyết nó nhanh hơn lần thứ hai:

  • cảm biến bên sẽ giúp ích rất nhiều, vì vậy bạn sẽ không bị buộc phải liên tục quay đầu lại

  • nếu điều đó là không thể và bạn có cảm biến phạm vi (thường là siêu âm) thay vì chỉ là cảm biến chướng ngại vật (có thể là cản trước đơn giản), bạn có thể hạn chế nó để thu hẹp chùm tia và chọn chỉ vẫy một chút và xem, nếu khoảng cách thay đổi liên tục, hoặc nếu có một lỗ (có nghĩa là đường bên) và lỗ đó là bao xa. Sau đó, bạn có thể chạy nhanh đến gần ngã tư và sau đó chỉ chạy chậm và quay toàn bộ phạm vi để chính xác tìm đường bên.

  • cũng có cảm biến trên đế xoay "giống như xe tăng" sẽ cho phép bạn lái xe quan sát và xoay chỉ cảm biến, nhanh hơn so với xoay toàn bộ robot

  • nếu các lối đi hẹp, bạn có thể xem xét để thêm cản vào hai bên và chỉ va vào hai bên để cảm nhận chúng thay vì xoay tại chỗ để cảm nhận chúng đúng cách. Phần thưởng nếu bạn có thể có ăng-ten giống như lỗi để cảm nhận cả hai mặt cùng một lúc (nhưng chúng cần phải linh hoạt để không bị vỡ và bạn cần ít nhất 3 cảm biến trạng thái cho chúng (2 bit) - không chạm - chạm nhẹ - chạm nhẹ : không có nghĩa là chạm bên, chạm nhẹ có nghĩa là bạn chỉ ở trên hàng thẳng ở giữa, chạm cứng có nghĩa là chướng ngại vật hoặc quay đầu quá nhiều về phía bên)

Dù sao:

  • bạn đi theo cách "tay phải trên tường" thông thường của bạn, cho đến khi bạn tìm thấy mục tiêu, sau đó tiếp tục bắt đầu cùng một phong cách, vì vậy bạn đi du lịch tất cả mê cung lần đầu tiên.

  • bạn đánh dấu bất kỳ điểm giao cắt nào trên đường và đếm chúng tạo ra loại bản đồ (phần thưởng nếu bạn đo khoảng cách), sau đó, khi bắt đầu quay lại, bạn đi du lịch bản đồ trong bộ nhớ và khi bạn quay lại giao lộ, bạn biết rằng bạn có thể bỏ qua cách đầu tiên mà bạn đã chọn ở đó vì nó không đạt được mục tiêu và nó quay trở lại. Tiếp tục, cho đến khi bạn tìm thấy mục tiêu và bạn đã giải quyết được một nửa bản đồ. Sau đó làm theo cách ngược lại từ cuối và giải quyết nửa kia của bản đồ. Bạn sẽ nhận được kết quả tương tự - nếu không, bạn đã phạm sai lầm hoặc mê cung không phải là một cái cây.

  • trong lần thử thứ hai, bạn biết, bạn có thể bỏ qua cách bên nào và cách nào bạn phải chọn trên đường giao nhau, để bạn đi theo con đường ngắn hơn để nhắm mục tiêu.

  • Nếu bạn cũng đã đánh dấu khoảng cách, bạn sẽ biết, lần rẽ tiếp theo sẽ là bao xa và bạn có thể lái xe rất nhanh trong gần hết quãng đường, trước khi bạn cần quét chính xác (và có thể chậm hơn)

  • nếu việc chế tạo robot của bạn cho phép, bạn thậm chí có thể bỏ qua các bức tường và để chúng nhẹ nhàng đưa bạn trở lại trung tâm theo cách đó, vì vậy bạn cần điều hướng kém tinh tế hơn rất nhiều, để bạn có thể chạy nhanh hơn.

  • Điều tương tự cũng xảy ra với các ngã rẽ, nơi bạn có thể bám vào tường và đẩy một chút trong suốt thời gian bạn nghĩ rằng bạn đang đến gần ngã rẽ, cho đến khi nó cho phép bạn đi vào, vì vậy bạn biết rằng đến lượt mình. Một lần nữa điều hướng đơn giản hơn nhiều, dữ liệu ít hơn để đánh giá, tốc độ nhanh hơn nhiều có thể.

  • Nếu bạn muốn cực kỳ nhanh, bạn cũng ghi lại lần chạy này và sử dụng lần chạy thứ ba, nơi bạn biết, bạn phải chạy bao lâu trước khi rẽ, với tất cả sự tăng tốc và bất thường của việc chạy nhanh so với việc chạy nhanh và khám phá chậm đã chiếm.

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.