Создание собственной системы стабилизации
Арду кроме HAL_PX4 в неприкосновенности 😃 в гит по моим коммитам видно, что я делал…
кстати так и не понял - делал тестовый бранч - он так в гит и отобразился? хотя толкнулся туда…
6 мая начнется курс - Autonomous Navigation for Flying Robots
2 SergDoc
Я кажись разобрался, но у меня нет железа для проверки!
Ты в итоге какую прошивку в P4BY льешь PX4_V1 или PX4_V2?
Какой у тебя проц (STM32F40XYZ)? К какой ноге проца подключена батарейка?
F407VGT6 прошивка версии V1, далее выяснил что за 16 канал АЦП - датчик температуры проца, по простому - имеем абстрактную железку - Арду - этакий чёрный ящик с кучей штырьков вот 100 - штырёк этой (абстрактной) железяки нужно прицепить не к 10 входу АЦП PX4 (PC0), а к 13-му(PC3) и пока непонятно как… а “проводок” который связывает эти две “абстрактные” железяки где-то тут github.com/SergDoc/ardupilot/blob/…/AnalogIn.cpp или же в PX4Firmware я не всё переделал тут я вход с батарейки поменял (в гит пока не сливал)…
Все, теперь все встало на места.
Смотрю я в схему New_Multirotor_CPU_imu_V1.3.pdf и вижу что батарея подключена к PC4 (вывод 33). В этом случае правок все же побольше.
Но если батарея подлючена к PC3 (вывод 18), то:
-
Заменяем
# define AP_BATT_VOLT_PIN 13 -
Тут непонятно. По схеме R21=10K, R22=1K, тогда делитель будет 11 к 1.
{ 13, (5.7*3.3)/4096 }, // FMU battery on multi-connector pin 5,
-
Не трогаем, нет у нас виртуальности.
#define PX4_ANALOG_ORB_BATTERY_VOLTAGE_PIN 103 -
В файле ardupilot\libraries\AP_HAL_PX4\AnalogIn.cpp в методе PX4AnalogIn::init
удаляем
- _battery_handle = orb_subscribe(ORB_ID(battery_status));
заменяем на
- _battery_handle = -1;
Без железа проверить трудно, но в голове все заработало.
Все, теперь все встало на места.
- Заменяем
# define AP_BATT_VOLT_PIN 13
Это в каком файле?
- Не трогаем, нет у нас виртуальности.
#define PX4_ANALOG_ORB_BATTERY_VOLTAGE_PIN 103
Поясни, что за “виртуальность”, для чего нужна и почему её нет?
- В файле ardupilot\libraries\AP_HAL_PX4\AnalogIn.cpp в методе PX4AnalogIn::init
удаляем
- _battery_handle = orb_subscribe(ORB_ID(battery_status));
заменяем на
- _battery_handle = -1;
Это как работает?
Уффф… Наконец доделал первую F4BY, на стапелях ещё пара, осталось впаять датчики )
6 мая начнется курс
Классно, но я английским сильно не владею… Хотя обязательно посмотрю, может что новое увижу…
Это в каком файле?
ardupilot/libraries/AP_BattMonitor/AP_BattMonitor.h
Поясни, что за “виртуальность”, для чего нужна и почему её нет?
Дело в том, что в PX4v1 данные для батареи брались не с самой платы, а с PX4IO. Поэтому они и ввели виртуальный порт.
Это как работает?
Скорее как это работалО. Мы это выключили. Если интересно, то копать в сторону uORB.
P.S. Думал куплю раму, мотор, ESC и мозг. Соберу и полечу, и в код ни за что не полезу.
Еще за пределами квартиры ни разу не взлетнул, а в код залез по самые уши.
Классно, но я английским сильно не владею… Хотя обязательно посмотрю, может что новое увижу…
думаю что много чего увидишь… всеж по науке, а не домашним пальцетырканьем 😃
Хотя курс курсу рознь. Я вот окончил Control of Mobile Robots, так очень понравился. Сейчас прохожу Machine Learning, тоже отличный курс (от Стэнфорда). Кроме того если кой где затык в понимании материала, дык русские титры прилагаются (перевод человечий, т.е. не гугл 😃 )… А вот Autonomous Mobile Robots не пошел мне. Скачут от сложного к простому. Читает несколько лекторов, каждый в своем стиле. Забросил. Они похоже свою книженцию проталкивают через курс…
P.S. Думал куплю раму, мотор, ESC и мозг. Соберу и полечу, и в код ни за что не полезу.
Еще за пределами квартиры ни разу не взлетнул, а в код залез по самые уши.
А у Вас “мозг” оригинальный или тоже хэнд мэйд плата или на картонке)))?
А у Вас “мозг” оригинальный или тоже хэнд мэйд плата или на картонке)))?
У меня мозг мой, “оригинальный”! А вот у коптера пока AIOP v2. Но Sir Alex, как я понял, переметнулся сюда. Вот я и слежу за ходом событий.
А спаять, плату сделать – не велика проблема.
Во один вечер к компу не подходил - а тут 😃
Как уже писал выше делитель я поменял - из соображений на тему: старый делитель максимум для 3-х секционной батареи…
сейчас делитель 47КОм/10КОм - т.е. до 17 В - можно 4-х секционную батарею подцепить, ну и уже как следствие в кодятнике меньше копаться… Про датчик тока, rssi и вход с датчика скорости(если аналоговый) пока ничего не скажу ибо ни того, ни другого, ни третьего не имею в наличии…
Как уже писал выше делитель я поменял
Пропустил/пролистал.
Код попробовал?
Код попробовал?
вчера я не подходил к компу 😃 а сейчас на работе - в обед попробую…
Непошло…
Непошло
Батарея точно к PC3 подключена?
Щяс все ржать будете - короче ничего нигде менять ненадо, ну разве что в Bat_monitor порт 13 поставить и то не актуально - это и из планнера сделать можно - во вкладке с батарейкой выбрать APM2.5 а не PX4 (а выбирать придётся всёравно APM ибо планнер не признает 13 лапу у PX4 и влупит 100 в параметрах) - напругу кажеть 😃
естественно в /PX4Firmware/src/modules/sensors/sensors.cpp “правильный” 13-й порт прописать 😃
во вкладке с батарейкой выбрать APM2.5 а не PX4
Бага в планере?
не бага - фича 😃 у него где-то прописано что если выбрана PX4 то лапа 100 автоматом в виртуальную eeprom забивается и дефайн пофиг…
да если кто желает под линуксом APM Planner собрать описано у меня в дневнике ибо сцуко без бубна не собирается из-за уплоадера для PX4…
Да не, это я как раз вчера и обходил правкой
#define PX4_ANALOG_ORB_BATTERY_VOLTAGE_PIN 103
- _battery_handle = -1;
#define PX4_ANALOG_ORB_BATTERY_VOLTAGE_PIN 103
- _battery_handle = -1;
говорю же планнер загоняет параметр BATT_VOLT_PIN в 100 если выбрать PX4 и пофиг ему дефайны…
#define PX4_ANALOG_ORB_BATTERY_VOLTAGE_PIN 103
тут в оригинале 100
планнер загоняет параметр BATT_VOLT_PIN в 100 если выбрать PX4
Ах вот оно что.
Потом можно через “Full Parameter List” поменять на 13 и больше во вкладке “Battery Monitor” ничего не менять.
тут в оригинале 100
Да без разницы, главное что 100 (103) != 13.
Просто немного не удобно для пользователя - если ещё и датчик тока, то всё придётся ручками вводить в параметрах, начиная от того BATT_MONITOR 3 или 4 - и пины соответственно BATT_VOLT_PIN и BATT_CURR_PIN и во вкладку монитора не лазить…