Использование Python для построения живых лидарных данных, приводящих к появлению круговых диаграмм - PullRequest
0 голосов
/ 11 февраля 2020

Я использую 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

Проблема в том, что это не точное представление. Есть встроенное приложение от SLAMTE C, называемое frame_grabber, которое четко показывает это устройство, дающее точное angular образное представление моей комнаты. Вместо этого я продолжаю получать круглую форму от малого до большого.

Необработанные данные с датчика поступают в виде массива, содержащего примерно 100 наборов следующих данных: (качество, тета, r ) . Мой код проверяет, хорошее ли качество (максимум 15), а затем переходит к построению графиков наборов данных и очищает массив данных каждые семь экземпляров, чтобы избавиться от старых данных.

Я проверил необработанную полярность данные в Excel, и данные также создают форму циркуляра sh.

1 Ответ

0 голосов
/ 13 февраля 2020

После нескольких дней испытаний различных библиотек для построения графиков и нескольких других вещей я заметил ошибку.

Надеюсь, это может помешать кому-либо совершить такую ​​же ошибку в будущем.

Лидары обычно дают данные в терминах "тета" и "r". С другой стороны, numpy, а также встроенная математическая библиотека в Python принимают аргументы в радианах для выполнения операций cos и sin.

Я перевел единицы из градусов в радианы и теперь все работает отлично.

...