Ардупилот на платах OpenPilot Revolution / RevoMini (записей: 1756)

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад

    Давным-давно, еще во времена АрдуКоптера 3.0, кем-то был написан HAL для Ardupilot для платформы OpenPilot Revolution. К сожалению, этот код не поддерживался в течение многих лет и поэтому безнадежно устарел.

    Некоторое время назад, я привел этот код к текущему состоянию Ardupilot и сделал PR на GitHub-е, дабы включить этот HAL в официальный репозиторий.

    С тех пор прошло 2 версии ArduCopter-а, но это PR до сих пор висит.

    UPD (20.02.2018) HAL в мастере! Однако еще есть причины пользоваться этим форком

     

    По сравнению с исходным HAL:

    Так что если кого-нибудь интересует ArduPlane / ArduCopter на контроллере  весом 5 грамм (с корпусом), а не только на огромном и тяжелом PixHawk - код и бинарники тут.  Описание подключения

    Проверено, летает!

    При этом обеспечиваются многие возможности, отсутствующие у официальной прошивки!

    • USB порт может быть подсоединен к любому UART, например к ОСД для настройки.
    • Любой УАРТ может быть подключен к ESC для их программирования
    • SD карта может быть подключена к USB в режиме MassStorage - нет необходимости вынимать ее из корпуса для чтения логов

    Вышеприведенные пункты позволяют разместить контроллер в корпусе и не разбирать его для настройки/чтения логов. А также:

    • автодетект компасов и барометров на внешней шине I2C позволяет подключить любую платку сенсоров для Ардуины серии GY-
    • автодетект протоколов SBUS/DSM/SUMD/PPM 
    • есть FailSafe при зависании приемника, если ни один канал не меняется за 60 секунд - теперь это не вызовет улета
    • возможность подключения 2х приемников - либо одновременно LRS и 2.4, либо как Diversity. Также это заметно увеличивает надежность
    • используется система безопасности кварца - контроллер не зависает при его отказе
    • возможен оверклок процессора - стабильно работает до 240 МГц!
    • возможно практически произвольное использование свободных выводов
    • возможно использование аналогового датчика воздушной скорости
    • пищалка может быть назначена на любую ногу
    • полная индикация состояния на 2х диодах: подсчет спутниковв GPS, режим Failsafe, калибровка компаса, режим Autotune и т. д.
    • процессор ~65% времени проводит во сне - что значительно снизило потребление и нагрев

    Вся коптерная электроника кучей - 15 грамм.

     

    А вот вся электроника на коптере

     

     

    Поблагодарить можно тут:
    USD
    EUR

     Или переводом - PayPal на vde@ykoctpa.ru, Qiwi 9173480717

    UPD. Добавлена поддержка барометра на внешней I2C.  Теперь можно взять такой контроллер на Ф4 за 15 баксов, к нему такой  или такой модуль - и вот у нас полный контроллер для Ардупилота за $23 или даже $19

    UPD2. Протестирована работа всей перефирии на SoftI2C и SoftSPI - теперь любые 2 ноги контроллера могут быть назначены как внешняя шина I2С, и любые 4 ноги - как внешняя шина SPI. Что, помимо наличия выведенной наружу SPI3, позволяет подключить произвольное оборудование в практически произвольном количестве.

    UPD3. Добавлена возможность легко добавлять произвольные платы на похожих процессорах, отличающиеся только назначением выводов

    ПРОШИВКА.

    OPBL образы не поддерживаются, ибо бинарник должен жить на другом адресе, поэтому для перепрошивки нужно перевести проц в режим DFU - для этого замкнуть выыодв платы BOOT и включить USB. А затем выполнить команду

    dfu-util -a 0 --dfuse-address 0x08000000 -D /path/to/firmware.bin 

    где firmware.bin это прошивка для вашей платы.

     

  • Аватар профиля macrokernel macrokernel в 8 г., 4 мес. назад

    Круто! На каких платах работает? Барометр, компас, GPS поддерживаются? Было бы интересно запустить на чём-нибудь типа этого: http://www.banggood.com/F3-EVO-Cleanflight-10DOF-Flight-Controller-Oem-Version-for-Multirotor-Racing-with-4G-MicroSD-p-1064058.html

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад

    На F4 , ведущих  родословную от OpenPilot Revoluton - то есть на ней самой,  RevoMini (на фото, самая перспективная), Airbot F4 (с внешней платой барометра и магнитометра, придется пересобирать). Ни на каких F3 работать не будет просто по определению - принципиально разное железо в камне.

    Поддерживается все что поддерживает Ардупилот

    UPD. Пересобиранть не придется, барометр на внешней шине I2C поддерживается "из коробки"

  • Аватар профиля kozin Алексей Козин в 8 г., 4 мес. назад

    Приветствую, удивительная работа! Есть ли планы присоединить и поддерживать проект в официальном репозитории арду?

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад
    [2016-12-31 11:11:33] kozin писал(а): Есть ли планы присоединить и поддерживать проект в официальном репозитории арду?

    Присоединить - да, делалось уже 3 ПР на гитхабе, результат в точности как у вас.

    Поддерживать - нет, ибо в отличие от вас нет личной заинтересованности, и какая мне разница где поддерживать - свой форк или официальный?

  • Аватар профиля kozin Алексей Козин в 8 г., 4 мес. назад

    сделанные вами изменения крайне интересны, я давно пытался убедить коллег в необходимости использования вывода  DRDY MPU6000
    тем более что аппаратно он у нас уже заведен
    если вам будет интересно поэкспериментировать я бы мог вам бесплатно выслать экземпляр актуальной версии нашего контроллера.
    получение этого контроллера не будет отягощено какими либо обязательствами с вашей стороны
    связаться со мной можно kozin@mail.ru

     

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад
    [2017-01-01 07:47:14] kozin писал(а): я давно пытался убедить коллег в необходимости использования вывода  DRDY MPU6000тем более что аппаратно он у нас уже заведен

    сейчас драйвер Invensense поддерживает использование вывода DRDY, достаточно определить "#define INVENSENSE_DRDY_PIN где_он_там"

    [2017-01-01 07:47:14] kozin писал(а): если вам будет интересно поэкспериментировать я бы мог вам бесплатно выслать экземпляр актуальной версии нашего контроллера.

    Спасибо за предложение, но я пока не вижу смысла. У вас ХАЛ для него давно отлажен и работает,  а камень у вас имеет 2МБ флеша и оттого не нуждается в "кроилове" и отказе от ОС на борту.

    У меня же основная задача была - заставить Ардушный код работать на самом мелком (4 грамма без корпуса) и самом дешевом ($34 в розницу), но при этом полноценном F4 контроллере, который к тому же хорошо оттестирован на всяческих Бета/Клин/зеленыйсыр-флаях и зарекоменовал себя весьма надежным. 

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад

    Видео первого полета где-то в Италии

  • Аватар профиля kozin Алексей Козин в 8 г., 4 мес. назад

    спасибо, нашел

    https://github.com/night-ghost/ardupilot/blob/master/libraries/AP_HAL/board/revomini.h#L26

     

     

     

  • Аватар профиля kozin Алексей Козин в 8 г., 4 мес. назад

    ИМХО  не критики ради а от непонимания,

    несколько странно написана обработка пина  DRDY в драйвере.

    - тупо чтение состояния пина - вместо того чтобы поставить внешнее прерывание на ногу и вызывать считывание регистров, а затем осуществлять перезапуск цикла вычисления .

    при необходимости из внешнего контролирующего цикла следить за таймаутом процесса

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад

    Это не  я, я только ХАЛ пилю :)

  • Аватар профиля kozin Алексей Козин в 8 г., 4 мес. назад

    а хал то великолепный вышел! ни субмодулей, ни натикса, ни слоя драйверов. Это в разы облегчает процесс адаптации нового контроллера.
    С точки зрения использования - наличие натикса - врядли дает какое то преимущество, другое дело если бы под ос юзер сам бы выбирал какие приложения он будет запускать, по сути если использовать ваш хал для f4by нужно создать конфиг платы, выбрать проц и расставить датчики по пинам? теоретически ваш хал может вернуть возможность вернуть проект в изначальное "арду" русло, когда широкий круг лиц мало мальски знакомых с С++ мог дополнить проект своим функционалом

     

     

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад
    [2017-01-02 06:58:56] kozin писал(а): по сути если использовать ваш хал для f4by нужно создать конфиг платы, выбрать проц и расставить датчики по пинам?

    Именно. Свой файл платы (или #if) в AP_HAL/board и своя папка платы в AP_HAL_REVOMINI/wirish/boards с распиновкой камня. 

    [2017-01-02 06:58:56] kozin писал(а): еоретически ваш хал может вернуть возможность вернуть проект в изначальное "арду" русло, когда широкий круг лиц мало мальски знакомых с С++ мог дополнить проект своим функционалом

    Я как раз старался именно это и получить. Возврат к истокам, так сказать - ибо мне непонятно, зачем на борту нужен интерпретатор командной строки... 

    Проект начинался с Ардуины - и самым логичным развитием был бы переход на платформу Ардуино32. Вот только ээээ... слегка извращенная структура контроллера PX4, на коий и был первый 32-бит порт, оставила свой отпечаток на всем проекте. Более поздние ХАЛ, например Линукс, уже гораздо проще идеологически. Да и практически все датчики для PX4 являются особым случаем - AP_InertialSensor_PX4 вместо AP_InertialSensor_Invensense, и так далее.

    Единственное что пока есть один косяк - все работает при (не)оптимизации -O0,  а даже -Og ломает опрос MPU6000 :( Сейчас вроде выловил пострадавшие файлы, по мере свободного времени постараюсь поймать.

     

  • Аватар профиля kozin Алексей Козин в 8 г., 4 мес. назад

    наверное пременные не объявлены volatile а обработка в прерываниях. лично мне других причин не приходит в голову

    шедулер на прерываниях?

  • Аватар профиля Night_Ghost Night_Ghost287 пунктов в 8 г., 4 мес. назад

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

    6 файлов, требующих -O0 чтобы все работало, я сегодня выделил в TODO, но убей Бог лаптем не могу понять связь SPI и таймеров..

     

    [2017-01-02 12:23:43] kozin писал(а): шедулер на прерываниях?

    Естественно, прерывания от 7 таймера 8КГц, но все проходится по шагам и вроде правильно, в том числе и все интервалы - а из MPU читается мусор или нули.

← Форум группы   Все форумы К последней записи
Постов на странице:

Вы автоматически вступите в эту группу, когда ответите в теме.

Добавить ответ:

-
Рейтинг@Mail.ru Рейтинг@Mail.ru