Специальные цены   новые товары
Закрытая тема
Страница 5 из 46 ПерваяПервая ... 3 4 5 6 7 15 ... ПоследняяПоследняя
Показано с 161 по 200 из 1811

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

Тема раздела Полеты по камере, телеметрия в категории Cамолёты - Общий; Сообщение от serj Они просто описывают поворот Поворот на хлеб не намажешь, и на экран в виде roll/pitch/yaw не визуализуешь. ...

  1. #161

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от serj Посмотреть сообщение
    Они просто описывают поворот
    Поворот на хлеб не намажешь, и на экран в виде roll/pitch/yaw не визуализуешь. Соответственно кватернион текущего состоняния переводится в углы эйлера, чтобы можно было горизонт воспринять. Соответственно я вижу, что это работает у меня почему-то хуже, чем EKF. И я, похоже, понимаю почему - у меня хорошо подобрана system state model для ekf, а в кватернионы я сунул то, что везде предлагают. Либо, возможно, где-то еще какой-то косяк. Я бы может и не парился с кватернионами, то EKF падает, когда pitch 90 и я не вижу другого решения, кроме как в этот момент отключать EKF а руководствоваться только прямым интегрированием гиры.

    То есть, перед шагом предсказания проверять. Если |cos(pitch)| < 0.0001 например, то после интеграции считать, что углы и так достоверны. Это добавит дрожания едва заметного в окрестности pitch 90, но зато сингулярность отпадет. Ну не часто, наверно, нужно летать свечой вверх под 90 градусов.

    Надо еще японско-корейские патенты почитать, какие они там нелинейные модели состояний твердых тел предлагают. Я же вижу, что есть видеоролики с очень качественным поведением EKF на кватернионах. Правда, эти хитрецы всегда до кучи магнитометр используют, а хотелось бы не очень доверять этому устройству.
    Последний раз редактировалось AlexSneg; 02.03.2012 в 15:05.

  2.  
  3. #162

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

    // конфиг для случая 9.6 kbps, Dev: 15kHz, BW: 42.7 kHz
    const uint8_t rfm_init_table_9_6__15[][2]={

    {0x05,0x00}, // disable all 1-st interrupts
    {0x06,0x00}, // disable all 2-nd interrupts
    {0x07,0x01}, // ready IDLE mode xton=1, потом посмотрим как сократиться время если pllon =1 держать
    // {0x09,0x7f}, // cap = 12.5pf не знаю, так везде ставят
    {0x09,0x6d}, // cap load не знаю, так поставили в EZradio примере
    {0x0a,0x05}, //clk output is 2MHz, в принципе по фиг какая там частота, это не используется
    // {0x0b,0xf5}, // RX_EN on gpio0 1111 0100, uses RX State signal
    {0x0b,0xea}, // RX_EN on gpio0 1110 1010, uses Direct Digital Output
    // {0x0c,0xf2}, // TX_EN on gpio1 1111 0010, uses TX State signal
    {0x0c,0xea}, // TX_EN on gpio1 1110 1010, uses Direct Digital Output
    {0x0d,0x00}, // GPIO2 for MCLK output
    {0x0e,0x00}, // GPIO port use default value, RX_ANT=0, TX_ANT=0
    {0x0f,0x70}, // NO ADC used
    {0x10,0x00}, // NO ADC used
    {0x12,0x20}, // no temperature sensor used
    {0x13,0x00}, // no temperature sensor used

    // IF settings
    {0x1c,0x2c}, // 9.6 kbps, Dev: 15kHz, BW: 42.7 kHz ********
    {0x1d,0x44}, // AFC on ?? or 0x40
    {0x1e,0x0a}, // AFC timing
    {0x20,0x68}, //clock recovery **********
    {0x21,0x01}, //clock recovery **********
    {0x22,0x3a}, //clock recovery **********
    {0x23,0x93}, //clock recovery **********
    {0x24,0x01}, //clock recovery **********
    {0x25,0x95}, //clock recovery **********
    {0x2a,0x1e}, //AFC limiter **********



    //TX/RX general packet settings
    {0x30,0x8d}, //data acess control: MSB, CRC=1, CRC over data only = 0, crc type = crc16-ibm
    {0x32,0x08}, // broadcast = disable, header3 compare only
    {0x33,0x10}, // 1 byte header3, variable pkt len, 1 byte sync word = syncword3
    {0x34,0x08}, // preamble = 32bits
    {0x35,0x20}, // preamble detect = 16bit, rssi_offset = 0
    {0x36,0x2d}, // preamble 1
    {0x37,0xd4}, // preamble 2
    {0x38,0x00}, // preamble 3
    {0x39,0x00}, // preamble 4
    {0x3a,0x54}, // tx header 3
    {0x3b,0x53}, // tx header 2
    {0x3c,0x52}, // tx header 1
    {0x3d,0x51}, // tx header 0
    {0x3e,0x00}, // pkt len = 0, not used
    {0x3f,0x54}, // rx header 3
    {0x40,0x53}, // rx header 2
    {0x41,0x52}, // rx header 1
    {0x42,0x51}, // rx header 0
    {0x43,0xff}, // header 3 check mask
    {0x44,0xff}, // header 2 check mask
    {0x45,0xff}, // header 1 check mask
    {0x46,0xff}, // header 0 check mask

    //endpoint FIFO handler settings

    {0x69,0x60}, // automatic Automatic Gain Control Enable for preamble time
    {0x6e,0x4e}, // tx data rate 1 0x4ea5*1000/2097152=9.6 kbit **************
    {0x6f,0xa5}, // tx data rate 2, всего получится 9.6 кбит/с если пересчитать по формуле ***************

    {0x6d,0x1c}, // 0001 1100 = +11dbm transmit power
    {0x70,0x2c}, // no Manchester Coding, no Data Whitening, txdtrtscale = 1 for < 30 kbps
    {0x71,0x23}, // No TX Data CLK is available, FIFO Mode, GFSK
    {0x72,0x18}, // deviation 10kHz **************
    {0x73,0x00}, // frequency offset = 0, возможно потом порегулируем, чтобы точно совместить приемник и передатчик. Шаг 125 Гц
    {0x74,0x00}, // frequency offset = 0
    {0x75,0x53}, // band selction: 430 - 439.9 MHz
    {0x76,0x4B}, // carrier freq ( 430 + (0x6400/64000) ) (*2 if hbsel=1)=430.030 mhz
    {0x77,0x00}, // carrier freq
    {0x79,0x00}, // req channel = 0. by default
    {0x7a,0x02}, // freq hopping size = 20 kHz
    // {0x07,0x02}, // pllon=1, IDLE - проверить потом как на скорость перехода в режим передачи повлияет
    {0,0}

    };


    1 секунда делится на 50 таймслотов. 25 слотов в одну сторону, 25 слотов в другую сторону

    Вот процедура, которая формирует пакет и шлет его. Из кода все читаемо.


    void PreparePacketData(uint8_t send_params){
    // засылаем данные в буфер модуля
    static uint8_t digit_keys;

    if(send_params == 1) {
    // точно выясним, будем ли слать параметры или стандартный пакет
    if(packet_number == 2 || packet_number == 6 || packet_number == 10 || packet_number == 14 || packet_number == 18 || packet_number == 22){
    // да, шлем стандартный пакет
    } else {
    send_params = 0; // нет, шлем стандартный пакет
    }
    }


    if(send_params==1) {
    TimeoutAfterLastReceivedPacket = 0; // чтобы не свалиться в failsafe
    // параметры ручек и джойстиков
    if(packet_number == 2) {
    send_data[0] = 0x82; //передать тангаж
    send_data[1] = 0; // резерв

    // минимум
    send_data[2] = (uint8_t)(Settings.tangazh_up_ugol >> 8); // старший байт
    send_data[3] = (uint8_t)(Settings.tangazh_up_ugol & 0xff); // младший байт

    // максимум
    send_data[4] = (uint8_t)(Settings.tangazh_down_ugol >> 8); // старший байт
    send_data[5] = (uint8_t)(Settings.tangazh_down_ugol & 0xff); // младший байт

    // центр на серве
    send_data[6] = (uint8_t)(Settings.tangazh_center_ugol >> 8); // старший байт
    send_data[7] = (uint8_t)(Settings.tangazh_center_ugol & 0xff); // младший байт

    send_data_len = 8;
    }
    if(packet_number == 6) {
    send_data[0] = 0x83; //передать крен
    send_data[1] = 0; // резерв

    // минимум
    send_data[2] = (uint8_t)(Settings.kren_left_ugol >> 8); // старший байт
    send_data[3] = (uint8_t)(Settings.kren_left_ugol & 0xff); // младший байт

    // максимум
    send_data[4] = (uint8_t)(Settings.kren_right_ugol >> 8); // старший байт
    send_data[5] = (uint8_t)(Settings.kren_right_ugol & 0xff); // младший байт

    // центр
    send_data[6] = (uint8_t)(Settings.kren_center_ugol >> 8); // старший байт
    send_data[7] = (uint8_t)(Settings.kren_center_ugol & 0xff); // младший байт

    send_data_len = 8;
    }

    if(packet_number == 10) {
    send_data[0] = 0x84; //передать газ
    send_data[1] = 0; // резерв

    // минимум
    send_data[2] = (uint8_t)(Settings.gaz_up_ugol >> 8); // старший байт
    send_data[3] = (uint8_t)(Settings.gaz_up_ugol & 0xff); // младший байт

    // максимум
    send_data[4] = (uint8_t)(Settings.gaz_down_ugol >> 8); // старший байт
    send_data[5] = (uint8_t)(Settings.gaz_down_ugol & 0xff); // младший байт

    // центр
    send_data[6] = (uint8_t)(Settings.gaz_center_ugol >> 8); // старший байт
    send_data[7] = (uint8_t)(Settings.gaz_center_ugol & 0xff); // младший байт

    send_data_len = 8;
    }
    if(packet_number == 14) {
    send_data[0] = 0x85; //передать курс
    send_data[1] = 0; // резерв

    // минимум
    send_data[2] = (uint8_t)(Settings.kurs_left_ugol >> 8); // старший байт
    send_data[3] = (uint8_t)(Settings.kurs_left_ugol & 0xff); // младший байт

    // максимум
    send_data[4] = (uint8_t)(Settings.kurs_right_ugol >> 8); // старший байт
    send_data[5] = (uint8_t)(Settings.kurs_right_ugol & 0xff); // младший байт

    // центр
    send_data[6] = (uint8_t)(Settings.kurs_center_ugol >> 8); // старший байт
    send_data[7] = (uint8_t)(Settings.kurs_center_ugol & 0xff); // младший байт

    send_data_len = 8;
    }
    if(packet_number == 18) {
    send_data_len = 0;
    send_data[send_data_len++] = 0x89; //передать частоты канала
    send_data[send_data_len++] = Settings.main_channel; // основной канал
    send_data[send_data_len++] = Settings.backup_channel_1; // запасной канал 1
    send_data[send_data_len++] = Settings.backup_channel_2; // запасной канал 2
    send_data[send_data_len++] = Settings.tx_power; // мощность передатчика
    }
    if(packet_number == 22) {
    send_data_len = 0;
    send_data[send_data_len++] = 0x8a; //передать failsafe позиции по всем рулям
    send_data[send_data_len++] = Settings.tangazh_failsave_position; // 0 failsafe position, рули веиз до упора
    send_data[send_data_len++] = Settings.kren_failsave_position_1; // failsafe position kren1 вверх до упора =0= ПравЭлер
    send_data[send_data_len++] = Settings.kren_failsave_position_2; // failsafe position kren2 вверх до упора =255= ЛевЭлер
    send_data[send_data_len++] = Settings.gaz_failsave_position; // failsafe position, выключить газ в ноль =0=
    send_data[send_data_len++] = Settings.kurs_failsave_position; // failsafe position kurs1 руль направления по центру = 128 =


    }
    } else {
    // увеличиваем счетчик времени непринятого ответа от приемника
    TimeoutAfterLastReceivedPacket ++;

    // текущие положения органов управления
    send_data_len = 0;
    if(HoppingMode_Enable == 0) {
    send_data[send_data_len++] = packet_number & 0x3f; // режим пачки даных, + номер пакета
    } else {
    // режим пачки даных, + номер пакета + бит признак того, что следующий пакет пойдет в режиме FHSS
    send_data[send_data_len++] = (packet_number & 0x3f) | 0x40; // режим пачки даных, + номер пакета + бит признак того, что следующий пакет пойдет в режиме FHSS
    }
    send_data[send_data_len++] = HoppingPool[(packet_number>>1)]; // частота канала для FHSS для данного пакета
    send_data[send_data_len++] = adc_ch[CHANNEL_GAZ]; // газ
    send_data[send_data_len++] = adc_ch[CHANNEL_KURS]; // курс
    send_data[send_data_len++] = adc_ch[CHANNEL_TANGAZH]; // тангаж
    send_data[send_data_len++] = adc_ch[CHANNEL_KREN]; // крен 1
    if(Settings.kren_difference==1) // крен 2
    send_data[send_data_len++] = ~adc_ch[CHANNEL_KREN];
    else
    send_data[send_data_len++] = adc_ch[CHANNEL_KREN];

    digit_keys = (PORT_MENU->IDR >> PIN_RESERVE) & 1; // пока есть только один переключатель. Первый бит - половинный расход
    send_data[send_data_len++] = digit_keys; // цифровые переключатели, пока не используются

    }
    }

    void TransmitPacket(){
    // _falisafe_test_count++;

    // запускаем передачу
    TIM2->CNT = 0; // запускаем таймер статистики
    // if(_falisafe_test_count>1000 && _falisafe_test_count<1200);
    // else
    rfm_TransmitData2(send_data_len, send_data);
    }

  4. #163
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    . Соответственно я вижу, что это работает у меня почему-то хуже, чем EKF.
    А что мешает зделать екф в кватернионной форме?

  5. #164
    msv
    msv вне форума

    Регистрация
    05.03.2008
    Адрес
    Новокузнецк
    Возраст
    55
    Сообщений
    2,367
    Спасибо. Моя LRS готова, на столе работает. Двухчастотный FHSS (если можно так сказать). Два, задаваемые конфигурацией, режима с периодами 20мс (7.2bps) и 40мс (3.5bps). Для второго режима даже с интерполяцией на приеме (пробовал и методом скользящего среднего и экспоненциальным фильтром усреднять) как-то не очень нравится.. Может со временем совсем его уберу. Так как период передачи пакетов синхронизирован с получаемыми от внешнего кодера пакетами ППМ, в приемнике сделал примитивный ФАПЧ для точного переключения частот при потери одного канала по тайм-ауту. В принципе вопросов особых не было, единственно не очень понятно какую выбрать девиацию. Есть ли для этого рекомендации для выбора оптимального индекса модуляции?

  6.  
  7. #165

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    А что мешает зделать екф в кватернионной форме?
    Сделал уже. Поигрался. В принципе все работает. Однако, уперся в новую проблему. Если pitch устанавливается в 90 градусов, тело совершает пару вращений через roll прежде чем перевернуться вверх ногами. То есть, опять упираемся в gimbal lock при переходе от кватерниона к углам roll pitch yaw. Короче, я в ступор вошел. У меня реально нет мыслей как с этим бороться. Самое интересное,что этот эффект и в DCM присутствует. Я это поначалу не заметил пока yaw не включил для визуализации.

    Но Ё..., я же вижу визуализацию вращения тела, чье положение определяется кватернионом, и нет ни фига переворотов, ну вот как они этого добиваются??? Как они кватернион обратно в углы к осям преобразуют и не получают этого эффекта вращения тела в точке gimbal lock?

    Вот видео


    Скачал их исходники. Те же кватернионы. Обычный MARG. Попробую прямо их исходники компильнуть.

    в принципе можно было бы и не очень пудрить себе мозг, а просто не пытаться рулить самолетом когда угол pitch близок к 90 градусам, но насколько это правильно?

  8. #166

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Попробовал MARG by Madgwick из этих исходников. Эффект кульбита по roll при достижении pitch 90 градусов тот же. То есть они это на отрисовке графики как-то компенсируют. Все, мой мозг понимать это отказывается. Наверное они приращениями работают. Ну блин, Олег у себя с этого-же алгоритма снимает roll - pitch -yaw теми же формулами, значит эффект у него тот же. Пойду к нему, задам прямой вопрос.

  9. #167
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Эффект кульбита по roll при достижении pitch 90 градусов тот же
    А что по вашему мнению должно происходить в этом случае?

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Если pitch устанавливается в 90 градусов, тело совершает пару вращений через roll прежде чем перевернуться вверх ногами
    Всё гладко шло. Плата протравлена, проц припаен, но блин чета какито гимбал локи.... Как с луны свалились вы ей богу.
    Последний раз редактировалось Drinker; 05.03.2012 в 00:00.

  10.  
  11. #168

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

    Цитата Сообщение от msv Посмотреть сообщение
    Есть ли для этого рекомендации для выбора оптимального индекса модуляции?
    В идеальном случае для GFSK девиация должна быть чуть больше, чем полоса пропускания. Для FSK в 2 раза больше. Но это теория, на практике нужно больше. В RFM22 фильтр уж больно широкий, поэтому девиация там в основном всегда внутрь полосы фильтрации пролезает с запасом. На практике подбери импиричиески по наилучшему качеству приема и наименьшего мусора в эфире.

  12. #169
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    НИчего, должно перевернуться без лишнего осевого вращения по roll.
    Ну как без вращения по крену?
    При переходе через +-90 град по тангажу крен "инвертируется" потому что самик на спину ложится. Чего тут ненормального?

    Кстати никакого вращения тут нет, есть смена знака не более.

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

  13. #170

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    При переходе через +-90 град по тангажу крен "инвертируется" потому что самик на спину ложится. Чего тут ненормального?
    не, ты либо не понял, либо не в теме.
    вот ставим горизонт, условно пусть pitch = 0, roll = 0
    Теперь удерживая roll=0, поднимаем pitch вверх.
    примерно при достижении pitch = 86 начинается зависимость roll = F(pitch), но заметь, платформу мы при этом не вращаем.
    далее roll нарастает и к моменту pitch = 90,roll показывает уже около 180 градусов.
    двигаем pitch дальше, roll продолжает вращаться до достижения pitch =105 примерно, там оно ложится уже на спину, типа как надо.
    То есть в промежутке 86 < pitch < 105 roll есть полная недостоверная лажа, как в прочем и yaw.
    Далее выводы делай сам, что будет с самолетом, если попытаться рулить им в таком недостоверном положении.
    Я понимаю, что реально это арктангенс так себя ведет, оно и не может по другому. Кватернион в этот момент показывает, что все ОК, к нему как раз претензий нет, тут все четко. Проблема в извлечении достоверной информации из него в этот момент.
    Цитата Сообщение от Drinker Посмотреть сообщение
    Вот это говорит о том, что проблемы нет никакой.
    Главное правильно себя убеждать.
    Вот я только что посмотрел код OpenPilot на эту тему. Это единственный код, который по крайней мере эту проблему обозначил. Правда ребята тоже до конца не понимают как без патчей и припарок с этим бороться исключительно средствами математики, поэтому решили оценивать не только абсолютные углы но и тенденцию вращения тела на основании текущих гироскопов в промежутках неопределенности. Надо бы по правильному иметь производную вектора полета за последнюю секунду пропущенную через FIR, но они памятью ограничены и честно об этом пишут. И углы руления они уже пытаются извлечь, вычисляя обратный кватернион вращения, что на самом деле есть очень правильно.

  14. #171

    Регистрация
    01.06.2010
    Адрес
    Черновцы
    Возраст
    40
    Сообщений
    474
    Не похоже ли это на причину неадекватного поведения FY-ххх ?

  15. #172

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от vldvv Посмотреть сообщение
    Не похоже ли это на причину неадекватного поведения FY-ххх ?
    У меня нет FY я не очень в теме.
    Проверить имеет ли плюшка место быть очень легко.
    Берем самоль с фишкой, калибруем в горизонт. Проверяем, что при покачивании влево - вправо элероны отрабатывают крены в противоположную сторону. Если все ОК, то ставим самоль в горизонт. Затем МЕДЛЕННО начинаем поднимать нос самоля вверх и внимательно следим за элеронами. Если при достижении угла близкого к 80 градусам начинаем видеть, что помимо руля высоты начинают двигаться элероны или рудер (хвост), значит проблема имеет место присутствовать. Далее двигаем самоль в 90 градусов. Начинаем раскачивать самолет в окрестности 90 градусов носом вверх, заставляя переходить его туда-сюда через pitch = 90 градусов раскачка должна быть очень медленной, это важно. Во время этой процедуры наблюдаем рули самолета, если начнется дурацкое активное руление, значит мои поздравления всем владельцем FY-ххх девайсов. Если самолет продолжает рулить ТОЛЬКО рулем высоты, значит есть надежда, что авторы по крайней мере поставили припарку. Тогда надо провести еще одну проверку на вшивость.

    Ставим самоль на бок под 90 градусов, чем точнее, те лучше. А теперь пробуем вращать его медленно вокруг pitch оси. Внимательно наблюдаем, что самолет делает рулями. Если начнет чем-то рулить акромя элеронов, значит авторы поставили патч на pitch, но забыли патч на roll.

    А реально это на 100% достоверно можно проверить, только имея графический уровень горизонта с фишки в момент теста.

  16. #173

    Регистрация
    18.10.2008
    Адрес
    Москва
    Возраст
    53
    Сообщений
    11,332
    Записей в дневнике
    8
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    А реально это на 100% достоверно можно проверить, только имея графический уровень горизонта с фишки в момент теста.



    Фишка ведет себя точно так-же как Ваша платка - начинает кувыркаться.

    Цитата Сообщение от vldvv Посмотреть сообщение
    Не похоже ли это на причину неадекватного поведения FY-ххх ?

    Но это не то, что ее ставится в вину в первую очередь. Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных. Обычно она решается чисто программными затычками, типа if/else...

  17. #174

    Регистрация
    01.06.2010
    Адрес
    Черновцы
    Возраст
    40
    Сообщений
    474
    Цитата Сообщение от baychi Посмотреть сообщение
    Но это не то, что ее ставится в вину в первую очередь. Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных. Обычно она решается чисто программными затычками, типа if/else...
    Дойду на работу и проделаю тест с CoterControl уже самому интересно

    Это хорошо что Вы, Александр, быстро нашлись только начал писать на вас ссылку

  18. #175

    Регистрация
    16.10.2010
    Адрес
    Санкт-петербург
    Возраст
    31
    Сообщений
    2,662
    Цитата Сообщение от baychi Посмотреть сообщение
    Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных.
    А вариант поставить второй гироскоп/пиродатчик повернутый градусов на 45 относительно первого не рассматривается по чисто экономическим соображениям?

  19. #176

    Регистрация
    18.10.2008
    Адрес
    Москва
    Возраст
    53
    Сообщений
    11,332
    Записей в дневнике
    8
    Цитата Сообщение от kimu Посмотреть сообщение
    А вариант поставить второй гироскоп/пиродатчик повернутый градусов на 45 относительно первого не рассматривается по чисто экономическим соображениям?
    Проблемма совсем не в датчиках. Показания датчков непрерывны. Разрыв начинается в арктангенсе, когда при неопределенности надо вычислять реальный roll. ИМХО, проще вообще не пытаться вычислять его в такой ситуации, как например делает АП от Smalltim.

  20. #177

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от baychi Посмотреть сообщение
    Фишка ведет себя точно так-же как Ваша платка - начинает кувыркаться.
    Вот спасибо за видео. 100% точняк 1 в 1 поведение, которое я наблюдаю на своей платформе, а результат именно тот, который я и предполагал. Она пыталась рулить... и бум! Александр, вы просто спасли мой сон. Я реально 2 ночи не спал, ворочался, думал у меня проблемы в алгоритме. Теперь я вижу, что у меня все правильно.
    Цитата Сообщение от baychi Посмотреть сообщение
    Проблемма неопределенности roll при pitch близком к 90 градусов есть у ВСЕХ систем стабилазации, как у пирометрических, так и инерциальных.
    Не, не так. Это не проблема инерциальных систем. Дринкер уже поставил точный диагноз. Это банально:
    Цитата Сообщение от Drinker Посмотреть сообщение
    Вот это говорит о том, что проблемы нет никакой.
    вот я запостил видео выше, где у парней этой проблемы нет. И я вижу их исходники. Они не работают углами эйлера. Но OpenGL обучен прямой работе с кватернионами при развороте камеры обзора. Осталось разузнать как оно это делает. Блин сколько всего нового приходится узнавать по ходу дела... Ладно, надо в этом вопросе сделать паузу. Понятно, что решение есть, просто оно не на поверхности. Надо дать мозгу отдохнуть. Вот был бы, кто в 3D анимаци понимает, наверно бы объяснил, как они объекты на 360 градусов во все стороны крутят. Нашел старый фотик с убитой ПЗС, который PAL отдает в телек. Спаял разъемы, буду сейчас OSD осиливать. К извлечению roll - pitch - yaw углов из кватерниона вернусь позже, когда мозг от этого отдохнет. И еще хочу компас уже подключить к расчету положения тела. Надо только наладить его калибровку. Тут мозга много не надо. Вот и займусь пока.

  21. #178

    Регистрация
    18.10.2008
    Адрес
    Москва
    Возраст
    53
    Сообщений
    11,332
    Записей в дневнике
    8
    Цитата Сообщение от vldvv Посмотреть сообщение
    Дойду на работу и проделаю тест с CoterControl уже самому интересно

    Крчу в данный момент на столе. При чистой постановке на хвост, ведет себя более грамотно, чем Фишка в том полете, но если чуть покачать - тоже начинается вращение.
    Но в CopterControl - алгоритм DCM (в OpenPilot - EKF), а что прошито в Фишке - неизвестно.

  22. #179

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

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

    Да и что вы стабилизировать собрались? Полёт свечкой вверх?

  24. #181

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

    Цитата Сообщение от kimu Посмотреть сообщение
    второй гироскоп/пиродатчик повернутый градусов на 45 относительно первого
    Для инерциалки это не имеет никакого смысла. проще иметь 8 референсных body frame'ов и переключаться между ними на ходу при переходе арктангенсов из одной четверти в другую во время расчета углов эйлера. А кватерниону положения вообще наплевать, он про арктангенс даже не догадывается. Он везде гладко без сингулярностей вращается. Кстати, похоже в 3D анимации так и делают.
    Последний раз редактировалось AlexSneg; 05.03.2012 в 13:51.

  25. #182
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Уж если делать, то делать хорошо, либо не делать совсем.
    Сейчас я у себя проверю, хорошо-ли я сделал.

  26. #183

    Регистрация
    16.10.2010
    Адрес
    Санкт-петербург
    Возраст
    31
    Сообщений
    2,662
    Цитата Сообщение от baychi Посмотреть сообщение
    Разрыв начинается в арктангенсе, когда при неопределенности надо вычислять реальный roll.
    Тогда также радикально как и со вторым гироскопом:
    Считать параллельно второй roll, но сдвинутый градусов на 45. Когда первый приближается к 80 градусам, данные берутся со второго (сдвинутого)+45 градусов на который он сдвинут. Вышли из опасной зоны - переключаемся обратно на образцовый roll.

    Только наверно сожранные ресурсы не будут стоить полученного результата...

  27. #184

    Регистрация
    06.09.2011
    Адрес
    Тольятти
    Возраст
    45
    Сообщений
    2,662
    Записей в дневнике
    5
    Цитата Сообщение от Drinker Посмотреть сообщение
    А нафига в фпв летать с такими углами?
    Сказали в FY и сделали, как есть...
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Уж если делать, то делать хорошо, либо не делать совсем.
    Спасибо, Вам, Алекс, за вашу работу! С таким подходом просто не может получится плохо.

  28. #185

    Регистрация
    16.10.2010
    Адрес
    Санкт-петербург
    Возраст
    31
    Сообщений
    2,662
    Цитата Сообщение от kimu Посмотреть сообщение
    Считать параллельно второй roll
    Или даже даже тому единственному roll сдвигать ноль. На выходе же не будет разницы, оно сразу насчитало 90 градусов, или сначала 45, а потом к ним отдельно ещё 45 прибавили.
    Так и на обычных, железных, гироскопах (если память не отшибло) рамки двигают чтоб не сложились, а реальный угол определяется с учётом поправки.

  29. #186

    Регистрация
    10.07.2006
    Адрес
    Moscow
    Возраст
    39
    Сообщений
    3,554
    Записей в дневнике
    1
    Цитата Сообщение от baychi Посмотреть сообщение
    ИМХО, проще вообще не пытаться вычислять его в такой ситуации, как например делает АП от Smalltim.
    Я вычисляю, но у меня Roll не крутится

  30. #187
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от smalltim Посмотреть сообщение
    Я вычисляю, но у меня Roll не крутится
    И у меня не крутицца, а честно ложится "на спину"

    через 20 минут обещают можно смотреть.

  31. #188

    Регистрация
    18.10.2008
    Адрес
    Москва
    Возраст
    53
    Сообщений
    11,332
    Записей в дневнике
    8
    Цитата Сообщение от smalltim Посмотреть сообщение
    вычисляю, но у меня Roll не крутится
    Насколько я помню, ты ввел дополнительную логику защищающую алгоритм горизонта от неопределенностей.
    Или теперь все "гораздо проще"?

  32. #189

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    И у меня не крутицца, а честно ложится "на спину"
    На видео вижу график pitch, про roll ничего не вижу. Можешь одновременно показания pitch + roll + yaw совместить разными цветными линиями?
    Цитата Сообщение от smalltim Посмотреть сообщение
    Я вычисляю, но у меня Roll не крутится
    Дельтами по углам работаешь, при этом постоянно изменяя референсное положение? У тебя положение тела кватернионом описывается?

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

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Можешь одновременно показания pitch + roll + yaw совместить разными цветными линиями?
    Щя сделаю.

    Яв гад, мешает на графике - затирает линии ролла и питча. Оставил тока их. Ролл красный, питч синий. Все отлично видно.

    Нажмите на изображение для увеличения
