OSD на ATmega1281

ubd

Ну сильно круто… И не к чему пока. Давайте этот проект до ума доведём…

korall

А собственно чего Вы хотите получить от автопосадки? В действующем варианте она и так достаточно не плохо работает для поляны радиусом в км. ,а в стремном месте я бы не рискнул ей доверится, точнее и безопасней руками. Если авто-определение ВПП не сама цель, то что может быть просче и надежней, чем задать на карте через конфигуратор( от которого Ваш новый алгоритм не избавляет) точку и направление, предварительно визуально оценив обстановку,тем самым в двое увеличев точность предполагаемого места посадки, что в условиях сложного ланшавта большой плюс.

msv

Меня бы устроил существующий алгоритм (там все же точность посадки поменьше км 😃 ), если бы не наш холмистый рельеф местности, для которого важно предсказуемое направление посадки. Связываться с абсолютными координатами в модельном АП считаю идеологически неправильно… Все эти карты, полеты по точкам, указания целевых координат посадки… ИМХО Ну не должно этого быть в хоббийных самоделках с открытым кодом… Надеюсь поймете и простите… 😃

korall:

В подтверждении полученных параметров настройки в виде сообщений на ОСД не вижу смысла, зачем?

Так а в чем смысл обратного канала?

ubd

Если авто-определение ВПП не сама цель, то что может быть просче и надежней, чем задать на карте через конфигуратор( от которого Ваш новый алгоритм не избавляет) точку и направление, предварительно визуально оценив обстановку,тем самым в двое увеличев точность предполагаемого места посадки, что в условиях сложного ланшавта большой плюс.

Сильно много хочется и сразу… Посмотрим как будет работать этот алгоритм посадки. А потом уже делать выводы.
Честно, старым алгоритмом посадки пробовал пользоваться всего один раз, и не понравилось, т.к. сильно не предсказуемо куда он сядет. А так всегда в ручную сажу, т.к. рельеф местности холмистый. Но теперь, когда точку посадки можно примерно определить и задать вектор взлёта, он же примерно вектор посадки, это уже интересно. Можно пользоваться.

Я то же мечтаю о полётах по точкам, и что? Проект постоянно развивается, всё не сразу…

korall

Согласен, непредсказуемость самого процесса это самое верное определение, того чего не хватает в нынешнем алгоритме посадки.
Под поляной в км. я имел ввиду не точность самого места приземления, а площадь выполнение всех LND маневров ,когда нет уверенности что модель в процессе не зацепится за фонарный столб, не сядет на лес или охраняемую территорию, у нас хоть местность не особо холмистая, но летать приходится на весьма ограниченных пространствах, и когда самик кружа выключает мотор летя в сторону опасного объекта нервишек не хватает , чтобы не отключить этот LND и поддать газку.
Новый вариант в этом плане выглядит по интересней.

msv:

Ну не должно этого быть в хоббийных самоделках с открытым кодом

Я извиняюсь, может плохо искал ,а где с этим кодом можно ознакомится? Честно обещаю не нарушать Вашу идиологию и не реализовывать полет по точкам😁.
Если серьезно ,то планирую собрать еще один экземпляр АП и весьма заманчиво взять проц. по проще и по дешевле например 1284.

msv:

Так а в чем смысл обратного канала?

Я представляю это себе так (не уверен ,что это правильно и нужно): отправляем на борт то что хотим записать, он возвращает хеш(ну или обратно все то что принял) база проверяет что данные приняты верно и отправляет команду на запись, борт отвечает ОК. или игнорит по Т.A.

ubd:

Я то же мечтаю о полётах по точкам, и что?

Меня тоже запишите в команду мечтателей, возможно вместе мы быстрей дождемся 😁.

Пока собираю данные по наземке и думаю над механикой (уж больно стандартные сервы не внушают доверия с моей тяжелой антенной) надеюсь к весне собрать,скажите это актуальная на данный момент версия rcopen.com/forum/f8/topic162911/532 или что то уже поменялось?

ubd

Меня тоже запишите в команду мечтателей, возможно вместе мы быстрей дождемся

Нас уже двое…

Пока собираю данные по наземке и думаю над механикой (уж больно стандартные сервы не внушают доверия с моей тяжелой антенной)

Я уже выкладывал свою конструкцию наземки, но в другом форуме. Кинь мне в личку почту, я чертежи своей наземки кину и фотки.

скажите это актуальная на данный момент версия OSD на ATmega1281 или что то уже поменялось?

А по древнее не мог найти? Это ещё с пиродатчиками… Причём без вертикальной пары.
Вместе с наземкой вышлю последнюю версию АП.

msv

Какие пиродатчики, это же наземка… Вроде последняя.

lis713
ubd:

Нас уже двое…

C какого двоя? Сергей, опять считать разучился?

msv

Сергей Dacor, у тебя вроде же есть другие АП? В них есть точки? Часто ими пользуешься?
Вспоминаю как Тимофея уламывали… Ну сделал он в конце концов ( у него бизнес, пришлось). Ну и что? Так… кое-кто побаловался и на этом все закончилось…
ПОЧЕМУ, вы не хотите управлять вашими моделями? Ведь в FBW это так просто и ненапряжно… Сознательные вылеты за зону действия РУ/видео имхо не аргумент, а верх расп безалаберного отношения к полетам…
Лучше помогите решить задачку для 8-го класса:
Есть прямая через начало координат, определенная точкой x1y1.
Есть точка с координатами x2y2 в общем случае не на этой прямой.
Найти координаты точек на этой прямой, удаленные от x2y2 на расстояние L…
Желательно не использовать тригонометрию и оптимизировать по количеству умножений/делений.

alexmx
msv:

Лучше помогите решить задачку для 8-го класса:
Есть прямая через начало координат, определенная точкой x1y1.
Есть точка с координатами x2y2 в общем случае не на этой прямой.
Найти координаты точек на этой прямой, удаленные от x2y2 на расстояние L…
Желательно не использовать тригонометрию и оптимизировать по количеству умножений/делений.

Сергей посмотрите библиотеку WildMagic по этой ссылке www.geometrictools.com/Downloads/Downloads.html (файл Wm5IntrLine2Circle2.cpp)
Она с исходниками и код написан очень оптимально.
И плюс есть теоретические выкладки, что тоже полезно для понимания.
bool IntrLine2Circle2::Find (const Vector2& origin, const Vector2& direction, const Vector2& center, Real radius, int& rootCount, Real t[2])
{
// Intersection of a the line P+t*D and the circle |X-C| = R. The line
// direction is unit length. The t value is a root to the quadratic
// equation:
// 0 = |t*D+P-C|^2 - R^2
// = t^2 + 2*Dot(D,P-C)*t + |P-C|^2-R^2
// = t^2 + 2*a1*t + a0
// If two roots are returned, the order is T[0] < T[1].

Vector2 diff = origin - center;
Real a0 = diff.SquaredLength() - radius*radius;
Real a1 = direction.Dot(diff);
Real discr = a1*a1 - a0;
if (discr > ZERO_TOLERANCE) {
rootCount = 2;
discr = Sqrt(discr);
t[0] = -a1 - discr;
t[1] = -a1 + discr;
} else if (discr < -ZERO_TOLERANCE) {
rootCount = 0;
} else // discr == 0
{
rootCount = 1;
t[0] = -a1;
}

return rootCount != 0;
}

Dacor
msv:

Сергей Dacor, у тебя вроде же есть другие АП? В них есть точки? Часто ими пользуешься?

Во всех имеющихся АП нет функции полета по точкам (((. А попробовать хотелось бы.

Да и как звучит:" А я сам себе АП спаял. С возвратом, авто взлетом и посадкой. Да, кстати, он и по точкам летать может. Правда прошивка и разработка не моя, но сделал то все своими руками…"

Это все конечно шутка ))).

ubd

Во всех имеющихся АП нет функции полета по точкам

А в Смалтиме старом разве нет?

Dacor

А у меня нет СмалТима - я не в курсе.

