Русский
Русский
English
Статистика
Реклама

Дроны

Летающая табуретка или идеальный квадрокоптер для перевозки пиццы

18.12.2020 18:13:39 | Автор: admin


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

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

Мы приняли решение построить прототип, на котором сможем попытаться сымитировать динамику и принципы управления, которые необходимы нашему конвертоплану.

Я в авиамодельном хобби совсем не новичок, хотя сам еще довольно молод (еще пока студент магистратуры), но и мне крайне тяжело, а иногда и невозможно успевать за функционалом существующих прошивок и полетных контроллеров для квадрокоптеров и других БПЛА. Насколько я помню, шесть лет назад простые прошивки для дронов помещались в Arduino IDE и работали на платах от пульта для приставки. Сегодня же китайские фирмы предлагают нам за 20 долларов плату с прошивкой, функционал которой превосходит базовую программу обучения в институте. Таким образом, перед желающими собрать квадрокоптер стоит огромный соблазн даже не пытаться заняться изготовлением полетного контроллера. Выбор имеющихся решений огромен, однако, как я сам убедился, не безграничен.

Прототип


Пытаясь придумать систему управления бикоптером со всеми степенями свободы, наша дримтим решила попробовать создать сначала то, что скорее всего точно полетит. Выбор мы остановили на квадрокоптере. Таким образом, мы пришли к выводу, что нам необходимо построить квадрокоптер с управляемыми векторами тяги каждого мотора. Я, конечно, могу сказать, что в технических условиях мы договорились, что управление в горизонтальной плоскости мы будем осуществлять за счет управления вектором тяги, однако по-другому у нас просто не получилось.


Что бы хоть чем-то отличаться от людей, получающих образование на форумах, хотя сами такой информацией не брезгуем, мы начали с проработки примерной 3D модели. Основной отправной точкой для себя мы взяли микросервоприводы с металлическим редуктором. Таким машинкам точно хватит усилия и прочности. Прикинув период колебаний пятидюймового квадрокоптера я понял, что и скорости работы хватает с достаточно большим запасом. Основываясь на этих компонентах, мы серьезно занялись проблемой выбора моторов. Преодолев долгие душевные терзания, мы вспомнили, что в душе все мы немного акционеры и остановились на квадрокоптерных моторах, которые были по акции на одном известном китайском сайте. Затем, мы перешли к постройке 3D модели. Модель должна была быть максимально простая, чтобы ее можно было быстро изготовить: частично напечатать на 3D-принтере, сделать раму из подручных материалов, ну и, конечно, подогнать сверхточным инструментом напильником. В итоге, за два вечера в компании интересного собеседника, получилось создать именно ту модель, что отвечала поставленным задачам.



Моделирование системы управления


Какой же проект без научной составляющей? Надо провести исследования. Возможности Simulink (Matlab) позволили нам смоделировать похожую модель с выбранной системой управления. Имея готовую 3D модель, нам не составило труда задать ее физические свойства в Matlab.

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

Стратегию управления мы взяли, как нам показалось, максимально простую. Мы решили стабилизировать квадрокоптер в горизонтальном положении за счет разностей тяг моторов, а перемещаться в горизонтальной плоскости за счет наклона моторов в двух плоскостях.
Со стабилизацией в горизонте вопросов совсем невозникало, так как на эту тему существует огромное количество статей и большой выбор контроллеров: начиная от простейшего PID контроллера, заканчивая контроллерами, самонастраивающимися с помощью нейронных сетей.
Мы остановились на самом простом PID контроллере. Для управления в горизонте мы решили пропорционально отклонять каждый мотор для создания требуемого усилия. Отклонять сервоприводы будем парируя возникающие линейные ускорения PID контроллером. Удерживать позицию нам это не поможет, однако нам это и не надо. Мы пока просто хотим понять, полетит ли такая конструкция. Загвоздка еще состоит и в необходимости добавлять газ мотору при его отклонении, но мы этим пренебрегли.

Изготовление прототипа


Поборов в себе желание создавать всю прошивку для такого квадрокоптера с нуля, мы прибегли к, на мой взгляд, элегантному решению. Мы разделили между двумя платами задачу стабилизации квадрокоптера в горизонте и задачу управления им. Таким образом, моторами у нас управляет самый обыкновенный коптерный полетный контроллер F4, а за управление актуаторами отвечает отдельная плата STM Blue Pill.
Схематично это можно представить следующим образом:



После построения модели в Simulink, написать нужную программу вполне посильная задача. Особенностью нашего контроллера является разделение на два PID контроллера (вперед-назад и вправо-влево), и расшифровка-зашифровка сигнала SBus. То есть с приемника дистанционного управления мы передаем сигнал нашей плате, делаем все что пришло в голову пилоту, а квадрокоптерному полетному контроллеру создаем свой управляющий сигнал, требующий лишь удержания квадрокоптера горизонтально, то есть контролируем лишь тягу моторов.

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




Летные испытания


Взяв школьника, у которого еще не развит инстинкт самосохранения, мы приступили к летным испытаниям. Конечно же мы предупредили его о возможных опасностях, но лишиться пальца он не боялся. Мы вообще не верили, что это полетит. Но тем не менее, с первой попытки все получилось. Летает он на удивление быстро, возможно, это связано с уменьшением аэродинамического сопротивления в сравнении с классическими моделями квадрокоптеров. Посмотрите видео, там показано, как наш квадрокоптер держится в полете.



За возможность перевозить открытый стакан с жидкостью и топорность конструкции, мы присвоили своему произведению кодовое название Летающая табуретка. В итоге, получился квадрокоптер, который отлично подходит для перевозки пиццы и напитков. Также его можно использовать для других задач, где требуется горизонтальное положение в полете, например, для отслеживания качества дорожного полотна. Не знаю, конечно, как это поможет, но подобные предложения уже поступали.

P.S.


Для тех кому интересно, насколько полезным может быть такой топорный метод компьютерного моделирования, я добавлю график сравнения отклика прототипа на управляющий сигнал во время летных испытаний и график отклика смоделированной в Matlab модели на лог этого же сигнала.

По оси крена:


По оси рысканья:

Вывод


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

DimDrone20 как я сделал летающую платформу для computer vision исследований

21.03.2021 16:08:22 | Автор: admin

С 2017 года я делаю разный computer vision: начиная от понятных детекций и классификаций, заканчивая чтением по губам.

И вот после череды случайностей, я оказываюсь единственным Computer Vision инженером в стартапе, который делает беспилотные вертолеты. По это причине я решаю ворваться со своей computer vision ноги и сделать какой-нибудь pet project связанный с дронами.

План такой: соберу просто квадрик с камерой, автопилотом и какой-нибудь edge железкой (нейронки и прочий CV гонять), получится плюс-минус универсальная летающая платформа. Например, как эта, но более гибкая и дещевая. И интересный применений масса: от детекции человека и следования за ним, до управления квадрокоптером с помощью Reinforcement Learning-a.

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

В первой части статьи (уже через пару обзацев!) я расскажу и покажу, из каких компонентов я собирал квадрокоптер для этой задачи, на что ориентировался при выборе и что учесть, чтобы это полетело.

А во второй части (она уже готовится!) расскажу, про то, как заставить эту платформу удерживать позицию и летать простые миссии без использования GPS, с помощью visual SLAM.


Итак, рама

Раму квадрокоптера решил выбрать 450ого размера (расстояние между диагональными моторами равно 450мм).

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

Берите только карбоновые рамы. На мой взгляд главный их минус: проводят ток. И какая-нибудь платка лежащая оголенными контактами на раме может наделать делов. А в остальном, получите наилучший tradeoff по отношению легкость\прочность.

Итак, моторы

По-хорошему, чтобы решать какие моторы вам нужны желательно понимать финальную взлетную массу дрона. Но делать я так, конечно же, не стал \_()_/

На сайте где вы покупаете раму (в моем случае AliExpress) на странице товара скорее всего будут рекомендованные производителем компоненты. В моем случае это были моторы на 700KV ( число сильно кореллирующее со скоростью вращения винтов; чем больше ваш дрон, тем KV должно быть меньше). Здесь подробнее по KV.

Итак, регуляторы оборотов

Это плата (по одной на каждый мотор), которой автопилот говорит, какая скорость должна быть у моторов, и она в свою очередь дает столько тока на моторы, сколько нужно для поддержания этих оборотов (очень грубое определение).

Выбираем их очень просто: смотрим, сколько тока моторы потребляют в пиках, добавляем 10А и на такое количество тока берем регуляторы. Я добавлял 10А, как страховку от нерадивого производителя регуляторов, если берете у надежного продавца, думаю, можно и не добавлять и соответсвенно не переплачивать.

Еще обращайте внимание по какому протоколу общается ESC. Ищите сразу DShotXXX (чем больше число XXX, тем лучше)

Также неплохо было бы убедиться, что software автопилот, который вы будете использовать поддерживал протокол ESC (если это ArduPilot или PX4, скорее всего с этим проблем не будет)

Итак, лопасти

У лопастей есть два численных параметра на которые надо смотреть при покупке (обычно они пишутся в названиях как одно четырехзначное число XXYY): длина и шаг (обе в дюймах). С длиной все понятно. Что же такое шаг? Это расстояние которое проходит винт за один оборот по прямой оси. Вот изображение хорошо это иллюстрирующее.

Как упрощенную модель, советую держать в голове, что шаг очень сильно зависит от угла атаки лопастей: больше угол - больше шаг.

На самом деле это я сейчас такой умный, а в начале проекта я просто взял винты рекомендованные производителем рамы. В моем случае это винты 1145.

В идеале, перед установкой лопастей рекомендуется проверить их балансировку. Говорят, что какие бы дорогие лопасти не были, с завода они все равно не будут идеально отбалансированы. Когда отбалансированы неидеально - летать можно, когда отбалансированы плохо - это быстро становится понятно при первом взлете :)

И да (сейчас будет аксиома): 1) только карбоновые винты (самые крепкие из доступных обычным хобийщикам) и 2) не ограничивайте себя одной парой.

Итак, батареи

Тут две главные цифры это вольтаж (или количество "банок") и емкость.

Алгоритм такой: смотрим какой вольтаж пишет производитель выбранных вами моторов и берем такой же. По емкости можно разгуляться, вопрос лишь в том, сколько вам позволяет ваш бюджет. Я выбрал 4S Li-Po батарею и решил, что по емкости она должна быть около 5000 mAh. Так и выбирал. Пока у меня две такие батареи, которые позволяют висеть (самый энергозатратный режим для квадрокоптера) в воздухе порядка 20 минут.

Итак, приёмник и передатчик

В любом случае дроном нужно будет управлять в ручном режиме для этого нам нужен передатчик (аппаратура\пульт) и приемник. Здесь конкретных правил выбора я назвать не могу и не хочу т.к. новичок и так перегружен информацией. Кому хочется прямо в дебри различий между разными аппаратурами, тот найдет способ. А для себя (и всем советую) я взял приемник и передатчик от FrSky (Taranis X10 lite и FrSky R-XSR). Они далеко не дешевые, но почти самое оптимальное, что можно взять начинающему по соотношению цена\качество.

"Почти" потому что в последнее время слышал много хороших отзывов про RadioMaster. Подозреваю, что они тоже составляют неплохую конкуренцию FrSky на этом рынке, но нужно проверять.

Итак, автопилот

Автопилотом называют как software stack для управления дроном (state estimation, драйвера для различной подключаемой периферии, ОС для микроконтроллера), так и hardware (железяка где собственно software stack работает).

Hardware автопилот это микроконтроллер, в который уже встроены самые вжные датчики для управления (зачастую это IMU, барометр, магнетометр).

Задача автопилота принять сигналы со всех сенсоров (встроенные + GPS, визуальная одометрия, датчик воздушной скорости), рассчитать свою позицию, рассчитать отклоение от желаемой и отдать значение оборотов нужное для исправления этого отклоения на регуляторы оборотов.

Для этого используется тьма-тьмущая сложных и не очень алгоритмов. Т.к. моей целью не было самому писать все эти алгоритмы и мне бы хотелось использовать что-то готовое. Насколько мне известно в open-source есть только два автопилота, которые позволяют использовать визуальную одометрию (что для меня было важно): ArduPilot и PX4.

Я методом тыка выбрал ardupilot (все еще не уверен, что сделал правильный выбор) и по документации с их сайта выбрал один из самых новых на начало 2020-ого года hardware автопилотов - pixhawk 4 mini.

Итак, companion computer

Это еще одна числодробилка для нашего дрона, но уже гораздо мощнее. Обычно на companion computer возлагают такие задачи, как кодирование и стриминг видео с курсовой камеры, какой-нибудь сложный path planning, external navigation, обнаружение препятствий + task specific задачи.

И тут на самом деле есть из чего выбирать: Intel Movidius, Google Coral, Jetson серия. Raspberry серию изначально не раcсматривал т.к. уже в самых ближайших планах были нейронки, а пускать их на "малине" нужно только при крайней необходимости.

Остановился в итоге на Jetson-e Nano (самый дешевый из тогда доступных) поскольку кроме удобства запуска нейронок (TensorRT), это еще и железка с обычной GPU т.е. можно переписывать какие-то медленные куски кода на CUDA (все ведь умеют переписывать медленные куски кода на CUDA, так, чтобы это не стало еще медленней?), что очень актуально для SLAM алгоритмов.

Итак, камера

У меня под рукой была камера Intel RealSense D435, от которой я использовал только модуль, который выдает RGB картинку. В общем случае я бы посоветовал взять Raspberry Pi камеру c MIPI интерфейсом т.к. подключить и начать пользоваться максимально просто и в интернете много различных 3D моделей кейсов для такой камеры, наверняка найдете что-то подходящее, чтобы поставить на раму.

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

Итак, собираем!

напомню вам картинку из заставки поста

Почитав несколько статей и туториалов в интернете, вооружившись паяльников (да, надо будет научиться) мы собираем это все воедино и вуаля!

Я не буду подробно останавливаться на процессе сборки, но вот пару моментов, про которые я советую помнить:

  1. На сайте выбранного автопилота будет гайд а ля Getting Started. Следуйте ему. Там будет и про сборку железа, и про настройку самого АП.

  2. Если это ваш первый опыт сборки, не устанавливайте companion computer и камеру сразу. Сначала убедитесь, что дрон хорошо и предсказуемо летает.

  3. Не забывайте, что у квадрокоптера два мотора вращаются по часовой стрелке, а два против. Сразу после подключения моторов, это может быть не так, нужно будет менять софтварно (или хардварно, в зависимости от ESC).

  4. Если проверяете вращение моторов в помещении, ВСЕГДА делайте это без лопастей.

  5. Используйте только шестигранные винты для всего, что вы прикручиваете на квадрокоптер (бОльшая площадь соприкосновения отвертки и винта чем у крестообразной или плоской можно сильнее затянуть винт).

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

  7. Если у вас всех четырех моторах одинаковая резьба (гайка закручивается в одну сторону), ОБЯЗАТЕЛЬНО проверяйте, насколько сильно затянуты эти гайки перед каждым полетом.

  8. Если есть такая возможность (на борту есть GPS), первые полетные тесты делайте в режиме удержания позиции.

  9. Самый простой способ понимать количество заряда на батарее вот такой дешевый вольтметр. Суть вот в чем: чем меньше заряда в батарее осталось, тем меньше на ней напряжение. На одной заряженной LiPo ячейке напряжение 4.2v. Такой вольтметр начнет очень громко пищать, как только напряжение хотя бы одной из "банок" упадет ниже, чем вы на нем выставили (я обычно выставляю около 3.5-3.6v)

Итак, что в итоге?

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

Больше сил ушло на выбор правильных комплектующих из-за страха сделать неправильный выбор и потерять время и деньги. Этого я и попытался лишить вас (простите), если начнете собирать дрона для похожих целей.

Получился дрон, на котором очень скучно летать в ручном режиме, а если и летать, то только на улице, для помещения он большой. Но DimDrone послужит прекрасной платформой для тестов и исследований разных computer vision алгоритмов.

Подробнее..

Китай практикует запуск роя дронов-смертников, начиненных взрывчаткой

11.11.2020 18:11:34 | Автор: admin
В Китае разработали дрон-смертник, наполненный взрывчаткой, который может летать над полем битвы и охотиться за целями. Недавно вооруженные силы Китая провели испытания, запустив целый рой таких дронов из кузова грузовика.

image

Китайская академия электроники и информационных технологий (CAEIT), дочерняя компания китайской государственной корпорации China Electronics Technology Group Corporation, опубликовала видео испытаний, проведённых в сентябре. Китайский легковой тактический автомобиль Dongfeng Mengshi выпустил рой барражирующих боеприпасов, известных как дроны-самоубийцы или камикадзе. Видео испытаний, о котором впервые сообщила The War Zone, также показало, что в испытании CAEIT также участвовал по крайней мере один дрон, запущенный из трубы, установленной на вертолёте Bell 206L, а также один, сброшенной с вертолёта, похожего на Robinson серии R.

image

Вертолёт Bell 206L, запускающий небольшой дрон во время испытаний CAEIT.

image

Другая часть видеозаписи, показывающая что-то похожее на вертолёт Robinson R-series, сбрасывающий трубу с небольшим дроном внутри.

Ближе к концу видео можно увидеть рой из 11 дронов, летящих вместе.



Как работает дрон-смертник?


Пусковая установка на грузовике имеет 48 ячеек. Мы можем предположить, что один грузовик способен запустить десятки барражирующих боеприпасов, которые заполняют пробел между крылатыми ракетами и большим количеством беспилотных боевых летательных аппаратов.

image

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


Неясно, какой именно тип беспилотника использовался в испытаниях, но он напоминает беспилотник-смертник CH-901, первый в Китае тактический беспилотник, разработанной государственной Китайской корпорацией аэрокосмической науки и технологий. Как сообщает South China Morning Post, CH-901 небольшого размера всего 1,2 метра в длину и весом 9 кг., но он может провести в воздухе до 120 минут и развивать скорость до 150 км / ч перед детонацией.

image
12-трубная пусковая установка для СН-901.

Made in China. Есть ли у системы помехи?


image

Неясно, применялась ли уже эта система в Народно-освободительной армии. Китайские военные инсайдеры сообщили SCMP, что разработка находится на ранней стадии и Китай все еще пытается преодолеть различные технические проблемы. Например, военные обнаружили помехи в системе связи: искусственный интеллект слишком медленно реагирует.
Китай добился больших успехов в области распространения беспилотных летательных аппаратов за последние годы. CAEIT не только установила рекорд, запустив сразу 200 дронов с неподвижным крылом два года назад, Китай также не раз демонстрировал крупные операции с использованием стандартных квадрокоптеров.

Дроны роятся по миру


Однако не только Китай стремится к созданию роевых дронов.
Управление военно-морских исследований разрабатывает многотрубные пусковые установки для дронов Coyote в рамках своей программы Low Cost UAV Swarming Technology (LOCUST), которую ВМФ впервые продемонстрировал в 2015 году. Дроны можно запускать как с земли, так и с корабля.


Другие военные подразделения также рассматривают различные возможности создания убийственного роя. Например, одна из программ Агентства перспективных исследовательских проектов Министерства обороны США (DARPA) изучала запуск десятков восстанавливаемых дронов Gremlin с самолета C-130 Hercules.
Военные заинтересованы в технологии роения дронов, потому что это открывает много возможностей во время военных действий: будь то разведка, подавление связи или кинетический удар. Однако потенциальных средств защиты от этих боевых систем недостаточно, они непропорционально дороги или все еще очень незрелы.
Что вы думаете об использовании искусственного интеллекта в военных целях? Делитесь своим мнением в комментариях!

Список литературы:

  1. China is practicing unleashing swarms of suicide drones packed with explosives from the backs of trucks [Электронный ресурс]. URL: www.businessinsider.com/china-test-launched-swarm-of-suicide-drones-from-a-truck-2020-10
  2. China tests swarm of suicide drones launched from a truck and helicopters [Электронный ресурс]. URL: www.scmp.com/news/china/military/article/3105670/china-tests-swarm-suicide-drones-launched-truck-and-helicopters
  3. China Conducts Test Of Massive Suicide Drone Swarm Launched From A Box On A Truck [Электронный ресурс]. URL: www.thedrive.com/the-war-zone/37062/china-conducts-test-of-massive-suicide-drone-swarm-launched-from-a-box-on-a-truck
Подробнее..

Как образовательный коптер помогает научиться программировать на Python, и что не так с Lua

17.02.2021 18:10:52 | Автор: admin

Почти 4 года прошло с выпуска первой статьи об учебном квадрокоптере Геоскан Пионер. За это время формат конструктора для сборки учебного квадрокоптера успел набрать популярность - он хорошо подходит как для организации учебного процесса со школьниками или студентами, так и для использования на различных хакатонах, соревнованиях, или при выполнении на его базе исследовательских проектов.

Ключевые элементы обучения на сегодняшний день - это развитие навыков программирования для решения задач автономного полета коптера, понимание основ алгоритмов управления и работа с различными функциональными модулями. Для юных пользователей порог входа был снижен за счёт возможности использования визуального блочного программирования в плагине для TRIK-Studio, а вот создание более сложных программ требовало знакомства с языком Lua.

В 2020 году линейка Пионеров дополнилась новыми моделями - появились младший и старший братья Мини и Макс. И если по размеру и массе братья стоят по ранжиру - Мини самый маленький и легкий, а Макс самый большой и тяжелый, то по функционалу младший уже готов дать фору своему предшественнику (назовём его Классическим Пионером).

Во-первых, уже в базовой комплектации Пионер Мини имеет видеокамеру с возможностью передачи видео по Wi-Fi. Во-вторых, он оснащен датчиками, которые могут обеспечивать автономный полёт в помещениях с использованием сразу нескольких систем навигации - УЗ и ИК (подробнее про них расскажу в отдельном материале). Если вкратце - это внешние системы позиционирования в помещении, которые позволяют коптеру ориентироваться в локальной, зафиксированной системе координат, связанной с точкой взлета. В случае отсутствия системы навигации коптер не потеряется, т.к. имеет датчик оптического потока и TOF дальномер.

Все эти функции доступны и Классическому Пионеру, но требуют использования отдельных модулей расширения. Концепция с дополнительными модулями позволяла адаптировать базовый набор под различные учебные или соревновательные кейсы. Например, модуль захвата груза в паре с модулем GPS позволяет реализовать простейший кейс поисковой операции. Однако для тех, кто только начинает свое знакомство с коптерами такое разнообразие может оказаться лишним и даже пугающим, поэтому для таких пользователей и был создан Мини: недорогой, ударопрочный коптер, который "из коробки" оснащён самым необходимым для автономных полетов в помещении. Ну и в-третьих, благодаряналичиюWi-Fiудалось добавить для Мини возможность программировать на Python.

Какая связь? Сейчас поясню.

Пионер Мини рассчитан на полёт в помещении, и применение на нём Wi-fi в качестве канала связи было не только оправдано, но и открыло новые возможности по сравнению с Классическим Пионером, где обеспечивалась только узкополосная, но дальнобойная связь в канале 868МГц. Простота подключения (без использования доп. модулей), высокая скорость передачи данных и поддержка протокола MAVLink в совокупности позволяют осуществлять программирование квадрокоптера удаленно, используя, к примеру, ноутбук, на котором запущена программа. В данном случае коптер как бы визуализирует код, написанный пользователем на компьютере. При этом все, что происходит с коптером можно отслеживать на экране ноутбука в реальном времени, в том числе по изображению с видеокамеры.

В случае с Классическим Пионером пользователям было доступно только программирование на Lua с использованием базовых реализованных функций и готовых модулей, фактически без обратной связи или возможности отладки. Это позволяло освоить стандартную методику преподавания, но как только ученик хотел сделать что-то свое, начинались проблемы, о которых далее.

Почему Lua не лучший вариант для обучения программированию:

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

Постараюсь объяснить это на примере.

Есть типичная для школьных олимпиад по робототехнике задача - получить картинку с камеры и на основании какой-то информации с нее полететь в нужную сторону. Если вы работаете с техническим зрением, то в голове сразу выстраивается картина: берем OpenCV, обрабатываем видеопоток, выдаем команду. Но с Пионером не все так просто

Контроллер автопилота решает только задачи управления и связи, при этом пользовательские скрипты на Lua запускаются внутри интерпретатора, который сам является частью прошивки. Поэтому вычислительные мощности автопилота как и набор доступных интерфейсов оказывается ограниченным и логичным решение является использование внешнего вычислителя. Например, мы можем подключить к автопилоту модуль с камерой OpenMV H7, которая имеет достаточно мощный контроллер для обработки изображений и способна выдавать результаты обработки в виде команд в декартовых координатах. Дальше нас ждут сюрпризы. Среда программирования Pioneer Station, поддерживает только работу с автопилотом, позволяя написать код на Lua и загружать его в коптер. Для работы с камерой нужно отдельно установить среду OpenMV IDE, и оказывается, что камера программируется уже на MicroPython К слову, IDE для камеры довольно хорошая и поддерживает отладку, правда отследить работу программы можно только по светодиодам - отладчик для работыLua скриптов внутри автопилота не предусмотрен. Камера с автопилотом может быть соединена по интерфейсу UART, а для её подключения к автопилоту, для крепления на раме коптера используется плата адаптер.

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

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

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

Lua является очень быстрым и легким скриптовым языком во многом потому, что из коробки в нем практически ничего нет. И тут Python с пакетным менеджером просто не оставляет ему шансов. Вернусь к вышеописанной задаче по обработке изображения. Вполне логичной кажется ситуация, когда скрипт должен работать в асинхронном режиме. Я имею ввиду, что обработка изображения не должна вешать часть кода, связанную с отправкой команд управления дрону. На Python уже из коробки стоят пакеты threading и multiprocessing, к которым в придачу идет отличная документация и примеры, когда как на Lua скорее всего я найду чей-нибудь проект на github-е, и если в нем окажется хороший readme, это уже будет огромной удачей. Также важным фактором является и то что, Python используется как нативный язык для ROS, что позволяет сильно облегчить процесс понимания разработки своих роботов.

Другим преимуществом Python в образовательной робототехнике является организация экосистемы обучения. Касательно квадрокоптеров многие задачи строятся вокруг создания алгоритмов полета на основе обработки информации с сенсоров, поэтому очень удобно проводить расчеты и визуализировать процессы в одной среде.

Так, библиотека numpy может стать полноценной альтернативой вычислениям в более мощных пакетах, таких как Matlab, а полученные результаты можно очень легко встроить в программы полета. Опять же, говоря о техническом зрении, многие процессы получения геометрических характеристик сводятся к последовательным переходам от одной системы координат к другой, и тут возможности матричных вычислений numpy очень сильно помогают. Библиотека matplotlib со своей стороны может отлично помочь в визуализации данных, получаемых с дрона в реальном времени. Но в ситуации, когда для реализации Lua скриптов их заливают в микроконтроллер, возможности подключить к нему пользовательскую библиотеку нет вообще.

Чем сейчас удобна работа с библиотекой:

