Представители на НАСА разкриха подробности за технологиите в безпилотния апарат Ingenuity, който кацна успешно на Марс тази седмица, като част от мисията Марс 2020. Особености на апарата са контролната платка на база SoC Snapdragon 801 от Qualcomm, която се използва в смартфоните, както и софтуерът с отворен код.
За управление на изследователския дрон е необходима много повече изчислителна мощ, отколкото за марсоход, който е оборудван със специално изработени чипове с допълнителна защита срещу радиация, поясниха от НАСА в интервю за Spectrum IEEE. Решението стъпва на типичен процесор Snapdragon 801, който има достатъчна изчислителна мощ за анализ на състоянието на атмосферата с честота 500 измервания в секунда по време на полет, както и за анализ на изображения с честота 30 кадъра в секунда.
Ingenuity използва също така лазерен висотомер от компанията SparkFun Electronics, която е един от създателите на дефиницията за хардуер с отворен код (OSHW). Дронът е оборудван и с други типични компоненти, какъвто е жиростабилизаторът (IMU), познат от смартфоните и видеокамерите.
Една VGA камера се използва за проследяване на местоположение, посока и скорост чрез сравнение по кадри. Втора 13-мегапикселова цветна камера се използва за създаване на изображения на района.
Програмното обезпечение на Ingenuity се базира на Linux ядрото и софтуер за полети с отворен код. Отбелязва се, че това е първото приложение на Linux в космически кораби, изпратени на Марс. Освен това използването на софтуер с отворен код и налични в търговската мрежа хардуерни елементи дава възможност на заинтересованите ентусиасти да сглобяват подобни дронове сами.
Софтуерните компоненти за управление на полета са създадени в NASA JPL (Jet Propulsion Laboratory) за малки и свръхмалки изкуствени земни спътници (кубсати). Те се разработват от няколко години като част от отворената платформа F Prime (F´), разпространявана под лиценз Apache 2.0.
F Prime предоставя инструменти за бърза разработка на системи за управление на полета и свързаните с тях вградени приложения. Софтуерът за полети е разделен на отделни компоненти с добре дефинирани програмни интерфейси.
В допълнение към специализираните компоненти, платформата включва и C++ рамка с функции като опашки за съобщения и многопоточност, както и инструменти за моделиране, които позволяват свързване на компоненти и автоматично генериране на код.