Sự phân hủy tế bào Boustrophedon chỉ đơn giản là phân chia một môi trường thành các khu vực có thể được bao phủ một cách hiệu quả bằng con đường boustrophedon. Một phép phân tách hình thang sẽ thực hiện và có thể được thực hiện bằng thuật toán quét dòng. Xem [Choset 2000], trang web này
, hoặc (tôi khuyên bạn nên!) Cuốn sách tuyệt vời "Hình học tính toán" của Mark de Berg, et. al, cho một mô tả đầy đủ về các cấu trúc dữ liệu và thuật toán cần thiết.
Lựa chọn, Howie. "Phạm vi của các không gian đã biết: Sự phân hủy tế bào Boustrophedon" Robot tự trị , 2000.
Ví dụ, coi tập hợp các chướng ngại vật là các cạnh và đỉnh. Giả sử môi trường cũng bị giới hạn bởi một đa giác đặc biệt. Chúng tôi có một cái gì đó như sau. Để phân tách không gian này, chúng ta chỉ cần thêm các cạnh dọc giữa mỗi đỉnh và đường hoặc đỉnh gần nhất.
Để thực hiện điều này trong mã, bạn chỉ cần kiểm tra giao cắt phân đoạn dòng, danh sách các cạnh được sắp xếp và danh sách các đỉnh được sắp xếp.
- vTôi
- tôiTôivTôi
- Tại mỗi ngã tư, tạo một đỉnh mới.
Khi điều này được thực hiện, tập hợp các cạnh và đỉnh mới chỉ bao gồm các hình thang. Nhưng tôi nhấn mạnh, bạn không thể làm điều này trực tuyến (không có kiến thức trước về những trở ngại). Nếu bạn muốn thực hiện bảo hiểm mạnh mẽ mà không có kiến thức trước, bạn có thể xem xét "thuật toán lỗi". Cụ thể, đây là một thuật toán đơn giản, giả sử môi trường bị giới hạn.
Từ vị trí bắt đầu, di chuyển lên và sang trái cho đến khi bạn đến góc trên bên trái của môi trường. Nếu bạn gặp một chướng ngại vật đầu tiên, bạn phải đi du lịch xung quanh nó. Bạn biết một cái gì đó là một trở ngại nếu nó có thể được tuần hoàn (va đập và di chuyển).
Từ phía trên bên trái, di chuyển sang phải cho đến khi bạn gặp phải ranh giới. Sau đó di chuyển xuống và rời khỏi (Chúng tôi đang thực hiện một âm thanh của toàn bộ không gian).
Khi bạn ở trên đường bên trái và gặp chướng ngại vật, bạn có hai lựa chọn. (i) Chúng tôi có thể đi vòng quanh cho đến khi chúng tôi đến được đường bên trái mà chúng tôi đang cố gắng thực hiện, sau đó tiếp tục. (ii), Chúng tôi có thể quay lại và che một đường bên trái mới cho đến khi chúng tôi tìm thấy cách vượt qua chướng ngại vật hoặc kết thúc trong tình huống này một lần nữa. Tôi sẽ minh họa.
Ở bên trái, chúng tôi di chuyển xung quanh chướng ngại vật cho đến khi chúng tôi có thể quay lại "lằn ranh" mà chúng tôi đang cố gắng đi theo. Ở bên phải, chúng tôi tiếp tục bao phủ khu vực (nhỏ hơn) ở một bên của chướng ngại vật.
Ưu điểm của phương pháp đầu tiên là bạn luôn vạch ra hoàn toàn chướng ngại vật trước khi đưa ra quyết định về cách khắc phục nó, do đó bạn có thể đi theo con đường ngắn hơn. Ưu điểm của phương pháp thứ hai là bạn không cần phải vượt qua chướng ngại vật, bạn chỉ có thể tiến hành bao phủ khu vực bạn đang ở.
Lưu ý rằng điều này xác định phân tách boustrophedon của bạn theo cách trực tuyến : Bạn bao phủ khu vực giữa các chướng ngại vật hoặc giữa các chướng ngại vật và ranh giới.
Tuy nhiên, theo tôi biết, phương pháp đầu tiên dễ phân tích hơn. Các thuật toán phức tạp hơn (như BFS, v.v.), được chọn vì môi trường không bị ràng buộc (bạn không muốn mất mãi mãi để tìm ranh giới) hoặc có một trở ngại thực sự khó chịu trong cách phân vùng môi trường. Tại sao điều này là xấu? nhìn vào ví dụ này:
Di chuyển trái phải, sau đó khoanh tròn mỗi trở ngại sản xuất cách quá nhiều trang bìa của các phần nhỏ giữa mỗi trở ngại. Trên thực tế, không có quy hoạch đường dẫn toàn cầu, bạn có thể làm điều này tệ như độ phân giải của lưới bằng cách đặt các cột này rộng 1 px, cao bằng toàn bộ môi trường và cách nhau 1 px. Sau đó, bạn sẽ phải di chuyển xung quanh chướng ngại vật mỗi khi bạn chạm vào nó.
Đây là lý do tại sao tôi hỏi nếu bạn có một số ý tưởng về nơi bạn ở trong môi trường hoặc có thể lập kế hoạch đường dẫn toàn cầu. Nhưng cuộc thảo luận trực tuyến và ngoại tuyến và các thuật toán tối ưu cho điều này không phải là điều bạn thực sự muốn.
Cập nhật: Tôi đã phải xóa các hình ảnh (không phải https) và sẽ đăng cái này thường được sử dụng trong các ứng dụng thực tế trong thực tế. http://www.cs.cmu.edu/~motionplanning/ con / sbp_ con / integrated1 / yamauchi_frontiers.pdf