โครงสร้างข้อมูลเพื่อนบ้านที่ใกล้ที่สุดสำหรับพื้นที่การกำหนดค่าที่ไม่ใช่แบบยูคลิด


15

ฉันกำลังพยายามใช้โครงสร้างเพื่อนบ้านที่ใกล้ที่สุดเพื่อใช้ในการวางแผนการเคลื่อนไหว RRT เพื่อที่จะทำได้ดีกว่าการค้นหาแบบใกล้เคียงกับสัตว์เดรัจฉานเชิงเส้นฉันต้องการใช้สิ่งที่คล้ายกับ kd-tree อย่างไรก็ตามดูเหมือนว่าการใช้งานแบบคลาสสิกของ kd-tree ถือว่าแต่ละมิติของพื้นที่สามารถแบ่งออกเป็น "ซ้าย" และ "ขวา" ความคิดนี้ไม่ได้นำไปใช้กับช่องว่างที่ไม่ใช่ยูคลิดเช่น SO (2)

ฉันกำลังทำงานกับแขนกลเรียงต่อเนื่องที่มีการเชื่อมโยงการหมุนอย่างสมบูรณ์ซึ่งหมายความว่าแต่ละมิติของพื้นที่การกำหนดค่าของหุ่นยนต์คือ SO (2) และไม่ใช่ยูคลิด อัลกอริทึม kd-tree สามารถปรับเปลี่ยนเพื่อรองรับ subspaces ประเภทนี้ได้หรือไม่ ถ้าไม่มีโครงสร้างเพื่อนบ้านที่ใกล้เคียงที่สุดที่สามารถจัดการ subspaces ที่ไม่ใช่ Euclidean เหล่านี้ได้ในขณะที่ยังง่ายต่อการอัพเดทและสืบค้น? ฉันดูที่FLANNด้วย แต่มันก็ไม่ชัดเจนสำหรับฉันจากเอกสารของพวกเขาว่าพวกเขาสามารถจัดการพื้นที่ย่อยที่ไม่ใช่แบบยุคลิดได้หรือไม่


โดยวิธีการที่เพื่อนบ้านที่ใกล้ที่สุดโดยประมาณก็ใช้ได้เช่นกัน (เป็นที่ต้องการยิ่งถ้าความเร็วเพิ่มขึ้นมาก)
giogadi

1
ในขณะที่คุณยอมรับคำตอบที่ดีเยี่ยมโดยปกติแล้วคุณควรรอสักสองสามวันก่อนจะตอบรับคำตอบเพื่อที่คุณจะได้ไม่ตอบคำถามใด ๆ เพิ่มเติมซึ่งอาจมีตัวเลือกอื่น ๆ
Mark Booth

ขอบคุณมาร์คฉันจริง ๆ แล้วไม่แน่ใจเกี่ยวกับระยะเวลารอก่อนที่จะยอมรับคำตอบ
giogadi

คำตอบ:


6

คุณถูกต้องที่ kd-trees โดยปกติจะทำงานในช่องว่าง Euclidean metric ขนาดเล็กเท่านั้น แต่มีงานจำนวนมากสำหรับแอปพลิเคชันเพื่อนบ้านที่ใกล้ที่สุดโดยทั่วไปในช่องว่างเมตริก (ทุกที่ที่คุณสามารถกำหนดฟังก์ชันระยะทางได้)

งานคลาสสิคอยู่บนต้นไม้บอลซึ่งต่อมาถูกแปลงเป็นต้นไม้ทั่วไป

มีงานใหม่ที่เรียกว่าต้นไม้ปกคลุมซึ่งแม้จะมีรหัส GPL'ed ฉันต้องการดูลักษณะการทำงานระหว่างต้นไม้เหล่านี้และต้นไม้ kd เป็นเวลานานกว่าสองปีแล้ว

หวังว่าจะเหมาะกับแอปพลิเคชันของคุณ


ขออภัยที่จะยอมรับ เพียงทำตามคำแนะนำของผู้วิจารณ์คนอื่นเพื่อให้คำถามนี้อีกสองสามวันกับ "สตูว์" ฉันคิดว่าคำตอบของคุณมีประโยชน์จริง ๆ !
giogadi

Booo ผมล้อเล่น. ฉันแค่ดีใจที่คุณพบว่ามีประโยชน์
Chris Mansley

0

ตัวเลือกที่ง่ายสำหรับการค้นหาเพื่อนบ้านโดยประมาณในช่องว่างที่ไม่ใช่ยูคลิดใช้ sQRเสื้อ(ยังไม่มีข้อความ)ตัวอย่างในการค้นหา นี้ได้รับการดำเนินการใน OMPL ดูแม่แบบเรียนอ้างอิงompl::NearestNeighborsSqrtApprox< _T >

สิ่งนี้ช่วยลดความซับซ้อนไป O(sQRเสื้อ(ยังไม่มีข้อความ)).

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.