c++ - 如果每个节点只知道到 3 个最近节点的距离,则构建一个 2d map

标签 c++ graph-theory computational-geometry som slam-algorithm

我正在寻找 C++ 库或库的组合。

想法是机器人四处移动,它们只能知道最近的 3 个机器人之间的距离。 问题是找到所有节点的相对 (x,y) 位置。

我的解决方案是根据距离构建三角形(是否有相应的库)然后根据这些三角形制作 map (库?)

最佳答案

如果这是一个真实世界的应用程序,图表将永远不会一致。我的意思是,如果你从一端开始构建三角形,当你关闭循环时,它永远不会匹配。 “闭环”是机器人学的一个热门研究课题。你的问题在某种程度上比一般情况更简单,你可能很幸运,只是将距离扔给非线性最小二乘求解器。谷歌搜索正是返回这个 ceres-solver .

使用通用非线性最小二乘求解器,您需要定义解 vector 和目标函数。在您的情况下,假设您有 100 个节点。这意味着您正在寻找 200 个值;每个节点的 x 和 y 值。那个 200 元素长的 vector 就是您的解决方案 vector 。您的目标函数是这 20000 个元素的分配,以便分配中已知对的距离与您的可用数据尽可能匹配。对于 100 个节点,每个节点有 3 个已知距离,您有 300 个要最小化误差的方程。恐怕您必须弄清楚 ceres API 才能将此解决方案应用于您的问题,因为我没有这方面的个人经验。

附带说明一下,从依赖数据一致性的无噪声解决方案到涉及噪声的解决方案,本质上都是从头开始......

关于c++ - 如果每个节点只知道到 3 个最近节点的距离,则构建一个 2d map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683798/

相关文章:

c++ - 缓冲区溢出的第一次实验

c++ - 调试模板实例化

graph-theory - "diamond"有向无环图的正确术语是什么?

algorithm - 给定无向图中的完整子图数

r - 如何知道图中的哪些节点是可移动的

c++ - C++ 中直线与线段的交点

c++ - 读取互锁变量

c++ - 类模板中的 typedef 引用另一个类模板中的 typedef 的 SFINAE 失败

algorithm - 查询以确定点是否位于多边形内

python - 找到数组元素的所有可能组合。不是产品