Библиотека для программирования Пионер Мини на Python выложена как open-source проект на github (https://github.com/geoscan/pioneer_sdk/tree/master), а так же может быть установлена используя pip с хранилища PyPi (https://pypi.org/project/pioneer-sdk/). Это, по сравнению с применением Lua скриптов, позволило реализовать полноценную версионность и дало нам уверенность в том, что пользователь сам может узнать об актуальной версии библиотеки.

Реализация библиотеки представляет собой класс квадрокоптера, в котором присутствуют методы по получению изображения с камеры квадрокоптера, полета, управлению светодиодами и получению сырых данных с датчиков. Освоив работу с ними с помощью преподавателя, ничего не мешает ученику внедрить свои идеи в скрипт квадрокоптера: будь то распознавание объектов или ARUCO маркеров, использование нейросетей, построение различных регуляторов и т.д. В дополнение к этому был реализован метод запуска предварительно залитого на коптер Lua скрипта по воздуху (в дальнейшем хочется также реализовать загрузку скрипта, чтобы уже написанные образовательные методики могли использоваться удобнее).

Также, опираясь на опыт разработки полетных заданий на Lua, часто случались ситуации когда ученик совершал фатальную ошибку в коде, которая могла привести к полному крашу коптера. Используя Python, удобно применять механизм прерываний по нажатию клавиш на клавиатуре, который позволяет спасти квадрокоптер в таких ситуациях либо же корректно завершить скрипт. Что не менее важно, так это на примере объяснять ученикам важность механизмов защиты и предусматривать их с самого начала работы.

В процессе полета библиотека по умолчанию логирует происходящие события в терминал, что очевидно на порядок ускоряет процесс отладки пользовательских программ. При работе с камерой библиотека позволяет выводить видеопоток на экран, а используя стандартные средства OpenCV по его обработке, довольно просто визуализировать происходящий анализ картинки.

Как самый свежий пример расскажу вкратце об опыте работы с Python на Пионере Мини в ФМЛ 239 г. Санкт-Петербурга. Школьники Центра робототехники в январе этого года работали с установкой всего необходимого ПО (PyCharm Community и Pioneer Station 1.11.0.), перепрошивали ESP-32 до версии 0.2.7., учились подключать компьютер к дрону. В итоге за одно занятие они смогли разобраться и запустить скрипт калибровки камеры на Python.

Сейчас у них есть возможность опробовать другие примеры скриптов и создать свои уникальные кейсы, например, реализовывать полёт Пионер Мини по линии (с помощью библиотек OpenCV и pioneer_sdk).

Все ученики говорят, что для них плюсы в работе с Пионером Мини - это широта возможностей коптера, способность полноценной реализации функций компьютерного зрения с помощью библиотеки OpenCV и компактность дрона. У всех есть большой интерес и к появлению дополнительных модулей (для изучения Python и видеозрения).

Подробнее..

Мир без пчел роботизированное опыление мыльными пузырями

26.06.2020 10:22:09 | Автор: admin


Школьный курс биологии научил нас тому, что все живые организмы так или иначе связаны друг с другом. Посудите сами, на поле растет трава, зайцы едят траву, лисы едят зайцев. Но если одно из звеньев этой демонстрационной цепи исчезнет, то пострадают другие: исчезнут хищники зайцы начнут плодиться и съедят всю траву; исчезнет трава зайцам нечего будет есть, следовательно, лисы также будут голодать; исчезнут зайцы трава будет расти бесконтрольно, а лисы будут голодать. Пример достаточно утрирован, но суть доносит. Подобная ситуация касается и пчел, численность которых за последние годы катастрофически упала. Пчелы, как мы знаем, не только делают мед, но и выполняют одну из важнейших операций в природе опыление. Сегодня мы рассмотрим исследование, в котором ученые Си Ян и Эйдзиро Мияко описывают роботизированную систему опыления цветов посредством мыльных пузырей. Из чего состоит система, как именно она работает, и почему мыльные пузыри? Об этом мы узнаем из доклада ученых. Поехали.

Основа исследования


Сложно себе представить мир, в котором больше нет пчел, однако это может стать вполне реальным, если ничего не предпринять. Вопросом спасения популяции пчел занимается множество ученых по всему миру. Есть и те, кто готовятся к худшему, пытаясь придумать замену пчелам, если те исчезнут.

Около 3/4 видов культурных растений, которые человек выращивает для своих нужд, полагаются на пчел и других насекомых в вопросе опыления. Использование достаточно жестких методов борьбы с вредителями, расширение фермерских угодий и тотальная урбанизация привели к ощутимому снижению численности популяций этих организмов.

Альтернативой опылению насекомыми с древних времен было ручное опыление, когда человек наносил пыльцевые зерна на цветок посредством специальной кисточки. Этот метод достаточно эффективен, но, как вы понимаете, невероятно сложен. Вручную опылять огромные поля это крайне длительный процесс.

Более современный метод, машинный, позволяет опылять растения быстро и массово. Однако этот вариант очень затратный и менее эффективный, так как внушительная часть пыльцы попадает не туда, куда нужно (остается на самой машине, падает на землю или на листья и т.д.).

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


Дрон-опылитель

Относительно недавно был разработан дрон (Materially Engineered Artificial Pollinators), снабженный липким ионным гелем, покрытым животной шерстью.

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

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

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

В рассматриваемом нами сегодня исследовании показано, что химически функционализированные мыльные пузыри имеют уникальные свойства в аспекте опылений:

  • простая доставка пыльцевых зерен к целевым цветам;
  • сокращение использования пыльцевых зерен;
  • эффективное прикрепление мыльных пузырей к пестикам целевых цветов за счет высокой липкости мембраны мыльного пузыря;
  • предотвращение серьезного повреждения нежных цветов ввиду мягкости и высокой гибкости мыльных пузырей;
  • улучшение активности пыльцы за счет повышения степени прорастания и длины пыльцевой трубки.

Если объединить эти преимущества с автономностью робота, то можно получить практически идеальную систему опыления.

Раствор для мыльных пузырей



Изображение 1

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

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

В качестве опытного образца были использованы пыльцевые зерна Pyrus bretschneideri (китайская белая груша), а также мыльный пистолет с мотором и батареей, способный производить много пузырей за раз.

Во время опытов был измерен коэффициент прорастания и роста пыльцевых трубок груши.

Для начала было протестировано 5 вариантов поверхностно-активных веществ ( и ):

  • лаурамидопропил-бетаин (A-20AB);
  • лаурилсульфат натрия (E-27C);
  • лаурил-гидоксисульфо-бетаин (A-20HD);
  • сульфат полиоксиэтилен-алкилового эфира натрия (E-D3D);
  • [N-кокоил-(2-аминоэтил)-N-(2-гидроксиэтил)-N-натрийкарбоксиметил] этилендиамин (A- 20YB).

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

Анализы активности пыльцы продемонстрировали, что все пять поверхностно-активных веществ показали дозозависимое ингибирующее действие на прорастание пыльцы и рост трубки. Коэффициент прорастания пыльцы (G) рассчитывали как G = N / Nt х 100 (%), где N и Nt обозначают количество наблюдений за пыльцевыми трубками с помощью оптической микроскопии и общее количество наблюдений (100 наблюдений). Кроме того, длина пыльцевых трубок измерялась по результатам прямого наблюдения и посредством программного обеспечения ImageJ.

Нейтрализованное поверхностно-активное вещество A-20AB продемонстрировало наивысшую эффективность с точки зрения прорастания пыльцы и роста трубок по сравнению с другими вариантами. Фактически, пыльцевые трубки в чашке Петри, обработанные мыльными пузырями с небольшой концентрацией A-20AB, росли абсолютно здоровыми (1D).

Стоит также отметить, что A-20AB обладал самой высокой способностью к образованию мыльного пузыря среди протестированных поверхностно-активных веществ.

Концентрации A-20AB и пыльцевых зерен оказали непосредственное влияние на образование мыльных пузырей (1E). Логично, что более высокая концентрация поверхностно-активного вещества может помочь создать много мыльных пузырей. А большое количество пыльцевых зерен может помешать образованию пузыря. Например, при концентрации A-20AB от 0.0% до 0.2% пузырьки не могут образовываться с пыльцевыми зернами 110 мг/мл, в то время как в случае от 0.4% до 0.8% и не более 4 мг/мл зерен можно получить как минимум более одного мыльного пузыря. Если же концентрация A-20AB будет 1.0%, а зерен будет 110 мг/мл, то будет образовываться 4-10 пузырей.

В итоге было решено использовать следующие параметры: концентрация A-20AB 0.4% и концентрация зерен 4 мг/мл. При перерасчете получается, что на каждый мыльный пузырь можно загрузить около 2000 пыльцевых зерен.

Чтобы повысить эффективность опыления, следовательно, и коэффициент прорастания, ученые также оптимизировали компоненты раствора мыльного пузыря. Одним из важных показателей, влияющих на рост пыльцевых трубок, является pH. Коэффициент прорастания достиг своего максимального значения (около 30.7%) при pH 7.0.

Более того, умеренное добавление бора, кальция, магния и калия стимулирует прорастание пыльцы и увеличение длины трубки. Особенно кальций, который улучшает прорастание благодаря связыванию кальция с пектатами карбоксильных групп вдоль стенки пыльцы. А остальные элементы (бор, калий, магний) усиливают этот эффект.

Добавление в мыльный раствор H3BO3 (060 мд; мд частей на миллион) привело к росту пыльцевой трубки до 1187 мкм, что в 1.3 раза больше, чем в контрольной группе (без H3BO3).

Подобная ситуация обстояла и с MgSO47H2O, который существенно не улучшал прорастание пыльцы, но стимулировал удлинение трубки при низкой концентрации (0.1 мМ), в пределах которой длина трубки достигала максимального значения 1127 мкм, что в 1.3 раза выше по сравнению с контрольной группой.

Также было обнаружено, что концентрация CaCl2 в диапазоне 0.12.0 мМ значительно улучшает коэффициент прорастания пыльцы и рост трубки (1152 мкм при 1.0 мМ CaCl2, что в 1.3 раза больше, чем в контрольной группе). KCl при концентрации 1 мМ сопутствовал удлинению трубки до 1232 мкм, что в 1.4 раза больше, чем в контрольной группе.

Желатин представляет собой водорастворимый белок, который состоит из большого количества глицина, пролина и гидроксипролина. Эти компоненты могут играть существенную роль в прорастании пыльцы и удлинении трубки. Добавление 0.8% желатина в раствор повышает коэффициент прорастания трубки до 50% (1363 мкм).

Для повышения стабильности мыльных пузырей был дополнительно использован небольшой процент гидроксипропилметилцеллюлозы (ГПМЦ). Добавление в раствор 0.2% ГПМЦ также слегка улучшило прорастание пыльцевых семян, но на рост трубки особого влияния не имело.

Толщина мыльного пузыря (его мыльной пленки) определяется по формуле:
= (M ) 4R2
где толщина мембраны; М масса (примерно 7.7 мг; плотность (примерно 0.99 г/см); R радиус (1.6 см).

Если аппроксимировать как 3.14, то будет равно 2.4 мкм, что является разумным значением для обычного мыльного пузыря в диапазоне толщин 110 мкм.

Ручное опыление с помощью мыльных пузырей


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


Изображение 2

В случае оптимизированного раствора коэффициент прорастания составил 49% (), а длина трубки составляла 1221 мкм (), что в 1.9 и 1.5 раза больше, чем в случае с неоптимизированным раствором (т.е. без каких-либо дополнительных веществ и элементов).

После 3 часов опыления показатели упали до 28% и 990 мкм. Однако даже они были в 5.9 и 1.9 раза выше, чем спустя 3 часа опыления неоптимизированным раствором. Следовательно, внедрение в раствор дополнительных элементов имеет значимое положительное влияние на рост семян.

Чтобы продемонстрировать возможности нового метода опыления, ученые провели наблюдения, где использовалось различное количество (0, 1, 2, 5, 10, 20 и 50) мыльных пузырей на цветках груши (2C). После инкубации в течение ночи при 25 С пестики цветов срезали и окрашивали анилиновым синим (специальный краситель, используемый в гистологии).

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

Логично и то, что количество пыльцевых зерен на каждом пестике увеличивалось с числом используемых пузырей. Однако, применение более 10 пузырей приводит к обратному эффекту, что может быть связано с токсичностью накопления раствора на цветке. Стоит отметить, что раствор не токсичен для цветков, токсично большое его количество (между лекарством и ядом разница в дозировке, как говорят).

Удивительно то, что спустя 16 дней после опыления мыльными пузырями сформировались молодые плоды, объем которых был сравним с объемом плодов после обычного ручного опыления перьевой кисточкой. Контрольная группа цветков, которым дали возможность быть опыляемыми природным путем (насекомыми) показала наименьшие результаты. В природных условиях необходимо полагаться исключительно на пчел и других опыляющих насекомых, которые не действуют по указке, т.е. не систематически (не говоря уже о том, что популяция пчел крайне сократилась).

В результате коэффициент образования плодов в контрольной группе составил всего 58%, а в тестовой (с мыльными пузырями) более 95%. Эти показатели говорят не только о том, что опыление посредством мыльных пузырей значительно эффективнее опыления вручную, но и том, что этот метод позволит увеличить объемы производства.

Роботизированное опыление с помощью мыльных пузырей


Опыление мыльными пузырями вручную хоть и эффективно, но не идеально, ибо ему не хватает автономности. Именно потому следующим этапом исследования стало испытание роботизированного варианта опыления пузырями.

Одной из первых проблем, с которыми можно столкнуться во время использования дронов, это воздушные потоки от винтов аппарата. Использованные в ручном опылении мыльные пузыри крайне быстро лопались, когда их пытались использовать в сопряжении с дронами. Следовательно, необходимо было повысить их стабильность. Для этого в раствор было добавлено 2% ГПМЦ. В результате были получены стабильные пузыри (2% ГПМЦ и 1% A-20AB) диаметром около 2 см ().


Изображение 3

Забавно, что эти пузыри не только выдерживали воздушные потоки от винтов дрона, но и достаточно долго (около 10 минут при 25 С) спокойно располагались на цветках без распада. Некоторые из пузырей оказались еще более выносливыми, так как могли прожить почти 5 часов и выдержать нагрузку сжатия до 0.03 Н. Толщина мембраны пузырей из теста на ручное опыление была 2.4 мкм, тогда как у стабилизированных толщина составила 4.1 мкм, что объясняется внедрением дополнительного ГПМЦ в раствор. При этом активность прорастания зерен сохранялась на достаточно высоком уровне.

Кинематическая вязкость приготовленного раствора мыльного пузыря составила 7530 сСт*, а плотность 1.023 г/см.
сСт* (сантистокс): 1 сСт = см/с.
Относительно высокая вязкость раствора имела положительный эффект на дисперсию пыльцы, что было доказано проведением оптической микроскопии.

Ученые также подсчитали количество пыльцевых зерен разных растений на каждом пузыре: 269 частиц L. japonicum; 304 частицы R. pulchrum; 312 частиц C. persicifolia).

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

Коэффициент успешного опыления отличался у разных цветков. Так у L. japonicum () он составил 90%, потому что цветки этого растения больше, чем у других протестированных.

В сопряжении с дроном также был использован автоматический пузырьковый пистолет (3D), который генерировал 5000 пузырьков в минуту. На роль дрона-носителя был использован самый обычный и коммерчески доступный беспилотник, к которому прикреплялся пузырьковый пистолет.

Движения дрона контролировались автоматической системой, оснащенной глобальной навигационной спутниковой системой (GNSS). При подлете к цветкам на расстояние в 2 м производился пузырьковый обстрел под углом 70-80 градусов. Скорость воздушных потоков от дрона составляла 4.5 м/с, когда он стабильно зависал в воздухе. При движении (2 или 4 м/с) она увеличивалась до 5.8 и 8.7 м/с. Из-за этого мыльные пузыри моментально лопались при контакте с цветками. Анализ последующих показателей прорастания показал, что оптимальной скоростью движения дрона является 2 м/с. В таком случае коэффициент прорастания будет порядка 90%.

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

Эпилог


К сожалению, пчелы действительно исчезают. В этом печальном процессе деяния человека сыграли далеко не последнюю роль. Однако, словесные упреки в адрес нашего вида ничего не дадут. Необходимо предпринимать реальные действия. В то время как одни ученые ищут способы сохранить популяцию пчел, другие нацелены на поиски методов, которые смогут заменить полосатых опылителей. Это не значит, что авторы сего исследования считают гибель пчел пустяковым делом. Напротив, они полностью осознают серьезность ситуации. Но, какой бы ни была популяция пчел, полагаться на них в вопросе опыления громадных фермерских угодий в промышленных масштабах не стоит. Пчелы живут в своем ритме, который никак не должен быть связан с желаниями фермеров и их планами на объемы выращенных овощей/фруктов.

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

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

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

Пятничный офф-топ:

Разные виды пчел защищают свой дом от врагов разными методами. Гигантские пчелы (Apis dorsata) формируют волну, словно болельщики на стадионе.

Благодарю за внимание, оставайтесь любопытствующими и отличных всем выходных, ребята! :)

Немного рекламы


Спасибо, что остаётесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас, оформив заказ или порекомендовав знакомым, облачные VPS для разработчиков от $4.99, уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps от $19 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).

Dell R730xd в 2 раза дешевле в дата-центре Equinix Tier IV в Амстердаме? Только у нас 2 х Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 ТВ от $199 в Нидерландах! Dell R420 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB от $99! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Подробнее..

Перевод Стартап из Швейцарии разработал систему беспроводной связи для подводного дрона

17.05.2021 20:19:35 | Автор: admin

Швейцарский стартап Hydromea показал прототип первого в мире подводного дрона, оснащенного системой беспроводной связи. Компания продемонстрировала работу робота в специально созданном бассейне. Сам дрон небольшого размера, благодаря чему его очень легко транспортировать. Что интересно, дрон оборудован камерой, передающей видеопоток в формате Full HD на расстояние до 50 метров. Опыт в разработке подобных систем у Hydromea огромный: компания уже несколько лет развивает технологии, связанные с автономной подводной робототехникой.

Чудо-рыба-wireless-дрон


Прототип ExRay

Прототип дрона назвали ExRay. Вместо троса с коммуникациями связь с роботом держат при помощи подводной системы связи LUMA. Устройство передает данные с помощью коротких световых импульсов.

ExRay имеет семь подруливающих устройств: 4 вертикальных и 3 горизонтальных. Помимо этого, девайс оснащен камерой с зум-объективом, а еще у него есть 2 светодиодные фары.

Вот полные характеристики робота:

  • 70 см длина;
  • 7 кг масса;
  • 50 м дальность связи сейчас;
  • 100 м прогнозируемая дальность связи с роботом;
  • от 6 до 8 часов продолжительность работы без заряда;
  • 10 Мб/с скорость передачи данных.


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

Цена и дата начала продаж устройства пока неизвестны. Запуск в серийное производство намечен на следующий год.

LUMA в массы


Оптическая система LUMA

Самая большая сложность в решении задачи создания беспроводного подводного робота заключалась в разработке технологии передачи данных. Для решения этой и других схожих проблем с сигналами под водой компания создала оптический блок LUMA.

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


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

Модем бесперебойно передает сигналы на расстояние 50 100 м на глубине до 6 тыс. метров. Именно этот прибор от Hydromea лег в основу нового подводного дрона.

Зачем дрону такая связь


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

Какие есть варианты обеспечения связью под водой?

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

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

  • подводные исследования;
  • морской энергетический сектор;
  • строительство и ремонт водных объектов.

Уже сейчас разработчики ExRay видят несколько сценариев использования аппарата в замкнутых затопленных пространствах:

  • в плотинах гидроэлектростанций;
  • закрытых водных путях;
  • балластных цистерн на судах.

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

Подробнее..

Как мы запустили Hardware Ecosystem для проектов в электронике митап по беспилотникам 10.10.2020

02.10.2020 22:23:38 | Автор: admin
Митап Hardware Ecosystem в Минске по теме MedTech в 2019 годуМитап Hardware Ecosystem в Минске по теме MedTech в 2019 году

Два года назад основатель нашей компании Роман Пахолков создал открытое сообщество для всех, что работает в hardware, развивает свои проекты и готов делиться опытом. Всё начиналось с небольшой LinkedIn-группы, а потом переросло серию подкастов и митапов с инженерами и руководителями компаний, которые успешно вышли на рынок электроники со своими продуктами.

В этой статье мы объясним, чем Hardware Ecosystem полезна для участников. А если захотите познакомиться с этим сообществом поближе, это можно сделать на ближайшей неделе утром в субботу, 10 октября. В этот день в Минске состоится митап, посвященный беспилотным технологиям и примерам их внедрения на земле и ввоздухе. Так что если вы не равнодушны к хардверу, дронам и автономным автомобилям, присоединяйтесь онлайн или приходите лично.

В этот раз событие будет международным, с участием докладчиков из Беларуси, России, ЕС и Китая. Запланированы презентации стартапов Aorion и Crop Fleet, совместный доклад корпораций Arrow и Analog Devices, выступления экспертов Solar LS и международной китайской корпорации Интеллектуальные технологии. Также к нам присоединится российская компания Starline, которая занимается разработкой беспилотных автомобилей.

Итак, зачем и для кого было создано сообщество Hardware Ecosystem?

У нас на рынке high-tech и электроники есть отдельные элементы экосистемы: стартапы, инвестиционные компании, ассоциация приборостроителей, университеты, научные организации, где работают инженеры. Но эти элементы работают сами по себе, связи между ними пока слишком слабые или их нет вовсе. Такое случается в незрелой бизнес-экосистеме: участники не сразу объединяются и начинают работать на общие цели.

Конечно, мировой опыт вдохновляет на то, чтобы пробежать эту дорогу быстро. У каждой страны и каждой экосистемы свой путь, и она уникальна. И это хорошо, мы разные и можем дополнять друг друга.

У наших инженеров есть шансы в определенных отраслях, которые связаны с hardware. Например, в медицинской технике, в IoT на стыке software и hardware, в беспилотных технологиях (собственно поэтому предстоящий митап и посвящен этой теме).

Живой пример: инженерная аутсорсинговая прослойка из Парка высоких технологий в Минске дает большой поток крутых разработчиков, которые пользуясь элементами экосистемы, могут создавать свое IP, решать проблемы мировых рынков, соединять решения hardware и software вместе.

За два года к сообществу Hardware Ecosystem присоединилось более 650 участников из разных стран инженеров, владельцев и менеджеров ИТ-компаний, инвесторов, руководителей тех. хабов и акселераторов. Они делились опытом в группе на LinkedIn и встречались на митапах, а в начале 2020 года из-за COVID-19 ушли в онлайн: так и появился новый подкаст и ютуб-канал c видеозаписями прошлогодних митапов про IoT, MedTech и о том, как инженеру вывести свой продукт на рынок.

И вот сейчас, при поддержке hardware-акселератора Bridgio, сообщество возвращается к формату личных встреч: в Минске, на площадке SUP, 10 октября пройдет митап Беспилотники на земле и в воздухе: бизнес-кейсы стартапов и корпораций. Впервые будет организована онлайн-трансляция встречи для русскоязычных инженеров из других городов и стран. Участники митапа из первых уст узнают о бизнес-проблемах, которые решают мировые корпоративные игроки, как проходят R&D мирового уровня. В ходе встречи организаторы постараются определить возможные варианты кооперации между инженерными командами и международными компаниями.

Если вы болеете за hardware и беспилотные технологии присоединяйтесь!

Подробнее..

Сообщество Hardware Ecosystem для проектов в электронике митап по беспилотникам 10.10.2020

03.10.2020 10:21:59 | Автор: admin
Митап Hardware Ecosystem в Минске по теме MedTech в 2019 годуМитап Hardware Ecosystem в Минске по теме MedTech в 2019 году

Два года назад основатель нашей компании Роман Пахолков создал открытое сообщество для всех, что работает в hardware, развивает свои проекты и готов делиться опытом. Всё начиналось с небольшой LinkedIn-группы, а потом переросло серию подкастов и митапов с инженерами и руководителями компаний, которые успешно вышли на рынок электроники со своими продуктами.

В этой статье мы объясним, чем Hardware Ecosystem полезна для участников. А если захотите познакомиться с этим сообществом поближе, это можно сделать на ближайшей неделе утром в субботу, 10 октября. В этот день в Минске состоится митап, посвященный беспилотным технологиям и примерам их внедрения на земле и ввоздухе. Так что если вы не равнодушны к хардверу, дронам и автономным автомобилям, присоединяйтесь онлайн или приходите лично.

В этот раз событие будет международным, с участием докладчиков из Беларуси, России, ЕС и Китая. Запланированы презентации стартапов Aorion и Crop Fleet, совместный доклад корпораций Arrow и Analog Devices, выступления экспертов Solar LS и международной китайской корпорации Интеллектуальные технологии. Также к нам присоединится российская компания Starline, которая занимается разработкой беспилотных автомобилей.

Итак, зачем и для кого было создано сообщество Hardware Ecosystem?

У нас на рынке high-tech и электроники есть отдельные элементы экосистемы: стартапы, инвестиционные компании, ассоциация приборостроителей, университеты, научные организации, где работают инженеры. Но эти элементы работают сами по себе, связи между ними пока слишком слабые или их нет вовсе. Такое случается в незрелой бизнес-экосистеме: участники не сразу объединяются и начинают работать на общие цели.

Конечно, мировой опыт вдохновляет на то, чтобы пробежать эту дорогу быстро. У каждой страны и каждой экосистемы свой путь, и она уникальна. И это хорошо, мы разные и можем дополнять друг друга.

У наших инженеров есть шансы в определенных отраслях, которые связаны с hardware. Например, в медицинской технике, в IoT на стыке software и hardware, в беспилотных технологиях (собственно поэтому предстоящий митап и посвящен этой теме).

Живой пример: инженерная аутсорсинговая прослойка из Парка высоких технологий в Минске дает большой поток крутых разработчиков, которые пользуясь элементами экосистемы, могут создавать свое IP, решать проблемы мировых рынков, соединять решения hardware и software вместе.

За два года к сообществу Hardware Ecosystem присоединилось более 650 участников из разных стран инженеров, владельцев и менеджеров ИТ-компаний, инвесторов, руководителей тех. хабов и акселераторов. Они делились опытом в группе на LinkedIn и встречались на митапах, а в начале 2020 года из-за COVID-19 ушли в онлайн: так и появился новый подкаст и ютуб-канал c видеозаписями прошлогодних митапов про IoT, MedTech и о том, как инженеру вывести свой продукт на рынок.

И вот сейчас, при поддержке hardware-акселератора Bridgio, сообщество возвращается к формату личных встреч: в Минске, на площадке SUP, 10 октября пройдет митап Беспилотники на земле и в воздухе: бизнес-кейсы стартапов и корпораций. Впервые будет организована онлайн-трансляция встречи для русскоязычных инженеров из других городов и стран. Участники митапа из первых уст узнают о бизнес-проблемах, которые решают мировые корпоративные игроки, как проходят R&D мирового уровня. В ходе встречи организаторы постараются определить возможные варианты кооперации между инженерными командами и международными компаниями.

Если вы болеете за hardware и беспилотные технологии присоединяйтесь!

Подробнее..

Издательподписчик для распределённых отказоустойчивых бортовых систем реального времени в 1500 строк кода

28.07.2020 18:07:12 | Автор: admin

Сап, котятки.


Я пришёл рассказать о проекте UAVCAN новом сетевом стандарте для организации взаимодействия узлов и компонентов современных транспортных средств с высоким уровнем автономности/автоматизации. Название является акронимом от Uncomplicated Application-level Vehicular Communication And Networking (несложные бортовые сети и коммуникации уровня приложения).


В этой публикации объясняется текущее положение дел и тренды в области сложных бортовых систем, существующие и грядущие проблемы, как мы их решаем, и каких успехов добились. Во второй части, которая будет опубликована позднее, наши коллеги из Университета Иннополис подробно осветят практическую сторону внедрения UAVCAN на примере конкретных проектов.



Конъюнктура


Первый блин проекта был заложен в 2014-м. С самого начала это был эксперимент в минимализме: возможно ли в разработке сложных распределённых бортовых систем опираться на мощные абстракции, избегая при этом роста сложности реализации и связанных с ним трудностей валидации и верификации.


Мы наблюдаем быстрый рост сложности бортовых систем, связанный с развитием функциональных возможностей транспортных средств (особенно беспилотных) в целом, и систем автоматического управления в частности. Когда мы говорим "бортовая система", мы подразумеваем совокупность автоматики, необходимой для реализации базовых функций транспорта; например, БСУ/ЭДСУ летательных аппаратов, всевозможные ЭБУ в автомобиле, полётный контроллер в дроне или космическом аппарате, сенсоры (радары, камеры), датчики, исполнительные механизмы, и т.п.


Бортовая электроника (электрика) автомобиля конца 20-го века может быть исчерпывающе описана довольно тривиальной схемой; вот, например, схема ВАЗ 21099:



Схема демонстрирует нам довольно непосредственный подход к организации внутрисистемных взаимодействий: есть компонент вот к нему провод. Поведения, выходящие по сложности за рамки простейших аналоговых или дискретных соотношений (нагрелась вода в системе охлаждения включился вентилятор; коленчатый вал достиг определённого угла сработало зажигание в цилиндре), не могут быть эффективно описаны и созданы на столь низком уровне ввиду когнитивных ограничений человеческого мозга. Приведённую схему легко понять, но будет ли это верно, если мы добавим электронное зажигание, круиз-контроль, а то и автопилот пятого уровня?


Сегодняшние транспортные средства являются в значительной мере программно-определяемыми в том смысле, что существенная часть функциональности и поведений задаётся не столько электрической/механической конфигурацией, сколько программным обеспечением (ПО), что порождает соответствующий перекос концептуальной сложности в сторону бортового ПО. В контексте космических аппаратов это обстоятельство было подмечено ещё инженерным коллективом NASA, работающим над программой Аполлон. В равной мере это применимо и к современным автомобилям (показательна известная история ранней Tesla Model 3, где проблемы антиблокировочной системы были исправлены удалённым накатыванием обновлений без участия владельцев), и к летательным аппаратам (в особенности с ЭСДУ).


