Создание собственной системы стабилизации
Закомитил все правки в системе билда PX4, для компиляции текущего проекта APM-PX4 вам надо:
- Выполняем:
apt-get update
apt-get install gawk make git arduino-core g++
- Скачиваем исходники Ардупилота (Это подправленная версия АрдуПилота, из моего репозитория)
cd ~
git clone git://github.com/SirAlex/ardupilot.git
- Выполняем скрипт установки всех приблуд (для PX4 в том числе)
cd ~
ardupilot/Tools/scripts/install-prereqs-ubuntu.sh
- Компилируем:
cd ~/ardupilot/ArduCopter
make configure
make px4
У меня ровно такие же проблемы с компиляцией, как и по ссылке.
Это кстати мой пост был… )))))
PS:Рад что у вас всех получилось.
Ух ты!!! Прочитал последние посты. Спасибо коллеги!
А для крестьян-подоконников значится нужно:
- Скачать вот это а github.com/diydrones/PX4Firmware
- Скачать исходники Ардупилота .
- Установить ГЦЦ (и эклипс).
- Поправить мейк-файл.
Верно?
Вот доделал демку с ШИМ входами/выходами, показывает длительность ППМ 4-8, и транслирует на выходы ШИМ1-4. Таймер действительно надо было поделить.
- Установить ГЦЦ (и эклипс).
Если бы это было так просто, я бы давно под эклипсом ковырялся 😦 нет опять таки коммандная строка 😦
только вот один червячёк засел - а у px4 свой бутлодырь видать, раз драйвера к ней нужны не stm-овские - а где его раздобыть тогда? ибо прошивка без него работать не будет если её даже насильственно запихнуть 😦 , план таков - нужен владелец px4 - с очищенной до бутлоадера PX4 c помощью вот этой штуки code.google.com/p/vrbrain/downloads/detail?name=um… (естественно BOOT0 в 1 тогда запустится только родной бутлоадер stm) выдернуть через usb дамп и попробовать влить его в мою плату…
а где его раздобыть тогда?
pixhawk.ethz.ch/px4/dev/px4_bootloader
pixhawk.ethz.ch/px4/users/bootloader_update
Кстати говоря некоторые пользователи которые купили PX4 сразу после появления(Marco с дронсов имел такой секас) не могли залить туда прошивку APM по причине старого бутлодера. После обновления все стало тип топ.
Проверьте кто нибудь мою инструкцию. Если будет работать, я отправлю фикс дидронсам, что бы они включили его в прошивку.
Ну вобще дело только в скрипте, так что, я думаю, должно работать - как-то не хочется перезаливать всё снова…
После обновления все стало тип топ.
он в исходниках - это хорошо, если что, можно подправить под себя 😃
Так ладно прошивка собирается, бутлодырь есть, теперь надо придумать как превратить px4 в мою плату, ну или наоборот - мою плату в px4 вчера так в исходниках и не поковарялся 😦 где-то что-то должно быть типа board - со всеми причендалами?
не хватает некоторых (до мозга костей привычных) тулов и утилит…
менеджера файлового не хватает 😃 остальное всё ок, игрули через wine пашут…
Я так понимаю, что в деревню я еду без коптера 😦 только с платой и аппой на всякий случай (ну ноут понятное дело со мной)
Таймер действительно надо было поделить.
я так делал:
static void pwmTimeBase(TIM_TypeDef *tim, uint32_t period)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = period - 1;
if ( (tim==TIM1) || (tim==TIM8))
{
TIM_TimeBaseStructure.TIM_Prescaler = (SystemCoreClock / 1000000) - 1;
}
else
{
TIM_TimeBaseStructure.TIM_Prescaler = ((SystemCoreClock / 1000000)/2) - 1;
}
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(tim, &TIM_TimeBaseStructure);
}
бутлодырь я ковырять начал - по ходу надо только изменить порты светодиодов, усарта и детекта усб тут: github.com/PX4/Bootloader/blob/master/main_f4.c ну естественно разобраться какая плата включена, можно по идее и свою добавить 😃 а плату назовём PX12AIO - смеюсь конечно 😃
а по сути надо только компас повернуть на 90 градусов, переделать шимы (попотеть придётся) светодиоды само собой - проверить шины что-бы всё на нужных висело, еепромка думаю пойдёт та что и стоит 512-я (если она вообще используется)… с одной стороны вроде не страшно - но это пока не копал…
теперь надо придумать как превратить px4 в мою плату,
Пока мне это просто представляется, нужно переделать функции-точки входа в ХАЛ под твою плату. Итого 4 файла ХАЛ АналогИн, ПВМОут ПВМИн, ещё ГПИО - в них правятся только количественные данные (входы/выходы ШИМ, АЦП, порты), а вот в вызываемых из них функциях
здесь github.com/diydrones/PX4Firmware/blob/…/fmu.cpp
и здесь github.com/diydrones/PX4Firmware/tree/…/px4io
и здесь github.com/diydrones/PX4Firmware/tree/…/stm32
нужно править код.
я так делал:
Я обобщённых функций не делаю, все низы пишутся индивидуально под плату, абстрактны только летательные объекты.
ЗЫ: немного наврал выше, править нужно всё вот здесь github.com/diydrones/PX4Firmware/tree/…/drivers
В выходные будет некогда, но “пустышку” с халом постараюсь собрать.
не ну понятно что px4 надо основательно переделать - и потом уже не трогать больше а хал написать под себя, и потом спокойно портировать прошивки 😃
ладно тогда я займусь пока бутлодырем 😃
у меня-то по простому было сделано мухи отдельно, котлеты отдельно шимы на моторы отдельно на сервы отдельно, а тут бог его знает, но трёху мне надо запустить полюбому… на квадрик длинны проводов не хватит пока и носить его неудобно… а трёха в сумке умещается - основной критерий, пока не вымудрю складную раму типа этой
Итого 4 файла ХАЛ АналогИн, ПВМОут ПВМИн, ещё ГПИО - в них правятся только количественные данные (входы/выходы ШИМ, АЦП, порты)
это в AP_HAL_PX4?
шимы на моторы отдельно на сервы отдельно,
Тут проблемы нет, есть уровень абстракции, а в железе один таймер на моторы 400Гц, другой на сервы 50Гц, если серва быстрая, то всё на один таймер можно вешать.
Может имеет смысл, сразу заложить возможность работы через CAN протокол?
А у кого регули поддерживают данное мероприятие? у меня на плате если использовать ppm-summ то выводы can свободны… как и i2c1
в новой версии есть возможность вывести вообще отдельную шину ни на что не задействованую…
А у кого регули поддерживают данное мероприятие?
Ну точно эти поддерживают: viacopter.eu/…/autoquad-esc32-multicopter-store
Наверное и другие потихоньку будет делать.
Можно подвесом управлять по CAN, а то сейчас и связи обратной с подвесом нету да и PWM выходов как всегда не хватает.
так есть маленький проблем - у px4 кварц на 24МГц надо найти system_stm32f4xx.c или как там у них это называется, в бутлодыре пока не нашел 😦 надо искать где задаётся частота кварца ибо поменять его не на что 😦
так есть маленький проблем - у px4 кварц на 24МГц надо найти system_stm32f4xx.c или как там у них это называется, в бутлодыре пока не нашел надо искать где задаётся частота кварца ибо поменять его не на что
~/PX4Firmware/nuttx/configs/px4fmu/include/board.h
если я правильно понял, то px4 ставится вверх ногами, а следовательно с датчиками придётся помучаться? или в арду нет?
если я правильно понял, то px4 ставится вверх ногами, а следовательно с датчиками придётся помучаться? или в арду нет?
Вообще не проблема, ориентация платы задается параметром
// @Param: ORIENTATION
// @DisplayName: Board Orientation
// @Description: Overall board orientation relative to the standard orientation for the board type. This rotates the IMU and compass readings to allow the board to be oriented in your vehicle at any 90 or 45 degree angle. This option takes affect on next boot. After changing you will need to re-level your vehicle.
// @Values: 0:None,1:Yaw45,2:Yaw90,3:Yaw135,4:Yaw180,5:Yaw225,6:Yaw270,7:Yaw315,8:Roll180,9:Roll180Yaw45,10:Roll180Yaw90,11:Roll180Yaw135,12:Pitch180,13:Roll180Yaw225,14:Roll180Yaw270,15:Roll180Yaw315,16:Roll90,17:Roll90Yaw45,18:Roll90Yaw135,19:Roll270,20:Roll270Yaw45,21:Roll270Yaw90,22:Roll270Yaw136,23:Pitch90,24:Pitch270
// @User: Advanced
AP_GROUPINFO(“ORIENTATION”, 9, AP_AHRS, _board_orientation, 0),
Другое дело если компас и MPU соориентированы по разному. Тогда еще надо подкрутить ориентацию компаса (то же есть в параметрах)