Автопилот Arduplane - открытое ПО

Serj=
Rom111:

В чём может быть причина

а кнопочка Enable Yaw нажата?

RedSun
alexeykozin:

вчера шерстил прошивки вдоль и поперек пилот2.6 показался примитивным, пилот2.7 дрожит как шальной, это не только напрягает внешне и приводит к более быстрому расходу батареи но и наводит на мысль что есть бага,
насколько я понял народ пишет что это изза того что код неоптимален, дрожание вызвано тем что пилот не успевает отрабатывать и сериал и прерывания в необходимом ритме.

Мне удалось практически задавить дрожание и сохранить приемлемую динамику для моего сочетания серв и рулей, усредняя сигнал на сервы по последним 3 не то 4 циклам. Меньше - дрожит, больше - тупит. Но, еще раз повторюсь - это для моего ероплана, у других может быть по другому. Это. конечно, лечение симптомов, а не болезни…
Поскольку дайдронцы, похоже, первый пилот забросили окончательно, и новых прошивок скорее всего не будет, код можно ковырять смело. Есть идея подключить IMU по I2C, освободив приемную сторону последовательного порта для общения с наземкой. Этот вариант в wiicopterе работает очень даже быстро.
Ну и с оптимизацией. Надо или вынести напрочь все рудименты вроде поддержки пирометров и непосредственной работы с GPS из кода пилота, или оставить их только внутри #ifdefов. Ну и затащить проект в нормальную оболочку, чтобы проверить и вычистить все неиспользуемые переменные, функции и ссылки…

alexeykozin
RedSun:

Есть идея подключить IMU по I2C, освободив приемную сторону последовательного порта для общения с наземкой. Этот вариант в wiicopterе работает очень даже быстро.
Ну и с оптимизацией. Надо или вынести напрочь все рудименты вроде поддержки пирометров и непосредственной работы с GPS из кода пилота, или оставить их только внутри #ifdefов. Ну и затащить проект в нормальную оболочку, чтобы проверить и вычистить все неиспользуемые переменные, функции и ссылки…

прям мои мысли. сделать иму ведомым устройством а чтобы пилот запрашивал нужные ему данные, убрать и пиродатчики и все жпс кроме иму! ведь флай-бай-вире нафиг не уперся - вся суть автопилота в стабилизации.И наоборот подключить осд ремзиби в качестве дополнительной опции GGS

Причину дрожания прошивки 2.7 нашел (этой ночью, и она явная и видна как бревно в глазу!!!), и даже залатал но попутно обнаружено еще несколько явных баг,
попробую все их исправить, откалибрую и выложу на обсуждение

помимо этого, насколько я понял из форумов (ардуино и разработчиков ардупилота) проблема сериал-порта как “пожирателя ресурсов” решена и использована в иму - это подключение fastserial библиотеки на аппаратный ком порт, как утверждается свежая библиотека не только менее ресурсоемкая но и с асинхронным буффером тоесть - вот оно счастье - не будет ошибок чексум, подключается двумя строками - можно подглядеть в иму 1.8.2

моя версия уже почти созрела, но одному мне сложновато комплексно оценить и протестировать как отразятся изменения на остальных процессах
(я хоть и программист по специальности, но C++ не мое, дай мне бэйсик или tsql а от этих кракозябров тошно уже) Поэтому если кто “могет”, я могу поделиться бэта-версией и прокоментировать что к чему
кстати в своей прошиве пилота я сделал прием с иму числа спутников и качества GPS сигнала, качество сигнала сначала хотел писать сам, но оказалось что в последней иму есть скрытая “пропертя” у объекта жпс

RedSun