Абстракции позволяют нам обойти когнитивное ограничение на количество сущностей, единовременно удерживаемых в сознании. В теории систем этот принцип известен как "чёрный ящик". Любой человек, хоть раз державший в руках компилятор, знает, как это работает: сложные подсистемы описываются не непосредственно, а в виде ограниченных функциональных блоков со строго определённым интерфейсом, скрывающим их реализацию. В рамках дискурса общих информационных технологий безусловно делается предположение, что человеку, мыслящему на определённом уровне абстракции, нет нужды вникать в специфику реализации задействованных на данном уровне блоков, иначе нарушается принцип чёрного ящика. Это предположение не является безусловно корректным если речь идёт о критических системах, где необходима высокая живучесть/отказоустойчивость. Объясняется это тем, что второстепенные функциональные особенности различных компонентов в совокупности могут порождать потенциально опасные непредусмотренные поведения (как это демонстрируют былинные отказы Mars Climate Orbiter, Airbus A400M в Севилье, Ariane 5, и т.п.).


Растущая сложность бортового оборудования отражается в развитии стандартов безопасности. Более сложные системы создаются композицией более сложных подсистем, что формирует спрос на конкретные гарантии поведенческих характеристик компонентов (если у нас есть, скажем, радар, мы хотим точно знать, в каких условиях и как он будет работать, как его характеристики коррелируют с параметрами среды, и вообще неплохо бы убедиться, что его разработчики мышей ловят). Примером ответа индустрии на этот запрос будет концепция Safety Element out of Context (SEooC), введённая в новом автомобильном стандарте ISO 26262. Строго говоря, тема стандартизации не имеет прямого отношения к нашему сугубо техническому проекту, но она отражает общие тренды в индустрии к переходу к композициям более сложных компонентов и как следствие, более сложных интерфейсов.


Холистический анализ сложных систем невозможен по очевидным причинам; фрагментарные же подходы в области высокой надёжности усложняются необходимостью детальной формализации и верификации поведений функциональных блоков с целью минимизации рисков возникновения непредусмотренных поведений при их интеграции. В этом свете выглядит целесообразным поиск методов построения чёрных ящиков, который предоставлял бы удобные инструменты создания абстрактных интерфейсов, и в то же время привносил бы минимальные накладные расходы на формализацию/верификацию блоков и их композиций.


Здесь следует внести разъяснения касательно специфики реального времени и высокой надёжности для читателя, не являющегося специалистом в этой области. Разработчик прикладного ПО, веб-сервера или типичной бытовой встраиваемой системы (вроде компьютерной периферии) сочтёт покрытие тестами достаточной гарантией адекватности ПО. Проблемы реального времени в сложных системах такого рода возникают редко, а когда они возникают, цена временных отклонений обычно достаточно мала, чтобы можно было пренебречь жёстким ресурсным планированием или формальным анализом планировки задач (schedulability analysis). Процессы жёсткого реального времени обычно либо просты, либо цена ошибки несущественна (в качестве примера бытового жёсткого реального времени можно принять логику работы печатающей головки струйного принтера, привод экструдера 3D печати или аудиокодек). Эмпирические методы в целом преобладают над формальными; повсеместно применяется бенчмаркинг и амортизационный анализ. Если продукт показывает приемлемые результаты в подавляющем числе случаев, он принимается соответствующим требованиям; более строгие подходы обычно нецелесообразны финансово.


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



Говоря о балансе проектировочных затрат и рисков, интересная тенденция сейчас имеет место в космической отрасли: как метко отмечает Casey Handmer, наблюдаемое ныне снижение стоимости вывода космических аппаратов (КА) сдвигает оптимальный баланс в сторону решений с менее строгими гарантиями безопасности и менее затратной разработкой. В случае же БПЛА наблюдается обратный тренд ввиду распространения более ответственных применений и увеличения числа аппаратов в эксплуатации.


Различные исходные предпосылки при создании систем разного уровня функциональной безопасности проявляются в, порою, радикально различных технических свойствах их компонентов и предпочитаемых методах их создания. Скажем, бортовая коммутируемая сеть современного авиалайнера (как AFDX) предоставляет гарантированные минимальные кривые обслуживания, и, как следствие, для хорошо спланированного трафика отсутствует потребность в подтверждении доставки. Для типичной коммерческой системы эта логика чужда, ведь свойства сети и её загрузку никто не гарантирует. Асимптотический анализ в рамках жёсткого реального времени сфокусирован на худшем случае нежели амортизированном случае, что порою может радикально менять подходы на всех уровнях проектирования.


Различия в предпосылках также объясняют, почему прекрасно зарекомендовавшие себя в ИКТ решения (тысячи их: очереди сообщений, фреймворки, сетевые стеки с TCP/IP во главе, распределённые БД, операционные системы, etc.) обычно непригодны для ответственных применений и почему безопасные системы часто отдают предпочтение специализированным технологиям.


Резюмируя: современные тренды радикального усложнения бортовых систем при сохранении требований отказоустойчивости и предсказуемости порождают неудовлетворённый спрос на решение, позволяющее проектировщику конструировать интерфейсы с гарантированными свойствами на высоком уровне абстракции, которое при этом было бы компактным и простым в реализации, валидации и верификации. Поскольку мы имеем дело с узко ограниченной областью применения, то имеют смысл оптимизации с учётом местной специфики.


Обычный порошок


Картина положения дел в индустрии будет неполной без хотя бы поверхностного рассмотрения существующих технологий построения отказоустойчивых распределённых систем реального времени. Решения эти обычно интересны технически, созданы с оглядкой на многолетний опыт и проверены временем в реальных продуктах. Однако, тем не менее, горшки CiA/SAE/RTCA/EUROCAE/AUTOSAR/OMG/etc. обжигают отнюдь не боги.


Технологии мы поделим на категории по уровню абстракции коммуницируемых состояний и потенциала к созданию сложных систем. Эта модель игнорирует тонкости и в граничных случаях может быть некорректна, но она справляется с главной задачей: объяснением общего положения дел и демонстрацией рассогласования между запросами индустрии и доступными решениями. Пойдём от простого к сложному.


1. Аналоговые схемы


Просто и прямолинейно. Электрические, пневматические, гидравлические, механические средства непосредственного взаимодействия между узлами и компонентами попадают в эту категорию. Приведённая ранее схема ВАЗ 21099 тоже отсюда.


Базовым примитивом межкомпонентного взаимодействия здесь будет аналоговый или дискретный сигнал представленный напряжением/током в электрической цепи, давлением в линии, натяжением троса, и т.п.


2. Логическая шина


Шина данных есть довольно общий термин. Мы здесь под этим подразумеваем модель взаимодействия, где атомарной единицей данных является структура из логически связанных сигналов/параметров, и внимание проектировщика в значительной мере сосредоточено на определении этих структур и логики их обмена.


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


Начнём с первого. Если компонент А непрерывно сообщает компоненту Б больше одного параметра, имеет смысл временное разделение (мультиплексирование) сигналов. Такое уплотнение позволяет наращивать число параметров при постоянном числе физических межкомпонентных соединений, что удешевляет/облегчает конструкцию. Практическим примером будет ARINC 429 древний и незамысловатый авиационный протокол, реализующий обмен фиксированными 18-битными словами с щепоткой метаданных по выделенным (некоммутируемым) линиям. Типичная топология выглядит так:



Диаграмма адаптирована из "The Evolution of Avionics Networks From ARINC 429 to AFDX", Fuchs, 2012.


ARINC 429 довольно атипичен как бортовая шина тяжело привести другой пример использования физической топологии точка-многоточка (хотя причастные к малым дронам могли бы вспомнить здесь DShot и MAVLink; последний изначально предназначен для беспроводной связи с наземной станцией, но иногда применяется для внутрибортовой коммуникации). Этот подход имеет особый смысл в простых критических системах жёсткого реального времени, потому что временные свойства процесса доставки сигнала от отправителя к получателю абсолютно очевидны и не требуют сложного анализа. Среда передачи не разделяется с другими компонентами, поэтому нет нужды оценивать вклад каждого в загрузку среды и результирующие побочные эффекты. Однако, этот метод не масштабируется и делает логику взаимодействия сильно зависимой от физических параметров сети (если к компоненту не потрудились пробросить кабель при проектировании, соответствующих данных он никогда не получит).


Широкое распространение получила шинная топология (мы говорим о физическом уровне, не забывайте). Вероятно, CAN не нуждается в представлении; на нём основано множество протоколов и стандартов верхнего уровня. Здесь же FlexRAY, LIN, MIL-STD-1553 и ранние стандарты Ethernet (современный Ethernet используется только в коммутируемой конфигурации).


CAN показателен в контексте реакции отрасли на рост сложности продукции. Введённая в 1986 первая версия стандарта предлагала крайне ограниченный MTU в 8 байт на пакет. В 2012 появился CAN FD с MTU в целых 64 байта и увеличенной пропускной способностью. С конца 2018 года в активной разработке находится CAN XL с MTU 2 КиБ и ещё чуть более высокой скоростью (начало ISO стандартизации запланировано на 2021 год).


Говоря о физических шинах, нельзя не вспомнить интереснейшее начинание под названием Wireless Avionics Intra-Communications (WAIC). WAIC предлагает повысить отказоустойчивость бортовых критических сетей введением гетерогенной избыточности, где резервным каналом станет беспроводной. В целом, беспроводные бортовые сети можно считать фундаментально менее надёжными, чем бортовые проводные/оптические, ввиду слабого контроля за состоянием среды обмена (эфир один на всех). Однако, в совокупности с традиционными сетями, беспроводные позволяют поднять отказоустойчивость из-за устранения отказов общего вида, свойственных проводным сетям, ведь механическое повреждение элемента конструкции может с высокой вероятностью повредить все избыточные проводные соединения:



Диаграмма с сайта WAIC.


Физическая шина размещает всех участников на едином сегменте сети, что создаёт проблемы масштабируемости, ведь все узлы вынуждены организовывать обмен внтутри общего домена коллизий. Сложные транспортные средства на острие прогресса (скажем, современные авиалайнеры и космические аппараты) не в состоянии организовать работу систем в пределах ограничений существующих физических шин, поэтому в ход идут коммутируемые сети. Из значимых следует вспомнить SpaceWire (чрезвычайно узкоспециализированная технология; насколько мне известно, совершенно не представлена вне КА) и, конечно, Ethernet.


В современном аэрокосмосе широко применяется коммутируемый Avionics Full-Duplex Switched Ethernet (AFDX) как на стомегабитной медной паре, так и на оптике (см. Boeing 787). Несмотря на передовой физический уровень, логически это всё тот же ARINC 429, где физические соединения точка-точка заменены их виртуальными репрезентациями. Это решает проблемы масштабируемости, но не предоставляет новых инструментов проектирования логики. Сети AFDX проектируются со статическим планированием обмена с применением автоматических доказательств, что позволяет получить гарантированные временные характеристики доставки несмотря на привнесённые коммутацией сложности. Широко применяется полное дублирование сетевого аппаратного обеспечения (коммутаторов и кабельной системы) для отказоустойчивости. Ниже показан пример физической топологии AFDX подсети космического аппарата с дублированием; при этом логическая сеть ARINC 429, построенная поверх (не показана), определяется конфигурацией ПО коммутаторов вместо физической конфигурации кабельной системы:



Диаграмма из "Communications for Integrated Modular Avionics", Alena, 2007.


Гарантированные параметры сети объясняют почему в сетях жёсткого реального времени редко применяется подтверждение доставки. Вторая причина в том, что процессы реального времени часто предполагают сторого периодический обмен данными, где затраты времени и ресурсов сети (которые, замечу, под строгим учётом) на отправку подтверждения или второй копии данных оказываются неоправданными из-за скорой отправки очередного пакета с более новыми данными в рамках естественного течения процесса. Поэтому, в частности, AFDX построен на (слегка модифицированном) протоколе UDP/IPv4. Использование классических "надёжных" протоколов вроде TCP/IP в подобной среде было бы не просто излишним, а контрпродуктивным они несовместимы с особенностями процессов реального времени.


Общая характеристика рассмотренных технологий и построенных на их основе высокоуровневых протоколов заключается в их ориентированности на организацию низкоуровневых сценариев взаимодействия, где фокус внимания проектировщика сосредоточен на группах определённых параметров и их пересылке между конкретными аппаратными и программными компонентами. На логическом уровне мы всё так же имеем дело со жгутами виртуальных проводов, как на схеме ВАЗ 21099. Подобно тому, как рост сложности решений заставил индустрию ИКТ пережить несколько смен парадигмы за последние десятилетия, подходы к построению архитектуры распределённых бортовых систем претерпевают изменения под давлением спроса на автономность и автоматизацию транспортных средств. В 2020 мы наблюдаем первые симптомы несостоятельности традиционных методов и попытки к переходу на качественно более мощные средства, о чём будет следующий раздел.


3. Распределённые вычисления


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


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


Пожалуй, наиболее значимым на сегодня примером такого подхода будет граф распределённых вычислений из Robot Operating System (ROS) (строго говоря, ROS не является операционной системой, это скорее высокоуровневый фреймворк). Изначально ROS был создан в качестве SDK для окологуманоидного робота PR2 от Willow Garage, но исследователи быстро увидели потенциал фреймворка в других робототехнических системах (от пылесосов и манипуляторов до БПЛА и робоавтомобилей), и он превратился в самостоятельный проект. За несколько лет вокруг ROS развилась богатая экосистема программного обеспечения, решающего многие типовые задачи вроде компьютерного зрения, локализации и картографирования, взаимодействия с аппаратным обеспечением, и т.п. Если изначально фреймворк создавался для исследовательских задач, то интенсивное развитие его экосистемы (и отрасли в целом) со временем поставило вопрос о продуктизации и трансфере наработок из лабораторий в полевые условия, с чем возникли значительные трудности.



Пример визуализации распределённых процессов на ROS. На схеме показан фрагмент системы управления автономного БПЛА в режиме программно-аппаратного моделирования. Овалы обозначают процессы, прямоугольники и стрелки обозначают связи издатель-подписчик.


