High end Low cost Quatrocopter
Настройка передатчика Turnigy 9X
В результате настройки на 6 выходе приемника получаете 6 значений при манипуляции переключателями ГИРО и трехпозиционным
выход 5 не используется.
Настройки переключателя Turnigy 9X
Режим
0- 1000
1- 1400
2- 1800
3- 1200
4- 1600
5- 2000
PIT/CU
**** N- 20%
IDE1- 60%
IDE2- 100%
THRO HOLD
STATE – IHH
HOLD POS – 000
CH5 – HOV THRO
CH6 – NULL
CH7 – PIT TRIM
CH8 – THRO HOLD
GYRO
STATE - ACT
UPRATE – 000
DNRATE - +40
MODEL – STD
MIX1
STATE – ACT
MASTER –GEAR
SLAVE – PIT
UPRATE – -100
DNRATE - +100
SW - ON
Дописал переключение режимов на вывод D8 платки и выкладываю программу с баро и переключателем. Надо еще тестировать.
Удержание по высоте от баро будет позже после изучения совместной фильтрации с акселерометром
Приехал в четверг барометр MS5611. Сегодня уже прилепил . Вроде уже и меряем давление , температуру и высоту. Пока немного глючит, но с этим потихоньку разберемся.
в мультивии вроде как рабочий драйвер MS5611… посмотрите там…
в мультивии вроде как рабочий драйвер MS5611… посмотрите там…
Да у меня тоже рабочий. поменял во втором слагаемом int на long " D = ((((long)buff1[0]) << 16) | (((long)buff1[1])<< 8) | buff1[2] ); " и вроде нормализовалось. Я взял из Арду алгоритм обработки и переписал под И2С. Там он точно работает. Осталось еще дописать коррекцию на температуры ниже 20 град. Но это не к спеху.
За Вашей темой слежу, но пока не понимаю до конца, обработку данных акселерометра при наклонах.
Вписал стабилизацию по высоте от бародатчика и режим удержания высоты.
Правильно наконец вписал вертикальную составляющую ускорения по данным акселерометра.
// Ac_0 = - (float) accel_Y*DCM_Matrix[0][0] + (float)accel_X*DCM_Matrix[0][1] + (float)accel_Z*DCM_Matrix[0][2];
// Ac_1 = - (float) accel_Y*DCM_Matrix[1][0] + (float)accel_X*DCM_Matrix[1][1] + (float)accel_Z*DCM_Matrix[1][2];
Ac_2 = (- (float) accel_Y*DCM_Matrix[2][0] + (float)accel_X*DCM_Matrix[2][1] + (float)accel_Z*DCM_Matrix[2][2])*0.204035; // см/сек*сек
Заодно есть составляющие горизонтального ускорения и можно пытаться стабилизироваться при порывах ветра. Вот график - изменение высоты в сантиметрах- красная изменение газа - синяя в микросекундах
Барометр нашелся.
www.ebay.com/itm/260891831092
это кстати 01 модель, в пластиковом корпусе, таких уже не выпускают,
в ардупилотмега2 ставят ms5611-03
Этот проект начат как путь перехода на АРМ 2. При переходе на АРМ 2 возникло ряд вопросов.
Вопрос к Mission Planner . Нужен ли он мне?
Есть альтернатива:
- Перейти на Arducopter 2.3-2.4 и доводить его.
- Продолжать развивать собственный проект на ArducopterNG, реально летающий, с нормальным функционалом, но с интерфейсом командной строки.
В первом случае получаю продвинутый интерфейс, но в ущерб скорости расчета и как результат в ущерб качеству полета. Основные алгоритмы полета считаются за 3-4 мсек. Добавленный интерфейс увеличивает время до 9 мсек.
Во втором случае имею интерфейс в виде командной строки, гемморой по описанию новой платформы АРМ 2, адаптацию ПО под нее.
(При полете по точкам мне как то спокойнее задавать относительные координаты, с точки зрения возможной ошибки и считаю, что удобство ткнуть в карту для экономии времени при програмировании не стоит усилий в поисках коптера залетевшего не туда.)
Поэтому вопросы : - Для чего нужен Mission Planner и кто использует его возможности? И какие возможности имеют ценность для Вас?
- Кто пользуется возможностью настройки Пидов в полете?
- Кто летает с автопилотом и как на Ваш взгляд удобнее программировать путевые точки.
Поэтому вопросы :
- Для чего нужен Mission Planner и кто использует его возможности? И какие возможности имеют ценность для Вас?
- Кто пользуется возможностью настройки Пидов в полете?
- Кто летает с автопилотом и как на Ваш взгляд удобнее программировать путевые точки.
- Я использую Планнер для проверки работы датчиков, задаю маг.склонение, выставляю ПИДы. Причем, делаю через АРС220, чтобы не вставлять провода под крышку. Одно время было интересно сохранять OSD прямо из этой программы (кликаем на окошко, пишем поток в файл).
- В полете ничего не трогаю!
- Точки удобнее задавать визуально. Ошибиться очень сложно, рисуя дорожку на карте. Любая консоль противоречит человеческому интерфейсу, поэтому совершить ошибку легче.
- Я использую Планнер для проверки работы датчиков, задаю маг.склонение, выставляю ПИДы. Причем, делаю через АРС220, чтобы не вставлять провода под крышку. Одно время было интересно сохранять OSD прямо из этой программы (кликаем на окошко, пишем поток в файл).
- В полете ничего не трогаю!
- Точки удобнее задавать визуально. Ошибиться очень сложно, рисуя дорожку на карте. Любая консоль противоречит человеческому интерфейсу, поэтому совершить ошибку легче.
По п.1 абсолютно согласен. Гораздо проще это делать используя нормальный интерфейс. Но магнитное склонение и Пиды выставляем на этапе регулировки один раз(если получится). Анализировать работу датчиков я предпочитаю в Excel и зачастую полного экрана не хватает. Поэтому данные с последовательного порта вывожу на грфик по частям.
По п. 3 когда точки заданы в относительных координатах я сразу могу оценить усилия по поиску коптера.
За ответ спасибо.
На кону качество полета. Я сейчас занят эффективным использованием датчиков. И если альтернатива по п.1 то я предпочту читать барометр с частотой в сто герц и магнетометр 75, удобству установки Пидов. И к этому допишу фильтрацию баро вместе с акселерометром.
Пункт 3 действительно принципиален.
На кону качество полета. Я сейчас занят эффективным использованием датчиков. И если альтернатива по п.1 то я предпочту читать барометр с частотой в сто герц и магнетометр 75, удобству установки Пидов. И к этому допишу фильтрацию баро вместе с акселерометром.
Главное, чтобы можно было проверить датчики. А как именно - через тормозящий красивый интерфейс или быструю консоль - не принципиально.
Для чего считывать барометр с такой частотой? Децимация не подходит?
Главное, чтобы можно было проверить датчики. А как именно - через тормозящий красивый интерфейс или быструю консоль - не принципиально.
Для чего считывать барометр с такой частотой? Децимация не подходит?
При высокой частоте легче отфильтровать и в результате стабильнее высоту можно держать.
При высокой частоте легче отфильтровать и в результате стабильнее высоту можно держать.
Я подумал, зачем шум считывать? Пусть мах вертикальная скорость до 5м\с. Бародатчик MS5611 ловит до 0.1м, а при скорости 5м\с это изменение высоты произойдет за 0.02с = 50Гц. В плавном полете реальные скачки высоты +_0.1 метра за 0.01с (100Гц) просто нереальны, в отличие от шума.
Я подумал, зачем шум считывать? Пусть мах вертикальная скорость до 5м\с. Бародатчик MS5611 ловит до 0.1м, а при скорости 5м\с это изменение высоты произойдет за 0.02с = 50Гц. В плавном полете реальные скачки высоты +_0.1 метра за 0.01с (100Гц) просто нереальны, в отличие от шума.
Фильтр вносит задержку, а это мешает контуру авторегулирования высоты. Поэтому фильтруем баро вместе с акселерометром. А на высоких частотах это легче сделать.
Попробовал полетать в коридоре. Площадочка 2х2.9 метра. Летает. Удержание высоты проверить не удалось так как для меня места маловато. Летаю плохо. Летает не хуже Арду. Магнетометр направление держит жестко. Может Пиды нужно будет процентов на 10 уменьшить, но это на улице при ветре проверять нужно.
Спецификация коптера:
Моторы ДТ750 перемотаны на 1000 об/вольт.
Регуляторы Турниги плюш 25 А
Винты 12х3,8 АРС
Батарейка 3 5 А/ч
Диагональ 50 см
Вес 1,39 кГ
Игорь, у вас возникала идея отделить IMU от основного процессора?
У меня есть ATmega 328 с AllinOne(ITG3200, BMA180,HMC5883L,MS5611) и готовый код на кватернионах. Время цикла 350Гц, но считывание датчиков не оптимизировано под минимальные задержки (есть, где улучшить). Можно передавать кватернионы, готовые углы или raw, также и высоту через RXTX или SPI. Я хотел на Мультивии испытать, но аппаратные пины под SPI уже использованы для управления моторами.
Игорь, у вас возникала идея отделить IMU от основного процессора?
У меня есть ATmega 328 с AllinOne(ITG3200, BMA180,HMC5883L,MS5611) и готовый код на кватернионах. Время цикла 200Гц, но считывание датчиков не оптимизировано под минимальные задержки (есть, где улучшить). Можно передавать кватернионы, готовые углы или raw, также и высоту через RXTX или SPI. Я хотел на Мультивии испытать, но аппаратные пины под SPI уже использованы для управления моторами.
Идея возникала, но обработка датчиков занимает основное время. У меня все сделано на DCM матрице (я просто матрицу понимаю лучше чем кватернионы да и код готовый был под руками). Время цикла - 3 миллисекунды. То есть 300 Гц можно получить. При этом в памяти он занимает приблизительно половину ATmega 328. А в оставшуюся часть все остальное легко впихнуть.
Для испытания на МультиВии перекиньте моторы на другие выходы. (У меня в коде видно как это сделать, не обязательно аппаратный PWM использовать.) Или приемник перекиньте на аналоговые входы (там же) На моей плате выводов еще меньше. (Сейчас осталось только 2 чистых АЦП)
Плата Arduimu V3 продана без барометра . Результаты по барометру и сам барометр на АРМ 1 прицепим. Дальше куплена плата Мультивия и уже в Киеве. Код изменим под нее и будем проводить испытания с 5 сонарами. Барометр тоже прилепим . И будем играться дальше. Arduimu V3 продана так как выводов мало для последующих экспериментов.
Работа с АРМ 2.0 продолжается. Таким образом к сезону все наработки пойдут на АРДУ.
В связи с тем что мне весь сервис программы Arducopter 2.4.1 как то ни к чему остановился на том что последовательного порта с цифирками мне хватит поэтому дописываю программу со всеми примочками и буду испытывать. Программу на Арду выкладывать не буду . А так результаты испытаний . Программу на МультиВия выложу как только полетит…
АРМ 2 уже весело мигает лампочками с моей программой. DCM матрицу считаем полностью в каждом цикле, гиро и акселерометр считываем с частотой 200 Гц (а хотелось бы быстрее), барометр читаем с частотой 100 Гц, компас 10 Гц, радио в цикле 100 Гц по готовности но с задержкой в 5 миллисекунд если попадает на чтение компаса. И 200 Гц худо бедно получается. Каждый 20-30 раз выскакивает цикл 6,5 миллисекнды, так что процессор загружен почти на 100 %. Кое что добавит чтение GPS , запись лога и вывод телеметрии. При температуре ниже 20 град потребуется еще время на дополнительный обсчет баро.
Но с хорошими и быстрыми датчиками процессор уже нужен побыстрее.
Вчера плату Arduimu V3 покупатель пробовал на коптере и остался доволен.
Написал какую то фигню и лог начал стираться. Почему сам не понимаю. Так еще пара мелочей и программа заработала в полном объеме. Осталось может быть дописать калибровку гироскопов перед полетом, но это после проверки необходимости. А дальше начнем вешать примочки типа пяти коэффициентов для стабилизации и совместная фильтрация баро вместе с акселерометром. Но это все понятные изменения. Цикл идет с частотой 200 Гц с выбросом до 5,9 мкс на каждом 18-том.
Поэтому завтра начну писать прогу под платку мультивии
MWC MultiWii SE Standard Edition 4-axis Flight Control Board QUADX w/ FTDI goodluckbuy.com/mwc-multiwii-se-standard-edition-4… и испытывать пять сонаров. Жена уехала и производительность труда резко возросла.
5 сонаров? Разве это возможно? Если больше одного, то нужна совсем другая внутренняя логика, иначе друг другу мешать будут.
5 сонаров? Разве это возможно? Если больше одного, то нужна совсем другая внутренняя логика, иначе друг другу мешать будут.
Зачем логика . Запускаем все пять синхронно и слушаем ответ. С разных сторон соответственно.
попробуйте но мне кажется что эхо от первого же отражения уловят все сонары (если в помещении). Аналогично в случае сложной конфигурации отражающей поверхности, сонары будут улавливать чужие импульсы. А если все запускать последовательно, то частота опроса будет слишком низкая.
В результате изваял свой вариант кода под платку. Сонары прилеплю завтра. Четыре на аналоговые с 0 по 3 и один на 8 вывод Импульс запуска организуем на 12 и останется 13 для всяких прочих надобностей. и еще два аналога.
После того как полетит выложу для попробовать.
Сегодня переписал 085 баро. Читаем с частотой 40 Гц 4 раза давление 1 температуру. Пробовал фильтровать баро вместе с акселерометром. Результат никакой. Или где то ошибся, но алгоритм фильтрации MS5611 с MPU6000. Данные тоже приведены в соответствие. Или сочетание неудачное. С учетом сонаров еще раз перепроверю и дальше возится не буду.
Итого аксель и гиро - 200 Гц баро- 40 Гц компас - 10 Гц сонары 20 Гц Цикл 200 Гц и не выпадаем.
Итого
По результатам проведенной работы сделал следующие выводы:
- Без хороших датчиков бессмысленно применять быстрый процессор, делать ему нечего. Ну разве что сервис.
- Проверена возможность фильтрация данных шумящего датчика с использованием других датчиков. Так барометр можно фильтровать с акселем, но аксель должен быть быстрым и ВМА180 здесь не помощник.
Соответственно при наличии хороших гироскопов аксель должен быть долговременно стабилен. Шумы акселя при этом легко усреднить. - Магнетометр пока у всех один и не очень хорош, но при наличии хорошего гироскопа усредняется и он.
- Новый барометр MS5611 настолько хорош и быстр, что ему практически не нужна фильтрация с акселем, хотя с MPU6050 получается ну очень красиво.
- GPS такой как сделали американцы и лучше 5-10 метров в абсолютных цифрах получить не удастся. Альтернатива только изображение, но здесь еще конь не валялся. Хотя Диудроны оптический датчик давно продают.
Таким образом из существующих автопилотов АРМ 2.0 имеет очень хорошую перспективу с учетом установленных датчиков.
Для реализации этих возможностей, или хотя бы для того, чтобы увидеть преимущества механика должна быть отлажена.
Введение более сложных алгоритмов стабилизации (пять коэффициентов в Пид регуляторе) требует наличия по меньшей мере хорошего гироскопа в системе) Осталось выяснить насколько хорошего.
Дальнейшая перспектива - переход на более быстрый процессор с одновременным переходом на датчики способные выдавать данные с частотой более 200 Гц. Но это не приведет к повышению качества стабилизации, т.к. и существующая система выдает с частотой 200 Гц положение аппарата с точностью лучше 0,1 град.
Введение более сложных нелинейных алгоритмов стабилизации. И соответственно вопросы опять к регуляторам и двигателям.
Так что в первую очередь в дальнейшем сначала займемся усовершенствованными алгоритмами, а уж потом быстрыми процессорами.
Вторая очень важная проблема-интерфейс пользователя.
И в этом плане нравиться МультиВии своей простотой и функциональностью.
В этом плане Арду проигоывает, так как красивый интерфейс сделан в ущерб быстродействию алгоритма стабилизации, но без него основной массе потребителей не обойтись.
Поэтому Арду перейдет на более быстрый процессор еще до лета. И мы за ними потихоньку.
И наверно обработке изображения альтернативы нет, так как сонары и прочее от препятствий не спасают.
Сейчас играюсь с тремя комплектами электроники:
- АРМ 1
- АРМ 2
- МультиВии с Гудлака
Программы написаны и на столе отлажены. Осталось летать и пробовать. И цель единственная понять, что наиболее важно и как можно наиболее эффективно улучшить стабильность системы. И я думаю алгоритмы на первом месте.
А дальше непаханое поле с новыми алгоритмами, обработкой изображения и прочее.