NICO RAMOS

Aerospace · Controls · Research · Process optimization · Summer 2024 · Research

Autonomous Celestial Navigation for sUAS

A daytime celestial navigation algorithm for small drones that don't have GPS, built on cheap hardware.

A small hexacopter of the kind this navigation approach is meant for
A small hexacopter of the kind this navigation approach is meant for

Overview

Small Uncrewed Aircraft Systems (sUAS) are aircraft that weigh less than 55 lbs and are used in agriculture, disaster response, logistics, climate research and wildlife monitoring, among many other things. Reliable, consistent navigation matters a lot for them.

Today the state of the art in navigation is GNSS, thanks to its wide availability and high accuracy. But GNSS is vulnerable to jamming, multipath effects and other weaknesses that come from relying on a satellite network, which has created real demand for autonomous navigation systems for sUAS.

Celestial navigation systems (CNS) are of particular interest because they work autonomously even when there are no terrain features. CNS fused with dead-reckoning inertial navigation (INS) has shown real promise for low-cost autonomous navigation.

This project looked at the feasibility of CNS/INS in sUAS given reasonable size, weight, power, cost, cooling and compatibility (SWaP-C3) constraints. It began with a literature survey of the state of the art, and then I worked to characterize an improved system that could reasonably be designed and manufactured in house.

Background and problem space

Celestial navigation has been used for centuries at sea. The process builds two Lines of Position (LOPs), where each line is all the points on Earth where an observer would measure the same angle to a celestial body, such as the azimuth or zenith of a star. Azimuth is the compass direction you face to see the object; zenith is the angle between the object and the point straight above you, so 0° means directly overhead and 90° means on the horizon.

Normally the LOP is built from the zenith angle, which makes it a circle around the object's Geographic Position, the point on Earth directly below it. With at least two LOPs you get two intersections, and they're usually far enough apart that you can pick the right one.

Two lines of position and where they cross
Two lines of position and where they cross
Simulated matching locations on a world map
Simulated matching locations on a world map

Celestial navigation is tricky for sUAS because they fly low, where atmospheric effects limit star visibility at night and nearly eliminate it during the day. So daytime solutions lean on the sun, and a single sun measurement only gives one LOP. My solution, written in MATLAB, uses two measurements of the sun instead of one: its zenith and its azimuth.

The hardware to support that can be cheap and easy to build: a hemispherical array of nine twenty-dollar CCD cameras and a two-hundred-dollar attitude heading reference system (AHRS), plus a mid-tier IMU at around two hundred dollars.

Improved algorithm

The program starts with a simulation module, where a set of positions over time are predefined and the solar azimuth and zenith values that would be measured at those positions are simulated. IMU data is simulated at the same time with a predefined MATLAB package.

The geolocation module that follows has a general outline similar to the reference paper (Liu et al., 2016), with one major difference coming from the simulated IMU data. The dead-reckoning IMU solution gives an initial guess of the sUAS's current location. A grid of coordinates is built around that guess with a preset latitude and longitude range and number of grid points. The theoretical solar azimuth and zenith at each point are calculated and compared with the "measured" values within a tolerance. The grid is cut down to only the points that pass, and the process repeats with the tolerance shrinking each time, until it reaches a target tolerance, ideally one set by instrumentation error.

The camera rig used for celestial imaging
The camera rig used for celestial imaging
Navigation solution with azimuth- and zenith-matching locations, mean estimate and covariance ellipse
Navigation solution with azimuth- and zenith-matching locations, mean estimate and covariance ellipse

This avoids the computational burden of brute-force calculating the azimuth and zenith for every point on a high-resolution grid of the Earth. It takes a-priori IMU data to inform the next estimate and iterates to reach a satisfactory tolerance and grid size.

The program also models that each point on this grid of satisfactory locations is not equally probable, which turns out to be crucial. By modeling instrument error as a Gaussian and propagating those probabilities to the grid locations, I found that the solution can be fit to a 2D Gaussian, giving a solution in the form of a mean location and a stochastic covariance ellipse. That's a navigation solution that can be passed into state estimation filters, which would make the overall solution even more robust, and good enough for sUAS control algorithms.

Probability distribution over a grid of locations centered on Huntsville, AL
Probability distribution over a grid of locations centered on Huntsville, AL

Future developments

I got a navigation solution at about 5 Hz, up from 0.05 Hz, and I think there are steps that could improve it even more.

IMU-simulated trajectory drift against the true trajectory
IMU-simulated trajectory drift against the true trajectory

Results and significance

A promising, reliable daytime celestial navigation algorithm built on a low-cost hardware setup. It shows potential for further improvement through Kalman filtering and is designed with that next step in mind. Simulation demonstrates the feasibility of autonomous celestial navigation in sUAS.

Skills used