gpt4 book ai didi

c++ - 为自主机器人创建和存储 2D/3D map

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:07 25 4
gpt4 key购买 nike

我 build 了一辆能够跟踪其位置并扫描其环境以寻找障碍物的自动遥控汽车。但是,我对如何存储/创建其环境 map 感到困惑。环境的大小不会固定,因为机器人探索它可能会发现新的区域。我的背景是导航,所以这部分和确定障碍物在哪里是容易的部分(对我来说)。困难的部分是如何存储/访问数据。

最初我打算使用分辨率为 2-5 厘米的 2D 阵列/矩阵,即当投影到地面上时,每个单元格的宽度为 2-5 厘米。然而,这可能会占用大量内存(它是嵌入式的,所以我的资源有限,目前有 512mb 的 RAM,但在原型(prototype)完成后可能会减少)。同样,我最终会将系统转移到四轴飞行器上,所以我将在 3D 中工作。下一个解决方案是创建一个有位置的障碍物对象。但是我不确定如何:1. 跟踪物体的大小和方向,即如何判断物体是墙还是只是 table 腿(不能避开墙,可以绕过腿)和 2 . 如何有效地搜索/判断障碍物是否挡住了机器人的去路。

我正在使用 C++,并集成了摄像头和超声波传感器来检测环境。如前所述,坚持如何有效地存储环境。我想保留环境信息,无论是保存到文件还是发送到服务器,以便以后使用/访问 map 。有人可以就尝试什么或从哪里开始寻找任何建议吗,这个领域对我来说是全新的?

最佳答案

您可以使用 R 树,您的初始位置是树的根。每次你可以去某个地方,你可以把你去过的地方添加到你的树中。如果可能,您还可以将一些相邻的部分融合在一起。

从内存的角度来看,您不受数组/矩阵限制的限制,您只存储有值(value)的数据。您可以选择存储什么:障碍物或自由空间。在这种结构中搜索也很有效。

至于实现,你可以看看 r-tree in the boost library .

稍后,如果您希望您的机器人从一个点移动到另一个点,您甚至可以根据您的树创建一个图形以供寻路算法使用。

关于c++ - 为自主机器人创建和存储 2D/3D map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com