我目前正在从事一个项目,该项目涉及使用激光模块测量机器人周围的距离,然后机器人必须根据他得到的点移动。
我目前可以访问 360 个点,这些点表示每个相应角度与中心的距离。(0°的距离,1°的距离等(
以下是在 2D 表面上显示时点的外观示例:点的圆形表示
我希望能够做的是,不是给机器人所有360个点,而是给它提供包含多个点的片段。例如,即使点未完全对齐,图像的底部也将是单个段。
我的问题是,是否有一种现有的算法可以帮助我实现我想要做的事情?
(我正在使用python,但这不应该是一个因素(
多谢。
假设您的积分已排序:
对于每个点,向前看两点,如果中间点距离两点之间的段不到一定距离,则将端点进一步推 1 pt,并检查现在两个中间点是否仍在线段的一定距离内。 继续执行此操作,直到 false,此时回滚一个 pt 并生成一个段,然后将该段的结尾设置为下一个段的开头。 此外,您可以考虑角度而不仅仅是距离,因为在某些情况下这是有利的。 此外,如果多次尝试无法从某个起点创建分段,请将起点向前推一个(因为并非所有内容都会简化为段(
或者,您可以转换为笛卡尔点并使用 hough 投票算法来检测生成的点云中的线。