Автопилот – устройство или программно-аппаратный комплекс, ведущий транспортное средство по определённой, заданной ему траектории.
Термины контроллер полета или автопилот часто используются взаимозаменяемо для описания бортового устройства, контролирующего поведение робота, дрона, вертолета, квадрокоптера. Перечисленные устройства, как правило, поставляются со встроенным микроконтроллером, процессором, памятью, SD картой, некоторыми встроенными датчиками и различными портами ввода-вывода в коробке небольшого размера.
Контроллер принимает входные сигналы от различных внутренних и внешних датчиков и сигналов управления выводом на приводы – электродвигатели и сервоприводы, которые могут связываться с ПК, планшетом, телефоном через внутренние или внешние устройства связи, такие как WiFi, Bluetooth, ZigBee или последовательное радио, что позволяет проверять бортовую телеметрию – высоту, уровень заряда батареи и т. д., и отправлять команды на сам БПЛА.
Возможности БПЛА сильно различаются. Более простые могут быть оснащены просто стабилизирующим устройством, использующим акселерометр и магнитометр (компас). Более дорогие могут выполнять полностью автономные миссии, используя расширенное самопозиционирование и картографирование окружающей среды с использованием GPS, сонара, LiDAR, компьютерного зрения и т. д., а также общаться с другими аппаратами или дронами и координировать движения друг с другом.
Существует два типа контроллеров полетов: на базе микроконтроллеров или с использованием одноплатных компьютеров (single board computer, SBC) с установленной операционной системой, как правило Linux, их пример показан на рисунке 1.
На сегодняшний день, использование микроконтроллера в качестве основы для летного контроллера (ЛК), становится обычным явлением. В этой конфигурации ЛК выполняет только основные функции управления полетом, в то время как Linux SBC обрабатывает более тяжелые нагрузки, такие как графическая навигация.
В качестве примера Linux SBC можно привести широко распространенный Raspberry Pi, ныне представленный третьей версией и своим миниатюрным вариантом (Zero). В качестве примера микроконтроллерной платформы можно привести ещё более широко распространённые платы под торговой маркой Arduino.
Первое на что стоит обратить внимание – это то, что Raspberry Pi представляет собой полнофункциональный компьютер, в то время как Arduino назвать компьютером очень сложно.
Raspberry Pi родом из Великобритании. Изобретатель Эбен Аптон и его коллеги из компьютерной лаборатории Кембриджского университета создавали Raspberry Pi как дешёвый компьютер для образовательных целей. Аптон работал на прототипах с 2006 года, первая партия Raspberry Pi поступила в продажу только в апреле 2012 года. Недавно вышла новая версия Raspberry Pi 3 – Model B+.
Arduino родился в Италии. Массимо Банци, преподаватель проектного института Ивреи, хотел простой и дешевый аппаратный прототип для студентов. В марте этого году платформа Arduino отметила 10 лет. Существует несколько модификаций платы (Arduino Uno, Nano, Mega и др.). Кроме того в силу открытости платформы производится множество практически идентичных аналогов Arduino (DCcduino, FreDuino, XDRuino и др.).
По тактовой частоте Raspberry Pi в 40 раз быстрее, чем Arduino. Еще большее различие в оперативной памяти: Raspberry Pi имеет в 128 000 раз больше оперативной памяти чем Arduino. Только не спешите делать выводы по этим двум сильно отличающимся характеристикам [30].
Raspberry Pi является компьютером, на котором может быть запущена операционная система Linux, поддерживающая многозадачность. К USB портам можно подключать различные устройства, например для беспроводного подключения к сети Интернет. В общем, эта крошечная плата является достаточно мощной и может функционировать в качестве полноценного компьютера (хотя, конечно с современными персональными компьютерами и ноутбуками конкурировать по мощности Raspberry Pi не может).
Может показаться, что Raspberry Pi превосходит Arduino. Но это превосходство скорее в программном обеспечении. Для чисто аппаратных проектов намного лучше подходит Arduino. Такое преимущество Arduino имеет за счёт своей простоты.
Arduino лучше считывать аналоговые сигналы в реальном времени. Эта гибкость позволяет Arduino работать практически с любым видом датчиков или чипов. Raspberry Pi не такая гибкая, например, для чтения аналоговых датчиков требуются дополнительные аппаратные средства.
Arduino менее требовательна к питанию. Так, рекомендуемое питание для Arduino UNO, от 7 до 12 Вольт, напряжение стабилизируется до 5 Вольт. А плата Raspberry Pi требует строго 5 Вольт на входе, поэтому для работы с ней не обойтись без фильтра питания с током 1A.
Arduino IDE значительно проще в использовании, чем Linux. Например, если вы хотите написать программу для мигания светодиодом с Raspberry Pi, вы должны установить операционную систему и некоторые библиотеки кода, и это только начало. На Arduino вы можете запрограммировать мигание светодиодом, используя всего восемь строк кода.
Поскольку Arduino не предназначен для запуска операционной системы или множества приложений, вы можете просто подключить плату и начать работу.
Raspberry Pi позволяет использовать преимущества многозадачности, несколько программ в фоновом режиме могут работать одновременно. Например, Raspberry Pi, может работать и как сервер печати, и как сервер VPN одновременно.
С другой стороны, вы можете оставить Arduino, выполняющую какой-либо процесс подключенной в течение длительного времени, и просто отключить плату потом, когда вы решили. В этом плане Arduino проще, ее сложнее повредить.
Arduino работает с любым компьютером и может работать от батареи. Arduino можно включить и благополучно выключить в любое время. Операционная система на Raspberry Pi может быть повреждена, если отключить плату без надлежащего завершения работы.
Таким образом, в то время как Raspberry Pi имеет колоссальное преимущество в возможностях программного обеспечения, Arduino имеет преимущество в простоте реализации аппаратных проектов. Целесообразность использования Raspberry Pi или Arduino зависит от проекта.
Raspberry Pi и Arduino дополняют друг друга. Они отлично работают вместе. Arduino лучше для управления двигателями, приема сигнала с датчика, управления светодиодами и т.д. А подключенный к интернету Raspberry Pi, представляющий собой мини компьютер, может не только играть видео, музыку или отправлять письма, но и выполнять сложные алгоритмы.
Самый простой способ научить Raspberry Pi общаться с Arduino – это использовать библиотеки Python и PySerial. Их содействие показано на рисунке 2.
Совместное использование плат Arduino и Raspberry Pi даёт безграничные возможности: Arduino целесообразно поручить управлять датчиками, а Raspberry Pi может выполнять сложные вычислительные операции, таким образом, можно создавать роботов более способных, чем построенных только на Arduino или Raspberry Pi.
Что касается рекомендованных производителями цен на полетные контроллеры, то они почти одинаковы, но если покупать в китайских интернет магазинах, то Arduino стоит дешевле. Например, Arduino UNO в Aliexpress можно купить за 3$, Raspberry Pi за $35.