dragon osd gps navigation system

smalltim

ИМУ готова. Вы сможете общаться с ней по И2Ц, 3.3В, 100 кГц?

Протокол примитивный, самое сложное - посчитать CRC16, сeгодня постараюсь описать и выложить на сайт.

Moidodyr
kenig:

но судя по картинке см 2.5 на 5 см где то

Вот и я не нашел. Может кто из обладателей линейку возьмет и померит? Нужно для изготовления контейнера под фпв оборудование.

11 days later
smalltim
smalltim:

Так зачем усложнять всем жизнь? Будет готово - выложу, используйте на здоровье

IMU smalltim/SwiftAI.
Информация для разработчиков.

IMU smalltim/SwiftAI.
Информация для разработчиков.

   - Электрические характеристики платы IMU:
      - Напряжение питания: от 4 до 6В.
      - Максимальный потребляемый ток: 60мА.

   - Электрические характеристики интерфейса I2C IMU:
      - Номинальная тактовая частота I2C: 100 кГц, допускается работа на произвольной частоте от 0 до 400 кГц.
      - Подтяжка 4.7кОм к +3.3В (питание на линиях SCL и SDA на плате IMU.
      - Резисторы 1кОм последовательно в линиях SCL и SDA для защиты от КЗ.
      - Совместимость с 3.3 В и 5В уровнями сигнала.

   - Характеристики программного обеспечения IMU:
      - Частота опроса датчиков магнитного поля: 75 Гц.
      - Частота опроса датчиков угловых скоростей: 400 Гц.
      - Частота опроса датчиков ускорения: 400 Гц.
      - Диапазон измерения величины магнитного поля: 1.9 Гс
      - Диапазон измерения угловых скоростей: 500/2000 град/c
      - Диапазон измерения угловых скоростей: 8 G
      - Номинальный шаг интегрирования: 0.004 сек (250Гц)
      - Номинальная скорость обновления данных (углы, угловые скорости, и т.д.) на интерфейсе I2C: 250 Гц.
      - I2C тип и адрес устройства IMU: Slave, 0x15 (HEX).
      - Проверка корректности данных на интерфейсе I2C: CRC16-CCITT

   - Система координат IMU:
      - Ось X соответствует продольной оси самолета, положительное направление – вперед
      - Ось Y соответствует поперечной оси самолета, положительное направление – от левого крыла к правому крылу
      - Ось Z соответствует вертикальной оси самолета, положительное направление – вниз
      - Нулевое значение крена соответствует горизонтальной ориентации по крену, положительное значение крена соответствует левому крену
      - Нулевое значение тангажа соответствует горизонтальной ориентации по тангажу, положительное значение тангажа соответствует подъему носа модели вверх
      - Нулевое значение рыскания соответствует повороту модели на восток, положительное значение соответствует повороту в сторону севера.
      - Положительное значение угловой скорости по крену соответствует вращению против часовой стрелки вокруг продольной оси модели при взгляде сзади
      - Положительное значение угловой скорости по тангажу соответствует вращению против часовой стрелки вокруг поперечной оси модели при взгляде справа
      - Положительное значение угловой скорости по рысканию соответствует вращению против часовой стрелки вокруг вертикальной оси модели при взгляде сверху

   - Протокол  обмена данными с IMU по I2C, общий принцип:
      - Чтение данных из IMU:
         - Master посылает START
         - Master посылает адрес устройства Slave c командой записи в Slave: 0x15
         - Master посылает байт-идентификатор типа требуемых данных: 0x01, 0x02, 0x03, 0x04 или 0x05
         - Master посылает STOP
         - Master посылает START
         - Master посылает адрес устройства Slave c командой чтения из Slave: (0x15<<1) + 1
         - Master читает из Slave некоторое число байт, определяемое типом данных
         - Master посылает NACK
         - Master посылает STOP
      - Запись данных в IMU:
         - Master посылает START
         - Master посылает адрес устройства Slave c командой записи в Slave: 0x15
         - Master посылает байт-идентификатор типа записываемых данных: 0xAA, 0xAB или 0xAC
         - Master посылает STOP.


   - Типы данных, читаемых из IMU:

      - Углы ориентации и угловые скорости:
         - Идентификатор типа данных: 0x01
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0x01
            - Master: STOP
            - Master: START
            - Master: (0x15<<1) + 1
            - Slave: 0x01
            - Slave: Roll_low_byte
            - Slave: Roll_high_byte
            - Slave: Pitch_low_byte
            - Slave: Pitch_high_byte
            - Slave: Yaw_low_byte
            - Slave: Yaw_high_byte
            - Slave: Roll_Rate_low_byte
            - Slave: Roll_Rate_high_byte
            - Slave: Pitch_Rate_low_byte
            - Slave: Pitch_Rate_high_byte
            - Slave: Yaw_Rate_low_byte
            - Slave: Yaw_Rate_high_byte
            - Slave: CRC16_low_byte
            - Slave: CRC16_high_byte
            - Master: NACK
            - Master: STOP
         - Примечания:
            - Крен (Roll) передается в радианах как 2-байтовое целое знаковое число, младший бит = 0.001 радиан
               - Roll (radians) =  (float)((Int16)(Roll_low_byte + Roll_high_byte*256))/1000.0f
               - Нулевое значение Roll соответствует горизонтальной ориентации по крену, положительное значение Roll соответствует левому крену
            - Тангаж (Pitch) передается в радианах как 2-байтовое целое знаковое число, младший бит = 0.001 радиан
               - Pitch (radians) =  (float)((Int16)(Pitch_low_byte + Pitch_high_byte*256))/1000.0f
               - Нулевое значение Pitch соответствует горизонтальной ориентации по тангажу, положительное значение Pitch соответствует подъему носа модели вверх
            - Рыскание (Yaw) передается в радианах как 2-байтовое целое знаковое число, младший бит = 0.001 радиан
               - Yaw (radians) =  (float)((Int16)(Yaw_low_byte + Yaw_high_byte*256))/1000.0f
               - Нулевое значение Yaw соответствует повороту модели на восток, положительное значение соответствует повороту в сторону севера.
            - Угловая скорость по крену (Roll Rate) передается в радианах в секунду как 2-байтовое целое знаковое число, младший бит = 0.001 радиан в секунду
               - Roll Rate (radians/sec) =  (float)((Int16)(Roll_Rate_low_byte + Roll_Rate_high_byte*256))/1000.0f
               - Положительное значение Roll Rate соответствует вращению против часовой стрелки вокруг продольной оси модели при взгляде сзади
            - Угловая скорость по тангажу (Pitch Rate) передается в радианах как 2-байтовое целое знаковое число, младший бит = 0.001 радиан
               - Pitch Rate (radians/sec) =  (float)((Int16)(Pitch_Rate_low_byte + Pitch_Rate_high_byte*256))/1000.0f
               - Положительное значение Pitch Rate соответствует вращению против часовой стрелки вокруг поперечной оси модели при взгляде справа
            - Угловая скрость по рысканию (Yaw Rate) передается в радианах в секунду как 2-байтовое целое знаковое число, младший бит = 0.001 радиан в секунду
               - Yaw Rate (radians/sec) =  (float)((Int16)(Yaw_Rate_low_byte + Yaw_Rate_high_byte*256))/1000.0f
               - Положительное значение Yaw Rate соответствует вращению против часовой стрелки вокруг вертикальной оси модели при взгляде сверху
            - CRC16 считается для всего набора данных из 13 байт (байт 0x01, являющийся идентификатором типа данных, и 12 байт данных)

      - Позиция в пространстве, линейные скорости и ускорения:
         - Идентификатор типа данных: 0x02
            - Не реализовано в самолетном варианте

      - Небработанные данные с датчиков:
         - Идентификатор типа данных: 0x03
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0x03
            - Master: STOP
            - Master: START
            - Master: (0x15<<1) + 1
            - Slave: 0x03
            - Slave: Acceleration_X_low_byte
            - Slave: Acceleration_X_high_byte
            - Slave: Acceleration_Y_low_byte
            - Slave: Acceleration_Y_high_byte
            - Slave: Acceleration_Z_low_byte
            - Slave: Acceleration_Z_high_byte
            - Slave: AngularRate_X_low_byte
            - Slave: AngularRate_X_high_byte
            - Slave: AngularRate_Y_low_byte
            - Slave: AngularRate_Y_high_byte
            - Slave: AngularRate_Z_low_byte
            - Slave: AngularRate_Z_high_byte
            - Slave: MagneticField_X_low_byte
            - Slave: MagneticField_X_high_byte
            - Slave: MagneticField_Y_low_byte
            - Slave: MagneticField_Y_high_byte
            - Slave: MagneticField_Z_low_byte
            - Slave: MagneticField_Z_high_byte
            - Slave: MagneticField_X_CALIBRATED_MIN_low_byte
            - Slave: MagneticField_X_CALIBRATED_MIN_high_byte
            - Slave: MagneticField_X_CALIBRATED_MAX_low_byte
            - Slave: MagneticField_X_CALIBRATED_MAX_high_byte
            - Slave: MagneticField_Y_CALIBRATED_MIN_low_byte
            - Slave: MagneticField_Y_CALIBRATED_MIN_high_byte
            - Slave: MagneticField_Y_CALIBRATED_MAX_low_byte
            - Slave: MagneticField_Y_CALIBRATED_MAX_high_byte
            - Slave: MagneticField_Z_CALIBRATED_MIN_low_byte
            - Slave: MagneticField_Z_CALIBRATED_MIN_high_byte
            - Slave: MagneticField_Z_CALIBRATED_MAX_low_byte
            - Slave: MagneticField_Z_CALIBRATED_MAX_high_byte
            - Slave: CRC16_low_byte
            - Slave: CRC16_high_byte
            - Master: NACK
            - Master: STOP
         - Примечания:
            - Данные датчиков передаются в том виде, в каком они читаются с датчиков: 2-байтовое целое знаковое число
            - Ось X соответствует продольной оси самолета, положительное направление – вперед
            - Ось Y соответствует поперечной оси самолета, положительное направление – от левого крыла к правому крылу
            - Ось Z соответствует вертикальной оси самолета, положительное направление – вниз
            - CRC16 считается для всего набора данных из 31 байт (байт 0x03, являющийся идентификатором типа данных, и 30 байт данных)

      - Шум/вибрации с датчиков:
         - Идентификатор типа данных: 0x04
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0x04
            - Master: STOP
            - Master: START
            - Master: (0x15<<1) + 1
            - Slave: 0x04
            - Slave: Acceleration_Noise_X_low_byte
            - Slave: Acceleration_Noise_X_high_byte
            - Slave: Acceleration_Noise_Y_low_byte
            - Slave: Acceleration_Noise_Y_high_byte
            - Slave: Acceleration_Noise_Z_low_byte
            - Slave: Acceleration_Noise_Z_high_byte
            - Slave: AngularRate_Noise_X_low_byte
            - Slave: AngularRate_Noise_X_high_byte
            - Slave: AngularRate_Noise_Y_low_byte
            - Slave: AngularRate_Noise_Y_high_byte
            - Slave: AngularRate_Noise_Z_low_byte
            - Slave: AngularRate_Noise_Z_high_byte
            - Slave: CRC16_low_byte
            - Slave: CRC16_high_byte
            - Master: NACK
            - Master: STOP
         - Примечания:
            - Данные представляют собой 1/64 от суммы абсолютных значений разницы между текущим значением данных с датчика и средним значением, подсчитанным в окне шириной 64 сэмпла,
            и передаются как 2-байтовое целое число без знака
            - CRC16 считается для всего набора данных из 13 байт (байт 0x04, являющийся идентификатором типа данных, и 12 байт данных)

      - Внутренние счетчики IMU:
         - Идентификатор типа данных: 0x05
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0x05
            - Master: STOP
            - Master: START
            - Master: (0x15<<1) + 1
            - Slave: 0x05
            - Slave: MainCyclesPerSecond_low_byte
            - Slave: MainCyclesPerSecond_high_byte
            - Slave: SensorPollingTicks_low_byte
            - Slave: SensorPollingTicks_high_byte
            - Slave: MathTicks_low_byte
            - Slave: MathTicks_high_byte
            - Slave: FusionTicks_low_byte
            - Slave: FusionTicks_high_byte
            - Slave: FullCycleTicks_low_byte
            - Slave: FullCycleTicks_high_byte
            - Slave: Second_low_byte
            - Slave: Second_high_byte
            - Slave: 0x00
            - Slave: 0x00
            - Slave: CRC16_low_byte
            - Slave: CRC16_high_byte
            - Master: NACK
            - Master: STOP
         - Примечания:
            - Данные представляют собой 2-байтовое целое число без знака
            - MainCyclesPerSecond – текущее число циклов интегрирования в секунду
            - SensorPollingTicks – время, затраченное на опрос датчиков, младший бит = 0.00001 сек (10 мксек)
            - MathTicks – время, затраченное на обработку данных от датчиков, младший бит = 0.00001 сек (10 мксек)
            - FusionTicks – время, затраченное непосредственно на алгоритм интегрирования/слияния данных датчиков, младший бит = 0.00001 сек (10 мксек)
            - FullCycleTicks – время главного цикла программы, , младший бит = 0.00001 сек (10 мксек)
            - Second – время с помента подачи питания и включения IMU, в секундах, по внутреннему таймеру IMU
            - CRC16 считается для всего набора данных из 13 байт (байт 0x05, являющийся идентификатором типа данных, и 12 байт данных)


   - Типы данных, записываемых в IMU:

      - Результаты калибровки компаса:
         - Идентификатор типа данных: 0xAA
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0xAA
            - Master: MagneticField_X_CALIBRATED_MIN_low_byte
            - Master: MagneticField_X_CALIBRATED_MIN_high_byte
            - Master: MagneticField_X_CALIBRATED_MAX_low_byte
            - Master: MagneticField_X_CALIBRATED_MAX_high_byte
            - Master: MagneticField_Y_CALIBRATED_MIN_low_byte
            - Master: MagneticField_Y_CALIBRATED_MIN_high_byte
            - Master: MagneticField_Y_CALIBRATED_MAX_low_byte
            - Master: MagneticField_Y_CALIBRATED_MAX_high_byte
            - Master: MagneticField_Z_CALIBRATED_MIN_low_byte
            - Master: MagneticField_Z_CALIBRATED_MIN_high_byte
            - Master: MagneticField_Z_CALIBRATED_MAX_low_byte
            - Master: MagneticField_Z_CALIBRATED_MAX_high_byte
            - Master: CRC16_low_byte
            - Master: CRC16_high_byte
            - Master: STOP
         - Примечания:
            - Данные передаются в том же виде, в каком читаются с датчиков магнитного поля и читаются из IMU в пакете данных с типом 0х03 : 2-байтовое целое знаковое число
            - По факту успешного получения этих данных IMU записывает данные калибровки компаса в энергонезависимую память.
            - CRC16 считается для всего набора данных из 13 байт (байт 0xAA, являющийся идентификатором типа данных, и 12 байт данных)

      - Коррекция центробежных ускорений:
         - Идентификатор типа данных: 0xAB
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0xAB
            - Master: CentripetalCorrectionMode (0x00,0x01 или 0x02)
            - Master: AirSpeed_low_byte
            - Master: AirSpeed_high_byte
            - Master: GPSCentrifugalAcceleration_low_byte
            - Master: GPSCentrifugalAcceleration_high_byte
            - Master: CRC16_low_byte
            - Master: CRC16_high_byte
            - Master: STOP
         - Примечания:
            - CentripetalCorrectionMode – тип коррекции центробежных ускорений:
            - 0x00 – не использовать коррекцию центробежных ускорений.
            - 0х01 – использовать коррекцию центробежных ускорений по GPS.
            - 0x02 – использовать коррекцию центробежных ускорений по данным о скорости модели в воздухе и угловым скоростям модели.
            - Начальное состоание IMU после старта: коррекция центробежных ускорений не используется.
            - AirSpeed – скорость модели в воздухе, двухбайтовое целое число без знака, младший бит равен 0.01 м/сек.
            - GPSCentrifugalAcceleration – центробежное ускорение, подсчитанное по данным GPS, в системе координат, связанной с моделью, т.е. горизонтальная скорость по GPS * угловая скорость в плоскости Земли по GPS. Положительное значение соответствует центробежному ускорению, направленному в положительном направлении оси Y системы координат IMU, т.е. от левого крыла к правому крылу. Двухбайтовое целое число без знака, младший бит равен 0.01 м/сек^2
            - CRC16 считается для всего набора данных из 6 байт (байт 0xAB, являющийся идентификатором типа данных, и 5 байт данных)

      - Коррекция параметров IMU:
         - Идентификатор типа данных: 0xAС
         - Содержание сообщения:
            - Master: START
            - Master: 0x15
            - Master: 0xAС
            - Master: Use_2000_DPS (0x00 или 0x01)
            - Master: MARG_Beta (от 0x00 до 0xFF)
            - Master: CRC16_low_byte
            - Master: CRC16_high_byte
            - Master: STOP
         - Примечания:
            - Use_2000_DPS – Выбор диапазона измеряемых угловых скоростей для датчиков угловых скоростей:
            - 0x00 – Использовать диапазон 500 град/сек.
            - 0х01 – Использовать диапазон 2000 град/сек.
            - Начальное состояние IMU после старта: используется диапазон 500 град/сек
            - MARG_Beta – параметр Beta алгоритма MARG, используемого в IMU. Беззнаковое число, байт. Младший бит MARG_Beta соответствует значению Beta 0.01, т.е., доступно изменение Beta от 0 до 2.25.
            - Начальное состояние IMU после старта и инициализации: используется Beta = 0.15.
            - CRC16 считается для всего набора данных из 3 байт (байт 0xAС, являющийся идентификатором типа данных, и 2 байта данных)

Процедура подсчета CRC16:
U16 Crc16_direct(U8 *pcBlock, U16 len)
{
    U16 crc = 0xFFFF;
    U8 i;
    while (len--)
    {
        crc ^= *pcBlock++ << 8;

        for (i = 0; i < 8; i++)
            crc = crc & 0x8000 ? (crc << 1) ^ 0x1021 : crc << 1;
    }
    return crc;
}
Пример записи данных в IMU:
void IMU_send_compass_calibration_data(void)
{
   U16 crc;
   U8 i2c_imu_tx_data[15];
   i2c_imu_tx_data[0]=0xAA;
   i2c_imu_tx_data[1]=LSB0(compass_min[0]);
   i2c_imu_tx_data[2]=LSB1(compass_min[0]);
   i2c_imu_tx_data[3]=LSB0(compass_max[0]);
   i2c_imu_tx_data[4]=LSB1(compass_max[0]);
   i2c_imu_tx_data[5]=LSB0(compass_min[1]);
   i2c_imu_tx_data[6]=LSB1(compass_min[1]);
   i2c_imu_tx_data[7]=LSB0(compass_max[1]);
   i2c_imu_tx_data[8]=LSB1(compass_max[1]);
   i2c_imu_tx_data[9]=LSB0(compass_min[2]);
   i2c_imu_tx_data[10]=LSB1(compass_min[2]);
   i2c_imu_tx_data[11]=LSB0(compass_max[2]);
   i2c_imu_tx_data[12]=LSB1(compass_max[2]);
   crc =  Crc16_direct((U8 *)&i2c_imu_tx_data[0], 13);
   i2c_imu_tx_data[13]=LSB0(crc);
   i2c_imu_tx_data[14]=LSB1(crc);
   i2c_send(0x15, 15, i2c_imu_tx_data);
}
Пример чтения данных из IMU:
void IMU_get_angles(void)
{
   U16 crc;
   U8 i2c_imu_tx_data[1];
   U8 i2c_imu_rx_data[15];
   float imu_roll, imu_pitch,imu_yaw;
   float imu_d_roll, imu_d_pitch,imu_d_yaw;
   i2c_imu_tx_data[0]=1;
   i2c_send(0x15, 1, i2c_imu_tx_data);
   i2c_receive(0x15, 15, i2c_imu_rx_data);
   crc = Crc16_direct((U8 *)&i2c_imu_rx_data[0], 13);
   if((crc == ((U16)i2c_imu_rx_data[13] + (U16) i2c_imu_rx_data[14]*256)) && (i2c_imu_rx_data[0]==0x01))
   {
      imu_roll = ((float)(S16)(U16)(i2c_imu_rx_data[1] + i2c_imu_rx_data[2]*256))/1000.0f;
      imu_pitch = ((float)(S16)(U16)(i2c_imu_rx_data[3] + i2c_imu_rx_data[4]*256))/1000.0f;
      imu_yaw = ((float)(S16)(U16)(i2c_imu_rx_data[5] + i2c_imu_rx_data[6]*256))/1000.0f;
      imu_d_roll = ((float)(S16)(U16)(i2c_imu_rx_data[7] + i2c_imu_rx_data[8]*256))/1000.0f;
      imu_d_pitch = ((float)(S16)(U16)(i2c_imu_rx_data[9] + i2c_imu_rx_data[10]*256))/1000.0f;
      imu_d_yaw = ((float)(S16)(U16)(i2c_imu_rx_data[11] + i2c_imu_rx_data[12]*256))/1000.0f;
      // using roll, pitch, and yaw angles and rates
      . . .
      . . .
      . . .
      . . .
   }
}
SGordon

Действительно используются два адреса (0x15<<1) + 1 и 0x15 ? По моему где то сдвиг забыли, команда чтения по четному адресу по стандарту …

smalltim

Да, это опечатка. 0x15<<1 при адресации на запись, 0x15<<1 | 1 при адресации на чтение.

9 days later
freefly

Драгон лабс заканчивает бета тестирование своего нового проекта:

DragonCommander

Вкратце это блютус модуль для DOSD и приложение для IOS / Android. Позволяет по воздуху, без компьютера настраивать осд, задавать полет по точкам, просматривать gps лог файл, смотреть состояние GPS, напряжения и т.д. и т.п.
Ветка рц групс www.rcgroups.com/forums/showthread.php?t=1653263
Офф. страница www.fpvtools.com

В целом, довольно интересная новая фича DOSD , надеюсь в дальнейшем приложение обрастет новыми функциями.
Весь вопрос конечно в цене…

Zont

Там с IOS проблема из-за блютуса какая-то. Писали, что для Андроида проблем нет, а с Айфонами пока не понятно.

freefly

да, что-то там IOS маркет не хочет пускать приложение к себе из за блютуза. Проблему обещают исправить, а в ближайшем будущем как вариант, приложение смогут установить на IOS те, у кого сделан джейлбреак.

2 months later
Zont

Драгон уже второй раз разбил мне самолет. Первый раз - повис сразу после старта. Почему? Хз… после этого он долго работал до второго раза. И вот, на фестивале в Нижнем Новгороде… я приехал на день пораньше, т.к. надо было донастроить автопилот. Примерно через полчаса полетов драгон уходит в перезагрузку, подвисает на первой строке. Самолет пикирует в землю, краш, поломки, планы на фестиваль сгорают, как спичка. Спасибо драгон…

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

2 months later
amnesiax

Джентльмены, подскажите, пригоден ли PPM выход с приемника rmilec hobbyking.com/…/__24965__RMILEC_TS4047_10CH_2_5W_U… для прямого подключения к DragonOSD v2?
В документации к DragonOSD v2 сказано что автопилот\RTH будут работать в том случае, если с приемника подключить PPM.
Перерыл кучу форумов\гугл, так и не нашел однозначного ответа.

2 months later
Neznaykin

В теме что-то тихо стало.
Как дела обстоят в данный момент с ArduIMU v3, либо IMU от Smalltim?

Chist

Я сделал прошивку для ArduIMU v3, но еще не все глюки выловил, поэтому никуда не выкладываю.

Neznaykin

В этой ArduImu v3 я так понимаю 3 гироскопа, 3 акселя и магнитометр? Магнитометр это для компаса?

9 months later
OlegNik1972

Реанимирую тему, созреваю на покупку комплекта- модуль управления и ОСД. Есть вопрос по алгоритму работы автопилота, ранее был самолет на Игле, потерян по причине работы автопилота, высота “дома” стояла в 150 м, мы находясь на высоте 1200 м на удалении 3 км потеряли управление. Тут и выяснилась проблемка- Игл прошел над нами и продолжал по ветру снижаться до запрограммированной высоты не делая попыток вернуться. Автопилот dragon в этой ситуации как будет работать? Идеальный вариант это приход на точку “Дом” и снижение над ней в заданном круге. Такое возможно запрограммировать? И второй вопрос по стабилизации, имеется простейший стабилизатор с Хоббикинга, точнее его старший брат который не отключается с передатчика. Его можно подружить с OSD?

1 month later
OlegNik1972
Chist:

Я сделал прошивку для ArduIMU v3, но еще не все глюки выловил, поэтому никуда не выкладываю.

Стал обладателем сего девайса, ArduIMU v2 уже не продается, глюки ещё не все отловили?

Chist
Neznaykin:

Магнитометр это для компаса?

Да, магнетометр для компаса. Но его проблемно использовать в связке с DragonOSD.

OlegNik1972:

глюки ещё не все отловили?

Нет, к сожалению, пока дела не дают возможности вернуться к этому проекту. Возможно кто-то меня уже опередил и сделал прошивку для драгонов, надо поискать.

OlegNik1972
Chist:

Нет, к сожалению, пока дела не дают возможности вернуться к этому проекту. Возможно кто-то меня уже опередил и сделал прошивку для драгонов, надо поискать.

Похоже среди русскоязычных Вы единственный который делал прошивку, видео мне попадалось от Virgis с ArduIMU v3, но как он реализовал это не написал, все в тестах. Вообще почитав форум я понимаю что Ardu дает искусственный горизонт и стабилизацию, при наличии внешней стабилизации летать можно и без нее, автопилот, полет по точкам будет присутствовать. Но горизонт все же хочется видеть, подскажите что можно использовать вместо ArduIMU. Фишка 41 достаточно дорогая, да и смысл брать полноценный автопилот ради части его функций сомнителен.

Chist

ArduIMU не дает стабилизацию, к сожалению 😦 Я говорил с ребятами, они не планируют пока этот функционал.
Информация о горизонте необходима для автопилота. Без этой информации автопилот можно использовать только в режиме стабилизации 2Д (отклонение ручки задает угол крена/тангажа, ручка возвращается в 0 - самолет приводится к горизонту).
Пока ничего другого, совместимого с DragonOSD нет.

OlegNik1972

Сергей, я правильно понимаю- автопилот в режиме 2Д (без отображения информации о горизонте) по точкам “не ходит”! А работает только как автопилот по заданному направлению и высоте.

И я никак не могу понять, как без стабилизации при возвращении ручек в “0” происходит “приведение самолета к горизонту”?!

Chist

Извини, пожалуйста, путано написал.
Автопилот Драгона без авиагоризонта можно использовать только в связке с системой стабилизации в режиме приведения к горизонту (или если очень стабильный планер). У фишек, кажется, это называется 2Д стабилизацией.
Автопилот драгонов работает только для возврата на точку старта, насколько я знаю. Что-то где-то было про “по точкам”, но я реально этого не далал и не знаю кто делал.