如何在(圆形)点图中找到线段?
How to find segments in (circular) point map?
我目前正在进行一个项目,该项目涉及使用激光模块测量机器人周围的距离,然后机器人必须根据他获得的点移动。
我目前可以访问 360 点,这些点表示每个相应角度与中心的距离。 (0°的距离,1°的距离,等等)
下面是点在二维表面上显示时的样子示例:
Circular representation of the points
我希望能够做的是,不是为机器人提供所有 360 个点,而是为它提供包含多个点的片段。例如,即使点没有完全对齐,图像的底部也将是一个单独的片段。
我想问你的问题是,是否有现成的算法可以帮助我实现我想要做的事情?
(我在 python 工作,但这不应该成为一个因素)
非常感谢。
假设您的积分已订购:
对于每个点,向前看两点,如果中点距离两点之间的线段的距离小于一定距离,则将端点向前推 1 pt,并检查现在两个中点仍在您的线段的一定距离内。继续这样做直到 false,此时回滚一个点并生成一个段,然后将该段的结尾设置为下一个段的开始。此外,您可以考虑角度而不仅仅是距离,因为在某些情况下这是有利的。另外,如果多次尝试都不能从某个起点做出分段,则将起点向前推一个(因为不是所有的东西都会简化成分段)
或者,您可以转换为笛卡尔点并使用霍夫投票算法从生成的点云中检测线。
我目前正在进行一个项目,该项目涉及使用激光模块测量机器人周围的距离,然后机器人必须根据他获得的点移动。
我目前可以访问 360 点,这些点表示每个相应角度与中心的距离。 (0°的距离,1°的距离,等等)
下面是点在二维表面上显示时的样子示例: Circular representation of the points
我希望能够做的是,不是为机器人提供所有 360 个点,而是为它提供包含多个点的片段。例如,即使点没有完全对齐,图像的底部也将是一个单独的片段。
我想问你的问题是,是否有现成的算法可以帮助我实现我想要做的事情?
(我在 python 工作,但这不应该成为一个因素)
非常感谢。
假设您的积分已订购:
对于每个点,向前看两点,如果中点距离两点之间的线段的距离小于一定距离,则将端点向前推 1 pt,并检查现在两个中点仍在您的线段的一定距离内。继续这样做直到 false,此时回滚一个点并生成一个段,然后将该段的结尾设置为下一个段的开始。此外,您可以考虑角度而不仅仅是距离,因为在某些情况下这是有利的。另外,如果多次尝试都不能从某个起点做出分段,则将起点向前推一个(因为不是所有的东西都会简化成分段)
或者,您可以转换为笛卡尔点并使用霍夫投票算法从生成的点云中检测线。