# A Novel Angle Computation and Calibration Algorithm of Bio-Inspired Sky-Light Polarization Navigation Sensor

^{*}

Next Article in Journal

Next Article in Special Issue

Next Article in Special Issue

Previous Article in Journal

Previous Article in Special Issue

Previous Article in Special Issue

College of Mechantronics and Automation, National University of Defense Technology, Changsha 410073, Hunan, China

Author to whom correspondence should be addressed.

Received: 27 June 2014 / Revised: 27 August 2014 / Accepted: 10 September 2014 / Published: 15 September 2014

(This article belongs to the Special Issue Sensor Innovations for Spacecraft Guidance, Navigation, and Control)

Navigation plays a vital role in our daily life. As traditional and commonly used navigation technologies, Inertial Navigation System (INS) and Global Navigation Satellite System (GNSS) can provide accurate location information, but suffer from the accumulative error of inertial sensors and cannot be used in a satellite denied environment. The remarkable navigation ability of animals shows that the pattern of the polarization sky can be used for navigation. A bio-inspired POLarization Navigation Sensor (POLNS) is constructed to detect the polarization of skylight. Contrary to the previous approach, we utilize all the outputs of POLNS to compute input polarization angle, based on Least Squares, which provides optimal angle estimation. In addition, a new sensor calibration algorithm is presented, in which the installation angle errors and sensor biases are taken into consideration. Derivation and implementation of our calibration algorithm are discussed in detail. To evaluate the performance of our algorithms, simulation and real data test are done to compare our algorithms with several exiting algorithms. Comparison results indicate that our algorithms are superior to the others and are more feasible and effective in practice.

It is vital to know the position, velocity and attitude of an agent in many applications. Inertial Navigation System (INS) and Global Navigation Satellite System (GNSS) are conventional navigation technologies and have been widely used in many fields. INS is able to provide navigation information at a high frequency without receiving external signal, but the precision of INS decreases with time due to the accumulation of inertial sensor biases and noise [1,2]. On the contrary, GNSS can provide accurate location and velocity with bounded errors at a low frequency; however, GNSS cannot be used when the GNSS signal is unreachable or disturbed. Furthermore, the high precision INS and GNSS receivers are always bulky and expensive so they are not suitable for certain applications. What we expected is a new system, able to overcome the shortcomings of conventional navigation systems.

The remarkable navigational abilities of many animals have provided an excellent reference for us. It has been proved that the small brains of insect and animal are able to produce exquisitely efficient, robust navigation in complex environments [3,4]. The desert ants Cataglyphis, for example, are social insects (like all ants), but forage by themselves, and are able to find their way home unfailingly, in a straight line, after foraging hundreds of meters away from their nest [5]. It has been shown that Cataglyhpis get their compass direction mainly from the polarization of the blue sky [6]. Some fly insects, such as bees [7], butterfly, and dragonfly [8], are also able to utilize polarized skylight in their navigation activities. Billions of birds migrate between continents twice each year and return to the same breeding sites year after year with voyages of up to 25,000 km [9]. It is suggested that those migratory birds use skylight polarization patterns to derive an absolute directional system, which is used for calibrating all of their other compasses [10]. The polarization skylight is a natural resource of the Earth, which is caused by the scattering of sunlight in the Earth's atmosphere and is partially linearly polarized [11]. Ideas derived from the studies of insect and animal navigation behaviors have shown that the polarization of skylight can be used as a compass in navigational tasks.

According to the mechanism of processing of polarized-light in the insect, the ommatidia in the compound eyes, and the polarization-sensitive neurons (POL-neurons), are the key organs [12,13]. In each ommatidium, there are two sets of polarization-sensitive photoreceptors, which are tuned to orthogonal e-vectors (the directions of polarization). The POL-neurons receive antagonistic input from two polarization-sensitive channels with orthogonal orientations (Figure 1). This is a crossed-analyzed configuration, which enhances the polarized-light contrast sensitivity and reduces the influence of the fluctuations of light intensity. In addition, it is reported that there are three types of cricket POL-neurons which are sensitive to different e-vector directions, i.e., approximately 10 deg, 60 deg, and 130 deg with respect to the body axis [14].

In order to mimic the principle of animals, researchers have done a great deal of work. Lambrinos [11,13] presented an original polarization compass model and method for extracting compass information. Chu [15–17] also constructed a POLarization Navigation Sensor (POLNS) and analyzed the sensor error with numeric simulations. A novel algorithm of the direction angle calculation was presented in [18]. In order to measure polarization information with an image array, studies on the division-of-focal-plane polarimeter have been presented in [19–21]. Furthermore, Karman [8] gave a review of bio-inspired, polarized skylight-based navigation sensors.

Studies on the POLNS mainly concentrate on the mechanical construction, the angle computation algorithm, and the sensor calibration. As for the mechanical construction of the POLNS, they have similar designs, inspired by nervous systems of insects, and ours is no exception. There are three channels, called POLarization-Opponent (POL-OP) units, in a POLNS. In terms of the angle computation algorithm, recent studies show different approaches. Lambrinos [13] and Chu [15–17] only use two of the three POL-OP units for angle computation. A transform has been utilized in [18] for angle calculation, which uses different pairs of the three POL-OP units, along with the different input polarization angles. In those angle computation algorithms, constant or selective, only two of the three POL-OP units are used, the other one is left useless, which is an unwise choice.

With regards to the sensor calibration algorithms, they have barely been reported. Zhao [22] presented an error compensation algorithms, based on LS-SVM (Least Square Support Vector Machine [23,24]). However, the main shortage of this algorithm is that it only does output angle error compensation according to the input polarization angle, which does not take the real error sources (e.g., the installation angle error and voltage bias) into consideration.

In this paper, we focus on the angle computation algorithm and the sensor calibration of a POLNS. We present a Least Squares based calculation algorithm by employing the outputs of all the POL-OP units, which can also be used for arbitrary installation angle assignment and easily expanded to multiple POL-OP unit design. As for the sensor calibration, a new approach is presented which is able to estimate the installation angles and the biases of the voltage output. Numeric simulation and real data test have been done to evaluate the performance of our angle computation and sensor calibration algorithms. Results comparison shows that, both angle computation and calibration algorithms presented in this paper have higher precision and more robustness than those of the existing algorithms.

The remainder of this paper is organized as follows: the sensor system model and the novel angle computation algorithm are detail in Section 2, followed by our calibration algorithm in Section 3. Numeric simulation and real data test are presented in Sections 4 and 5, respectively. Finally, the conclusions of this paper are given in Section 6.

Our sensor consists of the mechanical construction part and the circuit part. As shown in Figure 2b, there are three POL-OP units, with each POL-OP unit consisting of one pair of wire grid polarizers and one pair of photodiodes. The polarization directions of three POL-OP units are arranged in different angles. If they are ideally arranged, as shown in Figure 2c, they are adjusted by 0 degree, 60 degree, and 120 degree to the reference body axis. As for the two polarizers in a POL-OP unit, the polarization direction of one polarizer was adjusted by 90 degree to that of the other one, which mimics the crossed-analyzer configuration in the POL-area of insect eyes [13]. In reality, the actual installation angle may be different from what we want because of the mechanization processing error and the polarizer installation error. To deal with this problem, a novel angle computation algorithm is presented later in this paper.

Regarding the circuit of the sensor, the signal flowchart is shown in Figure 3. The photodiodes, S1087 [25], allows reliable optical measurements in the visible to near infrared range with a wide dynamic range from a low-light level to a high-light level. In order to deal with the wide range of the current coming from the photodiode, log ratio amplifiers (LOG104, [26]) are utilized, which is also a bio-inspired design [13]. Once the current is converted into voltage, a high resolution Analog Digital Converter (ADC, AD7734, [27]) is employed to transfer the analog signal to digital sequences. The digital sequences are preprocessed in an MCU (Micro Control Unit); and the data are sent to a computer through the serial communication interface of the RS485.

The output current of photodiode is linear to the light level, which can be modeled as [13,18]:

$${s}_{i,j}(\varphi )=KI(1+dcos(2\varphi -2{\alpha}_{i,j})),$$

$${V}_{i}\left(d,\varphi \right)=\frac{1}{2}log\left(\frac{1+dcos\left(2\left(\varphi -{\alpha}_{i,1}\right)\right)}{1+dcos\left(2\left(\varphi -{\alpha}_{i,2}\right)\right)}\right),i=1,2,3$$

The maximum polarization angle of each polarizer α_{i,j} is determined by the mechanical setup, thus, it is also called installation angle. If the polarizers are ideally fixed, as shown in Figure 2c, then we have:

$${\alpha}_{i,j}=\frac{\pi}{3}\left(i-1\right)+\frac{\pi}{2}\left(j-1\right)\phantom{\rule{1.0em}{0ex}}i=1,2,3;j=1,2$$

The output of each POL-OP unit is the function of the input polarization angle ϕ and polarization degree d. The aim of the sensor is to compute those two parameters by using the outputs of POLNS outputs, which is the progress of angle computation. According to Equation (2), it is easy to know that there are two unknown parameters and three known equations. Theoretically, the two parameters can be computed by arbitrarily using two of the three equations. In reality, this idea has been used by researchers Lambrinos [13] and Zhao [18]. The difference between them is the choice of the two equations. Lamrinos used a constant two equations, while Zhao used two equations selectively according to the input polarization angle. These algorithms are feasible and can provide accurate angle estimation based on the assumption that the installation angles are known precisely and the measurement noise can be ignored. In practice, the assumption is difficult to be realized.

Contrary to the previous algorithms, a new angle computation algorithm is presented for the sake of reducing the influence of the installation angle error and measurement noise, and giving the optimal angle estimation.

We present a transform to Equation (2) as follows:

$${a}_{i1}dcos\left(2\varphi \right)+{a}_{i2}dsin\left(2\varphi \right)={y}_{i},$$

$$\begin{array}{l}{a}_{i1}={10}^{2{V}_{i}}cos\left(2{\alpha}_{i,2}\right)-cos\left(2{\alpha}_{i,1}\right)\hfill \\ {a}_{i2}={10}^{2{V}_{i}}sin\left(2{\alpha}_{i,2}\right)-sin\left(2{\alpha}_{i,1}\right)\hfill \\ {y}_{i}=1-{10}^{2{V}_{i}}\hfill \end{array}$$

The equation group of Equation (4) can be rewritten as:

$$\mathbf{\text{Ar}}=\mathbf{\text{Y}}$$

$$\mathbf{\text{A}}=\left[\begin{array}{cc}{a}_{11}& {a}_{12}\\ {a}_{21}& {a}_{22}\\ {a}_{31}& {a}_{32}\end{array}\right],\mathbf{\text{Y}}=\left[\begin{array}{c}{y}_{1}\\ {y}_{2}\\ {y}_{3}\end{array}\right],\mathbf{\text{r}}=\left[\begin{array}{c}{r}_{1}\\ {r}_{2}\end{array}\right]=\left[\begin{array}{c}dcos\left(2\varphi \right)\\ dsin\left(2\varphi \right)\end{array}\right]$$

In order to obtain polarization angle ϕ and polarization degree d, the vector **r** is computed first. As shown in Equations (6) and (7), there are three equations and two unknown variables. In the novel approach, we utilize the Least Squares to estimate the vector **r**. Then **r** is computed by:

$$\mathbf{\text{r}}={\left({\mathbf{\text{A}}}^{T}\mathbf{\text{A}}\right)}^{-1}{\mathbf{\text{A}}}^{T}\mathbf{\text{Y}}$$

Once **r** is obtained, the ϕ and d are computed as follows:

$$\varphi =\frac{1}{2}atan2\left({r}_{2},{r}_{1}\right)$$

$$d=\Vert \mathbf{\text{r}}\Vert $$

In the novel approach, a Least Squares based estimation is presented with the aim of increasing the precision and robustness of the result. In practice, all devices used in the sensor are inevitably polluted by biases and noise. With the utilization of Least Squares estimation, the residual error is minimized, thus, the optimal estimation is obtained. Moreover, this algorithm has several obvious advantages:

- (1)
This algorithm is more anti-noise than the existing solutions, because we use all of the POL-OP units' output and give an optimal estimation while the existing solutions adopt two of the units.

- (2)
The algorithm is not restricted to the fixed installation angle (e.g., 0 degree, 60 degree, and 120 degree), and can be used for an arbitrary installation angle.

- (3)
The algorithm is easily extended to multiple-channel design

In regards to the sensor calibration, the error model of the sensor was analyzed first, and then the nonlinear Least Squares based calibration algorithm was deduced, and finally the implementation of the algorithm was realized.

In the sensor measurement model given in Equations (1) and (2), the amplification factor K of each photodiode is assumed as identical; the installation angle α_{i,j} is known precisely, and the output voltage has no bias or noise. However, it is an ideal model and not true in reality. The error model of the sensor is described as follows:

$$\begin{array}{ll}{\stackrel{\sim}{V}}_{i}\left(d,\varphi \right)=\frac{1}{2}log\left(\frac{1+dcos\left(2\left(\varphi -{\stackrel{\sim}{\alpha}}_{i,1}\right)\right)}{1+dcos\left(2\left(\varphi -{\tilde{\alpha}}_{i,2}\right)\right)}\right)+{n}_{i},\hfill & i=1,2,3\hfill \end{array}$$

$$\begin{array}{l}{V}_{i}={\stackrel{\sim}{V}}_{i}-{b}_{i},\phantom{\rule{1.0em}{0ex}}i=1,2,3\hfill \\ {\alpha}_{i,j}={\stackrel{\sim}{\alpha}}_{i,j}-{\varepsilon}_{i,j},\phantom{\rule{1.0em}{0ex}}i=1,2,3;j=1,2\hfill \end{array}$$

$${\varepsilon}_{1,1}\equiv 0$$

As for the voltage error b_{i}, it mainly composes of two parts, in which one is the inconsistent amplification factor K_{i,j} and the other comes from device bias b_{device,i}.

$${b}_{i}={b}_{K}+{b}_{\mathit{\text{device}}}=\frac{1}{2}log\frac{{K}_{i,1}}{{K}_{i,2}}+{b}_{\mathit{\text{device}},i}$$

The goal of our calibration algorithm is to determine installation angle errors and voltage biases.

The polarization angle ϕ is computed by using Equations (5)–(9), which is a nonlinear function, provided that there are N + 1 measurements, then, N + 1 polarization angles can be computed as follows:

$${\varphi}_{k}=f\left({\mathbf{\text{x}}}_{k}\right),k=0,1,2,\dots ,N$$

$${\mathbf{\text{x}}}_{k}={\left[{\alpha}_{1,1},{\alpha}_{1,2},{\alpha}_{2,1},{\alpha}_{2,2},{\alpha}_{3,1},{\alpha}_{3,2},{V}_{1,k},{V}_{2,k},{V}_{3,k}\right]}^{T}$$

In this paper, the error value, estimated value and true value of a variable or vector are defined as follows:

$$a=\stackrel{\sim}{a}-\delta a$$

$${\mathbf{\text{x}}}_{k}={\stackrel{\sim}{\mathbf{\text{x}}}}_{k}-\delta \mathbf{\text{x}}$$

$$\delta \mathbf{\text{x}}={\left[0,{\varepsilon}_{1,2},{\varepsilon}_{2,1},{\varepsilon}_{2,2},{\varepsilon}_{3,1},{\varepsilon}_{3,2},{b}_{1},{b}_{2},{b}_{3}\right]}^{T}$$

It is notable that, though the last three elements of **x**_{k} are variable depending on the input, δ**x** is constant and the first element of δ**x** is zero because of Equation (13).

The Taylor expansion of Equation (15) is written as:

$$\begin{array}{l}{\varphi}_{k}=f\left({\stackrel{\sim}{\mathbf{\text{x}}}}_{k}-\delta \mathbf{\text{x}}\right)=f\left({\stackrel{\sim}{\mathbf{\text{x}}}}_{k}\right)-\mathbf{\text{J}}\left({\stackrel{\sim}{\mathbf{\text{x}}}}_{k}\right)\delta \mathbf{\text{x}}+{\rm O}\left({\Vert \delta \mathbf{\text{x}}\Vert}^{2}\right)\hfill \\ ={\stackrel{\sim}{\varphi}}_{k}-\mathbf{\text{J}}\left({\stackrel{\sim}{\mathbf{\text{x}}}}_{k}\right)\delta \mathbf{\text{x}}+{\rm O}\left({\Vert \delta \mathbf{\text{x}}\Vert}^{2}\right)\hfill \end{array}$$

Based on Equations (17) and (20), we obtain:

$$\delta {\varphi}_{k}\approx \mathbf{\text{J}}\left({\stackrel{\sim}{\mathbf{\text{x}}}}_{k}\right)\delta \mathbf{\text{x}}$$

In the process of calibration, the relative input polarization angles are assumed as known, which is feasible in practice by using a precise rotation table. Thus, what we are able to know exactly about the input polarization light is the relative polarization angle, which is:

$$\Delta {\varphi}_{k}={\varphi}_{k}-{\varphi}_{0},$$

Combining Equations (20) and (22), we obtain:

$$\Delta {\varphi}_{k}={\stackrel{\sim}{\varphi}}_{k}-{\stackrel{\sim}{\varphi}}_{0}-\mathbf{\text{J}}\left({\stackrel{\sim}{\mathbf{\text{x}}}}_{k}\right)\delta \mathbf{\text{x}}+\delta {\varphi}_{0}+O\left({\Vert \delta \mathbf{\text{x}}\Vert}^{2}\right),k=1,2,\mathrm{\dots},N$$

This equation can be rewritten as:

$$\mathbf{\text{HP}}=\mathbf{\text{Z}}$$

$$\mathbf{\text{H}}=\left[\begin{array}{l}{\mathbf{\text{H}}}_{1}\hfill \\ {\mathbf{\text{H}}}_{2}\hfill \\ \dots \hfill \\ {\mathbf{\text{H}}}_{N}\hfill \end{array}\right],{\mathbf{\text{H}}}_{k}=\left[{\mathbf{\text{J}}}_{k}\left(2:9\right),-1\right]$$

$$\mathbf{\text{P}}={\left[{\varepsilon}_{1,2},{\varepsilon}_{2,1},{\varepsilon}_{2,2},{\varepsilon}_{3,1},{\varepsilon}_{3,2},{b}_{1},{b}_{2},{b}_{3},\delta {\varphi}_{0}\right]}^{T}$$

$$\mathbf{\text{Z}}=\left[\begin{array}{l}{Z}_{1}\hfill \\ {Z}_{2}\hfill \\ \dots \hfill \\ {Z}_{N}\hfill \end{array}\right],{Z}_{k}={\stackrel{\sim}{\varphi}}_{k}-{\stackrel{\sim}{\varphi}}_{0}-\Delta {\varphi}_{k}$$

To estimate the vector **P** is our objective of sensor calibration. A least square method is fit well with this problem, and **P** can be calculated as follows:

$$\mathbf{\text{P}}={\left({\mathbf{\text{H}}}^{T}\mathbf{\text{H}}\right)}^{-1}{\mathbf{\text{H}}}^{T}\mathbf{\text{Z}}$$

Once we get an estimation of the sensor parameter **P**, we can compensate the measurement as follows:

$${\mathbf{\text{x}}}_{k}={\stackrel{\sim}{\mathbf{\text{x}}}}_{k}-\delta \mathbf{\text{x}}(\mathbf{\text{P}})$$

To evaluate the performance of the calibration results, two indicators are given. One is to compare the estimated polarization angle with the known input polarization angle, which can be computed by using Equation (27). In other word, the vector **Z** can be used as the measurement of Least Square and also used for evaluating the results. Another variable is employed to represent the angle error:

$${\mathbf{\text{e}}}_{\varphi}=\mathbf{\text{Z}}$$

The other indicator used is to compare the measure voltage and estimated voltage as follows:

$${\mathbf{\text{e}}}_{\mathbf{\text{V}}}={\left[{e}_{v1},{e}_{v2},\cdots ,{e}_{vN}\right]}^{T}$$

$${e}_{vk}=\Vert \left[\mathbf{\text{V}}\left({\stackrel{\sim}{\varphi}}_{k},\stackrel{\sim}{\mathbf{\text{\alpha}}}\right)+\mathbf{\text{b}}-{\stackrel{\sim}{\mathbf{\text{V}}}}_{k}\right]\Vert $$

In this paper, the results are examined by using a linear combination of both indicators:

$$e=\frac{{w}_{1}\Vert {\mathbf{\text{e}}}_{\varphi}\Vert +{w}_{2}\Vert {\mathbf{\text{e}}}_{\mathbf{\text{V}}}\Vert}{N}$$

Furthermore, the precision of the matrix **H** depends on **x̃**_{k}. If the initial estimated **x̃** has large error, the matrix **H** also has large linearization error, and then the result computed by Equation (28) may be not accurate. In order to reduce the linearization error and improve the estimation precision, an iterative least square [28,29] implementation algorithm is employed, which is detailed in the next section.

In this section, the implementation process of iterative least square calibration is presented. What we known are the relative input polarization angle Δϕ_{k} and a series of the sensor measurements
${V}_{i}^{k}$. The objective of calibration is to estimate the sensor parameter **P** as precisely as possible. The implementation steps are shown in Figure 4.

First, several variables **x̃**^{0}, δ**x̃**^{0}, **P**^{0} are initialized and the current iterative number j, the indicator threshold e_{threshold} and the maximum iterative number N_{max} are also set. Secondly, the initial value of **x̃**^{(1)} in obtained by compensating **x̃**^{(0)} with δ**x̃**^{0}. Then the iteration loop is started. During the iteration, the main steps contain computing ϕ**̃**^{(j)}, **Z̃**^{(}^{j}^{)},**H**^{(}^{j}^{)}, estimating **P**^{(}^{j}^{)}, compensating **x̃**^{(}^{j}^{)} and computing the indicator **e**^{(}^{j}^{)}. After iteration, if the indicator is less than the set threshold or the current iterative number is greater than the set maximum one, the loop is stopped and the calibration results are given, otherwise, the iteration loop continues.

In order to evaluate the performance and feasibility of our algorithm, a series of numeric simulations have been done before the test on the real data. For the angle computation algorithm, the performances of different algorithms were compared with different sensor error and noise input. Furthermore, to assess the influence of different polarization degrees, another simulation has been done. As for the calibration algorithm, a comparison was also made between the algorithm in this study and the algorithm presented by Zhao.

In order to investigate angle output performance effected by the voltage biases, the installation angle error, and the voltage noise, three different simulation are done with different error combinations, namely the voltage bias error (denoted by “B”), the voltage bias error, and installation angle error (denoted by “B+AE”), and the combination of the three types of error (denoted by “B+AE+N”). In each simulation, the results of three algorithms, namely algorithm presented by Lambranios, algorithm presented by Zhao, and our algorithm, are compared. Assuming that the polarization degree is 0.5, the voltage bias is 5 mV, the installation angle error is 1 degree, and the noise of the voltage output is white noise with the standard variance of 1 mV.

As for different error inputs, the results are shown in Table 1. As can be seen from the table, with the increase of error sources, the accuracies of all the algorithms decrease. Among the three algorithms, the result of our algorithm is much more accurate than those of the others. Particularly, the results with the input error of “B+AE+N” are compared in Figure 5. It is clear that our algorithm outperforms the other two because all of the three POL-OP units were utilized, and an optimal estimation was given based on the Least-Square. This approach is able to restrain the sensor biases and noise effectively and can be easily expanded to multiple POL-OP units. The more POL-OP units are used, the higher accuracy our algorithm will give. The results also show that, in most cases, the algorithms of Zhao are superior to those of Lambranios, however, they have the same results in certain polarization input angles (from 20 degree to 40 degree and from 105 degree to 135 degree, as shown the parts with a yellow background in Figure 5). The results can be easily explained in that Zhao chooses the optimal two POL-OP units of the three while Lambranios choose two of them constantly; when they choose the same two units they have the same results. On the other hand, when they choose different units, Zhao's algorithm shows a better performance.

The three algorithms with different polarization degrees are evaluated for the sake of the study on the influence caused by polarization degree. The error source is “B+AE+N” but the polarization degree is different. As shown in Figure 6, the standard deviation of the estimated angle error decreases as the polarization degree increases. The reason is that the amplitude of voltage output has a positive correlation with the polarization degree. For the same error source, the signal to noise ratio also increases as the voltage amplitude increases. Therefore, all the algorithms show a better performance in high polarization degrees. Our algorithm, however, has similar precision, even in low polarization degrees. The simulation results show that our algorithm is more accurate and robust than the others.

In order to test the performance of the iterative Least Squares based calibration algorithm, the algorithm is tested with large initial errors, which is very important in a real calibration process. Taking the installation angle calibration for example, before calibration, an initial value of the angle with bounded error should be given. If our algorithm is able to be convergent for a large initial error, then just an inexact value of the installation angle is needed by using a common protractor. As shown in Table 2, there are eight calibration parameters, the initial installation angle error is four degrees, and the voltage bias are set to 10 mV. Before calibration, the parameters are all assumed as zeros. After the first calibration loop, an estimation of the parameters is obtained which is quite unacceptable, however, an accurate estimation is obtained after five iterations, with the installation angle error being about 0.01 deg, and the voltage bias being about 0.03 mV. The simulation results show the accuracy and robustness of our calibration algorithm.

To compare the angle estimation precision before calibration and after calibration, the angle estimation with calibrated parameters is recalculated. Firstly, the data that are also used for calibration are applied to compare the calibration performance. The results are shown in Figure 7. Both calibration algorithms have improved the angle computation precision, and have a similar accuracy after calibration. However, when another two groups of numeric data are utilized, which have the same error sources but different polarization degrees, the results of the two calibration methods show differently. As shown in Figure 8, it is obvious that our algorithm has much more precision than Zhao's algorithm at the polarization degrees of 0.4 and 0.8, which enables our algorithm to be more applicable in practice. The reason for this is that Zhao's algorithm only performs curve-fitting for the angle error and compensates for it, which may be useful if the sensor has the same error trait. However, when the error trait changes, the accuracy decreases. On the contrary, in our algorithm, the aim is to find the real error resource and compensate for it, which is independent of the polarization degree and polarization input angle. Thus, our calibration algorithm is superior to Zhao's algorithm.

To verify the performance of the novel algorithm of angle computation and sensor calibration in a real system, the algorithms are tested with our bio-inspired polarization navigation sensor. The test system consists of a 24 V Li-Po battery, a precise angle-dividing table, which is able to provide accurate rotating angle discretely with the minimal step of 360/391 degree, a polarization sensor, and a laptop for saving the sensor voltage output. The angle-dividing table rotates horizontally driven by hand with the precision of 0.0001 degree at each step, which is accurate enough for the test. As for the calibration test, to get a standard polarization light source, an integrating sphere is used in [17], however, due to the lack of a sphere, an LCD screen of a tablet PC is utilized to provide the standard polarization light, as shown in Figure 9a. Furthermore, an outdoor test (as shown in Figure 9b) is also done to evaluate the performance of our calibration algorithm.

For calibration, the angle-dividing table is rotated every 10 scales for each step and the table is kept static for about 10 s. The data are recorded at a sample rate of 100 Hz. There are a total of 20 steps with each step being 9.2072 degree. The raw voltage outputs are shown in Figure 10. After recording the data, 10 epochs of each step are randomly selected for calibration. The initial installation angles are obtained from the mechanical CAD design, which are also with the ideal values. The estimated calibration parameters are shown in Table 3. The result shows that the installation angle errors ranged from 0 to 3 degree and the voltage biases are nearly 10 mV. These errors are relatively large so it is very necessary to do the calibration before using the POLNS.

The same data are processed with three different angle computation algorithms and two calibration algorithms. The angle computation errors are compared in Figure 11. It is clear to see that the error trait of three angle computation algorithms have the similar trends. The reason is that the input light source has relative high polarization degree, to be exact; it is 0.9 for this calibration. According to the simulation results shown in Figure 6, the three algorithms have fewer differences in the high polarization degree. Even so, our algorithm shows a better performance than the other two. After calibration and error compensation, the results of Zhao's algorithm was more or less the same as ours.

In reality, the polarization degree of skylight is barely able to reach 0.9. The calibrated parameters are used to compensate one experiment done in the outdoor. The results are compared in Figure 12 and the computed polarization degree is shown in Figure 13. The maximum angle error is about 0.5 degree, which is half of the Zhao's algorithm. The result shows that our calibration algorithm is more robust and useful than Zhao's. Furthermore, it can be noticed that both algorithms have a relative large error of numeric simulation, which is because of unstable sky polarization pattern, which may be caused by moving clouds and the movement of the sun during the real data test.

In the work presented here, we have studied two important issues of bio-inspired POLNS: input polarization angle computation and sensor calibration. Regarding the angle computation algorithm, conventional solutions use only two units of the three POL-OP units of the POLNS, in which sensor output information is not fully utilized. Based on Least Squares algorithm and our sensor model, a novel angle computation algorithm is derived, which is more anti-noise than the existing ones, and can be used for an arbitrary mechanical installation angle and is easily extended to multi-unit designs. With regards to sensor calibration, the main error sources of POLNS, installation angle errors and voltage biases, were analyzed first. Then, the calibration algorithm, based on a standard polarization light source and a precise turntable, was deduced. The aim of the calibration algorithm is to estimate the original sensor parameters and biases, which enables the algorithm to perform better than exiting algorithm.

The proposed two algorithms have been applied to several numeric simulations and real data tests. The comparison with existing algorithms shows that our angle computation algorithm has the same level of precision for different polarization degree input, is more accurate and robust than the other algorithms for the same error input, and that our calibration algorithm is more effective and useful in practice. With the results seen herein, simulation and actual test results are consistent with the analysis, which shows the feasibility and superiority of our algorithms.

This section, shows the process of calculating the Jacobian **J**(**x**_{k}), which are the partial derivatives of the nonlinear Equation (15). For simplify, **J** is utilized to denote the Jacobian in short in the following.

$$\mathbf{\text{J}}\left(\mathbf{\text{x}}\right)=\left[\frac{\partial f}{\partial {\alpha}_{1,1}},\frac{\partial f}{\partial {\alpha}_{1,2}},\frac{\partial f}{\partial {\alpha}_{2,1}},\frac{\partial f}{\partial {\alpha}_{2,2}},\frac{\partial f}{\partial {\alpha}_{3,1}},\frac{\partial f}{\partial {\alpha}_{3,2}},\frac{\partial f}{\partial {V}_{1}},\frac{\partial f}{\partial {V}_{2}},\frac{\partial f}{\partial {V}_{3}}\right]$$

In order to deduce the partial derivatives, some intermediate variables are introduced as follows:

$$\mathbf{\text{D}}=\left[\begin{array}{cc}{D}_{1}& {D}_{3}\\ {D}_{3}& {D}_{2}\end{array}\right]=\left({\mathbf{\text{A}}}^{T}\mathbf{\text{A}}\right)=\left[\begin{array}{cc}\sum _{i=1}^{3}{a}_{i1}^{2}& \sum _{i=1}^{3}{a}_{i1}{a}_{i2}\\ \sum _{i=1}^{3}{a}_{i1}{a}_{i2}& \sum _{i=1}^{3}{a}_{i2}^{2}\end{array}\right]$$

$$\mathbf{\text{B}}=\left[\begin{array}{l}{B}_{1}\\ {B}_{2}\end{array}\right]=\mathbf{\text{A}}Y=\left[\begin{array}{l}\sum _{i=1}^{3}{a}_{i1}{y}_{i}\\ \sum _{i=1}^{3}{a}_{i2}{y}_{i}\end{array}\right]$$

Then the vector **r** can be computed by:

$$\mathbf{\text{r}}=\frac{1}{{T}_{3}}\left[\begin{array}{l}{T}_{1}\hfill \\ {T}_{2}\hfill \end{array}\right]={\mathbf{\text{D}}}^{-1}\mathbf{\text{B}}=\frac{1}{{D}_{1}{D}_{2}-{D}_{3}^{2}}\left[\begin{array}{c}{D}_{2}{B}_{1}-{D}_{3}{B}_{2}\\ -{D}_{3}{B}_{1}+{D}_{1}{B}_{2}\end{array}\right]$$

According to Equation (9), we get the derivatives of ϕ with respect to **r**

$${\mathbf{\text{J}}}_{\varphi}\left(\mathbf{\text{r}}\right)=\frac{1}{2\Vert \mathbf{\text{r}}\Vert}\left[-{r}_{2},{r}_{1}\right]$$

The following derivatives can also be deduced as:

$${\mathbf{\text{J}}}_{\mathbf{\text{r}}}\left(\mathbf{\text{T}}\right)=\frac{1}{{T}_{3}^{2}}\left[\begin{array}{ccc}{T}_{3}& 0& -{T}_{1}\\ 0& {T}_{3}& -{T}_{2}\end{array}\right]$$

Since the variable **T** is the function of **D** and **B**, as shown in Equation (A.4)**D** and **B** are substituted into one variable **G** = [**D**^{T}, **B**^{T}]^{T} = [D_{1}, D_{2}, D_{3}, B_{1}, B_{2}]^{T}. Then, we can obtain:

$${\mathbf{\text{J}}}_{\mathbf{\text{T}}}\left(\mathbf{\text{G}}\right)=\left[\begin{array}{ccccc}0& {B}_{1}& -{B}_{2}& {D}_{2}& -{D}_{3}\\ {B}_{2}& 0& -{B}_{1}& -{D}_{3}& {D}_{1}\\ {D}_{2}& {D}_{1}& -2{D}_{3}& 0& 0\end{array}\right]$$

Additionally, **A** and **Y** are substituted into one vector:

$$\mathbf{\text{L}}={\left[{\mathbf{\text{A}}}^{T}(:,1),{\mathbf{\text{A}}}^{T}(:,2),{\mathbf{\text{Y}}}^{T}\right]}^{T}$$

$${\mathbf{\text{J}}}_{\mathbf{\text{G}}}\left(\mathbf{\text{L}}\right)=\left[\begin{array}{ccc}2{\mathbf{\text{A}}}^{T}\left(:,1\right)& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& 2{\mathbf{\text{A}}}^{T}\left(:,2\right)& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{A}}}^{T}\left(:,2\right)& {\mathbf{\text{A}}}^{T}\left(:,1\right)& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{Y}}}^{T}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{A}}}^{T}\left(:,1\right)\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{Y}}}^{T}& {\mathbf{\text{A}}}^{T}\left(:,2\right)\end{array}\right]$$

As for the last derivative **J _{L}**(

$${\mathbf{\text{J}}}_{\mathbf{\text{L}}}\left(\mathbf{\text{x}}\right)=\left[\begin{array}{ccc}{\mathbf{\text{J}}}_{11}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{J}}}_{22}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{J}}}_{33}\\ {\mathbf{\text{J}}}_{41}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{J}}}_{52}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{J}}}_{63}\\ {\mathbf{\text{J}}}_{71}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{J}}}_{82}& {\mathbf{\text{0}}}_{1\times 3}\\ {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{0}}}_{1\times 3}& {\mathbf{\text{J}}}_{93}\end{array}\right]$$

$$\begin{array}{l}{\mathbf{\text{J}}}_{11}=\left[\begin{array}{ccc}2sin\left(2{\alpha}_{1,1}\right)& -2\times {10}^{2{V}_{1}}sin\left(2{\alpha}_{1,2}\right)& 2log(10)\times {10}^{2{V}_{1}}cos\left(2{\alpha}_{1,2}\right)\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{22}=\left[\begin{array}{ccc}2sin\left(2{\alpha}_{2,1}\right)& -2\times {10}^{2{V}_{2}}sin\left(2{\alpha}_{2,2}\right)& 2log(10)\times {10}^{2{V}_{2}}cos\left(2{\alpha}_{2,2}\right)\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{33}=\left[\begin{array}{ccc}2sin\left(2{\alpha}_{3,1}\right)& -2\times {10}^{2{V}_{3}}sin\left(2{\alpha}_{3,2}\right)& 2log(10)\times {10}^{2{V}_{3}}cos\left(2{\alpha}_{3,2}\right)\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{41}=\left[\begin{array}{ccc}-2cos\left(2{\alpha}_{1,1}\right)& 2\times {10}^{2{V}_{1}}cos\left(2{\alpha}_{1,2}\right)& 2log(10)\times {10}^{2{V}_{1}}sin\left(2{\alpha}_{1,2}\right)\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{52}=\left[\begin{array}{ccc}-2cos\left(2{\alpha}_{2,1}\right)& 2\times {10}^{2{V}_{2}}cos\left(2{\alpha}_{2,2}\right)& 2log(10)\times {10}^{2{V}_{2}}sin\left(2{\alpha}_{2,2}\right)\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{63}=\left[\begin{array}{ccc}-2cos\left(2{\alpha}_{3,1}\right)& 2\times {10}^{2{V}_{3}}cos\left(2{\alpha}_{3,2}\right)& 2log(10)\times {10}^{2{V}_{3}}sin\left(2{\alpha}_{3,2}\right)\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{71}=\left[\begin{array}{ccc}0& 0& -2log(10)\times {10}^{2{V}_{1}}\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{82}=\left[\begin{array}{ccc}0& 0& -2log(10)\times {10}^{2{V}_{2}}\end{array}\right]\hfill \\ {\mathbf{\text{J}}}_{93}=\left[\begin{array}{ccc}0& 0& -2log(10)\times {10}^{2{V}_{3}}\end{array}\right]\hfill \end{array}$$

Once all the intermediate derivatives have been calculated, the Jacobian is obtained:

$$\mathbf{\text{J}}\left(\mathbf{\text{x}}\right)={\mathbf{\text{J}}}_{\varphi}\left(\mathbf{\text{r}}\right){\mathbf{\text{J}}}_{\mathbf{\text{r}}}\left(\mathbf{\text{T}}\right){\mathbf{\text{J}}}_{\mathbf{\text{T}}}\left(\mathbf{\text{G}}\right){\mathbf{\text{J}}}_{\mathbf{\text{G}}}\left(\mathbf{\text{L}}\right){\mathbf{\text{J}}}_{\mathbf{\text{L}}}\left(\mathbf{\text{x}}\right)$$

This work was supported by the National Natural Science Foundation of China (No.61104201). Sincere appreciation is given to Chen Fan and Qingan Jiang for their advice.

Zhiwen Xian and Xiaoping Hu conceived and designed the experiments; Yujie Wang and Tao Ma performed the experiments; Junxiang Lian and Lilian Zhang analyzed the data; Juliang Cao contributed materials; Zhiwen Xian wrote the paper.

The authors declare no conflict of interest.

- Titterton, D.; Weston, J.L. Strapdown Inertial Navigation Technology; The Institution of Electrical Engineers: London, UK, 2004. [Google Scholar]
- Lobo, J.; Dias, J. Inertial navigation system for mobile land vehicle. Proceedings of the Industrial Electronics, Athens, Greece, 10–14 July 1995.
- Wystrach, A.; Graham, P. What can we learn from studies of insect navigation. Anim. Behav.
**2012**, 84, 13–20. [Google Scholar] - Srinivasan, M.V.; Zhang, S.W.; Chahl, J.S.; Stange, G.; Garratt, M. An overview of insect-inspired guidance for application in ground and airborne platforms. Proc. Inst. Mech. Eng. Part G: J. Aerosp. Eng.
**2004**, 218, 375–388. [Google Scholar] - Wehner, R. Spatial Organization of Foraging Behavior in Individually Searching Desert Ants, Cataglyphis (Sahara Desert) and Ocymyrmex (Namib Desert). In From Individual to Collective Behavior in Social Insects; Pasteels, J.M., Deneubourg, J.-L., Eds.; Birkhauser: Basel, Switzerland, 1987; pp. 15–42. [Google Scholar]
- Wehner, R.; Lanfranconi, B. What do the ants know about the rotation of the sky? Nature
**1981**, 293, 731–773. [Google Scholar] - Pahl, M.; Zhu, H.; Tautz, J.; Zhang, S. Large scale homing in honeybees. PLoS One
**2011**, 6. [Google Scholar] [CrossRef] - Karman, S.B.; Diah, S.Z.M.; Gebeshuber, I.C. Bio-inspired polarized skylight-based navigation sensors: A review. Sensors
**2012**, 12, 14232–14261. [Google Scholar] - Cochran, W.W.; Mouritsen, H.; Wikelski, M. Migrating songbirds recalibrate their magnetic compass daily from twilight cues. Science
**2004**, 304, 405–407. [Google Scholar] - Muheim, R.; Phillips, J.B.; Akesson, S. Polarized light cues underlie compass calibration in migratory songbirds. Science
**2006**, 313, 837–839. [Google Scholar] - Lambrinos, D.; Maris, M.; Kobayashi, H.; Labhart, T.; Pfeifer, R.; Wehner, R. An autonomous agent navigating with a polarized light compass. Adapt. Behav.
**1997**, 6, 131–161. [Google Scholar] - Wehner, R. The Polarization-Vision Project: Championing Organismic Biology. In Neural Basis of Behavioural Daptations; Schildberger, K., Elsner, N., Eds.; Gustav Fischer Verlag: Stuttgart, Germany, 1994; pp. 103–143. [Google Scholar]
- Lambrinos, D.; Möller, R.; Labhart, T.; Pfeifer, R.; Wehner, R. A mobile robot employing insect strategies for navigation. Robot. Auton. Syst.
**2000**, 30, 39–64. [Google Scholar] - Labhart, T. Polarization-opponent interneurons in the insect visual system. Nature
**1988**, 331. [Google Scholar] - Chu, J.; Zhao, K.; Wang, T.; Zhang, Q. Research on a novel polarization sensor for navigation. Proceedings of the 2007 International Conference on Information Acquisition, Jeju City, Korea, 8–11 July 2007; pp. 241–246.
- Chu, J.; Zhao, K.; Zhang, Q.; Wang, T. Design of a novel polarization sensor for navigation. Proceedings of the IEEE International Conference on Mechatronics and Automation, Harbin, China, 5–8 August 2007; pp. 3161–3166.
- Chu, J.; Zhao, K.; Zhang, Q.; Wang, T. Construction and performance test of a novel polarization sensor for navigation. Sens. Actuators A Phys.
**2008**, 148, 75–82. [Google Scholar] - Zhao, K.; Chu, J.; Wang, T.; Zhang, Q. A novel angle algorithm of polarization sensor for navigation. IEEE Trans. Instrum. Meas.
**2009**, 58, 2791–2796. [Google Scholar] - Powell, S.; Gruev, V. Calibration methods for division-of-focal-plane polarimeters. Opt. Express
**2013**, 21, 21039–21056. [Google Scholar] - Kulkarni, M.; Gruev, V. Integrated spectral-polarization imaging sensor with aluminum nanowire polarization filters. Opt. Express
**2012**, 20, 22997–23012. [Google Scholar] - York, T.; Gruev, V. Characterization of a visible spectrum division-of-focal-plane polarimeter. Appl. Opt.
**2012**, 51, 5392–5400. [Google Scholar] - Zhzo, K.; Chu, J.; Zhang, Q.; Wand, T. A novel polarization angle sensor and error compensation algorithm for navigation. J. Astronaut.
**2009**, 30, 503–509. [Google Scholar] - Suykens, J. Least Squares-Support Vector Machines Matlab/c Toolbox. Available online: http://www.esat.kuleuven.be/sista/lssvmlab/ (accessed on 17 December 2013).
- Suykens, J.A.K.; Gestel, T.V.; Brabanter, J.D.; Moo, B.D.; Vandewalle, J. Least Squares Support Vector Machines; World Scientific: Singapore, Singapore, 2002. [Google Scholar]
- Hamamatsu Photonics. Available online: http://www.hamamatsu.com/jp/en/index.html (accessed on 12 December 2013).
- Log104 Logarithmic Amplifier. Available online: http://www.ti.com/product/LOG104 (accessed on 12 November 2013).
- Ad7734. Available online: http://www.analog.com/static/imported-files/data_sheets/AD7734.pdf (accessed on 11 November 2013).
- Madsen, K.; Nielsen, H.B.; Tingleff, O. Methods for Non-Linear Least Squares Problems; Informatics and Mathematical Modelling, Technical University of Denmark, DTU: Lyngby, Denmark, 2004. [Google Scholar]
- Marquardt, D.W. An algorithm for least-squares estimation of nonlinear parameters. J. Soc. Ind. Appl. Math.
**1963**, 11, 431–441. [Google Scholar]

Algorithm | Lambranios | Zhao | Ours | ||||||
---|---|---|---|---|---|---|---|---|---|

Err Source | B | B+AE | B+AE+N | B | B+AE | B+AE+N | B | B+AE | B+AE+N |

Max Err(deg) | 1.07 | 1.44 | 1.60 | 0.64 | 1.11 | 1.06 | 0.15 | 0.63 | 0.75 |

Avg Err(deg) | 0.03 | −0.21 | −0.22 | −0.00 | −0.16 | −0.15 | 0.00 | −0.16 | −0.15 |

Std Err(deg) | 0.84 | 0.94 | 0.94 | 0.40 | 0.44 | 0.46 | 0.10 | 0.20 | 0.22 |

Params | _{ε}_{1,2} | _{ε}_{2,1} | _{ε}_{2,2} | _{ε}_{3,1} | _{ε}_{3,2} | _{b}_{1} | _{b}_{2} | _{b}_{3} |
---|---|---|---|---|---|---|---|---|

units | (deg) | (deg) | (deg) | (deg) | (deg) | (mV) | (mV) | (mV) |

True value | 4.00 | −4.00 | 4.00 | 4.00 | −4.00 | −10.00 | 10.00 | −10.00 |

IterNum = 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |

IterNum = 1 | 4.77 | −3.02 | 3.51 | 4.53 | −3.82 | −9.70 | 9.88 | −8.57 |

IterNum = 2 | 4.00 | −4.00 | 4.02 | 4.02 | −4.01 | −9.93 | 10.04 | −9.96 |

IterNum = 5 | 4.00 | −4.01 | 4.00 | 4.00 | −4.01 | −9.97 | 10.03 | −10.00 |

Parameters | _{α}_{1,1} | _{α}_{1,2} | _{α}_{2,1} | _{α}_{2,2} | _{α}_{3,1} | _{α}_{3,2} | _{b}_{1} | _{b}_{2} | _{b}_{3} |
---|---|---|---|---|---|---|---|---|---|

units | (deg) | (deg) | (deg) | (deg) | (deg) | (deg) | (mV) | (mV) | (mV) |

initial | 0.00 | 60.0 | 120.0 | 90.0 | 150.0 | 210.0 | 0 | 0 | 0 |

final | 0.00 | 58.6 | 117.9 | 88.6 | 147.4 | 209.0 | −1.2 | −8.9 | −5.4 |

© 2014 by the authors; licensee MDPI, Basel, Switzerland. This article is an open access article distributed under the terms and conditions of the Creative Commons Attribution license ( http://creativecommons.org/licenses/by/3.0/).