слишком много измерений во входном буфере в rplidar - PullRequest
0 голосов
/ 29 августа 2018

Я использую RPLidar A1 в Python. это выглядит довольно прекрасно, и это мой код ниже родом из https://github.com/SkoltechRobotics/rplidar/blob/master/examples/animate.py#L1 GitHub.

#!/usr/bin/env python3
'''Animates distances and measurment quality'''
from rplidar import RPLidar
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation

PORT_NAME = '/dev/ttyUSB0'
DMAX = 4000
IMIN = 0
IMAX = 50

def update_line(num, iterator, line):
    scan = next(iterator)
    offsets = np.array([(np.radians(meas[1]), meas[2]) for meas in scan])
    line.set_offsets(offsets)
    intens = np.array([meas[0] for meas in scan])
    line.set_array(intens)
    return line,

def run():
    lidar = RPLidar(PORT_NAME)
    fig = plt.figure()
    ax  = plt.subplot(111, projection='polar')
    line = ax.scatter([0, 0], [0, 0], s=5, c=[IMIN, IMAX],
                           cmap=plt.cm.Greys_r, lw=0)
    ax.set_rmax(DMAX)
    ax.grid(True)

    iterator = lidar.iter_scans()
    ani = animation.FuncAnimation(fig, update_line,
        fargs=(iterator, line), interval=50)
    plt.show()
    lidar.stop()
    lidar.disconnect()

if __name__ == '__main__':
    run()

но у него есть проблемы, подобные этой картинке. enter image description here

Я думаю, что это из-за буфера. Но не знаю, как справиться с этим. если вы поможете мне с этим, я очень ценю это. Я понятия не имею, почему это произошло, пожалуйста, дайте мне знать Спасибо!

1 Ответ

0 голосов
/ 29 ноября 2018

Из документации RPLidar: https://github.com/SkoltechRobotics/rplidar/blob/master/rplidar.py

Функции iter_scans()iter_measurments()] имеют параметр по умолчанию max_buf_meas. По умолчанию это 500. Похоже, вы заполняете этот буфер слишком быстро.

Я предлагаю дать iter_scans() вызову аргумент буфера, который больше, чем число, которое дает ваша программа, возможно, 800 или 1000.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...