使用Python绘制引起圆形图的实时Lidar数据

问题描述 投票:0回答:1

我正在使用RPLidar A1:https://www.adafruit.com/product/4010

我的目标是收集数据集并将其绘制出来,以获得实时的数据可视表示。

我当前的代码是:

import numpy as np
import matplotlib.pyplot as plt
from rplidar import RPLidar

def get_data():
    lidar = RPLidar('COM6', baudrate=115200)
    for scan in lidar.iter_scans(max_buf_meas=500):
        break
    lidar.stop()
    return scan

for i in range(1000000):
    if(i%7==0):
        x = []
        y = []
    print(i)
    current_data=get_data()
    for point in current_data:
        if point[0]==15:
            x.append(point[2]*np.sin(point[1]))
            y.append(point[2]*np.cos(point[1]))
    plt.clf()
    plt.scatter(x, y)
    plt.pause(.1)
plt.show()

上面的代码生成一个刷新的图,其中的数据发生了变化,如下所示:

RPLidar A1: Real Time Data Plot

问题是,这不是一个准确的表示。 SLAMTEC有一个名为frame_grabber的本地应用程序,该应用程序清楚地显示了此设备可以准确显示我的房间。相反,我一直保持从小到大的圆形形状。

来自传感器的原始数据以包含大约100组以下数据的数组的形式出现:(quality,theta,r)。我的代码检查质量是否良好(最高为15),然后继续绘制数据集并每七个实例清除一次数据数组,以清除旧数据。

我在excel中检查了原始极性数据,该数据似乎也产生了圆形。

python matplotlib real-time sensor lidar
1个回答
0
投票

在尝试了各种库进行绘图并尝试了其他一些操作之后,我注意到了这个错误。

希望这可以防止某人将来犯同样的错误。

激光雷达通常根据“θ”和“ r”给出数据。另一方面,numpy以及Python中的内置数学库接受以弧度表示的参数来执行cos和sin操作。

我已经将单位从度转换为弧度,现在一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.