Про причину дрожания и другие баги - интересно до дрожи 😃). Я пока не нашел, хотя есть некоторые подозрения. 😦( Увы, на работе нет пилота, а дома времени 😦(
Про фаст сериал пока не думал.
Rembizi вроде как и так без особых проблем снюхивается с ардупилотом, только нужна правильная прошивка.
В каких-то сообщениях GPSа уровень сигнала и количество спутников есть, надо покурить мануал. Насколько я помню, некоторым приемникам при инициализации можно сказать список интересующих сообщений, и приемник не будет гнать остальные. Не исключено, что сообщения со спутниками просто не разрешены…
Если нужен свежий глаз - у меня их есть. На С - пишу крайние лет 20 😃)

alexeykozin

вобщем окончательно убедился что дрожание происходит изза модуля radio.pde
на тесте радио явно видна ступенчатая вибрация снятых измерений.
чтобы временно залатать проблему сделал округление “снятых значений ПВМ” с приемника так как это было реализовано в 2.6, но там еще одна бага осталась - это как раз про то что писали тут- если приемник аналоговый и ширина PWM вообще неадекватная то вместо игнорирования и файлсейф - неверные данные снимаются как значения приемника, я сначала попробовал как 2.6 сделать обернув в if с 1700 - 4000 но сервы отрубаются в крайней трети - гдето еще бага.

вот еще что на заметку - если при переходе в режим стабилизации у вас выворачивает сервы - посмотрите параметр тип приемника насколько я понял пвм бывает когда импульсы идут последовательно по времени с разных каналов а бывает синхронно.

с исправленным “тремором”
radio.pde для Ardupilot2.7 можете взять тут

blade
alexeykozin:

я понял пвм бывает когда импульсы идут последовательно

И это-абсолютно правильно: если аппаратура мегагерцовая и без РСМ- то в ней импульсы идут последовательно, как и в кодовой пачке …
А если 2,4- то там все по времени одновременно.
А что, в Ардуине это- не учтено?

alexeykozin
blade:

И это-абсолютно правильно: если аппаратура мегагерцовая и без РСМ- то в ней импульсы идут последовательно, как и в кодовой пачке …
А если 2,4- то там все по времени одновременно.
А что, в Ардуине это- не учтено?

в 2.7 учтено но вычисляется не автоматом, а задается конфигурационной константой

#define RADIO_TYPE 0 // 0 = sequential PWM pulses, 1 = simultaneous PWM pulses

RedSun
Rom111:

Всем привет! Подскажите, пожалуйста, у меня ArduIMU v2 залил прошивку 1.7 При тестировании в ArduIMU Test жёлтый самолетик вращается только вокруг осей X и Y. В строке Z Yaw цифры меняются, но самолет не вращается. В чём может быть причина, неисправен гироскоп?

В конфиге прошивки 1.8 есть параметр, что-то типа SPEED_FILT. Смысл его в том, что угол рыскания не будет измеряться на неподвижном самолете, а только по достижении скорости не ниже указанной. Посмотрите, мож у Вас тоже есть что-то подобное и оно ненулевое ?

RedSun
alexeykozin:

с исправленным “тремором”
radio.pde для Ardupilot2.7 можете взять тут

Посмотрел - по ссылке лежит исходный дистрибутив ArduIMU 1.8.2 и ArduPilot 2.7.1. Никаких доработок не видать…

alexeykozin
RedSun:

Посмотрел - по ссылке лежит исходный дистрибутив ArduIMU 1.8.2 и ArduPilot 2.7.1. Никаких доработок не видать…

Прошу прощения, действительно не тот пакет попал при архивировании, перезалил

вот фрагмент радио

void read_radio()
{
//Filter Radio input
//timer1diff -= 46; //if no filtered - tremor
//ch1_temp = timer1diff * .5; //if no filtered - tremor
ch1_temp = (float) ch1_temp *.8 + ((float)timer1diff - 46)*.1;

//timer2diff -= 38; //if no filtered - tremor
//ch2_temp = timer2diff * .5; //if no filtered - tremor
ch2_temp = (float) ch2_temp *.8 + ((float)timer2diff - 38)*.1;

timer3diff += 10;
ch3_raw = timer3diff * .5;
radio_in[CH_THROTTLE] = (float)radio_in[CH_THROTTLE] *.9 + (float)timer3diff *.05;
throttle_failsafe(timer3diff/2);
radio_in[CH_THROTTLE] = constrain(radio_in[CH_THROTTLE],radio_min[CH_THROTTLE],radio_max[CH_THROTTLE]);

// Rudder with filter
radio_in[CH_RUDDER] = (float)radio_in[CH_RUDDER] *.9 + ((float)timer4diff + 40)*.05;

// Rudder with no filter
//radio_in[CH_RUDDER] = timer4diff * .5;

alexeykozin

а у кого нить не завалялось ссылки как самостоятельно сделать трубки для датчика воздушной скорости?

blade
alexeykozin:

а у кого нить не завалялось ссылки как самостоятельно сделать трубки для датчика воздушной скорости?

Дык, берёшь сломанную телескопическую антенну (а на Митино- их сейчас и целые рублей по 30 продают)- и паяешь мощным паяльнико с кислотным флюсом: www.reaa.ru/yabbfiles/…/Pito_800x539_001.jpg
D :принимаем равным 6 мм…
Со сгибанием под 90*-можно не мудрить, он и с прямыми трубками дивно работает 😃
Тем более, его всё равно надо в лобик консоли и подальше от винта вклеивать .

alexeykozin

спасибо.
ставиь буду на самоль с передним винтом, видимо надо на крыло куда - нибудь выносить…
а силиконовую трубку чем из подручных материалов можно заменить?

RedSun

Силиконовой трубкой для топлива из модельного магазина. Силиконовой трубкой от капельницы. Трубкой из непонятного материала из ремкомплекта омывателя стекол в автомагазине. Термоусадкой, если прямая.
На самом деле, колхозить настоящую трубку Пито особенного смысла нет. Часто просто делают трубочку на напорный (верхний) патрубок датчика, а второй патрубок оставляют неподключенным. Ошибка невелика.
И еще. Датчик давления выдает сигнал порядка единиц милливольт. Если пытаться выносить его куда-то, нужно очень внимательно защищаться от наводок и прочих помех…

alexeykozin
RedSun:

Датчик давления выдает сигнал порядка единиц милливольт. Если пытаться выносить его куда-то, нужно очень внимательно защищаться от наводок и прочих помех…

я так и подумал, думаю поставить его рядом с ИМУ и соединить экранированной жилкой

Syberian

Народ, чем отличается ардупилот мега 2.24 и выше от 2.12? Чего там суперкрутого появилось?

alexeykozin

про 2.24 пишут:
here’s also a new version of APM in the Mission Planner (It’s still showing as 2.23, but we’ll increment that display to 2.24 shortly) as well as for download. This fixes all sorts of subtle bugs, including EEPROM corruption, memory overflows, Xbee bricking, etc. You really want these–trust me. Remember that you must go through a board reset/setup again after loading the new code.
в коптере доделали стабилизацию камеры
и еще вродебы связано с переездом на новое хранилище кода
инфа отсюда: diydrones.com/…/new-apm-and-arducopter-code-git-an…

вопросик
кто нить пробовал маленький ардупилот в хоть в каком нибудь симуляторе?
где взять совместимую со стандартной ardupilot 2.7 версию приложения транслирующего данные на x-plane (или посоветуйте любой другой работоспсобный комплект софта под винду)
проблема в том что ardupilotsim выложенный на офсайте при попытке двигать джойстиком выдает неадаекватные отклонения на своих индикаторах - либо пульсации либо вместо газа руддер и соответственно модель в xplane также дергает рулями при том что с сервами все в порядке (у меня windows7 rus)
, с линуксовым перловским также не смог разобраться как его запустить под виндой

skydiver
Syberian:

Народ, чем отличается ардупилот мега 2.24 и выше от 2.12? Чего там суперкрутого появилось?

Из крутого:
Fly to here
point camera here
Остальное в основном это исправление багов.

alexeykozin
skydiver:

Из крутого:
Fly to here
point camera here

а как это выглядит функционально?