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

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 светится 😃 хотя ошибок то нет…

SergDoc

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

mataor

кстати… по пищалке… как оказалось от нее идут довольно большие помехи на компас даже на расстоянии 2-3см.

mahowik
mataor:

кстати… по пищалке… как оказалось от нее идут довольно большие помехи на компас даже на расстоянии 2-3см.

хе! даже на 10-ти см немалые наводки… как то не мог откалибровать компас, что бы показания были линейными… убрал обычный базер, который идет от полетника (висел на проводе ~10см) и все стало пучком…

fat_hamster
mahowik:

хе! даже на 10-ти см немалые наводки… как то не мог откалибровать компас, что бы показания были линейными… убрал обычный базер, который идет от полетника (висел на проводе ~10см) и все стало пучком…

это когда он просто “висел” или когда зудел?? а как же жить без пищалки тогда? 😦