Описание полного спектра проблем продуктизации основанных на ROS изделий приведёно в статье Why ROS 2 [Gerkey], которая, как нетрудно догадаться из названия, решительно предлагает выпустить вторую версию с оглядкой на новые потребности индустрии. Одной из ключевых проблем здесь является неспособность изначально исследовательского фреймворка удовлетворить радикально более жёсткие требования продуктовых систем к предсказуемости и гарантиям безопасности, которые зачастую обусловлены не только коммерческим интересом, но и законодательным регулированием (особенно в случае автомобильной или аэрокосмической отрасли). Коммуникационная подсистема ROS, обеспечивающая межкомпонентные взаимодействия, является одной из наиболее критических и сложных частей фреймворка. В первой версии использовалась собственная реализация, созданная с нуля, принципиально несовместимая с ответственными применениями, из-за чего во второй версии в роли коммуникационной подсистемы использовали популярное готовое решение Data Distribution Services (DDS).


DDS является сильно отдалённым потомком CORBA, ориентированным на реальное время и модель издатель-подписчик (с недавних пор предлагается также встроенная поддержка клиент-серверных взаимодействий, но на практике первый тип наиболее востребован). DDS широко применяется не только в транспорте и робототехнике, но и в промышленности вообще, зачастую выступая в роли выделенного коммуникационного слоя (собственно, как в случае ROS 2) для вышележащих технологий. Особого упоминания здесь заслуживает Future Airborne Capability Environment (DDS FACE) для критической авионики; однако, на сегодняшний день, большая часть реальных применений DDS в аэрокосмосе приходится на немногочисленные военные системы, которые не следуют гражданским стандартам безопасности.


Как было упомянуто, DDS дальними корнями уходит в CORBA оба стандарта поддерживаются одной организацией. Последняя изначально не предназначалась для систем реального времени, но отраслевые реалии заставили исследователей начать рассматривать вопросы её адаптации для реального времени ещё в конце прошлого века. В работе "The Design of the TAO Real-Time Object Request Broker" [Schmidt et al, 1999] большое внимание уделяется тому факту, что проектирование адекватной сети реального времени самой сетью не ограничивается обязательному анализу подлежат вопросы реализации логики протокола на конечных узлах с соблюдением временных гарантий. В разрезе CORBA синопсис рассматриваемых проблем приведён ниже; эти же принципы легко переносятся на практически любую современную технологию того же толка:



Цифрами обозначены ключевые аспекты реализации, где предписан анализ временных характеристик внутренних алгоритмов протокола. Диаграмма из "The Design of the TAO Real-Time Object Request Broker", Schmidt et al, 1999.


Шмидт с коллегами воплотил идеи в популярной ныне C++ библиотеке TAO (The ACE ORB), которая легла в основу некоторых современных реализаций DDS. Сама по себе TAO насчитывает более двухсот тысяч строк кода без учёта специфики DDS, которая привносит ещё дополнительный код сверху. Из более современных и независимых от TAO инкарнаций DDS упомяну, пожалуй, наиболее многообещающую на сегодня eProsima Fast-DDS (это оценочное суждение, а не реклама) без сторонних зависимостей и тестов она занимает более трёхсот тысяч строк C++ кода (и реализует при этом не все опциональные возможности стандарта). Эти сведения приведены с целью иллюстрации порядка концептуальной сложности DDS.


Как нетрудно догадаться из вышеизложенного, DDS также отличается высокими требованиями к вычислительной платформе, что помимо прочего ограничивает использование во встраиваемых системах. Конкретно эта проблема отчасти решается специализированным подмножеством DDS For Extremely Resource Constrained Environments (DDS-XRCE). Но, согласно нашей модели, это решение уже выходит далеко за пределы концепции распределённых вычислений в силу своей глубокой зависимости от центрального координирующего агента и ограниченной функциональности. Для рассматриваемого здесь вопроса эта технология большой ценности не представляет и рассматривать мы её не будем, равно как мы обойдём стороной и связанный проект micro-ROS.


Из других решений есть смысл поверхностно упомянуть SOME/IP часть автомобильного стандарта AUTOSAR v4+, предлагающую сервисы построения распределённых систем поверх стека IP. В отличие от DDS, SOME/IP сфокусирован исключительно на автомобильных применениях и оперирует существенно более низкоуровневыми концепциями со слабой сегрегацией по уровням абстракции. В совокупности с довольно вольготным обращением с распределёнными состояниями (об этом поговорим далее) и значительным логическим зацеплением между коллабораторами это вызывает вопросы о будущем SOME/IP при наличии сильного конкурента в лице DDS.


Распространённые в ИКТ альтернативы вроде MQTT и разнообразных специализированных фреймворков не учитывают аспекты реального времени и гарантий поведенческих характеристик, поэтому в наших приложениях встретить их можно редко и рассматривать их здесь не имеет смысла.


Высокая внутренняя сложность существующих технологий распределённых вычислений обусловлена широким спектром поддерживаемых сценариев и типов взаимодействия, лишь малая часть которых актуальна для интересующей нас области применений. Мы полагаем, что это утверждение верно даже для специализированных решений (как SOME/IP), чья архитектура может подлежать улучшениям путём целостного пересмотра подходов к проектированию бортовых распределённых систем. Аккуратное переосмысление основных требований к коммуникационной подсистеме позволило нам достичь более взвешенного баланса между внутренней сложностью (и, как следствие, стоимостью валидации и верификации и обеспечения гарантированных характеристик) и доступными инструментами построения мощных абстракций.


Наш подход


Мы едим нашу собаку уже не первый год, и только сейчас подобрались к выпуску первой долгосрочно стабильной версии стандарта, которую мы называем UAVCAN v1. Этому эпохальному для нас событию предшествовали исследования и экспериментальные развёртывания в реальных системах, на протяжении которых менялись наши методы, но не менялись ключевые цели:


  1. Простота понимания и реализации. Как было показано выше, это исключительно важно для критических систем. Протокол масштабируется согласно сложности использующего его компонента распределённой системы (т.е., аппаратного узла или программы): в простых компонентах совместимая реализация протокола должна умещаться в одну тысячу строк; в очень сложных она может расти до пары десятков тысяч строк.


  2. Высокоуровневые абстракции. Протокол позволяет разработчику конструировать абстрактные робастные интерфейсы с учётом ограничений реального времени. Спецификации таких интерфейсов сосредоточены исключительно на нуждах приложения и не включают в себя сущности из нижних уровней вроде конечных автоматов сетевого обмена, ручное управление распределённым состоянием или сериализацию битовых полей.


  3. Отказоустойчивость. Протокол реализует одноранговую децентрализованную сеть со встроенной поддержкой избыточности. Обеспечивается совместимость с ненадёжными сетями реального времени, где возможны потери пакетов в результате деструктивных воздействий среды (например, электромагнитная интерференция), но не самой сети (например, переполняющийся буфер).


  4. Предсказуемость. Протокол изначально спроектирован для задач реального времени и для использования во встраиваемых системах от младших однокристалок без ОС с единицами КиБ памяти до мощных компьютеров под управлением сложных ОС, причём не обязательно реального времени. Поддерживаются средства высокоточной синхронизации времени в пределах сети для нужд распределённых контуров управления. Ресурсный потолок всегда тривиально предсказуем и доказуем.


  5. Открытость. Это не техническое требование, а юридическое, но это не делает его менее значимым. Невозможно обеспечить серьёзные внедрения закрытой технологии, если существенная часть отрасли живёт открытыми стандартами и открытым ПО. Этот пункт подразумевает свободное распространение всей документации и кода под разрешительными лиценизиями (CC BY, MIT) без обязательных членских взносов.



Синопсис графически

В части погони за простотой как одной из ключевых характеристик можно усмотреть реминисценции известного в определённых кругах алгоритма распределённого консенсуса Raft, чьи создатели точно так же, как и мы, начали с вопроса о том, как сделать сложные вещи простыми. Хотя область их деятельности не имеет ничего общего с нашей, они, как и мы, в конечном итоге решали проблему восприятия, где единственной гарантированно достоверной метрикой является человеческий опыт. В отличие от авторов Raft, мы не проверяли трудность понимания наших спецификаций на больших массах людей (N.B.: они показали видео-лекцию 43-м студентам и потом оценили понимание при помощи теста, сравнив результаты с конкурирующей технологией). Однако, у нас есть вот такое практическое свидетельство, где господин зашёл с улицы и сделал минимальную реализацию UAVCAN с нуля за "пару недель" (с его слов):



Желающие увидеть код найдут его на гитхабе как libuavesp. Я, обратите внимание, умываю руки мы к этой реализации отношения не имеем. Заявление автора о том, что "UAV" в названии "UAVCAN" имеет отношение к БПЛА, не соответствует действительности и вызвано банальным недоразумением.


Как нетрудно догадаться из предваряющей этот раздел вводной, UAVCAN широко заимствует ценные принципы из флагманов современной индустрии, в первую очередь опираясь на ROS, DDS, AFDX, WAIC и множество высокоуровневых CAN протоколов, которые даже нет смысла здесь перечислять. Однако, вопросы организации распределённых вычислений одними транспортными протоколами, очевидно, не ограничиваются, особенно если учесть заявленную в ключевых целях потребность в "высокоуровневых абстракциях". UAVCAN удобно рассматривать в виде трёхуровневой модели (мы намеренно игнорируем семиуровневую модель OSI ввиду её чрезмерной детализации):


  • Уровень приложения. На этом уровне представлены общие для всех бортовых систем функции: мониторинг состояния, логирование, передача файлов, управление конфигурацией, телеметрия, и т.п. На этом же уровне создаются специализированные сервисы согласно потребностям конкретного приложения. В распоряжении пользователя два вида взаимодействий: анонимный статически типизированный издатель-подписчик и статически же типизированный удалённый вызов процедур с явной адресацией (т.е. не анонимный).


  • Уровень представления отвечает за маршалинг доменных объектов в связях издатель-подписчик и при удалённом вызове процедур. Этот уровень реализован средствами специального предметно-ориентированного языка, на котором даётся строгое определение типов данных для сетевого обмена: Data Structure Description Language (DSDL). На основе DSDL-дефиниций можно автоматически генерировать код (можно и не автоматически).


  • Транспортный уровень занимается доставкой объектов согласно связям издатель-подписчик и удалённым вызовам процедур. Этот уровень намеренно сильно изолирован от вышележащих двух, что позволяет нам определить несколько транспортов поверх различных нижележащих протоколов:


    • UAVCAN/CAN работает поверх классического CAN и CAN FD. Вероятно, в будущем также появится поддержка CAN XL, но это не точно.
    • UAVCAN/UDP работает поверх UDP/IP. По состоянию на 2020-й год, спецификация этого транспорта ещё находится в стадии ранней альфы и может быть изменена до стабилизации (хотя предпосылок к этому нет).
    • UAVCAN/serial работает поверх любого байт-ориентированного протокола (UART, RS-232/422/485, USB CDC ACM) и ещё подходит для хранения дампов в неструктурированных бинарных файлах. Этот транспорт тоже ожидает стабилизации.
    • Поскольку интерфейс между транспортом и верхними уровнями хорошо определён, в будущем возможно добавление новых транспортных протоколов. В числе таковых рассматривается, например, беспроводной IEEE 802.15.4.


У нас есть несколько безусловных исходных предположений, которые довольно однозначно очерчивают область применимости протокола. Строгий фокус на бортовых сетях реального времени означает, что попытки использования UAVCAN в любых других областях скорее всего приведут к посредственным результатам, что мы, однако, не расцениваем как недостаток.


Первое из исходных предположений таково: нижележащая транспортная сеть (например, CAN или Ethernet, в зависимости от выбранного транспорта) предлагает хорошо охарактеризованную минимальную кривую обслуживания и нулевую вероятность потерь пакетов при отсутствии неблагоприятных воздействий внешней среды. Последнее означает, что потери не могут возникнуть в результате процессов, протекающих внутри сети, как, например, переполнение буфера на сетевом узле; однако, допускаются кратковременные нарушения, вызванные внешними факторами, как, например, электромагнитная интерференция. Это предположение полностью совместимо с реалиями настоящих бортовых систем, и оно позволяет нам существенно упростить логику протокола. Компенсация потерь ввиду внешних воздействий выполняется путём превентивной отправки дубликатов (только в тех случаях, где требуется). Рассмотрение этого метода даётся в статье Idempotent interfaces and deterministic data loss mitigation. Хотя описанные особенности выглядят чуждыми для традиционных систем, они вполне оправданы для нашей области.


Крайне аккуратное обращение с разделяемым состоянием позволяет нам сильно сократить пространство состояний сетевых узлов в сравнении со схожими решениями. В результате сокращается техническая сложность реализации, упрощается её анализ и тестирование, о чём подробно сказано в официальном руководстве. Сетевой узел UAVCAN делает минимум предположений о состоянии своих коллабораторов; например, если в случае традиционного фреймворка издатель-подписчик обычно выделяется явная процедура установления подписки, где подписчик сообщает издателю о своей заинтересованности в конкретных данных (см. SOME/IP, DDS, ROS, практически все MQ*, etc.), в UAVCAN издатель слепо отправляет данные в сеть, позволяя заинтересованным агентам их принять или проигнорировать.


Последнее обстоятельство создало бы существенные преграды для масштабирования, если бы не широкое использование аппаратной фильтрации пакетов в обязательном порядке. Известные нам другие протоколы (кроме AFDX) необоснованно игнорируют тот факт, что всё современное аппаратное обеспечение для высокоскоростной коммуникации, за исключением лишь некоторых маргинальных представителей, предоставляет мощные аппаратные инструменты автоматической фильтрации. Разумная эксплуатация этого факта позволила нам ввести радикальные упрощения без ущерба функциональности, о чём говорится в статье Alternative transport protocols in UAVCAN.


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


Например, динамическое выделение адреса в сети поддерживается опциональным механизмом plug-and-play (впрочем, конкретно для UAVCAN/UDP он не определён ввиду наличия стандартного DHCP). Механизм этот также поддерживает избыточные аллокаторы для отказоустойчивых систем, где консенсус реплик обеспечивается при помощи упомянутого ранее алгоритма Raft.


Второй аспект статичности заключается в предоставлении ресурсного потолка для любой части системы на этапе проектирования. Так, определяемые при помощи упомянутого ранее DSDL типы всегда имеют верхний предел размера любого поля переменной длины, из чего следует, что максимальное время передачи, максимальное время сериализации/десериализации, и, в общем случае, максимальное время обработки всегда можно определить статически. Ниже показано DSDL-определение стандартного типа журнальной записи под именем uavcan.diagnostic.Record, где можно видеть, что максимальная длина сообщения задана явно и ограничена 112-ю байтами (кодировка всегда UTF-8):


