Компьютерра 26.09.2011 - 02.10.2011

Статьи

OpenPilot: беспилотники по-опенсорсному (часть 2) Опубликовано 28 сентября 2011 года

- Продолжение. Первую часть статьи можно прочитать здесь.

Объекты, объекты

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

Во-первых, это собственный уровень аппаратной абстракции, названный PilotOS, или, сокращённо, PiOS. Он находится между конкретным «железом» и остальной логикой системы. Используя его и переносимый исходный код проекта, стало возможным не только легко адаптировать проект под разные типы процессоров, но даже собрать версию для персонального компьютера. Так получились HiTL – Hardware in The Loop и SiTL – Software in The Loop.

Отладка алгоритмов стабилизации OpenPilot в симуляторе FlightGear (видео Дмитрия Зайцева)

Говоря простыми словами, с помощью специального модуля GCS, умеющего общаться с программными симуляторами полёта, например игровым симулятором IL2, система может получать данные о самолёте не от платы INS с реальными датчиками, а от симулятора, работающего на том же компьютере, что и GCS, или на соседнем, подключённом по локальной сети или даже через интернет. Далее GCS направляет эти данные по каналу телеметрии в плату OP Pro, которая выполняет функции навигации и выдаёт управляющие воздействия не только на свои выходы, но и обратно в GCS. Последняя передает их в симулятор, который ведёт самолёт под управлением реального «железа» проекта OpenPilot. Это и есть HiTL – реальная электроника управляет симулированным самолётом.

Но это ещё не всё. Скомпилировав тот же программный код с заменой одного только уровня PiOS, можно получить программу стабилизации, работающую на том же персональном компьютере. Теперь вся система вообще становится виртуальной: симулятор самолёта, GCS и код системы навигации работают на PC, не требуя специальных плат. Это даёт возможность отлаживать любые алгоритмы навигации вообще без железа и без рисков разбить модель на ранней стадии отладки. Такой уникальной возможностью не может похвастаться ни один из существующих на сегодня любительских проектов.

Второе принципиальное архитектурное решение — это протокол обмена данными, названный UAVTalk. Все данные в системе, будь то настройки или данные управления и состояния, представлены в виде так называемых uavobjects – объектов, знающих о себе всё: тип данных, количество элементов, значения по умолчанию, допустимый диапазон значений и так далее. Весь обмен информацией как внутри системы, так и между моделью и землёй, построен на основе этих объектов.

UAVobjects, описанные на XML, автоматически преобразуются в исходные тексты на C для «прошивки» и C++ для GCS


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

И, наконец, UAVTalk — открытый протокол. Его реализация существует уже на языках программирования C, C++, Python, Java, есть версия для пакета Matlab. Достаточно реализовать формально описанный протокол на новом устройстве, и появляется возможность взаимодействовать как с GCS, так и с моделью на основе OpenPilot.

Особенности проекта

В то время как другие проекты предлагают приобрести специальные программаторы или адаптеры для выполнения настроек (не говоря уже о самых примитивных, где все настройки ограничиваются парой «крутилок» под отвёртку), в проекте OpenPilot этому также уделено особое внимание. Достаточно подключить систему к компьютеру обычным USB кабелем, как будут автоматически установлены нужные драйверы и при запущенной GCS можно будет немедленно приступить к конфигурированию системы.

Тем же путём решается смена версии «прошивок»: достаточно кликнуть мышкой и выбрать файл, и новая версия будет записана в подключённую плату. Это можно делать не только по USB, но даже через радиоканал. Такого сервиса нет в других любительских проектах. И опять же всё это одинаково работает не только на Windows, но и на Mac OS X, и на Linux.

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

Долго запрягают, да быстро везут...

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

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

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

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

Саммит OpenPilot 2011 в Португалии. Источник: http://www.openpilot.org/portugal-summit-2011/.

Саммит явился подготовкой к другому торжественному событию: 20 мая 2011 года был официально выпущен в продажу первый из продуктов проекта: электронная система стабилизации CopterControl. Этот продукт явился младшим братом полной версии системы, рассчитанным лишь на небольшое подмножество функций. Тем не менее с его ценой, в два-четыре раза ниже цены аналогичных устройств, на него мгновенно образовалась очередь, так как первая партия была распродана за одну неделю при практически полном отсутствии рекламы. От задумки до первого полёта CopterControl прошло всего два месяца, поскольку 95 процентов программного кода было позаимствовано у его старшего брата – полной системы, что в очередной раз подтвердило правильность принятых архитектурных решений.

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

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

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

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

Тем не менее такая ситуация ничуть не повлияла на спрос, так как простота настройки системы для первого полёта при минимальном желании и низкая цена дали возможность многим поверить, что этот продукт – для них. Спрос на CopterControl пока что сильно превышает предложение. Спустя три месяца от начала продаж в мире уже летало около 300 моделей под управлением CopterControl. Ещё несколько сотен вот-вот поступят в продажу.

Финансовая сторона медали

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

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

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

В результате выстроилась следующая схема:

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

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

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

С выпуском первой платы CopterControl сразу же посыпались предложения об оптовых закупках для последующей перепродажи, но увы: при такой минимальной марже там просто нет места для дилерских скидок. Зато при этом проект выполняет одну из своих целей: быть максимально доступным для всех желающих.

Одна из целей проекта OpenPilot — поддержка миссий наподобие FireEye 2011 (видео Franco Nogarin)

Лицензионные требования

Разработки проекта лицензированы на условиях лицензии CC-BY-SA (программное обеспечение) или CC-BY-NC-SA (схемотехника). Первая означает, что разрешается использование исходного кода проекта в любых целях, как коммерческих, так и некоммерческих, прямо или косвенно в виде производных проектов. Но при этом обязательными являются ссылка на первоисточник – на проект OpenPilot — и публикация изменённых исходных текстов на условиях такой же лицензии.

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

Кто за всем этим стоит?

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

В ядро команды входят около семи человек, которые и определяют дальнейшие направления развития проекта. Основные разработчики уделяют проекту, как правило, по 4-8, а то и 10-14 часов в сутки. Участие ряда других не столь постоянно, но зато многие сложные задачи решаются именно благодаря им. В общей сложности в команду OpenPilot входят около 25 человек из более чем пятнадцати стран мира. В ней есть люди из Австралии, Великобритании, Германии, Канады, Новой Зеландии, Португалии, России, США, Украины, Финляндии, Франции, Южной Африки и ряда других стран. Это действительно интернациональный проект, объединивший людей со всех континентов общей целью и дружеской атмосферой.

Что же дальше?

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

Ну а после этого все силы команды будут брошены на подготовку флагмана проекта – OpenPilot Pro/INS, как схемотехники, так и программного обеспечения. В отличие от CopterControl, в этом продукте и будет реализовано всё то, к чему уверенно продолжает двигаться команда OpenPilot. Когда он выйдет? Сроков нет! Он выйдет именно тогда, когда будет готов, но не раньше. Как, впрочем, и все остальные продукты проекта, нацеленные, в первую очередь, на качество и конечный результат.


К оглавлению

Информатизация полетов: способна ли автоматика спасти от человеческих ошибок Виктор Ивановский

Опубликовано 30 сентября 2011 года

Взлётка

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

7 сентября 2011 года, аэропорт Туношна, Ярославль. На взлёте разбивается самолёт Як-42 и уносит вместе с собой жизни 44 человек, в том числе 37 хоккеистов команды «Локомотив». Одной из возможных причин авиакатастрофы называют ошибку пилота.

Ситуация не единичная. Согласно статистике базы данных PlaneCrashInfo.com за период с 1950 по 2009 год, к аварии в 22 процентах случаев приводили проблемы с техникой, в 11 процентах — погодные условия, а всё остальное приходилось на человеческие ошибки, как пилотов, так и авиадиспетчеров.

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

Механический пилот

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

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

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


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

Робот-пилот

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

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

анализ обстановки;

cбор информации;

выделение вариантов: заход на посадку или уход на запасной аэродром;

взвешивание вариантов — нужно было предвидеть действия всех ведомых самолётов;

выбор варианта и решение о наиболее соответствующем действии;

подачу команды экипажу и ведомым бортам;

выдерживание режима полёта в сложных метеоусловиях;

работу с группой ведомых самолётов;

работу с руководителем полётов;

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

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

Вовремя остановиться

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

Проблема кроется прежде всего в отказоустойчивости. Если мы можем многократным дублированием добиться максимальной наработки аппаратной платформы на отказ, то создаваемое программное обеспечение, несмотря на наличие как западных (RTCA/DO-178B/ED-12), так и российских стандартов безопасности разработки (КТ 178В) всё равно не гарантирует 100 процентов работоспособности программного комплекса в полёте. Примером может служить трагическое происшествие с Airbus A310 в Иркутске в 2006 году. Тогда следственным комитетом при прокуратуре РФ в числе причин катастрофы пассажирского лайнера в ходе расследования были упомянуты ошибки в разработке логики бортового компьютера, а также непредвиденная реакция программного обеспечения самолёта на возникшую при посадке ситуацию. Такие инциденты обладают достаточным весом для того, чтобы пресечь все рассуждения о возможности тотальной автоматизации полёта авиационной техники.

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


Кривая А показывает уровень физической нагрузки на лётчика, кривая В — психологической. Ось ОХ показывает сложность автоматизированной системы управления самолётом. Линия С показывает суммарную нагрузку на пилота и демонстрирует, что существует оптимальный уровень автоматизации полёта, который позволяет максимально облегчить процесс пилотирования. Во время авиарейса лётчик: 1) воспринимает окружающую информацию; 2) принимает решения; 3) приводит их в исполнение. Работы психологов помогли выяснить, что в отсутствие двух из трёх процедур снижается возможность пилота быстро адаптироваться к изменению ситуации. А с учётом использования автопилота большинство времени лётчик просто смотрит на индикаторы информационных систем...

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

- Посвящается ХК «Локомотив»-Ярославль


К оглавлению

Загрузка...