Создание собственной системы стабилизации

Sir_Alex
SergDoc:

в PX4-Firmware не хватает как раз папки с архивами может ещё чего…

Муть какая то. Свежая версия прошивки github.com/PX4 не имеет папки nuttx (ее убрали в отдельный репозитарий, пару месяцев назад), как у тебя могла собраться прошивка без нее???
Может у тебя еще где то есть PX4-Firmware и компилится она оттель. Либо вообще не компилится а берет уже готовые файлы после предыдущей компиляции.
Попробуй выполнить вместо "make px4’ команду ‘make px4-clean’
А я попробую по новой выкачать

SergDoc

Алексей, я же сколько раз повторяю, что беру отсюда github.com/diydrones/PX4Firmware !!!, а не ту что прописана в скрипте, и там всё есть: github.com/diydrones/PX4Firmware/tree/…/nuttx , а архивы она создаёт потом… я всё полностью удалял и заново выкачивал, загвоздка именно в PX4Firmware

я же не выдумываю:

serg@Pirat:~/ardupilot/ArduCopter$ make px4-clean
serg@Pirat:~/ardupilot/ArduCopter$ make px4

ну тут можно чаю попить

CMDS:    /home/serg/PX4Firmware/makefiles//build/builtin_commands.c
CC:      /home/serg/PX4Firmware/makefiles//build/builtin_commands.c
ROMFS:   romfs.img
OBJ:     romfs.o
CC:      romfs.o.c
LINK:    /home/serg/PX4Firmware/makefiles//build/firmware.elf
BIN:     /home/serg/PX4Firmware/makefiles//build/firmware.bin
%% Generating /home/serg/PX4Firmware/makefiles//build/firmware.px4
make[1]: Выход из каталога `/tmp/ArduCopter.build'
PX4 ArduCopter Firmware is in ArduCopter.px4
serg@Pirat:~/ardupilot/ArduCopter$

минут 5-7 прошива собралась ноут как утюг 😃 я спать…

Sir_Alex
SergDoc:

Алексей, я же сколько раз повторяю, что беру отсюда github.com/diydrones/PX4Firmware !!!

Все, я наконец то понял, у меня то же собралась прошивка! Действительно я не заметил что ты говоришь про прошивку в репозитарии DIYDrones, а не PX4!!!

Ты кстати менял NuttX на nuttx в файле ardupilot/mk/px4_targets.mk ?

Sir_Alex

Закомитил все правки в системе билда PX4, для компиляции текущего проекта APM-PX4 вам надо:

  1. Выполняем:
apt-get update
apt-get install gawk make git arduino-core g++
  1. Скачиваем исходники Ардупилота (Это подправленная версия АрдуПилота, из моего репозитория)
cd ~
git clone git://github.com/SirAlex/ardupilot.git
  1. Выполняем скрипт установки всех приблуд (для PX4 в том числе)
cd ~
ardupilot/Tools/scripts/install-prereqs-ubuntu.sh
  1. Компилируем:
cd ~/ardupilot/ArduCopter
make configure
make px4
Chester_kz
Sir_Alex:

У меня ровно такие же проблемы с компиляцией, как и по ссылке.

Это кстати мой пост был… )))))

PS:Рад что у вас всех получилось.

rual

Ух ты!!! Прочитал последние посты. Спасибо коллеги!
А для крестьян-подоконников значится нужно:

  1. Скачать вот это а github.com/diydrones/PX4Firmware
  2. Скачать исходники Ардупилота .
  3. Установить ГЦЦ (и эклипс).
  4. Поправить мейк-файл.
    Верно?
rual

Вот доделал демку с ШИМ входами/выходами, показывает длительность ППМ 4-8, и транслирует на выходы ШИМ1-4. Таймер действительно надо было поделить.

RusINS11F4.rar

SergDoc
rual:
  1. Установить ГЦЦ (и эклипс).

Если бы это было так просто, я бы давно под эклипсом ковырялся 😦 нет опять таки коммандная строка 😦
только вот один червячёк засел - а у px4 свой бутлодырь видать, раз драйвера к ней нужны не stm-овские - а где его раздобыть тогда? ибо прошивка без него работать не будет если её даже насильственно запихнуть 😦 , план таков - нужен владелец px4 - с очищенной до бутлоадера PX4 c помощью вот этой штуки code.google.com/p/vrbrain/downloads/detail?name=um… (естественно BOOT0 в 1 тогда запустится только родной бутлоадер stm) выдернуть через usb дамп и попробовать влить его в мою плату…

Chester_kz
SergDoc:

а где его раздобыть тогда?

pixhawk.ethz.ch/px4/dev/px4_bootloader
pixhawk.ethz.ch/px4/users/bootloader_update
Кстати говоря некоторые пользователи которые купили PX4 сразу после появления(Marco с дронсов имел такой секас) не могли залить туда прошивку APM по причине старого бутлодера. После обновления все стало тип топ.

Sir_Alex

Проверьте кто нибудь мою инструкцию. Если будет работать, я отправлю фикс дидронсам, что бы они включили его в прошивку.

SergDoc

Ну вобще дело только в скрипте, так что, я думаю, должно работать - как-то не хочется перезаливать всё снова…

Chester_kz:

После обновления все стало тип топ.

он в исходниках - это хорошо, если что, можно подправить под себя 😃

SergDoc

Так ладно прошивка собирается, бутлодырь есть, теперь надо придумать как превратить px4 в мою плату, ну или наоборот - мою плату в px4 вчера так в исходниках и не поковарялся 😦 где-то что-то должно быть типа board - со всеми причендалами?

mahowik:

не хватает некоторых (до мозга костей привычных) тулов и утилит…

менеджера файлового не хватает 😃 остальное всё ок, игрули через wine пашут…

Я так понимаю, что в деревню я еду без коптера 😦 только с платой и аппой на всякий случай (ну ноут понятное дело со мной)

rual:

Таймер действительно надо было поделить.

я так делал:

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);
}
SergDoc

бутлодырь я ковырять начал - по ходу надо только изменить порты светодиодов, усарта и детекта усб тут: github.com/PX4/Bootloader/blob/master/main_f4.c ну естественно разобраться какая плата включена, можно по идее и свою добавить 😃 а плату назовём PX12AIO - смеюсь конечно 😃
а по сути надо только компас повернуть на 90 градусов, переделать шимы (попотеть придётся) светодиоды само собой - проверить шины что-бы всё на нужных висело, еепромка думаю пойдёт та что и стоит 512-я (если она вообще используется)… с одной стороны вроде не страшно - но это пока не копал…

rual
SergDoc:

теперь надо придумать как превратить px4 в мою плату,

Пока мне это просто представляется, нужно переделать функции-точки входа в ХАЛ под твою плату. Итого 4 файла ХАЛ АналогИн, ПВМОут ПВМИн, ещё ГПИО - в них правятся только количественные данные (входы/выходы ШИМ, АЦП, порты), а вот в вызываемых из них функциях
здесь github.com/diydrones/PX4Firmware/blob/…/fmu.cpp
и здесь github.com/diydrones/PX4Firmware/tree/…/px4io
и здесь github.com/diydrones/PX4Firmware/tree/…/stm32
нужно править код.

SergDoc:

я так делал:

Я обобщённых функций не делаю, все низы пишутся индивидуально под плату, абстрактны только летательные объекты.

ЗЫ: немного наврал выше, править нужно всё вот здесь github.com/diydrones/PX4Firmware/tree/…/drivers

В выходные будет некогда, но “пустышку” с халом постараюсь собрать.

SergDoc

не ну понятно что px4 надо основательно переделать - и потом уже не трогать больше а хал написать под себя, и потом спокойно портировать прошивки 😃

ладно тогда я займусь пока бутлодырем 😃

у меня-то по простому было сделано мухи отдельно, котлеты отдельно шимы на моторы отдельно на сервы отдельно, а тут бог его знает, но трёху мне надо запустить полюбому… на квадрик длинны проводов не хватит пока и носить его неудобно… а трёха в сумке умещается - основной критерий, пока не вымудрю складную раму типа этой

rual:

Итого 4 файла ХАЛ АналогИн, ПВМОут ПВМИн, ещё ГПИО - в них правятся только количественные данные (входы/выходы ШИМ, АЦП, порты)

это в AP_HAL_PX4?

rual
SergDoc:

шимы на моторы отдельно на сервы отдельно,

Тут проблемы нет, есть уровень абстракции, а в железе один таймер на моторы 400Гц, другой на сервы 50Гц, если серва быстрая, то всё на один таймер можно вешать.

Sir_Alex

Может имеет смысл, сразу заложить возможность работы через CAN протокол?

SergDoc

А у кого регули поддерживают данное мероприятие? у меня на плате если использовать ppm-summ то выводы can свободны… как и i2c1
в новой версии есть возможность вывести вообще отдельную шину ни на что не задействованую…

Sir_Alex
SergDoc:

А у кого регули поддерживают данное мероприятие?

Ну точно эти поддерживают: viacopter.eu/…/autoquad-esc32-multicopter-store
Наверное и другие потихоньку будет делать.
Можно подвесом управлять по CAN, а то сейчас и связи обратной с подвесом нету да и PWM выходов как всегда не хватает.

SergDoc

так есть маленький проблем - у px4 кварц на 24МГц надо найти system_stm32f4xx.c или как там у них это называется, в бутлодыре пока не нашел 😦 надо искать где задаётся частота кварца ибо поменять его не на что 😦

Sir_Alex
SergDoc:

так есть маленький проблем - у px4 кварц на 24МГц надо найти system_stm32f4xx.c или как там у них это называется, в бутлодыре пока не нашел надо искать где задаётся частота кварца ибо поменять его не на что

~/PX4Firmware/nuttx/configs/px4fmu/include/board.h

SergDoc

ага в бутлоадере тоже нашел main.c - OSC_FREQ

Бутлодырь я сделал, плата определяется в винде по усб как px4 com11 светодиодики работают поменял частоту кварца под свою плату светодиоды свои подсунул, лапу детекта усб и первый усарт сделал так же под неё родимую:

SergDoc

если я правильно понял, то px4 ставится вверх ногами, а следовательно с датчиками придётся помучаться? или в арду нет?

Sir_Alex
SergDoc:

если я правильно понял, то 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 соориентированы по разному. Тогда еще надо подкрутить ориентацию компаса (то же есть в параметрах)

SergDoc

компас да на 90 градусов развернуть надо…

ага надо поработать над светодиодами - они наоборот… в версии 1.7 PX4 с питания зацеплены… а то народ напугается - error светится 😃 хотя ошибок то нет…