Поскольку в своей повседневной работе за компьютером я предпочитаю использовать 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, inrun_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