FPV через интернет

levka17

Задача: с борта передавать видеопоток, данные телеметрии и получать управляющие сигналы в реальном времени через интернет, т.е. задача - подменить обычный радиоканал с пультом интернет каналом с беспроводным модемом.
Пусть есть какой-нибудь стандартный тяжелый квадрокоптер (около 2 кг со всем оборудованием) с готовыми полетными мозгами (например, от MultiWii или Ardupilot). Полетный контроллер стабилизирует беспилотник автономно, управляет лопастями, все стандартно. Моторы, лопасти, рама, аккумуляторы сейчас не интересуют, будем считать куплено готовое стандартное решение. Денег на все это не пожадничаю, если увижу реальную перспективу собрать, что задумал.
Мозги. Добавляем в систему основной контроллер – производительный одноплатный компьютер под управлением Linux. К нему подрубаем цифровую Full HD камеру и 4G модем с внешней всенаправленной антенной.
Основной контроллер опрашивает полетный контроллер о текущей телеметрии и вместе с видеопотоком отправляет данные через модем на компьютер клиента. Клиент, получая картинку и телеметрию, посылает высокоуровневые управляющие сигналы, с которыми полетный контроллер уже работает и командует парадом.
Разделил мозги на два контроллера потому что:

  1. Для LTE модема нужен драйвер, следовательно, нужна ОС (хорошо подходит Linux)
  2. Нужна производительность для Full HD
  3. На C++ под Linux сильно проще будет работать с сетью, видеопотоком
    С авионикой не знаком, имея ввиду высокоуровневые управляющие сигналы – это эквивалент сигналам, которые генерирует джойстик (как на обычных коптерах с радиопультом). В данном случае они будут не с джойстика, а с клавиатуры. (С протоколом этих самых сообщений пока ничего не ясно).
    Задержка. Ее не избежать, однако как мне кажется, это не критично, т.к. ожидая сигналов от оператора, коптер стабилизируется полетным контроллером в реальном времени и может в принципе спокойно жить, зависая на месте.
    Характер полетов будет такой, что не требует мгновенной реакции, облетать препятствия не буду, поэтому задержка опять же не критична.
    Модем. Покрытие сетями LTE в городе хорошее, также в случае обрыва, модем автоматически подключается к сетям 3G (покрытие лучше, чем 4G), к тому же на высоте скажем 30-50м теоретически связь должна быть еще лучше, чем на земле, т.к. отсутствует интерференция, дифракция и прочие гадости отражения сигнала. Летая на высоте базовых станций, все должно быть шикарно. Если же нет, не вижу преград поставить дублирующий модем от другого оператора, шанс потери сигнала сразу от всех имхо крайне мал.
    Сейчас в городе последние LTE модемы выдают скорость отдачи до 50 Мбит/с, так что думаю Full HD должен идти без особых проблем, понятно, что беспроводная связь нестабильна и БС временами перегружаются, но опять таки ничего критичного не вижу, даже в случае обрыва связи пусть повисит минуту восстанавливает соединение, а если нет пусть летит домой по GPS (полетные контроллеры MultiWii как я понял, такое могут из коробки), либо переключается на запасной модем.
    Логика управления. Основная логика поведения при соединении, обрыве, переключении модемов, задействовании Failsafe, передачи данных и принятии сигналов будет написана на С++ на основном контроллере. Полетный контроллер, по сути, работает сам по себе как обычно, основной контроллер лишь подает ему сигналы управления, забирает телеметрию и вызывает Failsafe. Правда, пока смутно представляю, как их свести. Вся остальная логика его не касается и выполняется отдельно на основном контроллере, который заботится о видео, связи и стратегии поведения.

    Программа полетов (на контроллере под Linux) определяет в системе камеру и направляет ее бинарный видеопоток в TCP сокет. Клиент (программа на компьютере оператора) устанавливает TCP соединение и принимает видео. Поток с телеметрией читаю с полетного контроллера и создаю для него отдельное TCP соединение. Можно зашифровать весь трафик, обернув TCP соединения в TLS/SSL. Программная часть основного контроллера представляется мне вполне реализуемой.
    Вот набросал, чтобы было немного понятней:
  4. Включение питания
  5. Запуск ОС, программы, инициализация
  6. Модем/ы подключаются к интернету, включается камера
  7. Устанавливаются TCP соединения между коптером и компьютером
  8. Программа в цикле опрашивает камеру и телеметрию с полетного контроллера
  9. Одним потоком уходит видео, другим телеметрия
  10. Ждем управляющих сигналов с компьютера
  11. Получили сигнал, передаем на полетный контроллер
  12. Полетный контроллер получает сигнал и выполняет какую-то свою логику по управлению полетом
  13. Переходим на пункт 5, если все хорошо
  14. Обрыв соединения
  15. Модем пробует переподключиться (или активируется запасной), полетный контроллер не получает сигналов, коптер спокойно висит в воздухе
  16. Если связь восстановлена, переходим на пункт 5
  17. Если нет связи 60 секунд, говорим полетному контроллеру чтобы включил Failsafe
  18. Продолжаем пробовать подключаться
  19. Если связь есть, отбой Failsafe, идем на пункт 5
  20. Если нет, идем на пункт 15
    Вот примерно такая логика программы полетов будет крутиться на основном контроллере, конечно, многое не учтено, но это пока базовые наброски.
    Обработка видео. Уже на клиентском компьютере можно на лету обрабатывать видеопоток, накладывать на картинку данные телеметрии: курс, горизонт, перегрузка и так далее, отмечать позицию коптера на карте, причем не тупо выводить числа в ряд, а красиво рисовать авиационный интерфейс (что-то типа HUD). Можно также параллельно писать видео на винчестер. Все это опять таки пишется на С++ под Windows.
    Итог. Реализовав все это можно управлять коптером, откуда угодно и по очереди разными людьми, нужно лишь клиентское приложение и широкий канал с низкой задержкой. Вот что в принципе прикинул за пару дней, узнав про квадрокоптеры. То есть в принципе на выходе получается беспилотный разведчик.
    Ничего готового не нашел… Все или по радиоканалу с пульта, что уныло, либо через какие-то онлайн-трансляции на сайты, скайпы или видео очки, что тоже как-то кустарно и не юзабельно.
    В целом я хочу собрать коптер с максимальным полетным временем и обязательно с управлением от компьютера, получается, что ограничивает полетное время в моем случае только емкость аккумуляторов и зона покрытия LTE. Остальные параметры не критичны: сложные фигуры, скорость, большая высота мне не важны, а с неизбежными задержками и лагами готов мириться.
    Очень не хочу гнилых помидоров, но критика тут важна. Главное хочу услышать критику по поводу архитектуры радиосвязи через интернет. Спасибо, кто осилил.
