NASA used Linux and open source software in Ingenuity

Representatives of the NASA space agency in an interview with Spectrum IEEE revealed details about the stuffing of the autonomous reconnaissance helicopter Ingenuity , which successfully landed on Mars as part of the mission yesterday Mars 2020 . A special feature of the project was the use of a control board based on SoC Snapdragon 801 from Qualcomm, which is used in the production of smartphones.

This decision is due to the fact that to control a flying drone requires much more computing power than to control a rover, which is equipped with specially made chips with additional protection against radiation. A typical Snapdragon 801 processor was used due to the availability of sufficient power to analyze the state of the atmosphere when flying at a frequency of 500 measurements per second and image analysis at 30 frames per second.

The drone also uses a laser altimeter from SparkFun Electronics, an open source hardware company and one of the creators of the definition of open source hardware (OSHW). Other typical components include a typical smartphone gyro stabilizer (IMU) and a VGA camera for tracking location, direction and speed through frame-by-frame comparison. A separate 13-megapixel color camera is used to create images of the terrain.

Ingenuity software is based on the Linux kernel and open-source flight software. It is noted that this is the first use of Linux in spacecraft sent to Mars. Moreover, the use of open source software and commercially available hardware components allows interested enthusiasts to build similar drones on their own.

The flight control software components were developed in the NASA JPL laboratory ( Jet Propulsion Laboratory ) for small and ultra-small artificial Earth satellites ( cubsats ) and already a few years have been developed as part of the open platform F Prime (F´), distributed under the Apache 2.0 license.

F Prime provides a tool for rapid development of flight control systems and related embedded applications. The flight software is divided into individual components with well-defined programming interfaces. In addition to specialized components, a C ++ framework is offered with the implementation of such features as message queuing and multithreading, as well as modeling tools that allow you to link components and automatically generate code.



/Media reports.