OSD на ATmega1281
Согласен, непредсказуемость самого процесса это самое верное определение, того чего не хватает в нынешнем алгоритме посадки.
Под поляной в км. я имел ввиду не точность самого места приземления, а площадь выполнение всех LND маневров ,когда нет уверенности что модель в процессе не зацепится за фонарный столб, не сядет на лес или охраняемую территорию, у нас хоть местность не особо холмистая, но летать приходится на весьма ограниченных пространствах, и когда самик кружа выключает мотор летя в сторону опасного объекта нервишек не хватает , чтобы не отключить этот LND и поддать газку.
Новый вариант в этом плане выглядит по интересней.
Ну не должно этого быть в хоббийных самоделках с открытым кодом
Я извиняюсь, может плохо искал ,а где с этим кодом можно ознакомится? Честно обещаю не нарушать Вашу идиологию и не реализовывать полет по точкам😁.
Если серьезно ,то планирую собрать еще один экземпляр АП и весьма заманчиво взять проц. по проще и по дешевле например 1284.
Так а в чем смысл обратного канала?
Я представляю это себе так (не уверен ,что это правильно и нужно): отправляем на борт то что хотим записать, он возвращает хеш(ну или обратно все то что принял) база проверяет что данные приняты верно и отправляет команду на запись, борт отвечает ОК. или игнорит по Т.A.
Я то же мечтаю о полётах по точкам, и что?
Меня тоже запишите в команду мечтателей, возможно вместе мы быстрей дождемся 😁.
Пока собираю данные по наземке и думаю над механикой (уж больно стандартные сервы не внушают доверия с моей тяжелой антенной) надеюсь к весне собрать,скажите это актуальная на данный момент версия rcopen.com/forum/f8/topic162911/532 или что то уже поменялось?
Меня тоже запишите в команду мечтателей, возможно вместе мы быстрей дождемся
Нас уже двое…
Пока собираю данные по наземке и думаю над механикой (уж больно стандартные сервы не внушают доверия с моей тяжелой антенной)
Я уже выкладывал свою конструкцию наземки, но в другом форуме. Кинь мне в личку почту, я чертежи своей наземки кину и фотки.
скажите это актуальная на данный момент версия OSD на ATmega1281 или что то уже поменялось?
А по древнее не мог найти? Это ещё с пиродатчиками… Причём без вертикальной пары.
Вместе с наземкой вышлю последнюю версию АП.
Какие пиродатчики, это же наземка… Вроде последняя.
А наземка… Пардон.
Нас уже двое…
C какого двоя? Сергей, опять считать разучился?
Нас уже двое…
+1 Четверо? )))
Ещё голосуем…
Сергей Dacor, у тебя вроде же есть другие АП? В них есть точки? Часто ими пользуешься?
Вспоминаю как Тимофея уламывали… Ну сделал он в конце концов ( у него бизнес, пришлось). Ну и что? Так… кое-кто побаловался и на этом все закончилось…
ПОЧЕМУ, вы не хотите управлять вашими моделями? Ведь в FBW это так просто и ненапряжно… Сознательные вылеты за зону действия РУ/видео имхо не аргумент, а верх расп безалаберного отношения к полетам…
Лучше помогите решить задачку для 8-го класса:
Есть прямая через начало координат, определенная точкой x1y1.
Есть точка с координатами x2y2 в общем случае не на этой прямой.
Найти координаты точек на этой прямой, удаленные от x2y2 на расстояние L…
Желательно не использовать тригонометрию и оптимизировать по количеству умножений/делений.
Лучше помогите решить задачку для 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, у тебя вроде же есть другие АП? В них есть точки? Часто ими пользуешься?
Во всех имеющихся АП нет функции полета по точкам (((. А попробовать хотелось бы.
Да и как звучит:" А я сам себе АП спаял. С возвратом, авто взлетом и посадкой. Да, кстати, он и по точкам летать может. Правда прошивка и разработка не моя, но сделал то все своими руками…"
Это все конечно шутка ))).
Во всех имеющихся АП нет функции полета по точкам
А в Смалтиме старом разве нет?
А у меня нет СмалТима - я не в курсе.
Лучше помогите решить задачку для 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%
Для 8-го наверно так:
Систему уравнений составил такую же. Решение немного другое получилось, наверное где-то ошибся.
Хотел использовать такой подход для последней фазы посадки: курс держать на точку, находящейся на прямой взлета на некотором отдалении от текущей позиции самолета. Что-то слишком навороченная математика получается (ведь почти все придется в long-ах считать, это в меге довольно затратно по времени). Поэтому пока буду делать все в углах: изначальный нужный угол посадки через точку старта считается один раз после старта, текущий угол на точку старта тоже уже считается (для OSD). Осталось найти разницу этих углов и по расстоянию до точки старта (тоже уже считается) элементарно вычислить расстояние (отклонение) до прямой, по которой должен лететь самолет. По этому отклонению простой пропорцией корректировать курс.
В любом случае, спасибо за работу, возможно еще где-то пригодится…
по поводу полёта по точкам, моё мнение - согласен с Сергеем игрушки это
Автопосадка в принципе то же баловство… Просто интересная задачка… 😃
Автопосадка в принципе то же баловство…
Для некоторых не баловство. Есть те кто вообще сажать самолёт не умеет, они то и пользуются посадкой, всегда в автомате. Т.к. вероятность что он его грохнет, меньше…
Ну а взёт, это вообще тема. Просто удобно, когда один в поле.
Ну кто сажать не умеет, не успеет настроить АП…😃
Хочу посоветоваться… Сделал форсирование газа по мин скорости. Реализация пока такая:
В конфигураторе задаются две мин. скорости (GPS и баро).
Если соответствующая текущая скорость (баро, для предотвращения сваливания, или GPS, для движения против ветра) оказывается меньше этих уставок, газ начинает возрастать со скоростью, задаваемой в конфигураторе. До какого значения увеличивать, до абсолютного максимума или максимальной в конфигураторе?
Если скорость становится больше уставок, газ уменьшается до нормального значения. Нужен гистерезис (скока?), или пусть играет газом пытаясь удерживать желанную скорость?
В случае если самолет упадет, к сожалению сначала врубится форсаж, и только через 4сек получения нулевой GPS-скорости, двигатель будет остановлен (если еще будет что останавливать…)… И вообще… что-то, как-то все не нравится мне это…
Я думаю так:
максимальной в конфигураторе?
Если скорость становится больше уставок, газ уменьшается до нормального значения. Нужен гистерезис (скока?), или пусть играет газом пытаясь удерживать желанную скорость?
Как у старого Смалтима интересно. У него по моему он играет. У него вообще, если упал то будет по потери сознания пытаться взлететь и набрать скорость. У него режима автоматического взлёта и нет. У него режим автовозврата, это и есть автоматический влёт. Т.е. включаешь его он сразу включает двигатель, и пытается лететь.
Я думаю не гистерезис нужно а временную задержку. Не важно какую скорость он наберёт, а то получается режим удержания скорости.
И вообще… что-то, как-то все не нравится мне это…
Нужно пробовать в реале. Сейчас ложно сказать как лучше. Ну и в конфигураторе что бы была возможность, отключать это хозяйство.
Конечно сложно настраивать теперь это всё. Проще как сейчас.
Ну кто сажать не умеет, не успеет настроить АП…
Факт!! 😃)
Мне бы хотелось видеть обороты двигуна, к ним наверное можно как то и общее управление прицепить, думаю этим можно переходные процессы облегчить.
У него вообще, если упал то будет по потери сознания пытаться взлететь и набрать скорость
Если ты имеешь ввиду- упал на землю- то смолтим вырубает двигатель и ни куда он не стремится взлететь.
то смолтим вырубает двигатель и ни куда он не стремится взлететь.
А ну значит у него это есть. Просто я думал, если он при включении режима RTH на земле, пытается взлететь, то он это будет делать и если упадёт. Значит в алгоритме реализован флаг полёта и флаг падения при полёте, значит АП определяет что он встретился с землёй.
Сергей, спроси у baychi, он должен знать как у Смалтима реализован алгоритм добавления газа если скорость GPS меньше минимальной.
И по какому фактору он вырубает двиг на земле, если с ней случайно встретиться.