Управляем чем угодно откуда угодно

Квадрокоптер

Кто что сделал и кто что собирается делать

Re: Квадрокоптер

Сообщение lyxstv » 27 фев 2014, 19:40

Спасибо, пропустил наверное.
lyxstv
 
Сообщения: 42
Зарегистрирован: 13 сен 2013, 16:02

Re: Квадрокоптер

Сообщение eagafonov » 27 фев 2014, 20:32

lyxstv писал(а):Спасибо, пропустил наверное.

Не пропустил. Я не описывал ничего ещё для опубликования.

Есть много ещё незакоммиченных измнений. Очень много. Буду выкладывать потихоньку.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Квадрокоптер

Сообщение eagafonov » 02 мар 2014, 21:52

https://github.com/eagafonov/v2r-ardupilot

На мастере лежит весь код, который я написал/перелопатил для портирования ArduPilot на виртурилку.
в наличии много костылей и хаков под специфично моё железо, так что граблей много - надевайте каски.

README_V2R.md - пара слов как построить и небоьлшой список TODO, который однозначно будет расти :-)

Из текущей движухи - учись измерять напряжение батарейки с помощью ADC, операционного усилителя и утюга.
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Квадрокоптер

Сообщение Vrevre » 11 мар 2014, 22:26

eagafonov писал(а):v2r-ardupilot

А много ресурса ардупилот отнимает у виртурилки? Остается ли ресурс на выполнение основной функции (кодировании видео)?
Vrevre
 
Сообщения: 33
Зарегистрирован: 04 ноя 2013, 23:52

Re: Квадрокоптер

Сообщение lyxstv » 12 мар 2014, 12:46

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

Кодированием видео сам CPU не занимается, этим занимается DSP(скажем так сопроцессор), а вот вещанием его например в сеть уже сам CPU.

Сейчас пока руки не доходят поковыряться в том что выложил eagafonov, как назло свалилось много, но проект arducopter мне хорошо знаком.

Суть его такова, тупо в бесконечном цикле, опрашиваем датчики и корректируем работу двигателей, это приводит к пожиранию всех ресурсов CPU.
Для ардуины это нормальный и самый лучший режим работы, но когда есть ОС и приходится делится ресурсами архитектура должна быть немного иной.
К примеру стандартные регуляторы принимают данные по шиму 50 герц и нет смысла опрашивать датчики в 100 раз быстрей.

И конечно же ответ на ваш вопрос, 8 битный AVR(ардуино если не понятно) 20Mhz с 256кб оперативки, это проц на котором работает изначально arducopter, имхо ресурсов более чем достаточно для обоих задач.
lyxstv
 
Сообщения: 42
Зарегистрирован: 13 сен 2013, 16:02

Re: Квадрокоптер

Сообщение eagafonov » 12 мар 2014, 22:07

lyxstv писал(а):Суть его такова, тупо в бесконечном цикле, опрашиваем датчики и корректируем работу двигателей, это приводит к пожиранию всех ресурсов CPU.


Вскрытие показало, что работа с UART и реализация таймеров для Linux... скажем так, неоптимальна :)
Минимальная программа со sleep'ом в цикле занимает 5-10% CPU

В режиме стабилизации ardupilot занимает 60% CPU, бОльшая часть времени - работа с UART и получение данных по i2c в режиме ядра.

Направлений оптимизации два. Первый - переделать работу с UART c опроса в цикле на poll/epoll.
Второй - уменьшить обмен с устройствами i2c, заменив file read/write на ioctl/poll.

Не уверен, что драйвер i2c реализует poll/epoll
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Re: Квадрокоптер

Сообщение lyxstv » 13 мар 2014, 19:37

Я завтра постараюсь глянуть какой cycle time у оригинального ардукоптера.
Евгений попробуйте узнать(есть в мавлинке) какой у вас сейчас этот параметр.

pool epool и select принимает файловые дескрипторы, но как не прискорбно под линуксом они не работают :(

Также на производительность слипа может влияет параметр HZ который крутили для стабильности работы wifi
Он влияет на выделение слайсов времени для процессов, если он им не пользуется, (могу ошибаться) он квантуется по этому параметру, NOHZ соответственно отдает ресурс сразуже другому процессу.

А вообще вроде i2c и uart аппаратные они не должны хавать проц :\
Нужно сравнить cycle time тогда думаю все прояснится.
lyxstv
 
Сообщения: 42
Зарегистрирован: 13 сен 2013, 16:02

Re: Квадрокоптер

Сообщение phoenix367 » 13 мар 2014, 23:05

eagafonov писал(а):
В режиме стабилизации ardupilot занимает 60% CPU, бОльшая часть времени - работа с UART и получение данных по i2c в режиме ядра.



Что-то как-то слишком много он у вас жрет. Моя реализация системы управления (правда это не квадракоптер) жрет меньше 30% CPU при частоте опроса датчиков 100 Гц. При этом она также ходит в UART и еще успевает отправлять данные телеметрии по Wifi. Правда на новую прошивку я так и не перешел до сих пор. Опрос датчиков при этом идет из юзер-мода через ioctl.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Квадрокоптер

Сообщение lyxstv » 15 мар 2014, 21:05

Я долго не мог понять почему у меня время цыкла все время 0 )
Но как оказалось, оно не пишется в логи если время меньше 10мс.
Так что сравнить не получится, печально например на multiwii он постоянно его пишет (
Если что в логах раздел PM параметр NLon
Подробней здесь http://copter.ardupilot.com/wiki/downlo ... n-planner/
lyxstv
 
Сообщения: 42
Зарегистрирован: 13 сен 2013, 16:02

Re: Квадрокоптер

Сообщение eagafonov » 15 мар 2014, 22:10

Замеры показали, что основной цикл выполняется на частоте 70Гц. Похоже, что в основное время уходит на чтение данных с акселерометра по i2c. В оригинальном железе apm:copter аксель подключён по spi.

Я сегодня попытался поднять частоту i2c до 400 kHz, стало хуже, но, кажется, из-за длинных проводов от виртурилки до макетки. Попробую укоротить до минимума.

В общем, есть что оптимизировать. Как выяснилось, что опрос ADC жрёт много ресурсов. В apm:copter ADC используется для общения с аналоговым сонаром, я же его использую только для мониторинга заряда батареи, так что можно катастрофически уменьшить частоту опроса ADC.

Вообще, для чтения "в час по чайной ложке" из файла /dev/v2r_adc достаточно, в случае частого опроса - это ад и израиль. Я вроде реализовывал ioctl для /dev/v2r_adc, надо будет найти код....

Ещё у меня появился вопрос опытным мультикоптероводам про расположение GPS-приёмников. На многих видео/фото видно, что приёмник располагается на выносной штанге. С чего бы это?

Гугл выдаёт много картинок с вынесенным приёмником.
https://www.google.ru/search?q=dji+gps+mount&tbm=isch

Я понимаю, что встраивать в основной модуль не стоит ибо неизвестно куда он будет засунут,
но штанга-то зачем?

Просто на верхней плоскости расположить что-то мешает? Возникло предположение, что винты могу задеть, но хз...
Аватара пользователя
eagafonov
 
Сообщения: 175
Зарегистрирован: 18 сен 2013, 23:39
Откуда: Нижненовгородск

Пред.След.

Вернуться в Проекты на базе Виртурилки

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron