0.  Intro

Navigation technology is an essential ability for the survival, development, and organisation of both animals and humans. Aweigh combines a biomimetic hardware mechanism with an algorithm inspired by obsolete technologies to calculate the latitude and longitude of the user. This technology is currently being developed and performance tested as a novel insect-inspired optical compass sensor for applications, such as a hexapod walking robot.


Doi: 10.1038/srep09725

Doi: 10.1016/S0921-8890(99)00064-0

DOI: 10.1109/IROS.2017.8206183



1.  Working principle


a.  Rayleigh scattering model

Aweigh begins by placing its user within the Rayleigh scattering model, which is an approximation of the sky that takes into account the interactions between light and matter. It explains the optical phenomenon that causes the sky to appear blue. Researchers much smarter than ourselves have come up with a mathematical model, which is described by the scary looking relationships below:


These relationships enable us to take into account the polarization pattern of skylight, caused by the scattering phenomenon within the Earth’s atmosphere. The scattering interactions with atmospheric constituents induce a partially linear polarization of skylight, which means that the direction of the linear polarization of skylight at the zenith point is always perpendicular to the solar meridian. The figure below shows how patterns of polarisation change for a viewer at position O.


The other significant property in the Rayleigh scattering light model is that the degree of polarization is related to the scattering angle. In other words, the scattering angle increases from 0 degrees to 90 degrees and will decrease when the scattering angle increases from 90 degrees to 180 degrees. In the figure below, the angle of polarization for an arbitrary scattered beam of light was defined.


This means that if we can somehow measure the angle of polarization of sunlight from a viewer’s position, we can understand the general pattern of light scattering in the sky. The goal is to determine the position of the sun, which will then enable us to calculate latitude and longitude.


b.  Celestial sphere approximation

In astronomy and celestial navigation, the relationship between the observer’s position and solar angles are given by a number of different variables, each relating to celestial bodies and changing over time. If you go online, you’ll be able to find an entire range of different relationships and values, which have been used in the past for different applications.

Aweigh’s algorithm is interested in two specific variables that describe the user’s position relative to the sun:

h = solar altitude

Φ = solar azimuth

The solar altitude is the angle of the sun relative to the Earth’s horizon. This angle varies based on the time, the day, and it related to the latitude of the viewer. The solar azimuth angle is the horizontal angle that defines the sun’s relative direction along the local horizon. These two values are calculated from readings taken by the polarization sensors and allow Aweigh to calculate the “coordinates” of the Sun. Once you are able to locate the exact position of the sun, you can also locate yourself by using trigonometric relations within the celestial sphere approximation.


3.  Calculations Explained


The following explanation describes each step of Aweigh’s technology, which combines principles from the Rayleigh scattering model and the celestial sphere approximation.

Aweigh first takes readings from a hardware system composed of a pair of polarized light sensors, followed by log-ratio amplifiers. Each polarization sensor models the configuration of desert-ant eyes: if a continuous amount of data points are taken, a three-dimensional representation of the polarization pattern of the sky would appear. The log-ratio amplifiers allow light measurements from the sky to be normalised and enable us to perform a comparison of polarised light values at different angles.

The output of the polarization sensors is described by the following equation:



Equations (2) assume a difference of 60 degrees between the two sensor configurations. We need to now solve for the two values p1 and p2 by using an inverse logarithm and a trigonometric function operation.

First, we apply a sigmoid function:


This means that our equations for p1 and p2 have now become:


Then, we want to eliminate the influence of the polarization degree by presenting a new transform:


Once we simplify these relationships, we obtain:


This results in a new way of characterizing p1 and p2, now defined as s1 and s2:


These relationships show that we can calculate the polarization degree of each sensor from the values read directly. Next, we solve for a variable, which we will call c for simplification, by performing the following set of simultaneous equations:


The variable c corresponds to the polarization angle of the user’s current position. The algorithm needs this value to determine the solar azimuth:


The polarisation reading s1 and s2 are required to calculate the solar altitude described by:

Once we have calculated the current solar azimuth and the solar altitude, a few other variables are needed to determine latitude and longitude: day, time, hour angle, and declination.

The hour angle can be found by using the results of the previous calculations:

The current declination can be found by using values taken from the RTC clock:


When the clock is initialized, it should be set to GMT.

Finally, to output latitude and longitude, the following relationships are used. E, the difference between the true solar hour and the mean solar hour was ignored in the current implementation of our algorithm.


The algorithm’s output gives: (LATITUDE, LONGITUDE).

The user can then input a destination. In order to find the direction of the true north, the user will also need to input their current city. This will allow Aweigh to define the magnetic declination and finally trace a vector between the user’s current position and their desired destination.