Frr
msv:

Лучше помогите решить задачку для 8-го класса:

Для 8-го наверно так:
Решаем систему равнений {1-е: (x2-x)^2+(y2-y)^2=L^2; и 2-е: x/x1=y/y1; } относительно x,y.
Получаем: x = (±sqrt((y1^2+x1^2)*L^2-(x1*y2-x2*y1)^2) + y1*y2+x1*x2)*x1/(y1^2+x1^2);
соответствующий y=x*y1/x1;
На С:
float x1, x2, y1, y2, L; //на входе
float xy[2 + 2]; //результат
int zad() { //возвр. кол-во решений
float r1, d, a, b;
r1 = x1 * x1 + y1 * y1;
if (r1 <= 0.0)
return -1; // прямая не определена
d = x1 * y2 - x2 * y1;
d = r1 * L * L - d * d; // детерминант
if (d < 0.0)
return 0; //нет решений
a = y1 * y2 + x1 * x2;
if (d == 0.0) { //одно решение
b = a / r1;
xy[0] = b * x1;
xy[1] = b * y1;
return 1; //кол-во решений =1
}
//иначе два решения, d>0
d = sqrt(d);
b = (a + d) / r1; //первое решение
xy[0] = b * x1; //это x
xy[1] = b * y1; //это y
b = (a - d) / r1; //второе решение
xy[2] = b * x1; //это x
xy[3] = b * y1; //это y
return 2; // кол-во реш.=2
}
Подходит?

Иван

Всех с прошедшими!!!
по поводу полёта по точкам, моё мнение - согласен с Сергеем игрушки это, либо спец техника. Самое важное от АП - нужно чтобы “домой” правильно возвращался, причём с вероятностью максимально близкой к 100%

msv
Frr:

Для 8-го наверно так:

Систему уравнений составил такую же. Решение немного другое получилось, наверное где-то ошибся.
Хотел использовать такой подход для последней фазы посадки: курс держать на точку, находящейся на прямой взлета на некотором отдалении от текущей позиции самолета. Что-то слишком навороченная математика получается (ведь почти все придется в long-ах считать, это в меге довольно затратно по времени). Поэтому пока буду делать все в углах: изначальный нужный угол посадки через точку старта считается один раз после старта, текущий угол на точку старта тоже уже считается (для OSD). Осталось найти разницу этих углов и по расстоянию до точки старта (тоже уже считается) элементарно вычислить расстояние (отклонение) до прямой, по которой должен лететь самолет. По этому отклонению простой пропорцией корректировать курс.
В любом случае, спасибо за работу, возможно еще где-то пригодится…

Иван:

по поводу полёта по точкам, моё мнение - согласен с Сергеем игрушки это

Автопосадка в принципе то же баловство… Просто интересная задачка… 😃

ubd

Автопосадка в принципе то же баловство…

Для некоторых не баловство. Есть те кто вообще сажать самолёт не умеет, они то и пользуются посадкой, всегда в автомате. Т.к. вероятность что он его грохнет, меньше…
Ну а взёт, это вообще тема. Просто удобно, когда один в поле.

msv

Ну кто сажать не умеет, не успеет настроить АП…😃

Хочу посоветоваться… Сделал форсирование газа по мин скорости. Реализация пока такая:
В конфигураторе задаются две мин. скорости (GPS и баро).
Если соответствующая текущая скорость (баро, для предотвращения сваливания, или GPS, для движения против ветра) оказывается меньше этих уставок, газ начинает возрастать со скоростью, задаваемой в конфигураторе. До какого значения увеличивать, до абсолютного максимума или максимальной в конфигураторе?
Если скорость становится больше уставок, газ уменьшается до нормального значения. Нужен гистерезис (скока?), или пусть играет газом пытаясь удерживать желанную скорость?
В случае если самолет упадет, к сожалению сначала врубится форсаж, и только через 4сек получения нулевой GPS-скорости, двигатель будет остановлен (если еще будет что останавливать…)… И вообще… что-то, как-то все не нравится мне это…