Covax

Вы хоть знаете сколько коптеры вообще летают?
Я лично через три года только к 27 минутам на пустом подошел и к 20 с фпв. Каждый лишний грамм это драгоценные секунды.Каждая милисекунда задержки видео и принятия решения это драгоценные секунлы бесполезного полета.
Теперь вопрос, зачем вам фпв через интернет, когда учитывая дальность полета коптера видеолинка 1.2Ghz да даже 5.8Ghz за глаза хватит?
LTE покрытие хорошее, ну ну) Говорят на верхних этажах высотных зданиях вообще проблема с сотовой связью изза направленности антенн БС или вы среди домов летать собрались?)
В городе вообще наши штуки запускать нельзя)

levka17

Я поясню приоритеты.

  1. Полеты с пультом, видеочками и так далее не интересны в принципе.
  2. Я исходил из максимальных для коптера ~30мин. пустым и около 20мин. со всем обвесом, учитывая скорость коптера 10-30 км/ч можно улететь довольно далеко: при 20км/ч 20 мин полета это уже >6 км (насколько я понял 5.8Ghz бьет на километр)
  3. Задержка это не обязятельно простой. Управляющая программа может продолжать посылать предыдущие управляющие сигналы до тех пор пока не получит новый, пока инет тупит, коптер может лететь куда летел. Это еще один плюс, я сам определяю логику.
  4. Просто интересно будет это технически реализовать.

И все-таки я не видел в радиолинках дальности >1 км с возможностью передавать Full HD. А то что бьет подальше не потащит видео.

Covax:

направленности антенн БС

Блин я боялся этого.

Covax:

В городе вообще наши штуки запускать нельзя)

Ну а на это мне повсеравно.

Панкратов_Сергей

Баян. Неоднократно перетиралось.
На форуме есть даже начатые и заброшенные проекты.
Пару недель потратьте на чтение форума.

crand
levka17:

Ну а на это мне повсеравно.

Многозначительно.😃

IdLeR
levka17:

Реализовав все это можно управлять коптером, откуда угодно и по очереди разными людьми,

