Блок схема алгоритма полетного контроллера.
- Войдите на сайт для отправки комментариев
Сб, 04/02/2017 - 18:25
Нужно найти блок схему алгоритма полетного контроллера (любого). Все это нужно для понятия построения алгоритма управления квадрокоптера на ардуине.
чувствуется старый опытный квадрокоптец)))
Вот реализация самолёта на US. а чертить схемы мне лень.
Этот код работает в Unreal Engine любой версии. Чтобы испытать его, нужен любой нестатический актор, например родитель класса Actor или любые его субклассы кроме Decoration, короче любой актор у которого bStatic=false и bMovable=true.
Как написано в коммертарии, для коптера не крутим рули а замедляем/разгоняем двигатели. Существует два кода коптеров, один называется плюс (+), там один двигатель крутится медленнее всех, один быстрее всех, два других на оборотах посередине, обеспечивают высоту. Этот вариант проще реализуется но даёт меньшую скорость. Второй вариант называется крест (х), в нём два двигателя крутятся более медленно, два более быстро, плюс в зависимости от курса ещё есть разница в оборотах быстрых и медленных двигателей. Сложнее код но больше тяга, в соревнованиях используется именно этот вариант.
Если непонятно как это использовать и чем заменить тригонометрию normal(), rotator(), имеющуюся в коде U, то вот как это делается:
Пусть есть две точки, одна собсно самолет, другая пункт назначения. Проведем от самолёта прямую в сторону курса (вектор курса), не факт что пункт назначения на нем окажется. Теперь проведём прямую к пункту назначения, а на векторе курса в плоскости перпендикулярной этому вектору нарисуем "экран" с координатной осью (типа вектор курса это карандаш, который надо воткнуть в лист бумаги, лист будет координатной сеткой). Точка, в которой курс пересекает лист - ноль. Точка на векторе курса, точка самолёта и точка пункта назначения образуют с двумя этими векторами прямоугольный треугольник, угол в котором можно найти зная длину векторов; либо можно крутить рули просто до тех пор пока расстояние между точкой, пересекающей координатный лист и вектором проложенным к пунткту назначения не станет как можно ближе к точке нуля (точке пересечения вектора курса с координатным листом). Собственно, расстояние между нулем и точкой пересечения вектора к пункту назначения и есть третья сторона треугольника, из которого находится угол, на который надо повернуть курс чтобы лететь к объекту.
Фухх, надеюсь понятно.
Если вообще не доходит, то делайте просто систему, в которой 4 ручки управляют газом двигателей, тогда будет взлет - все 4 поднимаем, посадка опускаем, вперёд - две посередине добавляем, крайние убираем, назад наоборот, налево - правые не трогаем левые одну меньше другую больше, направо - то же самое но на правых, левые не трогаем. И фсё :)
Вот реализация самолёта на US. а чертить схемы мне лень.Этот код работает в Unreal Engine любой версии.
Оч познавательно. А на алголе нет аналогичного ;)
или алкоголе. это как esp. или как там называется в машинах на поворотах: или тормозить колеса все кроме..., или наоборот увеличивать крутящий момент всех кроме... конечно всех пропорционально, тригонометрия типа того. хотя наверно и так все знают
Пропорционально - главное. Тогда и Unreal Engine любой версии на квадрокоптер годится;)
Программисты из Анголы, программируют в Алголе, расслабляясь алкоголем.