25 декабря 2020 г.

Поскольку в своей повседневной работе за компьютером я предпочитаю использовать Linux, то настройка и эксплуатация квадрокоптера не стала исключением. Отрадно, что весь необходимый софт отлично работает под Ubuntu. И даже без плясок с бубном. Последним инструментом, который потребовалось использовать, стал PID Analyzer.

PID Analyzer — мощный инструмент для анализа blackbox-логов с полётного контроллера. Ниже привожу порядок действия для запуска инструмента для Ubuntu 18.04. Брал отсюда.

Скачиваем сам PID Analyzer:

wget https://github.com/Plasmatree/PID-Analyzer/archive/master.zip
unzip master.zip
cd PID-Analyzer-master
virtualenv -p python3 venv
source venv/bin/activate

Далее нам необходимо скачать исходники Blackbox Tools для Inav и собрать blackbox_decode. Он необходим для работы PID Analyzer:

Скачиваем отсюда: https://github.com/iNavFlight/blackbox-tools

Если используете Betaflight, то качать нужно blackbox tools именно для него. Думаю, что гугл вам поможет.

Ну, а дальше нам нужно разархивировать скачанные исходники и перейти в директорию. Затем:

make obj/blackbox_decode

Если чего-то не хватает, то можете доустановить:

Из директории obj копируем скопиленый бинарник blackbox_decode в директорию с нашим PID Analyzer.

На этом всё. Запускается это всё дело следующим образом:

python PID-Analyzer.py --blackbox_decode ./blackbox_decode -l /path/to/log/LOG.TXT

Некоторое время у меня ушло на поиск проблемы при парсинге blackbox-логов. Мне выдавалась следующая ошибка:

INFO 2020-09-24 19:30:52,122 PID-Analyzer.py:676: Reading: Log 0
WARNING 2020-09-24 19:30:52,263 PID-Analyzer.py:715: No D[2] trace found!
INFO 2020-09-24 19:30:52,263 PID-Analyzer.py:356: Processing:
Traceback (most recent call last):
  File "./PID-Analyzer.py", line 1027, in 
    run_analysis(clean_path(p), name, args.blackbox_decode, args.show, args.noise_bounds)
  File "./PID-Analyzer.py", line 939, in run_analysis
    test = BB_log(log_file_path, plot_name, blackbox_decode, show, noise_bounds)
  File "./PID-Analyzer.py", line 781, in __init__
    self.figs = self._csv_iter(self.heads)
  File "./PID-Analyzer.py", line 798, in _csv_iter
    analysed = CSV_log(h['tempFile'][:-3]+'01.csv', self.name, h, self.noise_bounds)
  File "./PID-Analyzer.py", line 357, in __init__
    self.traces = self.find_traces(self.data)
  File "./PID-Analyzer.py", line 761, in find_traces
    dic.update({'P':float((self.headdict[dic['name']+'PID']).split(',')[0])})
ValueError: could not convert string to float:

В моём случае это происходило из-за того, что в полётнике у меня был активирован режим отладки. Проверьте значение переменной debug_mode. Мне помогла установка его в NONE через CLI в Inav Configurator:

set debug_mode=NONE
save
Автор: Артур Минимулин ⚫ 25 декабря 2020 г.Тэги: Linux, inav, Квадрокоптер