Реализуйте, благословляю.

levka17

Прошу конкретики. Всего пару слов о принципиальных проблемах (за направленность БС, спасибо, учел). Две недели ворошить помойку слишком большая плата, за то чтобы только понять выполнимо это или нет.
PS. Форум называю помойкой именно из-за того, что каждый второй пост - упражнение в сарказме/самоутверждении, никого не хочу обидеть, просто так и есть.

nyc73

Все реализуемо. Но реализация потребует больших ресурсов (времени в первую очередь). Посему бьюсь об заклад: реализации не последует 😃

KBV

тоже хотел написать, опередили 😃
Евгений, тут все критически смотрят на управление по Интернету совсем не потому, что это невозможно.
А потому что:

  1. Было слишком много теоретиков, и никто ничего реально не сделал. У вас, с виду так кажется, не заметно желания садиться паять и программировать контроллер.
  2. Дальность полета ограничена запасами энергии на борту, а не дальностью видео/РУ. Поэтому смысл затеи сомнителен.
    Если надо летать между домов в городе- то мы там не летаем и вам не советуем.
    Но, повторюсь, лично я не считаю что это невозможно 😃
levka17

Ну в принципе все проясняется. На текущий момент не выявил прям уж непреодолимых препятствий.

Было слишком много теоретиков

Да, я очередной форумный теоретик, признаю. И понимаю скептицизм сообщества. 😃 Надо же с чего-то начинать. В любом случае моя архитектура для коптера показалась мне вполне разумной и самое главное, что в ней минимум отсебятины, т.е. беру все готовое, переделываю только самое необходимое, соответственно меньше работы, и выше вероятность все таки завершить начатое.

реализации не последует

Вполне возможно. Моя цель сейчас, трезво все оценить.

садиться паять

Паять ничего не надо. Полетный контроллер соединяю с моей платой стандартным интерфейсом (например I2C, как я понял на данном этапе).

Как мне видятся причины фейлов аналогичных начинателей:

  1. Неподходящий тип ЛА. На самолетах по интернету действительно не вариант. Какой бы ни был канал, задержка будет, и ее последствия для самолета плачевны. Т.к. у меня коптер, мне отлично подойдет “управляемый автопилот”, тогда задержка вообще уже просто как косметическое неудобство.
  2. Еще пару лет назад не было достаточно быстрого для FPV беспроводного интернета с минимально необходимым покрытием. Уверен, есть какой-то процент старожилов, которые уже усвоили, что идея утопия и могут не следить за последними новостями беспроводных сетей, либо живут в городах, где их пока нет. Через N лет вангую, что будет шквал подобных решений.
  3. Начинают с нуля. Я не собираюсь. Строго говоря авиамоделизм мне вобще не интересен, мне просто нужна летающая камера, поэтому готов покупать готовое и проверенное. Полетные мозги сам не сделаю и не собираюсь, алгоритмы стабилизации, микроконтроллеры, боже упаси. На этом кулибины и горят.
  4. Лень, отсутствие знаний. Тут уж от человека зависит. Вобщем-то я ITшник, хоть и не по железу, но если увижу перспективу, могу и заморочиться, тем более, что автоматизация вобще мне всегда была интересна.
  5. Железо. Закон Мура работает на нас. Железо все мощнее, кушает все меньше. Сейчас не проблема купить плату за 5к рублей, поставить Linux и обрабатывать там Full HD, опять же, не все товарищи за этим следят.

По сути все что я хочу сделать, это купить квадро/гексо-коптер, готовый, проверенный, с бюджетом тоже жадничать не буду, готовый полетный контроллер, добавить туда СВОЮ плату, которая будет посредником между полетным контроллером и компьютером. Все. Подменяю радиоканал, обрабатываю ввод/вывод и все. ПО написать совершенно не проблема хоть сейчас (кроме общения моей платы и купленного контроллера, так как зависит от прошивки/ПО полетного контроллера, с которым я пока не знаком. Однако и тут очевидное решение - использовать прошивку с открытым исходным кодом, дописать часть кода для взаимодействия с платой).

Многие почему-то говорят, что питание это проблема. Это не проблема, а ограничение. Получится 20 мин, хорошо, меня устраивает. Просто выберу оптимальную связку масса/энергоемкость, что получится на том и летать…как бы выбора все равно нет.

nyc73

Реализаторы тихо делают маленький прототипчик, с усеченным функционалом, допустим видео по инету, РУ традиционно, либо наоборот. Катают его месяца три, огребают кучу косяков, обогащаются опытом. Потом только добавляют маленькую новую фичу, катаются опять. Как-то так. А до этого просто набирали опыт с коптерами, летая визуально возле себя.
Или просто, тестируют плату на стенде где-нить на балконе, без всяких коптеров.
А не сотрясают помойку громогласным объявлением нового прожекта 😃
Королев сначала на планерах в Коктебеле хрен знает сколько кувыркался, прежде чем пообещать ЦК отправить человека в космос.
У меня неожиданный вопрос: а у вас коптер-то есть ? 😃 (или может я читал невнимательно).
Но пишете интересно, если будете обновлять ветку, буду читать 😃
Только боюсь , что реально работающая реализация потребует забить чуть ли не на основную работу, но я могу ошибаться 😃

Chester_kz

Все это интересно но самое главное довести все это до конца. Я немного колупал в этом направлении но времени мало единственно что сделать успел это софтварный стриминг(плата не та) видео по вафле задержкой 0.5сек и низким разрешением (640x480).
Возможно ссылки ниже будут вам в помощь…
veterobot.com/techinfo.html
pixhawk.ethz.ch/software/start

LaPart

Тема интересная, вперед!!! И форум фуфло!!! Ну чего ждать? Скорее, вверх, дыщ!!!
Пока чувствуешь в себе кучу мозгов - вперед!!!
Ну впрямь напоминает выступление “Уральских пельменей”, про северный плюс:)
Только там проект быстро закончился при помощи Деда Мороза.
И на голову ничего не упало.

Если конструктивно по теме проекта, то независимо от глобальности задуманного, на первом месте должна быть безопасность (все-таки).
Извиняюсь, конечно, но такая тема немного раздражает: одни амбиции, а опыт и чужие шишки нахер…
Можно не улетев из комнаты пальчики поотшибать, если только на своих ошибках, коптеры они только с виду безобидные:)

levka17:

Ну а на это мне повсеравно.

время всех рассадит по своим местам. Плохо, если пострадают невинные окружающие люди… Ну а заодно и моделистам достанется…
Очень повезет, если аппарат булькнет в небольшой водоем, это отрезвляет.

Covax

Дабы внести какойто позитив и пользу в тему, спрошу,
а есть ли готовые решения чтобы транслировать картинку близку к HD, ну или хотя бы SD, не скайп и не facetime качества, через LTE?
я бы с удовольствием имел резервный канал видео через интернет, напримэр, да и просто окружающим показать как круто там, под облаками. с РУ точно не буду заморачиваться, имея дуалбенд от СЛона.

schs
Covax:

а есть ли готовые решения чтобы транслировать картинку близку к HD, ну или хотя бы SD, не скайп и не facetime качества, через LTE?


ip камеру
+ wi-fi 3g роутер. Толь вот вес будет немалым.
Камера к примеру AXIS Q175, полосы хватит.

maloii

Про задержку не забудьте в секунду а то и в три. С такой задержкой не получится летать

Covax

так, а LTE IPкамер еще видимо не придумано?
по поводу задержки все понятно, я же говорю резервный + для зрителей
коптер действительно может зависнуть на безопасной высоте и там где не будет работать видеотракт можно даже с задержкой летать по определенному сценарию, с учетом этих зверских задержек.

KBV

Самолету на высоте и на стабилизации (а то и на круиз-контроле) - 1-3 секунды тоже пофигу.
Я даже снимал очки и до автомобиля за сигаретами бегал:)
Уверен что и пролететь смогу (естественно без резких маневров), хотя это и не требуется.

Covax

Пробежался я по рынку, да продают IP камеры даже с возможностью сразу впендюрить туда свисток 4G LTE, но все это дорого раз, траффик ест нереально много два, весит как мой коптер три) уж лучше я сделаю второй коптер на 40 минут полета с ретранслятором видео и РУ, а вторым поменьше буду летать куда сердце пожелает…

levka17

Господа… Прошу относиться к теме, просто как красивой теории 😃 По мере реализации буду выкладывать отчеты, но уверен, что все это растянется на долгое время и не уверен, что вообще закончу. Надеюсь прояснил этот момент. Но даже если меня завтра собьет автобус, надеюсь кому-то тема будет полезной 😃

Реализаторы тихо делают маленький прототипчик, с усеченным функционалом, допустим видео по инету, РУ традиционно, либо наоборот. Катают его месяца три, огребают кучу косяков, обогащаются опытом. Потом только добавляют маленькую новую фичу, катаются опять. Как-то так. А до этого просто набирали опыт с коптерами, летая визуально возле себя.
Или просто, тестируют плату на стенде где-нить на балконе, без всяких коптеров.

Согласен на все 100. Только так и ведется разработка.

на первом месте должна быть безопасность (все-таки)

Конечно. Я имел ввиду, что мне класть на сам ФАКТ ЗАПРЕТА. Ни в коем случае не собираюсь пускать летающий кирпич над головами людей. Даже если бы меня не заботила безопасность людей (а это не так), в случае аварии, все равно за мной бы пришли, а мне этого не надо. Так, что, повторюсь, ни в коем случае. Только безопасные маршруты и только при уверенности, что все работает как надо.

Самолету на высоте и на стабилизации (а то и на круиз-контроле) - 1-3 секунды тоже пофигу.

Ну это да, а как посадка? Угол тангажа не выровняешь вовремя и все…

а есть ли готовые решения чтобы транслировать картинку близку к HD, ну или хотя бы SD, не скайп и не facetime качества, через LTE?

Не совсем понятно что имеется ввиду под готовым решением. Если железо, то да есть IP камеры с прошивками LTE. А вобще для такой передачи как-то логичней использовать софт. То бишь, камеру и модем подключаем к компьютеру, софт передает поток куда надо. Плюсы в том, что никакие узлы друг от друга не зависят, можно выбрать самые подходящие модели. И софт ставить/писать какой угодно.

Начну с ПО, хотя бы потому, что могу начать уже сейчас.
Пока такой план работы:

  1. Напишу серверное приложение, которое берет поток с камеры и посылает в сеть. Оно же генерирует случайные данные телеметрии (в будущем эти данные будут от полетного контроллера) и также посылает в сеть. Пришло в голову, что надо синхронизировать кадр видео с набором данных телеметрии. То есть, одному кадру соответствует набор значений. Иначе, из-за случайных задержек при передачи они перемешаются и будут показывать все в разнобой.
  2. Клиентское приложение, получает картинку и телеметрию, выводит картинку и рисует поверх телеметрию в виде HUD.

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

IdLeR

Посмотрите вот сюда,
habrahabr.ru/company/virt2real/blog/156491/
Не это ли вы ищите, там кстати в коментах много что можно полезного узнать. Также что TCP\IP нам не походит, так как там задержка будь здоров на уровне протокола. Что rasberry pi дает лаг в 300 мсек при кодировании и пересылке 640x480 при wifi, и около 600msec при half-hd.

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

Еще не маловажный факт - это емкость реальных базовых станций даже по стандарту LTE там с этим совсем не все гладко. Сейчас делаем сети и для того чтобы получить стабильный линк в движуйщийся объект нужно покрытие будь здоров, при этом что других абонентов нету. Причем время переключения между станциями может быть не совсем приемлемо при скоростях болше чем 50 км\ч.

sbach737

Для начала нужно хотя бы раз полетать на коптере визуально.
Через интернет вы бы его грохнули через 0,2 секунды.

KBV
sbach737:

Для начала нужно хотя бы раз полетать на коптере визуально. Через интернет вы бы его грохнули через 0,2 секунды

На коптерах щас серьезные системы стабилизации, с автовозвратами и удержаниями. Можно повесить в метре от земли и пинать- он будет назад возвращаться 😃
Ладно коптеры, вертолеты 500размера так же висят, можно отложить пульт и пойти покурить. Правда пинать их опасно 😃

Yahen

Если мне не изменяет память, то у наших китайских братьев есть вагон и маленькая тележка уже реализованных таких игрушек. И продаются они не только в китайском интернете, но даже в обычных модельных магазинах. Даже в нашем тьмутараканском Минске они есть. Пульт - андроид планшет, либо яблочный планшет. Связь по вайфаю. Планшет как точка доступа и модель к ней конектится. На модели простенький стабилизатор и вперед с песней. Есть такие коптеры, и “двух споловиной” канальные вертолетики. И вроде даже машинку такую видел. Игрушка конечно. Но за то с управлением “через интернет” у вертолетика IP адрес свой и все такое 😃 Я бы посмел рекомендовать купить такое поиграться, благо копейки стоит. Посмотреть что там и как какие подводные камни и прочее. Видео там, конечно нет, только управление. Потому что “оченьдешево”