Название: ролл.jpg
Просмотров: 100
Размер:	40.5 Кб
ID:	613467

  34. #191

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

    Еще раз. Если ты берешь плату, ставишь ее горизонтально и начинаешь вращать pitch, то изменяться по кругу должен только один угол - pitch.
    У тебя же мы наблюдаем как раз обсуждаемый эффект. Поначалу roll = 0, а pitch растет. Начиная с какого-то момента pitch ~80 градусов, roll резко начинает расти. И растет до тех пор, пока pitch не выйдет с другой стороны. Сделай масштаб мельче по временной оси для первого подъема графиков, ты увидишь сразу.

  35. #192
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    С какого бодуна он вдруг на 180 развернулся?
    Да потому что тело НА СПИНУ ложится и после 90 градусов питча летит в противоположную сторону.

    Самолет переворачивается, понимаешь? Хотя вращения вдоль оси Х нет. Но нас интересует ролл и питч относительно ЗЕМЛИ.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    pitch ~80 градусов, roll резко начинает расти.
    Ничего подобного.

    Я понял, мы о разных вещах говорим. Ты очевидно говоришь об углах поворота платы как таковых. А я говорю о положении платы относительно земли. В твоей нотации, да ролл не должен прыгать. Но это несколько другая задача.

    Вот в фишке 30-й например, есть режим удержания горизонта - положение платы по отношению к земле. И есть режим удержания углов по трем осям - это отслеживаются повороты платы по её собственным осям.

    Но если опираться только на собственное вращение платы, то через некоторое время мы окажемся несколько в ином положении относительно земли, чем думает алгоритм. Погрешности, дрейфы никто не отменял.
    Всё, я тебя понял.
    Последний раз редактировалось Drinker; 05.03.2012 в 16:16.

  36. #193

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    Ничего подобного
    Смотри внимательно на свои графики. Есть точка пересечения pitch = roll = 90
    И это не абстрактные углы, а вполне конкретные, вычисленные твоим алгоритмом в момент времени t
    Цитата Сообщение от Drinker Посмотреть сообщение
    Но нас интересует ролл и питч относительно ЗЕМЛИ.
    В этой точке имеем самолет развернутый на 90 градусов по roll относительно земли по твоим графикам.

    И на самом деле по барабану, кто как хочет это назвать. Главное факт в цифрах и графиках. Попробуй визуализировать свой график и ты увидишь в точке pitch=90 не просто линию, как ты видишь на графике, а увидишь винтообразное вращение тела. Особенно если еще yaw подключишь.

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

  37. #194
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Смотри внимательно на свои графики. Есть точка пересечения pitch = roll = 90
    Да не, такие графики из-за того, что цыфры в ком порт идут с большим интервалом, по-этому четкие вертикали не получаются. Это проверено однозначно. Я в коде вставку делал, которая запоминает ролл и питч в районе 90 град. с частотой работы фильтра, затем выводил эти циферки. Все чотко - ролл встает или на примерно 180 или на -180 в момент перехода питча через 90 град.
    Почему примерно 180 или -180? Потому что невозможно ручками перемещать ось Х строго в вертикальной плоскости, а ролл при задранном питче больше зависит от наклона платки уже по оси Z.
    Короче надо делать стенд лабораторный и по уровням - отвесам выставлять.
    А оно надо?

    Кстати и яв перекладывается на противоположное направление. Всё правильно.

  38. #195

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    Да не, такие графики из-за того, что цыфры в ком порт идут с большим интервалом, по-этому четкие вертикали не получаются. Это проверено однозначно.
    Ну не может такого быть чисто математически. Не может функция арктангенса внезапно перепрыгнуть 0 -> 180. К тому же я вижу четкие закругления roll, когда оно от нуля вверх ползти начинает, значит есть промежуточные положения, иначе была бы прямая линия без закругления. А в середине, когда ты pitch раскачиваешь, вообще четко дуги видно и в ноль не перекидывается. Покажи формулы для расчета roll-pitch-yaw из кватерниона. Или у тебя не кватернион состояния?

  39. #196
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Или у тебя не кватернион состояния?
    ЕКФ, кватернион.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    К тому же я вижу четкие закругления roll,
    Я же говорил, трудно мне держа пальцами чотко двигать платку. В том опыте паразитные вращения присутствуют.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Покажи формулы для расчета roll-pitch-yaw из кватерниона.
    Стандартные формулы:
    Roll = atan2(2*(q0*q1+q2*q3), q3*q3-q2*q2-q1*q1+q0*q0); //рад
    Pitch = -asin(2*(q1*q3-q0*q2));
    Yaw = atan2(2*(q0*q3+q1*q2), q1*q1+q0*q0-q3*q3-q2*q2);

    Да, и линии, проходящие через пики питча как раз прямые.

    Держи цифири:
    первая - питч, вторая - ролл, третья яв
    Дрожжание около 88-89 градусов питча - дрожжание рук.
    0.83,71.17,18.78,-0.58 0.88,71.45,18.98,-0.58
    0.65,71.68,18.77,-0.58
    0.91,71.92,18.75,-0.59
    0.08,72.11,18.03,-0.59
    0.06,72.48,18.03,-0.59
    0.04,72.95,18.01,-0.60
    0.24,73.16,17.88,-0.60
    -0.15,73.48,17.74,-0.60
    -0.26,73.60,17.91,-0.59
    0.07,73.74,17.68,-0.59
    -0.15,73.97,17.78,-0.59
    -0.06,74.22,18.19,-0.58
    0.32,74.58,18.02,-0.58
    0.24,74.85,18.28,-0.58
    0.30,74.88,18.09,-0.57
    0.43,75.08,18.24,-0.57
    0.41,75.39,18.05,-0.57
    0.63,75.55,18.50,-0.56
    0.54,75.76,18.27,-0.56
    0.50,75.92,18.22,-0.56
    0.61,76.03,18.37,-0.56
    0.79,76.41,18.45,-0.56
    0.70,76.71,18.52,-0.56
    0.87,76.75,18.40,-0.56
    0.51,77.01,18.10,-0.56
    0.53,77.25,18.08,-0.56
    0.65,77.22,18.45,-0.57
    0.56,77.36,18.10,-0.57
    0.36,77.56,17.91,-0.57
    0.58,77.70,18.40,-0.57
    0.80,77.74,18.27,-0.58
    0.56,78.10,18.13,-0.58
    0.57,78.32,18.11,-0.58
    0.56,78.60,18.43,-0.57
    1.00,78.70,18.56,-0.57
    0.91,78.98,18.39,-0.57
    0.56,79.14,18.24,-0.57
    0.67,79.34,17.91,-0.57
    0.23,79.55,17.89,-0.57
    0.42,79.80,18.03,-0.57
    0.38,79.86,17.90,-0.57
    0.44,79.97,17.77,-0.56
    -0.09,80.10,17.07,-0.56
    -0.83,80.19,16.53,-0.56
    -0.78,80.13,17.31,-0.56
    -0.46,80.18,16.88,-0.56
    -0.73,80.39,16.84,-0.56
    -0.83,80.48,16.73,-0.56
    -0.80,80.48,16.82,-0.56
    -0.62,80.60,16.83,-0.56
    -0.90,80.79,16.74,-0.56
    -0.53,80.84,17.14,-0.56
    -0.22,80.90,17.26,-0.56
    -0.41,80.99,17.14,-0.56
    -0.48,81.23,16.53,-0.56
    -0.99,81.36,17.16,-0.56
    0.20,81.52,17.64,-0.56
    0.22,81.69,17.70,-0.56
    0.09,81.84,17.47,-0.56
    -0.14,81.89,17.30,-0.56
    -0.08,81.87,17.40,-0.56
    0.14,82.08,17.74,-0.57
    0.23,82.17,17.38,-0.57
    -0.21,82.22,17.31,-0.57
    -0.10,82.23,17.31,-0.57
    -0.06,82.35,17.39,-0.57
    -0.02,82.43,17.29,-0.58
    -0.16,82.62,17.38,-0.58
    0.25,82.65,17.52,-0.58
    -0.26,82.74,17.03,-0.58
    0.12,82.97,17.65,-0.59
    0.01,83.28,17.10,-0.59
    0.37,83.39,18.10,-0.59
    1.16,83.40,18.18,-0.59
    0.39,83.56,17.70,-0.58
    0.08,83.64,17.02,-0.58
    -0.38,83.61,17.15,-0.58
    -0.29,83.59,16.83,-0.58
    -0.77,83.79,16.33,-0.58
    -1.02,83.86,16.28,-0.58
    -1.24,83.85,16.04,-0.58
    -1.02,83.86,16.33,-0.58
    -1.62,84.01,15.66,-0.58
    -1.29,84.04,15.73,-0.59
    -1.99,84.05,15.40,-0.59
    -1.92,84.06,15.30,-0.59
    -1.69,84.14,15.96,-0.59
    -0.89,84.19,16.86,-0.61
    -0.09,84.21,16.82,-0.61
    -0.77,84.24,16.87,-0.61
    0.55,84.35,17.49,-0.61
    -0.57,84.29,15.98,-0.62
    -1.61,84.28,15.62,-0.62
    -1.17,84.34,16.31,-0.62
    -1.20,84.48,15.72,-0.62
    -1.85,84.47,15.47,-0.63
    -2.18,84.40,14.54,-0.63
    -3.39,84.35,14.13,-0.63
    -2.40,84.47,14.93,-0.63
    -2.89,84.55,14.21,-0.66
    -3.22,84.55,14.01,-0.66
    -3.32,84.82,13.63,-0.66
    -3.08,85.12,15.47,-0.66
    0.04,85.47,17.44,-0.66
    0.13,85.56,17.17,-0.66
    -0.07,85.76,17.22,-0.66
    -0.24,85.87,17.08,-0.66
    0.28,85.87,17.19,-0.66
    -0.31,85.90,16.67,-0.68
    -1.25,86.02,15.56,-0.68
    -1.23,86.03,16.87,-0.68
    0.61,86.06,17.40,-0.68
    -0.75,86.11,16.24,-0.68
    0.39,86.15,18.80,-0.68
    1.69,86.28,18.43,-0.68
    1.00,86.34,18.56,-0.68
    2.08,86.51,19.42,-0.71
    3.34,86.82,21.45,-0.71
    4.48,87.15,21.89,-0.71
    5.98,87.32,24.25,-0.71
    8.99,87.37,26.93,-0.71
    9.73,87.51,26.79,-0.71
    9.12,87.46,26.31,-0.71
    10.02,87.52,27.53,-0.71
    10.86,87.57,28.56,-0.71
    11.34,87.64,27.98,-0.73
    10.52,87.66,27.33,-0.73
    9.36,87.67,25.79,-0.73
    8.38,87.67,25.90,-0.73
    9.24,87.84,25.88,-0.75
    6.32,88.01,22.37,-0.75
    4.79,88.06,21.26,-0.75
    2.12,88.07,18.17,-0.75
    -0.45,88.16,14.04,-0.75
    -5.60,88.20,11.74,-0.75
    -2.58,88.20,15.57,-0.75
    -0.73,88.18,16.69,-0.75
    -0.13,88.21,16.11,-0.75
    -1.58,88.33,16.08,-0.75
    1.43,88.51,18.98,-0.75
    2.90,88.56,21.39,-0.75
    5.14,88.60,20.26,-0.75
    1.42,88.52,18.62,-0.75
    1.56,88.60,18.21,-0.75
    -0.61,88.70,14.65,-0.75
    -2.87,88.84,14.06,-0.75
    -6.45,88.91,8.01,-0.75
    -8.87,88.91,11.46,-0.76
    -8.36,88.91,6.14,-0.76
    -12.50,88.95,3.00,-0.76
    -15.75,89.11,-0.23,-0.76
    -18.38,89.14,-0.23,-0.77
    -17.10,89.17,-2.18,-0.77
    -25.29,89.30,-14.01,-0.77
    -35.72,89.51,-14.56,-0.77
    -30.35,89.58,-16.71,-0.78
    -35.37,89.68,-16.60,-0.78
    -50.48,89.93,-128.19,-0.78
    -158.21,89.64,-146.95,-0.78

    Кстати, четвертая цыфра - высота по bmp085
    Последний раз редактировалось Drinker; 05.03.2012 в 17:58.

  40. #197

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    У тебя в этом логе только приближение к pitch 90
    вот у тебя конец лога. Ты почти приблизился и пошел эфект плавного переворота.
    Цитата Сообщение от Drinker Посмотреть сообщение
    -0.61,88.70,14.65,-0.75 -2.87,88.84,14.06,-0.75 -6.45,88.91,8.01,-0.75 -8.87,88.91,11.46,-0.76 -8.36,88.91,6.14,-0.76 -12.50,88.95,3.00,-0.76 -15.75,89.11,-0.23,-0.76 -18.38,89.14,-0.23,-0.77 -17.10,89.17,-2.18,-0.77 -25.29,89.30,-14.01,-0.77 -35.72,89.51,-14.56,-0.77 -30.35,89.58,-16.71,-0.78 -35.37,89.68,-16.60,-0.78 -50.48,89.93,-128.19,-0.78 -158.21,89.64,-146.95,-0.78
    Давай так. Сделай файл подлиннее, только двигайся по pitch медленно и несколько раз, стараясь держать плату горизонтально пройдешь питч несколько раз от 45 <-> -45 с переходом через 90. Давай мне свой текстовый файл, я его тебе визуализирую на экране и дам видео посмотреть. вот тогда ты сам убедишься. А можешь еще чего накрутить, чтобы мы красивую картинку посмотрели. Потряси там платку всяко разно.

    Формулами ты пользуешься теми же, что и я Значит эффект есть, не может не быть. Давай длинный лог мне в личку зашли или тут ссылку дай на закачку.

  41. #198
    Забанен
    Регистрация
    12.01.2011
    Адрес
    Moscow
    Возраст
    44
    Сообщений
    952
    Цитата Сообщение от AlexSneg Посмотреть сообщение
    эфект плавного переворота.
    -0.61,88.70,14.65,-0.75
    -2.87,88.84,14.06,-0.75
    -6.45,88.91,8.01,-0.75
    -8.87,88.91,11.46,-0.76
    -8.36,88.91,6.14,-0.76
    -12.50,88.95,3.00,-0.76
    -15.75,89.11,-0.23,-0.76
    -18.38,89.14,-0.23,-0.77
    -17.10,89.17,-2.18,-0.77
    -25.29,89.30,-14.01,-0.77
    -35.72,89.51,-14.56,-0.77
    -30.35,89.58,-16.71,-0.78
    -35.37,89.68,-16.60,-0.78
    -50.48,89.93,-128.19,-0.78
    -158.21,89.64,-146.95,-0.78

    Ага, щяс. Афигенно плавно, учитывая частоту 250герц. Целых 0.056 секунды длился процесс.
    Ты что, хотел чтобы мгновенно?

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Формулами ты пользуешься теми же
    Вообще-то других и быть не может.

    Цитата Сообщение от AlexSneg Посмотреть сообщение
    Ставим самоль на бок под 90 градусов, чем точнее, те лучше. А теперь пробуем вращать его медленно вокруг pitch оси.
    А этот опыт зачем? Если так делать, то только яв будет меняться.

  42. #199

    Регистрация
    26.09.2011
    Адрес
    Н.Новгород
    Возраст
    44
    Сообщений
    1,126
    Цитата Сообщение от Drinker Посмотреть сообщение
    Ты что, хотел чтобы мгновенно?
    я бы хотел, чтобы вообще никак. И дело не во времени, сколько он длится, а в том, что даже по твоим цифрам, если самолет попадает в -25.29,89.30, и там зависает, то ты не знаешь какой у тебя roll. И реально твои цифры говорят о том, что в промежутке от 85...95 ты будешь иметь зону неопределенности. Много ли это 10 градусов? По моим понятиям это дофига. Или ты будешь пытаться рулить в этом промежутке?
    Цитата Сообщение от Drinker Посмотреть сообщение
    А этот опыт зачем? Если так делать, то только яв будет меняться.
    Проделай на своей платформе, только с визуализацией вращающегося тела, а то не поймешь. В свои собственные цифры ты не веришь.

  43. #200

    Регистрация
    27.12.2000
    Адрес
    С-Петербург
    Возраст
    42
    Сообщений
    1,747
    Короче, Алекс похоже не может "пощупать", что такое углы Эйлера
    Каждый следующий угол отсчитывается от предыдущего. Они так построены. Обычно все используют последовательность YPR, ( Yaw Pitch Roll ) но можно делать и RPY, никто не запрещает.
    тогда ничего крутится при 90 градусном тангаже не будет..

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

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

Похожие темы

  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

Ваши права

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