# Generic human-readable text message for logging and displaying purposes.# Generally, it should be published at the lowest priority level.uavcan.time.SynchronizedTimestamp.1.0 timestamp# Optional timestamp in the network-synchronized time system; zero if undefined.# The timestamp value conveys the exact moment when the reported event took place.Severity.1.0 severityuint8[<=112] text# Message text.# Normally, messages should be kept as short as possible, especially those of high severity.@assert _offset_ % 8 == {0}@assert _offset_.max <= (124 * 8)     # Two CAN FD frames max

В конце определения видно вспомогательные конструкции, добавленные с целью статической проверки способности двух CAN FD фреймов нести сообщение максимального размера.


В предшествующей секции было отмечено, что протокол реального времени должен проектироваться с учётом доступных средств реализации с соблюдением временных характеристик. Если представление данных в гарантированное время в целом делается возможным благодаря свойствам DSDL, своевременность их обработки на нижних уровнях протокола (на транспортном, то есть) достигается благодаря явно определённому потолку для всех ресурсов протокола. Например, максимальное количество каналов издатель-подписчик в системе ограничено (этот максимум, однако, очень высок десятка тысяч каналов достаточно каждому), равно как и максимальное количество узлов в сети. В спецификации рассматриваются практические подходы к реализации транспортной логики (а именно, демультиплексирования пакетов и реконструкции полезной нагрузки из мультикадровых передач) с оценкой влияния различных методов на асимптотическую сложность.


Третий аспект статичности следует из нашего крайне осторожного обращения с распределённым состоянием (однажды я сделаю себе татуировку на лицо с предупреждением о том, что все болезни идут от взаимодействий с чрезмерным сохранением состояния). Отсутствие явно синхронизируемых состояний между коллабораторами (между издателем и подписчиком или между клиентом и сервером в случае удалённого вызова процедур) позволяет вновь подключенному участнику приступить к выполнению своих задач немедленно, без предварительных процедур регистрации, обнаружения служб, и т.п. Это имеет значение при анализе сценариев отказа, где критическое устройство кратковременно отключается (например, в результате непреднамеренного перезапуска) с последущим повторным присоединением к сети.


Для примера я продемонстрирую сериализацию и публикацию сообщения, определённого ниже, содержащего три константы и два поля. Константы не участвуют в обмене, поскольку они и так известны всем узлам, имеющим доступ к соответствующему определению типа. Поля сериализуются в плоский остроконечный бинарный формат (младший байт идёт первым) примерно как в ASN.1 UPER (другой порядок байт), но с местной спецификой (ценители сериализации данных должны посмотреть мою заметку, где я рассматриваю популярные форматы и сравниваю их с DSDL).


uint16 VALUE_LOW  = 1000uint16 VALUE_HIGH = 2000uint16 VALUE_MID = (VALUE_HIGH + VALUE_LOW) / 2# Рациональная арифметика произвольной точности!uint16 valueuint8[<=100] key  # Динамический массив от 0 до 100 элементов.

Если мы, скажем, присвоим полям значения value=1234 и key=Hello world!, результат в шестнадцатиричной нотации будет следующим:


D2 04 0C 48 65 6C 6C 6F 20 77 6F 72 6C 64 21

Где D2 04 соответствует 1234, 0C длина массива (если бы максимальная длина была более 255 элементов, тут было бы два или четыре байта), и остаток приходится на приветствие.


Публикация сообщения через классический CAN будет выглядеть предельно незамысловато все счастливые CAN протоколы похожи друг на друга (надо ли говорить, что в случае CAN FD всё вошло бы в один кадр):


$ candump -decaxta any(7.925)  vcan2  TX - -  1013373B   [8]  D2 04 0C 48 65 6C 6C A0   '...Hell.'(7.925)  vcan2  TX - -  1013373B   [8]  6F 20 77 6F 72 6C 64 00   'o world.'(7.925)  vcan2  TX - -  1013373B   [4]  21 F9 02 60               '!..`'

Лишний подозрительный байт в конце каждого кадра содержит метаданные транспорта. В конце последнего кадра есть два байта циклического избыточного кода для проверки корректности декадрирования.


Колонка со значением 0x1013373B здесь представляет CAN ID, что является битовой маской из нескольких полей с метаданными. Наиболее интересным здесь является значение 0x1337 (4919 в десятичной системе), которое называется идентификатором темы (subject-identifier) в отличие от некоторых более сложных протоколов (как DDS), UAVCAN не поддерживает именованные топики, предлагая вместо них нумерованные темы (похоже на SOME/IP и практически любой протокол поверх CAN). Это значение проектировщик выбирает произвольно, сообразно своим представлениям о системе.


Теперь мы можем повторить упражнение для UAVCAN/UDP на localhost. Wireshark, к сожалению, пока не имеет диссектора для UAVCAN, да и пёс с ним, ведь и так всё ясно:



Дотошный читатель спросит, откуда взялся порт назначения 21303, на что я отвечу, что он вычисляется как сумма идентификатора темы (4919 у нас) и фиксированного смещения 16384. Смещение выбрано таким образом, чтобы сдвинуть порты UAVCAN в эфемерный диапазон с целью минимизации конфликтов. Исходный порт полезной информации не несёт и выбирается произвольно. Нашу полезную нагрузку (D2 04 0C ...) предваряют 24 байта метаданных, добавленных стеком UAVCAN; там содержится информация о приоритете, фрагментах (тут их нет) и последовательном номере сообщения.


Будет ошибкой думать, что внедрение UAVCAN/UDP в обязательном порядке требует полного IP стека. Когда на практике поднимается вопрос об IP стеке, обычно подразумевается TCP/IP, сложность которого несопоставима с UDP/IP. Последний можно собрать с нуля на C в несколько сотен строк, как наглядно продемонстрировал Lifelover в 2011-м году в серии публикаций "Подключение микроконтроллера к локальной сети".


Здесь практические упражнения мы заканчиваем, потому что публикация не об этом. Желающим закатать рукава следует пройти в библиотеку с говорящим названием PyUAVCAN, при помощи которой эти примеры были получены (не будет лишним также заглянуть в руководство).


Нельзя обойти вниманием встроенную поддержку как гомогенной, так и гетерогенной избыточности транспорта. Первый тип достаточно часто встречается на практике, но особенно интересен последний в предыдущей секции я отметил потенциал разнородной избыточности к увеличению отказоустойчивости сети благодаря устранению отказов общего вида. На транспортном уровне встроена логика дедупликации и автоматического переключения между избыточными сетевыми интерфейсами прозрачно для приложения. С практической стороной реализации можно также ознакомиться в документации к PyUAVCAN.


Последним заслуживает рассмотрения уровень приложения. Техническая сторона вопроса прозрачна: пользователь определяет собственные типы с использованием DSDL, затем создаёт соответствующие темы (топики) по мере надобности. Для распространённых задач (мониторинг узлов, файлообмен, логирование, управление конфигурацией, и т.п.) нет нужды конструировать собственные сетевые сервисы, потому что соответствующие определения предоставляются стандартным набором сервисов UAVCAN, из которого можно свободно выбрать необходимые.


Поверх UAVCAN предполагается создание специализированных отраслевых стандартов уровня приложения, примерно как стандартные классы USB существуют поверх ядра USB, как профили CANopen или Bluetooth, или как DDS FACE поверх DDS. Схематически мы это изображаем следующим образом:



Из отраслевых стандартов сейчас в работе один так называемый Drone Standard 15, или DS-015, к которому активно прикладывают руки, среди прочих, компании из Dronecode Foundation. Мы предвидим появление других отраслевых спецификаций в будущем, поскольку UAVCAN сегодня можно встретить далеко за пределами одних только дронов но об этом позже.


Техническая сторона здесь прозрачна, но есть и другая. Сложные распределённые системы требуют дисциплинированного подхода к проектированию сетевых сервисов и их интерфейсов. Контакты с сообществом разработчиков встраиваемых систем показали, что эта аудитория может глубоко разбираться в вопросах, традиционно характерных для их области деятельности (реальное время, операционные системы, связующее ПО, и т.п.), но при этом иметь очень ограниченное представление о проектировании адекватных сетевых сервисов. Накопленный опыт работы с несколько более низкоуровневыми технологиями, по-видимому, подталкивает людей к неуместному заимствованию практик, что неоднократно на нашем опыте приводило к появлению дефектных интерфейсов, работа с которыми наполовину состоит из страдания. Решение этой нетехнической проблемы является столь же нетехническим мы опубликовали учебный материал, где подробно объясняется, как выглядит сетевой сервис здорового человека. Материал этот опубликован в официальном руководстве UAVCAN в главе Interface Design Guidelines.


Внедрение


Прогресс в области вычислительной техники, элементов питания, машинного обучения, генеративного проектирования и других передовых областей порождает новые проекты транспортных систем, которые зачастую реализуются малыми предприятиями при минимальном финансировании и низкой стартовой вовлечённостью в релевантные отрасли. Практические примеры автономных дронов и роботов, электрических конвертопланов, кубсатов, робоавтомобилей, и т.п. в изобилии присутствуют в новостных лентах, так что приводить их здесь нет смысла. Каждое такое средство, будучи передовым продуктом 21-го века, критически зависимо от грамотной огранизации бортовых вычислительных систем, и часто также несёт груз правового регулирования и доказательства функциональной безопасности. Такие проекты неспособны подняться без широкого применения именно открытых стандартов и свободных решений, потому что как коммерческие альтернативы, так и доморощенные велосипеды рискуют не вписаться в бюджет. Стартап, скажем, с летательным аппаратом, намеревающийся следовать стандартам консервативной аэрокосмической отрасли на первом же шаге выложит десятки тысяч евро за PDF документы; в то же время будет ошибкой думать, что внедрение этих стандартов является необходимым или даже желательным условием для успеха.


UAVCAN полностью открыт для распространения и внедрения, не предписывает никаких лицензионных ограничений: вся документация распространяется под CC BY 4.0, а исходный код референсных реализаций под MIT. Вероятно, любой другой подход к лицензированию сегодня обрёк бы проект на забвение.


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


Согласно принципам открытости, вся разработка ведётся в полностью публичной манере на форуме и на GitHub оба этих ресурса вместе содержат не меньше 90% дискуссий разработчиков по существу, так что любое просочившееся в спецификацию решение оставляет перманентный бумажный след. Этот подход радикально отличается от традиционных практик, где обычно предполагается платное членство и участие в закрытых сессиях, закрытых ревью стандартов и закрытых же списках рассылок.


На гитхабе поддерживаются референсные библиотеки, среди которых Libcanard минимальная реализация UAVCAN/CAN для однокристалок на C11, объём кода которой фигурирует в названии этой статьи. Также там базируется uavcan.rs мультитранспортная реализация на Rust, которая по состоянию на июль 2020 ищет нового мейнтейнера.


Там же поддерживается Yukon десктопная программа на питоне-электроне для разработки, отладки и диагностики UAVCAN сетей, представляющая собой смесь RViz, Wireshark и LabView. Раньше у нас была ещё утилита на PyQt для предыдущей экспериментальной версии протокола, но теперь она устарела безнадёжно, и усилия сосредоточены на Yukon. На форуме есть бесконечно длинные треды с обсуждениями, но дальше обсуждений мы практически не продвинулись из-за острой недостачи фронтендеров. На сегодня последнее демо выглядит так:



Некоторый интерес представляет использование API ROS поверх UAVCAN вместо DDS. Смысл здесь в том, чтобы сделать развитую экосистему пакетов ROS доступной в системах реального времени и младших микроконтроллерах с использованием UAVCAN, обеспечив при этом также нативную совместимость с обычными UAVCAN устройствами, ничего не знающими о ROS. Краткая вводная дана в заметке на форуме "An exploratory study: UAVCAN as a middleware for ROS"; разыскиваются коллабораторы.


Среди множества компаний и учреждений, принимающих участие развитии стандарта, следует особо выделить NXP Semiconductors. На недавней конференции они представили неплохой доклад "Getting started using UAVCAN v1 with PX4 on the NXP UAVCAN Board", демонстрирующей, в том числе, кое-какие их новые референсы для UAVCAN приложений.


Не менее ценным партнёром является Amazon Prime Air со своим крутейшим автономным доставочным дроном. Эти господа производят не железо, а код копирайты Амазона щедро разбросаны по нашим исходникам.


Законченное UAVCAN-совместимое железо вроде сервоприводов, приводов электромоторов, системы воздушных сигналов, автопилотов, систем впрыска топлива, всевозможных датчиков и отладочных плат сегодня предлагают многие вендоры, чьё перечисление тут вряд ли оправданно.


Согласно опросу, проведённому в конце 2019 года, а также основываясь на наших личных контактах с интеграторами, UAVCAN сегодня применяется в пилотируемых (~10% компаний) и беспилотных (~80% компаний) летательных аппаратах, в малых космических аппаратах (~5% компаний, на 2020 год на орбите есть около 20 кубсатов, согласно доступным нам данным), в микро транспорте (вроде электросамокатов) и разнообразных робототехнических системах. Наша выборка, впрочем, подвержена систематической ошибке и приводится только в общеинформативных целях; распределение может не соответствовать действительности. Краткая сводка по опросу доступна отдельно.


Статус и будущее проекта


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


Согласно опросу, главным препятствием на пути к цели являются проблемы не технические, а социальные: 47% респондентов в последнем опросе указало, что главным препятствием на пути внедрения UAVCAN в новых разработках является низкая представленность технологии в профессиональном дискурсе. Вероятно, просветительские публикации вроде этой проекту помогут.


uavcan.org


Источники и материалы
  • Digital Avionics Handbook (3rd edition) Spitzer, Ferrell, 2017
  • Computers in Spaceflight: The NASA Experience Kent, Williams, 2009
  • The Evolution of Avionics Networks From ARINC 429 to AFDX Fuchs, 2012
  • Communications for Integrated Modular Avionics Alena, 2007
  • Safety and Certification Approaches for Ethernet-Based Aviation Databuses Yann-Hang Lee et al, 2005
  • The Design of the TAO Real-Time Object Request Broker Schmidt, Levine, Mungee, 1999
  • In Search of an Understandable Consensus Algorithm Ongaro, Ousterhout, 2014
  • Starlink is a very big deal Handmer, 2019
  • Why ROS 2? Gerkey, 2015
  • ROS on DDS Woodall, 2015
  • Safe Micromobility Santacreu, 2020
  • Understanding Service-Oriented Architecture Sprott, Wilkes, 2009

