Специальные цены   новые товары
Закрытая тема
Страница 6 из 46 ПерваяПервая ... 4 5 6 7 8 16 ... ПоследняяПоследняя
Показано с 201 по 240 из 1811

flybrain. передатчик + приемник + автопилот. powered by stm32

Тема раздела Полеты по камере, телеметрия в категории Cамолёты - Общий; Ребята, вы столько страшных слов наговорили - а не поясните и мне заодно, как-нибудь посермяжнее: на входе фильтра Калмана при ...

  1. #201

    Регистрация
    28.12.2010
    Адрес
    Oulu, Finland
    Возраст
    54
    Сообщений
    600
    Ребята, вы столько страшных слов наговорили - а не поясните и мне заодно, как-нибудь посермяжнее: на входе фильтра Калмана при перевороте получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как "свернуть" шкалу и сделать непрерывной? Только, если можно, без страшных слов Хорошо, когда складываешь целые числа - и проблемы нет, после 0xFFFF следует 0. А как бы здесь извратится? Простите, если вопрос глупый - ну ни разу ни арихметик я.

  2.  
  3. #202
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от varvar Посмотреть сообщение
    Калмана при перевороте получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как "свернуть" шкалу и сделать непрерывной?
    Ё-ма-ё. Не буду более пугать народ пустой дискуссией. Автор подрастет, пооботрецца в этом вопросе и всё будет пучком.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Или ты будешь пытаться рулить в этом промежутке?
    Вам бы полетать реально, батенька. Или начать двигаться к реализации стаба. Там эти вопросы и отпадут.

  4. #203

    Регистрация
    28.12.2010
    Адрес
    Oulu, Finland
    Возраст
    54
    Сообщений
    600
    Цитата Сообщение от Drinker Посмотреть сообщение
    Ё-ма-ё. Не буду более пугать народ пустой дискуссией. Автор подрастет, пооботрецца в этом вопросе и всё будет пучком.
    эээ... Что-то не понял ответа. Откровенно говоря, меня больше волнует своя железка - поскольку тут пир горой, может и мне чего с барского стола перепадет. Или ответ уже был, да я не разглядел его за забором слов? У меня-то все значительно проще - всего одну ось стабилизировать надо, глобальных задач не решаю, в космос тоже не лечу.
    А если у кого что-то и пучком будет - я ж только рад за него. Хотя и свой пучок тоже бы неплохо.

  5. #204
    Frr
    Frr вне форума

    Регистрация
    28.02.2009
    Адрес
    Москва
    Возраст
    47
    Сообщений
    253
    Цитата Сообщение от varvar Посмотреть сообщение
    получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как "свернуть" шкалу и сделать непрерывной?
    Если вместо одной переменной "угол a" использовать пару (x1=cos(a), x2=sin(a)), то разрыва нет.
    У (sin(a), cos(a)) обе компоненты гладко растут/убывают при переходе через 180град.
    Поэтому считают в кватернионах. Вместо трех углов будет четыре переменных,
    каждая из них - "замес" из синусов и косинусов.

  6.  
  7. #205

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от varvar Посмотреть сообщение
    Фильтр от этого просто дичает
    Фильтр это просто набор операторов. Если у тебя фильтр дичает от углов, то ты неправильно модель построил.

    Самое простой вариант, если в твоей модели критично находится именно в диапазоне +180,-180 можно после всех апдейтов открутить угол в нужную зону искусственно. Но какой-то диапазон странный, обычно удобнее оперировать 0 - 360

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

  8. #206
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от varvar Посмотреть сообщение
    эээ... Что-то не понял ответа
    В самом фильтре, будь то калман, дсм и прочие, никаких разрывов нет. Разрывы получаются так сказать искусственно в процессе преобразования кватерниона, взятого из фильтра в углы эйлера. В вышеописанной байде скачок ролла с 0 до 180 град при переходе через питч 90 град очень кстати, потомучто самик в этот момент на спину ложится, а стабилизатор его тутже переворачивает в нормальное положение. Но это плюс сугубо для реализации стаба. Это какбэ по-простому я постарался объяснить.

    2 varvar и ещще нужно чотко понимать, что интерпретировать результаты работы фильтров можно по-разному. Переход на углы эйлера - один из вариантов.

    А для полетов по камере, в коей теме мы находимся, очень важна именно система стабилизации, которая не даст самику уходить за некие предельные углы по крену и тангажу (и конечно тангаж в 90 градусов тут совсем не нужен).

    Задача автопилота задавать углы относительно земли, а стаба - удерживать их. В этой задаче +-45 град по крену и тангажу за глаза хватает.
    Последний раз редактировалось Drinker; 06.03.2012 в 10:12.

  9. #207

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от serj Посмотреть сообщение
    Вообще откуда эта непонятная привязанность
    Посмотри в любой открытый код любого автопилота. Конечный алгоритм стабилизации всегда опирается на углы Эйлера при оценке положения тела. Так что это не я придумал.

    У меня персонально нет привязанности никакой. Мне просто нужны углы наклона тела ко всем трем осям + направление вперед в любой момент времени для дальнейшего программного анализа. А стандартный, общеупотребительный набор формул не дает этого сделать в любой момент времени. А то, что Дринкер считает, что наличие неопределенности положения в определенных обстоятельствах это правильно, так это его дело. Я для себя так не считаю, только и всего. Доказывать кому-то, чего-то у меня задача сейчас так не ставится. А вообще то по большому счету, у нас ведь с Дринкером разногласие не в математике или кривой реализации алгоритма вращения ( и у него и у меня все одинаково работает), у нас с ним разногласия в том как результаты интерпретировать.
    Цитата Сообщение от serj Посмотреть сообщение
    Каждый следующий угол отсчитывается от предыдущего. Они так построены
    Вообще-то изначально углы Эйлера это базис. Другое дело, вращение тела в этом базисе. Вероятно так и придется кватернион преобразовывать в читабельный вид, через расчет кватерниона вращения от предыдущего состояния к новому. Сейчас я эту тему отложил до праздников, надо получше все обдумать.
    Последний раз редактировалось AlexSneg; 06.03.2012 в 10:45.

  10.  
  11. #208
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    А то, что Дринкер считает, что наличие неопределенности положения в определенных обстоятельствах это правильно, так это его дело
    Дринкер считает, что неоправдано заморачиваться с проблемой исходя из соотношения гимор / актуальность.

    Большинство проектов летают при наличии этой проблемы. У Дринкера кстати тоже.

  12. #209

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    Большинство проектов летают при наличии этой проблемы
    Не вопрос, пусть летает. Просто я хочу решить задачу более широко и не только для FPV. Я хочу чтобы мой самолет умел летать как угодно под автопилотом. В том числе и под 90 градусов вверх и вниз.

  13. #210
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    2Алекс. А вот так нормально? Чистые повороты относительно "земли"
    Через 30 минут мона смотреть


    Тряска, как заказано

  14. #211

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    А вот так нормально?
    ДА. Если пирамида гранями не вращает (а то уж больно симметричное тело выбрал) то это как раз то, что надо. Молоток. Расскажешь как преобразовывал кватернион в углы или секрет фирмы?

  15. #212

    Регистрация
    28.12.2010
    Адрес
    Oulu, Finland
    Возраст
    54
    Сообщений
    600
    Спасибо всем ответившим. Видимо, варианта у меня два - или читать страшные слова, или оставить все как есть, тем более, что скопипасченная подпрограмма работает: не трогай технику - она не подведет. Скорее всего просто буду использовать значение -180 градусов, когда приближаюсь к этому значению. Точность "вверх ногами" мне вроде как не нужна.

  16. #213
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Расскажешь как преобразовывал кватернион в углы и
    Да

    Цитата Сообщение от varvar Посмотреть сообщение
    Видимо, варианта у меня два - или читать страшные слова, или оставить все как есть, тем более, что скопипасченная подпрограмма работает: не трогай технику - она не подведет. Скорее всего просто буду использовать значение -180 градусов, когда приближаюсь
    А подробнее?

  17. #214

    Регистрация
    28.12.2010
    Адрес
    Oulu, Finland
    Возраст
    54
    Сообщений
    600
    Цитата Сообщение от Drinker Посмотреть сообщение
    А подробнее?
    да в общем-то и описывать особо нечего - управляю я самолетиками (летающее крыло) такой штукой - Заготовка для радиоуправления на несколько километров , к которой прикручен motion plus в качестве стабилизатора. Естественно, компенсирует только порывы ветра и всякие возмущения, т.е. стабилизатором это можно назвать чисто условно. Решил все это немного переделать - Передатчик и телеметрия . Ну и заодно немного улучшить стабилизацию - чтобы видеокамеру не слишком бросало. Собственно, не потому, как надо, а потому как изготовление плат на заказ стало очень дешево.
    А так как это всего лишь хобби, и причем достаточно новое для меня - предпочитаю все сделать сам. Собственно, и крылья все вырезаны из куска пенопласта. Бюджетный вариант - из куска ценой меньше 10 евриков можно вырезать 4 крыла с размахом 1.2 м В общем, каждый с ума сходит по-своему

  18. #215
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от varvar Посмотреть сообщение
    да в общем-то и описывать особо нечего - управляю я самолетиками (летающее крыло) такой штукой
    А это причем?

    Цитата Сообщение от varvar Посмотреть сообщение
    не поясните и мне заодно, как-нибудь посермяжнее: на входе фильтра Калмана при перевороте получается разрыв - от 180 градусов до -180. Фильтр от этого просто дичает. Как "свернуть" шкалу и сделать непрерывной? Т
    Вопрос -то в чем сопссно?

  19. #216

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Между делом подключил компас. Еще более интересненько стало все работать. Исчез дрейф по yaw и ошибка после тряски почти совсем пропала. Вообщем с компасом конечно лучше, что и говорить, но уж больно зависим от разных внешних воздействий. Будем в дальнейшем как-то искать функцию компромиса между вкладом компаса и гироскопа в процесс корректировки.

    Пробовал подносить мотор к плате. Конечно магниты мотора воздействуют на компас, начинаются искажения, но не фатальные. похоже мотор должен находится от платы на расстоянии не менее 10( а лучше 15) см. Тогда я искажений практически не наблюдаю. Если удастся размещать мотор и плату на 20 см, то вообще все почти хорошо.

    Еще пробовал плату ставить с ноутом на вращающийся стул и крутил, эмитируя развороты самолета в полете. Горизонт стоит и не дрыгается. Вообщем, все даже лучше, чем я предполагал.

    Начал пробовать детектор синхры в видеосигнале. Вроде теория сходится с практикой. Прерывания пошли по синхроимпульсам. За праздники попробую забацать горизонт на экране. Сделаю видео на показать.
    Цитата Сообщение от Drinker Посмотреть сообщение
    Цитата Сообщение от AlexSneg Посмотреть сообщение Расскажешь как преобразовывал кватернион в углы и? Да
    Расскажи принцип, я дальше сам попробую.

    Цитата Сообщение от varvar Посмотреть сообщение
    Видимо, варианта у меня два - или читать страшные слова, или оставить все как есть
    Мы не можем тебе помочь до тех пор, пока ты не опишешь какие у тебя датчики, и что они измеряют. И какой процесс ты пытаешься моделировать. А умные слова придется в любом случае освоить, ибо "векторный матанализ", сам понимаешь не есть тема средней школы.
    Последний раз редактировалось AlexSneg; 07.03.2012 в 09:52.

  20. #217
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Расскажи принцип
    q.x = sin(theta/2) * axis.x
    q.y = sin(theta/2) * axis.y
    q.z = sin(theta/2) * axis.z
    q.w = cos(theta/2)

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Между делом подключил компас.
    А калиброффка?
    Яв стремицца к истинному направлению оси X относительно Севера Земли?

    Как стартует алгоритм? Яв с 0 ползет к истинному значению, или инициализация по вычисленному значению курса из показаний магнитометра?

  21. #218

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    q.w = cos(theta/2)
    интересно, обязательно попробую на праздниках.

    Цитата Сообщение от Drinker Посмотреть сообщение
    А калиброффка?
    Ну вот я как сделал? Берем платку начинаем вращать по-всякому. Цель - выискать максимумы и минимумы на максимальной чувствительности (у меня +/- 1,3 гауса шкала). Тут у меня была самая главная засада в том, чтобы параметрами смещения внутреннего АЦП побаловАться. Как оказалось с нулевым смещением, у меня очень много шума лезет. Ну у меня оказалось в отрицательную сторону надо подвинуть. Оно более менее симметрично стало по осям в смысле параметра gain. Но ноль отъехал процентов на 30. Ну вот я нашел мин и макс значения по всем осям. Соответственно вычислил bias для каждой из осей. Затем взял из ДШ сколько оно гаусов на цифру дает. Умножил. Но в результате пришел к тому, чтобы нормировку вектора прямо сразу проводить. То есть реально я себе оставил только абсолютное направление вектора. Ну в EKF оно вошло гладко, как и заказывал.
    Цитата Сообщение от Drinker Посмотреть сообщение
    Как стартует алгоритм?
    Тут да, я себе этот вопрос тоже задал, как бы тут универсально извернуться. В конечно итоге ввел в фильтр матрицу 6Х6 с нормированным вектором гравитации и магнитного поля. И собственно проблема автоматом порешалась. Я теперь стартую алгоритм. Включаю режим установки горизонта. Держу плату горизонтально и даю команду запомнить референсное значение. Оно скидывает в матрицу два нормированных вектора. А дальше EKF подхватывает и тянет кватернион состояния платформы автоматически в референсное положение. Скидывать референс или корректировать можно даже во время полета будет. И даже наверно автоматом, когда видим, что ускорение отсутствует и тушка реально перпендикулярно вектору гравитации летит. Ну то есть, уже дело техники алгоритма стабилизации. Можно будет подумать как реализовать функцию оценивающую вес компаса и гироскопа на основании скорости GPS и бародатчика.

    короче, я очень доволен результатом. И даже то, что график магнитометра все-таки не линейный по осям, но решающего значения это не имеет, так как я все равно тяну платформу в нулевое положение относительно референса. Вот оно лежит уже на столе 2 часа, но абсолютный дрейф по всем осям (самое главное по Yaw)нулевой на 100%. Чуть позже сегодня видео запишу как оно в конечном итоге работает.

  22. #219
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    И даже то, что график магнитометра все-таки не линейный по осям, но решающего значения это не имеет
    Имеет.
    Дело в том, что для акселя g всегда строго в центр земли, а вот значения по магнитометру когда он в горизонте присутствуют по всем трём осям, причем для разной местности они разные. В америке по одной из осей вообще минус.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Вот оно лежит уже на столе 2 часа, но абсолютный дрейф по всем осям
    Яв может и не плывет, но угол показывает наверняка не соответствующий действительности. Найди 0 и крутись вокруг оси Z. 90 градусов будет показывать при реальном повороте где-то в 60

  23. #220

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    q.x = sin(theta/2) * axis.x
    Ой, слушай ка, Это ж формулы преобразования вектора в q. Так ты в качестве состояния тела в математической модели системы используешь x,y,z или кватернион?
    У меня ни x,y,z ни phi, psy, theta вообще не существует. Я из кватерниона не смогу никак xyz достать.

    А ну въехал, ты типа имея гладкую theta из кватерниона обратно арксинус и арккосинус берешь. Так?
    Что-то торможу сегодня, уже праздновать начали...
    Последний раз редактировалось AlexSneg; 07.03.2012 в 14:07.

  24. #221
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    используешь x,y,z или кватернион
    Кватернион

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    А ну въехал, ты типа имея гладкую theta из кватерниона обратно арксинус и арккосинус берешь. Так?
    Ну да, в обратку.

    Только арксинус не нужен. Фету из W доставай, считай sin(Фета), ищи x, y, z

    Вот вектор и угол.
    Про нормализацию не забывай.

  25. #222

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    Про нормализацию не забывай
    Да, все. Я въехал в теорию. Спасибо. В принципе решение достаточно очевидно, надо было мне самому догадаться.

    Цитата Сообщение от Drinker Посмотреть сообщение
    градусов будет показывать при реальном повороте где-то в 60
    да, оно так и есть, и фиг с ним. Оно же в референсе помнит, что угол=60, видит ошибку по Z составляющей от этих 60, соответственно и тянет горизонт к этому углу. Я отключу гиру, аксель и оставлю только компас для теста. Сделаю видео как оно отслеживает положение по трем осям только на компасе.

    Еще раз перечитал, понял о чем ты. Ты имеешь ввиду именно реальное направление на север относительно платформы? Ну, а кто мешает, например засечь его в момент снятия референсного положения плтаформы, а потом, как начнется полет, по GPS понять какое начальное смещение было? а так, в принципе да, фиг его знает, как пользователь плату расположил. Мне кажется тут без вспомогательных манипуляций пользователя перед стартом или в последствии GPS не получится.
    Последний раз редактировалось AlexSneg; 07.03.2012 в 15:08.

  26. #223
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Ты имеешь ввиду именно реальное направление на север относительно платформы?
    Положение платформы относительно севера. Без этого навигацию для медленных и зависающих тел (коптер) не сделать. Мозг должен точно знать как расположено тело (курс) для того, чтобы вычислить в какую сторону пилить например домой или к очередной точке маршрута.
    Для самиков это менее актуально, т.к. курс можно по гпс узнать.

  27. #224

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    Без этого навигацию для медленных и зависающих тел (коптер) не сделать.
    Ну вот, а если так:
    _ _ _
    A = M*G;
    _
    где M - текущий мгновенный вектор на север
    _
    G - направление гравитации, текущее
    * - векторное произведение
    Затем:
    _ _ _
    N = A*G;

    N - должно указывать на север уже относительно текущего, мгновенного горизонта платформы

  28. #225
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    екущий мгновенный вектор на север
    Откуда он?

    Только из компаса

  29. #226

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Только из компаса, то, что ты в данный момент с компаса снимаешь. Ну ты боишься, что из за кривизны и нелинейности самого компаса будешь каждый раз разную ошибку на направлении севера иметь? Ну тогда только, если диаграмму компаса четко к шарообразному варианту приводить, как это в ДШ ST рекомендует. В принципе процедура у них описана, но больно уж геморная

  30. #227
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Ну ты боишься, что из за кривизны и нелинейности самого компаса будешь каждый раз разную ошибку на направлении севера иметь?
    Лична я не боюсь. Мой яв всегда показывает чотко. Главное хорошо откалибровать и локальное магнитное поле учесть.

    Сейчас как раз удержание направления для квадрика доделал. Вечером испытаю.

  31. #228

    Регистрация
    27.12.2000
    Адрес
    С-Петербург
    Возраст
    42
    Сообщений
    1,747
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Посмотри в любой открытый код любого автопилота. Конечный алгоритм стабилизации всегда опирается на углы Эйлера при оценке положения тела. Так что это не я придумал.

    Дык о том и речь- что надо скопировать, а потом - самому подумать. Если "все так начали делать уже 3 года как" то это не значит что так надо делать, просто так проще..

    А если начинать с первоисточников, то есть с с Шмыглевского с Бранцем- то такая мысль и в голову не придет.. Изначально БИНС разрабатывались для стабилизации космических аппаратов...

    Дринкер уже все объяснил...

  32. #229

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    41
    Сообщений
    1,497
    Насчет вращения в канале крена при вертикальном положении Х. Дринкер прав, это не проблема, по крайней мере не проблема ИНС, это особенность отображения в углах Эйлера. У себя сменил знак атан2 при переходе в Эйлер вокруг Z, и всё - более не крутится, полная идентичность реальности. Предполагаю что это зависит от порядка вращений в программе-индикаторе, типа дуги крена и курса компенсируют друг друга, хотя имеют место быть. Но если удерживать поворот точно в плоскости XZ, то смена Эйлеров происходит скачком.
    Последний раз редактировалось rual; 09.03.2012 в 19:46.

  33. #230

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от rual Посмотреть сообщение
    то смена Эйлеров происходит скачком
    Есть там зона неопределенности Roll, с математикой спорить бесполезно.

  34. #231

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    41
    Сообщений
    1,497
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Есть там зона неопределенности Roll, с математикой спорить бесполезно.
    Я не спорю с математикой, я писал что дуги имеют место быть. Весь вопрос с величиной зоны неопределенности.

  35. #232

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от rual Посмотреть сообщение
    Весь вопрос с величиной зоны неопределенности
    Алгоритм управления самолетом должен уметь работать внутри такой зоны. Вопрос в том как его этому научить? Каждый разработчик автопилота решает эту проблему индивидуально. Как это в некоторых алгоритмах происходит, я прекрасно вижу в их коде. А некоторые уже попробовали на практике.

    Небольшой отчетец по проблеме OSD.
    В принципе я научился делать развертку буфера памяти по весь экран используя аппаратный DMA через SPI порт. Сейчас осталось решить только одну проблему. В условиях многозадачности по прерываниям, когда около 5 задач одновременно хотят быть обработанными возникает задержка неопределенная в пределах 3 мкс на вход в процедуру обработки строчного импульса. Это создает эффект сдвига начала развертки. Если отключить все прерывания и оставить только видео развертку, то все ОК, на экране имеем четкий прямоугольник развертки. SPI запустил на 6Мгц, развертка будет 280 X 240 пикселов. По вертикали удобно получилось использовать одну и туже строку от четного и нечетного полукадра.

    Сейчас осталось только решить проблему таймингов в условиях множественных прерываний. Жалко, что в STM не додумались сделать фичу аппаратного старта DMA канала по переполнению таймера. Тогда бы вообще можно было чисто аппаратно развертку организовать, но такого нет. Зато есть аппаратный старт таймера по изменению фронта на внешнем пине. В принципе этого должно быть достаточно, главное сделать правильный абсолютный замер от начала строчного импульса до софтового старта DMA. Это как бы теория. На практике буду бороться с этим делом на следующей неделе.
    Последний раз редактировалось AlexSneg; 11.03.2012 в 15:03.

  36. #233

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    41
    Сообщений
    1,497
    Ответ один, максимально высоко поднять приоретет прерывания видео. У кортекса прерывания прерываний )) очень жесткие по времени. Насколько я понимаю код в обработчике компактный и невариативный, если так, то на остальных обработчиках это не скажется.

  37. #234

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от rual Посмотреть сообщение
    У кортекса прерывания прерываний
    Я знаю, и вроде выставил самый высокий на видео синхру. Но результат чего-то не очень. Буду еще дебагить этот момент, мог я накосячить с приоритетами, либо стандартная библа глючная. Запишу логи вызовов прерываний в риал тайме, проанализирую. Займусь этой темой завтра, сейчас рано выводы делать.

  38. #235

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    41
    Сообщений
    1,497
    Проблема я так понию точно привязанный к ССИ программный запуск СПИ, сам СПИ в ведущем режиме? Тут можно посоветовать использовать СПИ в ведомом режиме, с внешним поточечным тактом на SCK от таймера, запускаемым от ССИ. Нужно только снаружи проца соеденить синхру СПИ и выход меандра от таймера. Работать будет так:
    - проц, в обработчике прерывания об окончании ПДП, останавливает таймер и настраивает ПДП для вывода очероедной строки;
    - после прихода ССИ с внешней ноги запускается таймер и дает такт на синхру СПИ.
    То есть, цепочка "ССИ -> запуск вывода точек -> подгрузка очередной порции точек в СПИ" чисто аппаратная.
    Я думал у вас изначально примерно такая схема закладывалась.
    Последний раз редактировалось rual; 11.03.2012 в 21:29.

  39. #236

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от rual Посмотреть сообщение
    Тут можно посоветовать использовать СПИ в ведомом режиме,
    Ну вот где ты раньше был, когда я плату разводил а? В то время я не думал, что может такая странная проблема вылезти. Мне внутри прерывания только DMA стартовать нужно, не более того. Ну пару проверок еще, чтобы начало кадра детектировать. Реально сейчас я вижу на экране сдвиг строк на 1,5 - 2 пиксела. И это явно из за множественности и вложенности прерываний. Большие сдвиги я вчера вычистил, а вот эту мелочь не могу никак. Главное я врубиться не могу, откуда такая задержка. Прерывание от синхры идет самым высоким приоритетом, и я вижу в дебаггере, что проц реально кладет на все текущие задачи и прерывания и стартует прерывание от синхры отрабатывать. Если выключаю все прерывания, а оставляю только видео синхру, то сдвига пикселов нет - на экране чистый, идеальный прямоугольник от развертки. (Кстати зазора при переходе от одного байта к другому нет в отличие от атмеги. То есть, имеем засветку 100% без разрыва как по вертикали так и по горизонтали.) Ну не должно оно так долго переходить на прерывания, что разница в 2 пиксела получается, не могу в это поверить. Надеюсь, что сидит где-то мой косяк.

    Твою идею я обязательно попробую реализовать. Мысль очень здравая. Ща прикину как там таймеры каскадом засинхронизировать и какие пины у меня свободны по схеме. Никогда не пускал SPI в слэйве, сейчас доку открою. Мне кажется синхры там недостаточно, надо еще NSS сигнал дергать.

  40. #237

    Регистрация
    26.04.2011
    Адрес
    Киев, Украина
    Возраст
    36
    Сообщений
    112
    хм.. Проект - амбициозен. Интересно наблюдать за тем, что сам, год назад, решал такие проблемы). Автор - не здавайся, и у тебя получится!

  41. #238

    Регистрация
    19.04.2010
    Адрес
    Ханты
    Возраст
    41
    Сообщений
    1,497
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Ну вот где ты раньше был, когда я плату разводил а?
    )) ну дык, я на твою ветку два дня назад наткнулся.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Мне внутри прерывания только DMA стартовать нужно, не более того.

    http://www.gaw.ru/html.cgi/txt/doc/m...rh/2_4_5_2.htm

    Вот в чем дело, прерывание прерывания занимает от 7 до 18 циклов, т.е. дрожание фазы в 11 циклов, при 166МГц это +-6.6е-8 сек, как раз примерно разбег в 2.5 точки. Это фича железная, в лоб её не обойти.
    Если всё же есть желание удалять аппендицит через нижнее отверстие организма, то можно сделать так:
    - на предыдущем ССИ пускаем таймер на длину строки;
    - по перегрузу таймера запускается обработчик, в котором есть петля ожидания ССИ следующей строки;
    - на конец строки +-6.6е-8 сек гарантировано будет вызвано твоё прерывание с ожиданием ССИ, и по приходу запустит ПДП.
    В итоге к приходу ССИ проц готов и код неопределенной длинны выполнятся не будет, но платим мы за это пустыми циклами в петле. Кста, в петле нужно сделать отсечку по времени в случае не прихода ССИ, иначе вся система зависнет в случае сбоя видео.

    ps: посмотрел внимательно описание, высокоприоритетное прерывание должно начать обслуживаться гарантированно за 12 циклов , эта хз ... Возможно арбитраж на шинах с другими ПДП виноват....
    Последний раз редактировалось rual; 12.03.2012 в 13:24.

  42. #239

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от rual Посмотреть сообщение
    Если всё же есть желание удалять аппендицит через нижнее отверстие организма, то можно сделать так
    Я еще раз проштудировал ДШ. Есть решение еще более элегантное.
    Берем TIM8, оно у меня на схеме уже имеет вход, на который video sync уже заведен. Настраиваем его в мастер режим one-pulse mode.
    Далее берем TIM2. У него есть 4-й канал (pin30), замыкаем его с SPI2_SCK (pin 29). Они рядом, это просто перемычку на плате посадить.
    Теперь берем и внутри кристалла подтыкаем выход мастера TIM8 на вход триггера TIM2. TIM2 настраиваем в slave gated mode на входе, и PWM 0.5 на выходе 4-ого канала. TIM8 настраиваем на генерацию положительного импульса от первого восходящего фронта строчного импульса и задержкой в 4мкс(это отрегулируем) и окном в 50 мкс+некоторая дельта(подберем экспериментом). Внутри этого положительного окна будет каскадом запущен TIM2, который начнет генерацию меандра на SPI2_SCK. Количество битов и частоту можно будет вообще плавно регулировать чуть ли не по 10нс. На прерываниях по окончанию DMA останавливаем TIM2 и перезаряжаем DMA до следующего строчного видео импульса.
    А в теории, если с точностью до бита подобрать окно для TIM2 можно даже DMA не перезаряжать на каждой строке, а тупо ждать процесса до конца полукадра. Оно само будет на следующем кадре продолжать автоматом буфер дальше выводить. И только вконце всего полукадра, опять включать прерывания от синхры и ловить начало кадра, чтобы DMA и таймеры перезарядить. УРА! УРА! И надо всего лиш две соседние ножки замкнуть, и MOSI с MISO перемкнуть, они тоже соседние. И мы реально можем получить почти 100% аппаратную развертку и только десяток раз прерываться на распознавания начала полукадра.

    Блин, у меня у же свербит, до дома не дотерплю, хочу уже попробовать
    Последний раз редактировалось AlexSneg; 12.03.2012 в 14:02.

  43. #240
    msv
    msv вне форума

    Регистрация
    05.03.2008
    Адрес
    Новокузнецк
    Возраст
    55
    Сообщений
    2,367
    Цитата Сообщение от project Ikar Посмотреть сообщение
    хм.. Проект - амбициозен.
    А сколько их было?.... И где они щас?... Вывод: Миром правит Тимофей!

Закрытая тема

Похожие темы

  1. Продам Модуль передатчика, приемник, антену
    от Vertolet4ik в разделе Барахолка. Аппаратура
    Ответов: 2
    Последнее сообщение: 13.12.2011, 10:43
  2. Продам LRP C3-STX Pro (передатчик+приемник)
    от rolic в разделе Барахолка. Аппаратура
    Ответов: 4
    Последнее сообщение: 20.09.2011, 20:29
  3. Продам Futaba T7CP комплект (передатчик+приемник+сервы)
    от nineangel в разделе Барахолка. Аппаратура
    Ответов: 1
    Последнее сообщение: 13.07.2011, 12:12
  4. Продам 2.4 GH 6 каналов передатчик, приемник спектрум orange
    от original в разделе Барахолка. Аппаратура
    Ответов: 0
    Последнее сообщение: 02.06.2011, 23:56
  5. Куплю Передатчик+Приемник или Акк+зарядник!
    от oskiva в разделе Барахолка. Автомодели - комплектующие
    Ответов: 0
    Последнее сообщение: 29.03.2011, 16:49

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения