我有一个RPLidar,我的任务是检测障碍物。从传感器中,我得到了一组包含信号质量、角度和距离的真值,单位为毫米。
示例如下:
[(15, 1.375, 2569.0), (15, 3.0, 2491.5), (15, 4.578125, 2528.75), (15, 6.203125, 2419.75), (15, 7.796875, 2299.75), (15, 9.40625, 2200.5), (15, 11.078125, 2104.25), (15, 12.703125, 2047.25), (15, 14.3125, 2091.75), (15, 15.84375, 2132.25), (15, 17.46875, 2183.75), (15, 19.015625, 2232.5), (15, 20.609375, 2288.75), (15, 22.15625, 2341.0), (15, 23.765625, 2411.0), (15, 25.34375, 2481.0), (15, 26.875, 2554.25), (15, 28.453125, 2641.0), (15, 30.046875, 2731.5), (15, 31.609375, 2824.0), (15, 33.1875, 2854.75), (11, 39.8125, 2178.0), (15, 41.390625, 2278.0), (15, 42.984375, 2199.5), (13, 44.546875, 2269.0), (15, 46.171875, 2265.5), (15, 47.71875, 2300.75), (15, 49.3125, 2454.25), (15, 50.890625, 2442.0), (15, 52.484375, 2415.0), (15, 54.109375, 2404.0), (15, 55.703125, 2390.0), (15, 57.28125, 2371.0), (15, 58.796875, 2357.5), (15, 60.421875, 2348.5), (15, 61.984375, 2344.0), (15, 63.5625, 2340.5), (15, 65.171875, 2332.75), (15, 66.75, 2328.25), (15, 68.34375, 2330.75), (15, 69.984375, 2324.5), (15, 71.515625, 2328.25), (15, 73.125, 2332.75), (15, 74.71875, 2335.75), (15, 76.28125, 2341.5)]
我在matplotlib中绘制了这些数据,它们看起来是这样的:
正如你所看到的,我正在以点的形式获取周围的信息,每个点都有质量,角度,离中心的距离。现在我想对它们进行分组,并需要找到每个组的长度。我怎样才能做到这一点呢?在python中有没有什么库可以让我像下面这样做集群?
发布于 2019-04-04 05:13:28
显而易见的解决方案#1:
将数据从极坐标投影到笛卡尔坐标。然后,您可以使用任何基于坐标的算法,如k-means,以及任何与欧几里德距离一起工作的算法(例如,HAC,DBSCAN)
显而易见的解决方案#2:
在极坐标中计算成对距离。这可能会比上面的方法更复杂,因此对于大数据来说会更慢,但更明显一点。当您拥有距离矩阵时,可以使用任何基于距离的算法,例如HAC、DBSCAN、亲和传播、谱聚类。
根据你的图,我会投影并使用DBSCAN。
https://stackoverflow.com/questions/55502193
复制相似问题