Документация и спецификации рассмотренных технологий в списке источников не указаны.


Также см. наши публикации по теме:


Подробнее..

Использование UAVCAN для модульной электроники БПЛА, или как не спалить дрона, перепутав провода

30.07.2020 22:23:20 | Автор: admin
Привет! Меня зовут Роман Федоренко, я доцент Центра компетенций НТИ по направлению Технологии компонентов робототехники и мехатроники на базе Университета Иннополис. Я работаю с командой робототехников, которая специализируется на беспилотных летательных аппаратах. По большей части мы занимаемся высокоуровневым управлением БПЛА: планирование движения, обход препятствий, решения для киносъёмки и сканирования местности. Хотя собственные небольшие коптеры тоже собирали и с железом работали. В прошлом году мы начали разработку большого самолёта вертикального взлёта и посадки, который включает все уровни от изготовления носителя до обвески датчиками и интеллектуального управления. И при разработке этого проекта познакомились с UAVCAN.

UAVCAN это открытый лёгкий протокол для бортовой сети подвижных объектов. Недавно его разработчик и мейнтейнер Павел Кириенко Spym рассказал о протоколе на PX4 Developer Summit, крупной конференции сообщества разработчиков дронов с использованием open-source экосистемы вокруг автопилота PX4, частью которой является UAVCAN. А ещё Павел подготовил подробную статью для русскоязычного сообщества на Хабре по следам своего доклада.

В этом материале я расскажу о практической стороне использования протокола с позиции разработчиков систем автоматического управления для БПЛА: как мы выбрали UAVCAN, что делаем с помощью него и какие возможности видим в будущем.




Гибридные БПЛА


Самолёт вертикального взлёта и посадки (VTOL) это гибрид коптера и самолёта, который может работать дольше коптера за счёт аэродинамической подъёмной силы крыла и при этом не требует взлётно-посадочной полосы либо пускового устройства и парашюта, как обычные самолётные беспилотники. Сейчас разработка таких устройств популярное и многообещающее направление. Такой аппарат можно использовать для доставки, картографии, мониторинга и других целей. По тому же принципу конструкции устроены большинство проектов летающего такси, например:

  • полностью электрическое воздушное такси Lilium Jet немецкой компании Lilium;
  • малошумный электросамолёт Heaviside компании Kitty Hawk Себастьяна Труна (которого многие знают по беспилотным автомобилям);
  • проект Vahana от Airbus.


Innopolis VTOL plane
Самолёт вертикального взлёта и посадки Университета Иннополис

Мы разработали три модели небольших беспилотных аппаратов с разным размахом крыла, грузоподъёмностью и источниками питания полностью электрические и с двигателями внутреннего сгорания. По конструкциям летательных аппаратов сотрудничаем с Казанским авиационным институтом и авиационными предприятиями Казани, а фокус наших работ электроника, алгоритмы и автоматическое управление.

При чём здесь UAVCAN?


Те, кто занимаются коптерами, знают, что обычная структура системы управления выглядит примерно так:

PixHawk drone scheme

Типовая схема БПЛА на базе автопилота PX4. Источник

Моторы управляются регуляторами оборотов (ESC), на которые посредством PWM (ШИМ) сигналов подаются уставки от автопилота. Датчики подключаются по куче разных интерфейсов UART, I2C, SPI. Плюс телеметрия, пульт, питание и получается такой паук из проводов. Но основная проблема не в этом.

Чем длиннее провода, то есть больше аппарат, тем эта схема сильнее подвержена наводкам. Нам об этом пришлось задумываться с самого начала, потому что у наших аппаратов размах крыльев 2 и 4 метра, и это не предел.

Раньше для проекта 40-метрового дирижабля мы работали с CAN (только протокол был на базе CANOpen). И решение использовать UAVCAN для нас было само собой разумеющимся: в PX4 уже есть его поддержка, даже никаких споров в команде по этому поводу не возникало. Изначально мы хотели заменить длинные линии PWM на цифровой интерфейс, чтобы масштабировать наши решения на аппараты с разным размахом крыла.

Оказывается, UAVCAN это не CAN для UAV
Раньше мы воспринимали UAVCAN как CAN для UAV (БПЛА). Возможно, так изначально и было, но сейчас он позиционируется как Uncomplicated Application-level Vehicular Communication And Networking (Простая коммуникация и сетевое взаимодействие уровня приложений для подвижных объектов) и не привязан ни к UAV, ни к CAN, а используется на целом ряде подвижных объектов и поверх разных интерфейсов. Есть даже предложение об использовании UAVCAN в качестве middleware для ROS (Robot Operating System). Но об этом подробнее в статье от создателя протокола.


Заменив PWM-связи на UAVCAN-связи, мы перестали беспокоиться о проблемах длинных проводов и наводок, а также значительно уменьшили количество подключений к автопилоту.

Было два варианта, как это сделать. Первый использовать регуляторы моторов и сервоприводы с UAVCAN интерфейсом. Такие есть, например, у Zubax. Второй сделать адаптеры UAVCAN, которые устанавливаются непосредственно возле ESC. Мы пошли по второму варианту, потому что выбор ESC с UAVCAN интерфейсом невелик. Сначала мы использовали адаптеры проекта UAVCAN for Hobbyists (UC4H), затем решили делать свои устройства со встроенным DC-DC преобразователем, своей схемотехникой, прошивкой и нескучными диодиками.

Innopolis UAVCAN devices
Наши устройства с интерфейсом UAVCAN

Вошли во вкус


Дальше мы поняли, что можем вместо десятка проводов использовать шину UAVCAN для взаимодействия не только с исполнительными механизмами, но и с большинством внешних устройств. Это ещё и хорошо сказывается на виброизоляции контроллера, установленного на специальной платформе. В итоге мы разработали ряд девайсов для собственного применения, но сейчас видим, что они интересны другим:

  • Преобразователь CAN-PWM до 4 каналов: устройство подключается к шине CAN, принимает и обрабатывает сигналы управления, выдаёт ШИМ. Питать плату можно напрямую с АКБ до 60 В, в её составе включается DC-DC преобразователь, обеспечивающий напряжением 5 В (3 А) плату и потребителя (например, сервомашинку);
  • GPS/Magnetometer/Barometer;
  • Силовая плата, Power Management Unit (PMU): обеспечивает подсоединение нескольких АКБ (параллельно или последовательно при необходимости). Устройство подключается последовательно со всей силовой нагрузкой и обеспечивает её коммутацию. В конструкции датчики напряжения и тока на АКБ, DC-DC преобразователь для обеспечения питания автопилота. Такая плата рассчитана на большие токи до 1000 А. В разработке устройство CAN в составе платы выдающее информацию о напряжении и токе;
  • Лазерный высотомер;
  • Датчик воздушной скорости;
  • Датчик уровня топлива;


Технически эти устройства реализованы на базе микроконтроллера STM32. Проектируем сами, а изготовление заказываем на pcbway.ru. Прошивка реализуется с использованием libcanard.

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

Dark drone

Новые устройства тестируем на небольшом dark дроне

А затем уже используем на самолёте:


Короткое видео тестового полета нашего VTOL-самолета во всех режимах

Организация полётов
Кстати, в Республике Татарстан есть Ассоциация пилотов, разрешающая регистрировать пилотов беспилотников и получать разрешение на полёты нажатием одной кнопки. Они же помогают нам по дружбе.

Здесь даже реально получить разрешения полетать над Казанским кремлём.


В итоге схема у нас выглядит так:

Innopolis VTOL UAVCAN Scheme
Схема нашего VTOL-самолёта с использованием UAVCAN датчиков и исполнительных механизмов

Какие преимущества UAVCAN даст нам в будущем


Резервирование


Важнейшая задача при реализации продукта на базе БПЛА обеспечить надёжность. Мы уже начали работать над этим. Например, несколько наших GPS и датчиков воздушной скорости подключить и использовать параллельно уже получается. Но ещё многое предстоит. Скорее всего, дублирования датчиков и контроллеров с использованием CAN шины будут сделаны проще. К Pixhawk можно подключить две шины, а на шине оставить несколько одинаковых датчиков для резервирования.

Масштабирование


В будущем мы хотим делать большие аппараты взлётной массой больше 30 кг, хотя это и сложно сертифицировать. Масштабируемость архитектуры на базе UAVCAN позволяет строить амбициозные планы.

True HIL-симуляция


Сейчас активно развивается тема работы БПЛА в городской среде Urban Air Mobility (UAM). Для реализации задач UAM нужно больше опираться на такие сенсоры, как камеры и лидары. Тут возникает необходимость разработки и отладки систем интеллектуального управления, а также повышение их надёжности. Для этих целей другая команда Университета Иннополис разрабатывает симулятор Innopolis Simulator для автономных подвижных объектов на основе Unity 3D для тестирования, отладки и обучения.


Innopolis Simulator

Для нашего VTOL-самолета используем Innopolis Simulator в связке с Gazebo для фотореалистичной симуляции, тестирования управления и обработки сенсорных данных лидаров и камер.

Сейчас работаем над своим модулем симуляции динамики вместо Gazebo с более точной аэродинамикой, а также над другой фишкой true HIL симуляцией (от hardware in the loop, или программно-аппаратное моделирование, ПАМ).

В нашем решении все данные поступают от датчиков, а управления на моторы и сервы отправляются по шине UAVCAN. Почему бы не сделать модуль симуляции этих датчиков на уровне той же шины? Просто вместо устройств к контроллеру мы подключаем компьютер с симулятором.
Сейчас HIL-симуляция в PX4 делается посредством специальных HIL_* сообщений MAVLINK (протокол телеметрии, работает по последовательному порту либо UDP/TCP), которые имитируют датчики и исполнительные механизмы.

PX4_HITL

Диаграмма работы PX4 в режиме HITL. Источник

Симуляция, как она реализована сейчас в PX4, это отдельный режим работы полётного контроллера, отличающийся от боевой полётной конфигурации. Мы имитируем непосредственно UAVCAN сообщения, в идеале автопилот может даже не знать, что работает в симулируемом окружении. Но нужно сказать, что пока концептуально не решена проблема симуляции IMU, которые находятся внутри автопилота и подключены не по CAN.

Innopolis VTOL UAVCAN HIL Simulator Scheme
Предлагаемая схема работы PX4 в режиме HITL с использованием UAVCAN

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


Авиационный HIL симулятор. Источник

Подобный подход, когда устройства имитируются на уровне интерфейсов, используется и в большой авиации, но с UAVCAN мы делаем это доступнее и проще.

Вывод


Очень здорово, что над вопросами лёгкости, надёжности и риалтаймовости протокола UAVCAN уже подумали за нас, как и то, что есть PX4, ROS и Linux, в конце концов. Нам было бы очень сложно делать наши коптеры, самолёты, системы управления и планировщики, если бы всего этого не было.

Стандартизация протоколов и программных средств даёт возможность разработчикам говорить на одном языке. Вместе с тем, важна не только стандартизация, но и доступность, что в высокой степени обеспечивает open-source подход. Это позволяет, стоя на плечах гигантов, быстрее переходить к своим задачам, а не строить сначала долго инфраструктуру для работы, что, надеюсь, мы показали на нашем примере в данной статье.


Пьём колд брю после успешных полётов
Подробнее..

Дары небес в Германии разработали дрона, который доставляет 3 посылки одновременно

04.05.2021 14:16:26 | Автор: admin
Источник

Вот уже несколько лет идет развитие рынка доставки товаров беспилотниками. Медленно, но уверенно эта сфера движется вперед. На днях стало известно, что немецкая компания разработала дрона, способного за раз перевозить 3 посылки. Новый беспилотник доставляет их прямо в руки к заказчику. Если все пойдет удачно, то впереди нас ждет новая эра B2C-торговли с очень быстрой доставкой практически без задержек в оказании услуг.

Модель N 198


Новый автономный летательный аппарат для перевозки одновременно трех малогабаритных грузов разработали в компании Wingcopter.

Основные характеристики БПЛА:

  • 150 км/ч максимальная скорость БПЛА в горизонтальном полете;
  • 6 кг максимальная полезная нагрузка;
  • ~75 км преодолевает дрон на одном заряде аккумулятора при нагрузке в 6 кг;
  • до 109 км пролетает беспилотник, перевозя легкие грузы;
  • 8 роторов для взлета дрона-доставщика;
  • 2 крыла у БПЛА для горизонтального полета;
  • 3 отдельных крепления и лебедки для спуска груза;
  • 10 дронами может одновременно управлять один оператор Wingcopter.

Еще одна особенность дрона-курьера он оснащен датчиками и необходимым ПО, которое помогает облетать препятствия и оставлять посылки в требуемых местах.

Дрон выполнен по схеме смешанного конвертоплана и использует механизм с наклонным ротором.

Четыре фиксированных винта по краям обеспечивают вертикальный взлет и посадку. У центра фюзеляжа есть еще четыре поворотных ротора. Они поворачиваются на 90 градусов: их применяют для вертикального и горизонтального полета.

В результате аппарат обладает преимуществами подобных моделей двух типов:

  1. Умеет плавно вертикально взлетать и садиться.
  2. За счет неподвижного крыла может парить в воздухе и быстро передвигаться на большие расстояния.

Чем полезны поворотные роторы? Они реагируют на резкие порывы ветра, адаптируют БПЛА к неблагоприятным погодным условиям.

В случае проблем предусмотрен перехват управления дроном оператором-человеком. Во избежание столкновения с другими аппаратами в воздухе коптер оснащен ресивером ADS-B и транспондером FLARM.

Что еще


Немецкий стартап занимается разработкой и совершенствованием коптеров с 2017 года. По словам генерального директора компании, Тома Плюммера, их следующая миссия создать сеть доставки дронами и развивать логистические магистрали в воздухе. Услуги могут быть использованы в следующих сферах: здравоохранение, e-commerce, доставка продуктов.

Wingcopter открыла прием заявок на первые 100 воздушных курьеров. В дальнейшем они планируют запустить серийное производство.

Сейчас компания получает лицензию от Федерального управления гражданской авиации США на выполнение коммерческих грузоперевозок.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru