На каком ПО летают на Марсе?
18 февраля состоялось историческое событие, НАСА успешно посадила ровер Perseverance (в переводе на русский — “Настойчивость”) на Марс. Казалось бы, ничего необычного? НАСА проделывала это уже не раз в поиске ответа на вечный вопрос: есть ли жизнь на Марсе?
Но в этот раз вместе с ровером на красную планету приземлился вертолет Ingenuity (“Находчивость”). В первый раз такая машина поднимется в воздух на другой планете. Единственная цель полета — продемонстрировать саму его возможность, никакой другой научной задачи он не несет.
Ingenuity
Полет произойдет уже скоро весной 2021 года. Посмотреть прямую трансляцию запуска можно будет на канале НАСА. Расписание трансляций можно посмотреть здесь. Скорее всего полноценное видео самого полета мы увидим гораздо позже из-за узкого канала передачи данных.
Не все уверены в успехе полета. Например писатель-фантаст Сергей Лукьяненко сомневается, что на Марсе в принципе можно летать, используя подъемную силу крыла. Дело в том, что на этой планете чрезвычайно разреженная атмосфера, но с другой стороны и сила тяжести намного меньше, чем на Земле. Но обо всем по порядку.
Mars Helicopter Ingenuity
Mars Helicopter
Железо
Корпус вертолета размером с коробку с салфетками держится на четырех тонких ножках. Над корпусом возвышаются пара лопастей длиной 1,2 м из углеродного волокна. Солнечная панель, установленная на роторе, подзаряжает аккумулятор вертолета между полетами. Он весит всего 1,8 кг и, если все пойдет по плану, станет первым воздушным аппаратом, который полетит на Марсе.
Ingenuity предстоит преодолеть множество трудностей: низкие температуры, разреженная атмосфера, задержка связи с Землей в десятки минут. Последнее означает, что ни о каком управление в реальном времени не может идти и речи.
Благодаря демонстрационной задаче сотрудники лаборатории реактивного движения (Jet Propulsion Laboratory, JPL) смогли применить нестандартные для НАСА решения. Речь идет о коммерческих деталях и опенсорсном ПО. Например, в Ingenuity использовали процессор Snapdragon 801 производства Qualcomm. По иронии судьбы, поскольку это относительно современная технология, она намного мощнее процессоров, установленных на марсоходе. Эта дополнительная мощность действительно нужна для автономного полета в марсианской атмосфере. Контуры управления работают с частотой 500 Гц, чтобы контролировать полет в атмосфере, а снимки анализируются и отслеживаются их особенности от кадра к кадру с частотой 30 Гц.
Для роторной системы используется автомобильный микроконтроллер Texas Instruments. Помимо самого вертолета, система полета включает в себя базовую станцию, установленную на марсоходе, для управления связью с вертолетом. Базовая станция и вертолет используют один и тот же процессор Qualcomm, что позволяет им использовать общую авионику и программное обеспечение. Вертолет несет коммерческое радио ZigBee для связи с базовой станцией.
Еще из коммерческих деталей: гиростабилизатор для мобильных телефонов (IMU), лазерный высотомер (от SparkFun), направленная вниз VGA-камера для навигации и 13-мегапиксельная цветная камера для красивых снимков — такая же, как в смартфонах.
Полет будет проходить по заранее определенному маршруту на основе отмеченных координат, то есть он не будет автономным на 100%, и “мозгу” вертолета не придется принимать высокоуровневые решения.
Софт
Впервые в атмосферу Марса запустят не только вертолет, но и бесплатную операционную систему с открытым исходным кодом. Это не первый раз, когда НАСA использует Linux, для которой в JPL разработали целый фреймворк для мини-спутников формата кубсат под названием F` (F Prime). Это бесплатный фреймворк на C++ и Python с открытым исходным кодом, созданный для маломасштабных систем. Исходный код открыт и доступен на Github. То есть энтузиасты смогут воспользоваться свободным ПО, на котором летает марсианский вертолет, и даже попытаться собрать аналог сами, ведь многие детали находятся в свободной продаже.
В чем преимущества фреймворка
Не нужно каждый раз писать новый полетный софт для каждой миссии. F` адаптирован для небольших миссий, прост в использовании и поддерживает широкий круг задач. Кроме того, он уже содержит стандартную библиотеку летных компонентов, инструменты для проектирования систем и автоматической генерации кода из системного дизайна.
Это самодостаточная экосистема, которая включает инструменты моделирования, тестирования и поддержку наземной системы контроля. F` работает на широком спектре процессоров, начиная с микроконтроллеров и заканчивая многоядерными компьютерами. Поддерживает Linux и Mac OS X. Перенос F` на новую операционную систему в случае необходимости тоже прост.
Архитектура F`
Архитектура F` основана на следующих концепциях: компоненты, порты и топологии.
Компоненты
Каждое приложение F` состоит из компонентов. Компонент — это класс в объектно-ориентированном языке: он определяет набор данных и операций по данным. Компоненты выполняют программную логику системы и обычно содержат интерфейсы портов, которые позволяют им взаимодействовать с другими компонентами. Компоненты дополнительно могут определять команды, события, каналы и параметры, которые определяют стандартные шаблоны данных в F´.
Порты
Порт: порт представляет собой соединение между Компонентами. Они действуют как каналы связи в F´. Это позволяет компонентам взаимодействовать друг с другом. Набор портов действует как определенный интерфейс для компонента.
Топологии и развертывания
Топология: топология представляет собой полную систему F´. Это набор компонентов и связей между этими компонентами. Топология определяет всю систему и все каналы связи.
Развертывание — это единственный экземпляр F´. Хотя один проект F´ может предполагать несколько развертываний, развертывание представляет собой одну сборку, один исполняемый файл. Модульность архитектуры F` позволила существенно разделить код во всех поколениях вертолета, на этапе его создания, и между вертолетом и базовой станцией.
Когда приложение F` запускается, оно создает экземпляры используемых компонентов. Это действие аналогично созданию экземпляров класса в программах на C++. В экземплярах компонентов выполняются локальные вычисления и передаются данные через вызовы от одного экземпляра компонента к другому.
Кроме того в числе основополагающих терминов устройства F` есть каналы, команды, события и т.д. Полный гайд по установке и использованию фреймворка можно найти на сайте НАСА https://nasa.github.io/fprime/
Где еще используют F`
RapidScat
RapidScat на МКС
RapidScat был прибором, установленным на модуле Columbus Международной космической станции, который измерял скорость ветра в атмосфере планеты в 2014-2016 годах.
Lunar Flashlight (старт — ноябрь 2021 года)
Lunar Flashlight сканирует лунные кратеры
Бюджетный спутник Луны формата кубсат, который будет искать на поверхности залежи воды. Эту воду планируется использовать в последующих миссиях, в том числе пилотируемых.
NEA Scout Cubesats (старт — ноябрь 2021 года)
Near-Earth Asteroid Scout возле астероида
Near-Earth Asteroid Scout — это планируемая миссия НАСА по обнаружению околоземных астероидов с помощью недорогого управляемого космического аппарата в формате кубсат на солнечном парусе.
—
Важность и ценность миссии Ingenuity — показать, что полет на Марс возможен, и собрать данные, которые позволят следующему поколению марсианских винтокрылых аппаратов делать более амбициозные и захватывающие вещи.
Список использованных материалов:
https://trs.jpl.nasa.gov/bitstream/handle/2014/48425/CL%2318-2993.pdf?sequence=1&isAllowed=y
https://mars.nasa.gov/mars2020/mission/overview/
https://nasa.github.io/fprime/Tutorials/GettingStarted/Tutorial.html
https://mars.nasa.gov/technology/helicopter/
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: