ArduCopter Mega: порт на обычную Arduino (тестим)
ArduCopterMega, ArduCopter 2, ACM…
code.google.com/p/arducopter/wiki/ArduCopter2
Эта модификация автопилота ArduPilot специально для коптеров вышла в Public Beta в первых числах мая.
diydrones.com/profiles/blogs/apm-2-out-of-beta
Умеет летать по маршруту, удерживать высоту и позицию, может использовать сонар и барометр. Поддерживает стандартный протокол наземной станции MAVlink и скриптование миссий:
code.google.com/p/ardupilot-mega/wiki/Mission
code.google.com/p/ardupilot-mega/…/HappyKillmore
и даже “работать” автопилотом в компьютерном авиасимуляторе:
code.google.com/p/ardupilot-mega/wiki/Xplane
На последнем конкурсе автопилотных систем, проводимом Sparkfun, выступал квадрик с ArduCopter Mega и даже чего-то там занял 😃 :
diydrones.com/profiles/blogs/acm-at-the-avc
Система рассчитана на фирменную плату ArduPilot, фирменный шилд OilPan и GPS MTK с фирменной прошивкой. Стоят девайсы довольно дорого, компас и барометр покупаются отдельно.
Я, как гордый мембер группы ArduPirates, официально заявляю, что АСМ зохвачен ператами и портирован на более бесплатную Arduino Mega (с моим активным участием).
Характеристики порта:
- Абсолютно Все функции АСМ сохранены
- Раскладка портов приемника и моторов приведена к схеме MultiWii
- Поддерживаемые I2C датчики: ITG3200, BMA180, BMP085, HMC5883 (HMC5843)
- Поддерживается импульсный сонар: Tx - d47, Echo - D49
- Выводы для светодиодов режима: A - d35, B - d36, C - d39
- Режим командной строки включается замыканием вывода d40 на землю
- GPS подключается к порту Rx1-Tx1 (подключил один провод Rx к GPS EagleTree V4 паралельно с ихним OSD. Работает!)
Счастливым обладателям Arduino (Seeduino, Flyduino) Mega и вышеуказанных датчиков предлагаю потестировать сию вещь, т.к. мои способности к управлению пепелацем до сих пор очень ограниченны.
Инструкция по установке (предполагается, что вдумчивый читатель уже ознакомлен, что собой представляют Ардупилот, Ардукоптер, Google Code и Subversion, покурив ссылки выше):
- запустить свое железо хотя бы в MultiWii
-Скачать конфигуратор code.google.com/p/ardupilot-mega/…/detail?name=APM…
-установить какой-нибудь subversion
-выкачать свежие код и библиотеку:
svn checkout ArduCopterMega
svn checkout ArduCopterMega\libraries
- выкачать пиратский порт на Ардуину:
svn checkout acm20_diff
- скопировать все файлы из порта в папку ArduCopterMega, перезаписав совпадающие
- скопировать содержимое библиотеки libraries в одноименный каталог Arduino IDE
- открыть в Ардуине любой pde из каталога, скомпилить и загрузить в плату
- запустить конфигуратор, проверить работу всех датчиков и повыставлять режимы
- запустить моторы и полететь 😃
В случае выхода обновления ACM, патч также копируется поверх.
Вопросы, замечания, предложения?
т.к. мои способности к управлению пепелацем до сих пор очень ограниченны.
дык онож теперь по точкам летает, зачем способности? =)
завтра начну мучать свои “flyduino”, “seeeduino” с FFIMU, очень надеюсь, что получицца. Сегодня не смогу, тело тянется к дивану )))
дык онож теперь по точкам летает, зачем способности? =)
сначала надо настроить, а только потом пускать его по точкам. Ээх, если бы можно было без настройки, то пульт ты “практически зря” покупал 😃
онож теперь
А, ну да 😉 некоторым без пульта тоже как раз подойдет 😁
Правда, режим навигации надо пультом включать, канал 5, предварительно настроив его функции через CLI
свои “flyduino”, “seeeduino” с FFIMU
Да, очень интересен результат с фрифляем! У меня Allinone.
У них отличаются адреса i2c.
В своем “кряке” я задал по умолчанию 0х80, хотя у меня стоит 0х82. Так что ничего править не надо.
На всякий, адрес акселя меняется в файле AP_ADC_ADS7844.cpp, параметр #define BMA180_A 0x80
я до сих пор считаю что пульт зря купил =) толку от него мало, что с ps2 пультом не леталось, что с этим… жду новые датчики
не совсем понял нужны все ITG3200, BMA180, BMP085, HMC5883 (HMC5843) или можно только гиру+аксель?
Правда, режим навигации надо пультом включать
не вижу проблемы во включении его с любого другого девайса =)
или можно только гиру+аксель?
Можно юзать только гиру-аксель и летать в stable или acro mode, как обычно. Для навигации нужен еще как минимум компас и ЖПС.
Но гира должна быть ITG3200, а аксель BMA180. Если надо какие-то другие (только не вий!!!) - дай знать.
как будут платки с датчиками на руках - так скажу, если че, сам наковрыяю (разобраться бы, в разы круче чем Multiwii смотрится) =) гира L3G4200D, аксель ориентировочно adxl335 (который аналоговый), но будет другой на следующей неделе (надеюсь)
вий нафиг, столько гемора и FAILов + отваливается сам по себе
надо еще наковырять как с 4х каналки баловаться режимами =)
зы: с этими экспериментами деталей на еще один звездолет уже накопилось (не считая аккума и приемника)
upd: gps есть, компас найдется =)
сонар только для высоты? или еще и по краям коптера можно натрыкать, чтобы не крамсал людей? (дома 4 штуки валяется - не солить же их)
Инструкция по установке (предполагается, что вдумчивый читатель уже ознакомлен, что собой представляют Ардупилот, Ардукоптер, Google Code и Subversion, покурив ссылки выше):
А где можно ознакомиться с тем, как пользоваться Гугл кодом и Субвершн? т.к. я к особо вдумчивым читателям не отношусь, прошу помочь. ))
Я думал думал куда Олежка пропал, а он мир захватывал в это время 😃)
Отличная работа! А баро нормально работает у пиратов, или так же как на multiwii?
надо бы наваять картинку с подключением всяких разностей… или перемапено под MultiWii вариант? код RC как будто из мультивия
UPD: ArduPirate/acm20_diff/libraries/APM_RC/APM_RC.cpp
APM motor remap to the MultiWii-style...
А баро нормально работает у пиратов
Плавает в пределах метра
надо бы наваять картинку с подключением всяких разностей
Картинки давно наваяны. Все как в Мультивие:
…googlecode.com/…/8 Connection diagram Seeeduino M…
как будут платки с датчиками на руках
Про аналоговые датчики забываем сразу 😉 Не хочу этого гимора с АЦП.
Сейчас главный перат (Норберт) пытается облетать сие чудо на FFIMU, с новыми датчиками будем возиться позже.
Между прочим, в ардукоптере используется обычный 50-Гц РРМ и все отлично летает, не надо ни I2C регулей, ни 490Гц…
- открыть в Ардуине любой pde из каталога, скомпилить и загрузить в плату
Выходит вот такая ошибка при компиляции в ардуино-иде, че делать?
ArduCopterMega.cpp: In function ‘void init_rc_in()’:
radio:52: error: ‘RC_CHANNEL_ANGLE_RAW’ was not declared in this scope
у меня вот так ругается:
ArduCopterMega.cpp: In function ‘void init_rc_in()’:
ArduCopterMega.cpp:6589: ошибка: нет декларации ‘RC_CHANNEL_ANGLE_RAW’ в этой области видимости
ошибка убрана, перезагрузите патч. Это джейсон опять все переколбасил в оригинале.
Еще… у кого ffimu и allinone, имейте в виду, расположение датчиков разное! Еще и адреса акселя разные.
В файле AP_ADC_ADS7844.cpp
раскомментируйте соотв. строку:
//*****************************
// Select your IMU board:
//#define FFIMU
#define ALLINONE
//*******************************
Активация моторов у “них” отличается, после отклонения ручки нужно еще и газу поддать. Глупо, надо переделать.
не одно, дык другое:
/home/sovgvd/build/arduino-0022/libraries/APM_BMP085/APM_BMP085.cpp:38:18: error: Math.h: Нет такого файла или каталога
/home/sovgvd/build/arduino-0022/libraries/APM_BMP085/APM_BMP085.cpp: In member function ‘long int APM_BMP085_Class::GetASL()’:
/home/sovgvd/build/arduino-0022/libraries/APM_BMP085/APM_BMP085.cpp:259: ошибка: нет декларации ‘pow’ в этой области видимости
Math.h должно быть в Arduino IDE или надо где то искать еще?
Переместил индикацию режима на единственный в ардуино светодиод. патч обновлен
Постоянно горит: готов к запуску
Мигает редко: моторы активированы, стабильный режим
Мигает часто: моторы активированы, пилотажный режим (на гирах)
Глеб, что за странный ардуин IDE у тебя? матф не знает, пишет по-русски…
Скачай официальную 0022 версию, что ли… У меня без единого еррора компилится.
Скачай официальную 0022 версию
это и есть официальная версия с сайта arduino, яж не сам её придумывал… есть предположение что компилятор не из неё, а че нить от убунты компилит =)
UPD: в Linux версии arduino IDE нету вообще компилятора походу =) www.arduino.cc/playground/Learning/Linux
в общем такие у меня теперь датчики L3G4200D и BMA020 - самому поковырять код (AP_ADC/AP_ADC_ADS7844.cpp - тут менять или еще где?) или будет патчик? =)
в Linux версии arduino IDE
Тогда попробуй поменять Math.h на math.h
Насколько я знаю, линух не любит разные регистры.
По поводу акселя и гиро, попробуй поковырять AP_ADC_ADS7844.cpp, там все I2C процедуры выдраны из Мультивия. Подставив инициализацию и чтение, все должно заработать.