使用 Python 绘制实时激光雷达数据导致圆形图
Using Python To Plot Live Lidar Data Causing Circular Plots
我正在使用 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()
上面的代码生成了一个带有变化数据的刷新图表,如下所示:
问题是这不是准确的表述。 SLAMTEC 有一个名为 frame_grabber 的本机应用程序,它清楚地显示了该设备提供我房间的准确矩形表示。相反,我不断得到一个从小到大的圆形。
来自传感器的原始数据以数组的形式出现,其中包含大约 100 组以下数据:(quality, theta, r)。我的代码检查质量是否良好(最大值为 15),然后继续绘制数据集并每七个实例清除一次数据数组以清除旧数据。
我检查了 excel 中的原始极坐标数据,数据也显示出一个圆形。
在尝试了几天用于绘图的各种库并尝试了其他一些东西后,我注意到了这个错误。
希望这可以防止以后有人犯同样的错误。
激光雷达通常以 "theta" 和 "r" 的形式提供数据。另一方面,numpy 以及 Python 中的内置数学库接受弧度参数以执行 cos 和 sin 运算。
我已将单位从度数转换为弧度,现在一切正常。
我正在使用 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()
上面的代码生成了一个带有变化数据的刷新图表,如下所示:
问题是这不是准确的表述。 SLAMTEC 有一个名为 frame_grabber 的本机应用程序,它清楚地显示了该设备提供我房间的准确矩形表示。相反,我不断得到一个从小到大的圆形。
来自传感器的原始数据以数组的形式出现,其中包含大约 100 组以下数据:(quality, theta, r)。我的代码检查质量是否良好(最大值为 15),然后继续绘制数据集并每七个实例清除一次数据数组以清除旧数据。
我检查了 excel 中的原始极坐标数据,数据也显示出一个圆形。
在尝试了几天用于绘图的各种库并尝试了其他一些东西后,我注意到了这个错误。
希望这可以防止以后有人犯同样的错误。
激光雷达通常以 "theta" 和 "r" 的形式提供数据。另一方面,numpy 以及 Python 中的内置数学库接受弧度参数以执行 cos 和 sin 运算。
我已将单位从度数转换为弧度,现在一切正常。