Програмен код - направи си сам ъгъл
Тази публикация е посветена на изучаването на Ardupilot 2.8 код (и наследени недостатъци от предишни)
- Изучаване на кода, за да се опишат характеристиките на използването на устройството
- Идентифициране и отстраняване на грешки
- Изчистване на остарялата функционалност, за да освободите място в паметта
За да проверите направените изводи,
- Десктоп XPLANE 9 с модел PT60RC
- ArdupilotSim - за комуникация на симулатора и usb-сериала
- arduino duemilanove - като usb-сериен адаптер
- Дъска ArduPilot-v15 с допълнителни дроселни и кормилни връзки
- Ardupilot 2.8 бета фърмуер
Идентифицирани недостатъци:
- Значителна грешка в навигацията, водеща до движение „по дъга“ по точки (фиксирана в бета 4)
- Рязко хвърляне на модела в режим на кацане при достигане на координатите на точката, посочена като точка на кацане (елиминиран в бета 5 чрез постепенно увеличаване на ъгъла)
- Грешка при спирането на газа от канала за ръчно управление в последния етап на автоматичното кацане (фиксирана в бета 5)
- Грешка при навигация по надморска височина от около -20 m (фиксирана в бета 5, въведен PID коефициент в зависимост от разстоянието от точката)
- Грешка при навигация в посока от порядъка на +/- 5 градуса (фиксирана в бета 5, въведен PID коефициент в зависимост от разстоянието от точката)
- Рязки маневри в близост до точки (елиминиран в бета 5, въведен PID коефициент в зависимост от разстоянието от точка)
- Преминаващи неточни точки (не фиксирани)
- Откриване на загуба на сигнал от предавател за аналогов приемник, който не е оборудван с Failsafe (не е разрешен)
- Изчисляването на курса спрямо положението на фюзелажа на самолета (жироскопа) не отчита масата на модела, скоростта, т.е. момент на инерция (това е особено забележимо, ако зададете голям коефициент на усилване в канала на руля без изглаждане) (не елиминиран)
- Без да се взема предвид изместването на домашната точка. (не елиминиран)
Кодови алгоритми
Основни принципи.
Особеностите на хардуерната платформа на arduino са, че процесорът има едно ядро, нито средата за разработка, нито хардуерната платформа поддържат многопоточност, вместо това се прекъсват и се използват два основни цикъла за настройка и цикъл. В този случай езикът за програмиране C ++, ако не разбирате конструкцията на езика, отговорът трябва да се намери в ръководствата и форумите за този език.
Основният модул се счита за pde файл с име, което съвпада с името на папката, в която е вложен, в началото на този файл има декларация за библиотеки и глобални променливи в съответствие с изискванията на C + +, след това две процедури за настройка и цикъл, след всяко нулиране се изпълнява първо веднъж
програмен код, записан в процедурата за настройка и след това безкраен брой пъти (или докато увисне поради грешка в кода) цикъл на процедурен код.
Кодът на ardupilot (както и сензорните платки) се прави на принципа на няколко цикъла, изпълнявани последователно, един цикъл (бърз цикъл) се изпълнява 50 пъти в секунда, вторият (среден контур) 10, функции, които трябва да се изпълняват с необходимата честота се поставят в клоновете на тези цикли