XV-11 激光雷达用树莓派 3B+ 读取数据

时间:2021-05-16 11:18:34

标签: python-3.x matplotlib raspberry-pi3 lidar

我有一个旧真空吸尘器的 XV-11 激光雷达传感器,我想将它用于机器人项目。 在我的研究中,我看到了一个非常有趣和简单的方法,使用 Matplotlib 并使用散点显示所有距离。例如 (https://udayankumar.com/2018/08/01/working-with-lidar/) 但是当我将此 python 代码运行到 RP3 时,确实会弹出一个 Matplotlib 窗口,其中包含所有距离,但数据的刷新率太慢且无法实时查看。我的意思是 matplotlib 显示的所有传感器读数都落后几十秒。 我的下一个想法是自己用以下显示行做一些事情,但我得到了相同的结果:良好的读数但延迟了很多。

points =[]
plt.ion()
x = dist_mm*np.cos(angle_rad)
y = dist_mm*np.sin(angle_rad)
points.append([x,y])
points = np.array(points)
plt.scatter(points[:,0], points[:,1])
if angle == 356:
 plt.plot()
 plt.draw()
 plt.pause(0.0001)
 plt.clf()
 print ("-----------")

我做错了什么或者在这种情况下我可以改进什么?我的期望是这样的 Lidar animation, source: https://github.com/Hyun-je/pyrplidar 但在本例中使用了不同的激光雷达传感器

1 个答案:

答案 0 :(得分:0)

您每次都在清除并重新创建轴、背景等。至少您可以将此绘图/重新绘图限制为仅相关的绘图点,以进行一定程度的改进。

如果您对此不熟悉,我将从动画指南开始 - https://matplotlib.org/stable/api/animation_api.html,其中介绍了一些基础知识,例如仅更新图形的一部分。

如果您仍然需要大量更新数据,那么限制读取数据的频率,或者更具体地说,限制重绘的速度也可能会提高稳定性。

可能值得寻找有关实时绘图的更一般指导,例如update frame in matplotlib with live camera preview