<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xml:lang="en" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Sensors</journal-id>
<journal-title>Sensors</journal-title>
<issn pub-type="epub">1424-8220</issn>
<publisher>
<publisher-name>Molecular Diversity Preservation International (MDPI)</publisher-name></publisher></journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3390/s120911798</article-id>
<article-id pub-id-type="publisher-id">sensors-12-11798</article-id>
<article-categories>
<subj-group>
<subject>Article</subject></subj-group></article-categories>
<title-group>
<article-title>Error Compensation for Area Digital Sun Sensor</article-title></title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Li</surname><given-names>Wen-Yang</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Zhang</surname><given-names>Gao-Fei</given-names></name><xref ref-type="corresp" rid="c1-sensors-12-11798"><sup>*</sup></xref></contrib>
<contrib contrib-type="author">
<name><surname>You</surname><given-names>Zheng</given-names></name></contrib>
<contrib contrib-type="author">
<name><surname>Xing</surname><given-names>Fei</given-names></name></contrib>
<aff id="af1-sensors-12-11798">The State Key Laboratory of Precision Measurement Technology and Instruments, Tsinghua University, Beijing 100084, China; E-Mails: <email>liwenyang09@mails.tsinghua.edu.cn</email> (W.-Y.L.); <email>yz-dpi@mail.tsinghua.edu.cn</email> (Z.Y.); <email>xingfei@mail.tsinghua.edu.cn</email> (F.X.)</aff></contrib-group>
<author-notes>
<corresp id="c1-sensors-12-11798">
<label>*</label>Author to whom correspondence should be addressed; E-Mail: <email>zgf@mail.tsinghua.edu.cn</email>; Tel.: +86-10-6277-6000 (ext. 8004); Fax: +86-10-6278-2308.</corresp></author-notes>
<pub-date pub-type="collection">
<year>2012</year></pub-date>
<pub-date pub-type="epub">
<day>29</day>
<month>08</month>
<year>2012</year></pub-date>
<volume>12</volume>
<issue>9</issue>
<fpage>11798</fpage>
<lpage>11810</lpage>
<history>
<date date-type="received">
<day>22</day>
<month>05</month>
<year>2012</year></date>
<date date-type="rev-recd">
<day>03</day>
<month>08</month>
<year>2012</year></date>
<date date-type="accepted">
<day>06</day>
<month>08</month>
<year>2012</year></date></history>
<permissions>
<copyright-statement>© 2012 by the authors; licensee MDPI, Basel, Switzerland.</copyright-statement>
<copyright-year>2012</copyright-year>
<license>
<p>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/).</p></license></permissions>
<abstract>
<p>Compared to the error factors of the Linear Array Digital Sun Sensor (DSS), those of the Area Array DSS are complicated and methods used for error compensation are not valid or simple enough. This paper presents the main error factors of the Area Array DSS and proposes an effective method to compensate them. The procedure of error compensation of Area Array DSS includes three steps. First, the geometric error of calibration is compensated; second, the coordinate map method is used to compensate the error caused by optical refraction; third, the high order polynomial-fitting method is applied to calculate the tangent of the sun angles; finally, the arc tangent method is used to calculate the sun angles. Experimental results of the product of the High Accuracy Sun Sensor indicate that the precision is better than 0.02° during the cone field of view (CFOV) of 10°, and the precision is better than 0.14° during the CFOV 10° to 64°. The proposed compensation method effectively compensates the major error factors and significantly improves the measure precision of the Area APS DSS.</p></abstract>
<kwd-group>
<kwd>Area APS Digital Sun Sensor</kwd>
<kwd>error factors</kwd>
<kwd>error compensation</kwd>
<kwd>calibration</kwd></kwd-group></article-meta></front>
<body>
<sec sec-type="intro">
<label>1.</label>
<title>Introduction</title>
<p>Sun Sensor, a device for satellite attitude control, is used to calculate the attitude angle between the sun and the satellite. The sun sensor, applied widely in various kinds of aerospace controllers, is one kind of common attitude control sensor [<xref ref-type="bibr" rid="b1-sensors-12-11798">1</xref>]. According to their functions, sun sensors can be divided into 0–1 Sun Sensor, Analogue Sun Sensor (ASS), and Digital Sun Sensor (DSS) which is of high accuracy and large field of view (FOV). The image sensor in DSS is commonly the Charge Coupled Device (CCD) or Active Pixel Sensor (APS). In order to match the miniaturization of satellites, the satellite modules are required to be of minimal size, so sun sensors must have small size, light weight, and low power consumption. It is difficult to match these requirements with a CCD sun sensor, however. With the development of APS technology, the performance of APS image detector is catching up with and surpassing that of CCD image detectors, especially in cost, power consumption, system integration and the reading of signals. Therefore, more APS Sun Sensors are being installed in small satellites, microsatellites, and nano-satellites [<xref ref-type="bibr" rid="b2-sensors-12-11798">2</xref>–<xref ref-type="bibr" rid="b5-sensors-12-11798">5</xref>]. Due to its high accuracy, large field of view (FOV), small size, and low power consumption, the new Area Array APS DSS can measure the two axis sun angles.</p>
<p>The research on DSS focuses on system integration and the centroid algorithm of sun spots, without error compensation and calibration, which inevitably results in errors during the process of fixing. In order to achieve high measurement accuracy, it is necessary to research the error compensation of Area DSS. Using the method provided in thesis [<xref ref-type="bibr" rid="b6-sensors-12-11798">6</xref>–<xref ref-type="bibr" rid="b13-sensors-12-11798">13</xref>] to compensate the error of Area DSS, it is difficult to reach high accuracy when the two axis incident angles are both larger than 40°, and some methods are suitable for Linear Array DSS but are not suitable for Area Array DSS.</p>
<p>Based on the shortcomings of the above error compensation method, this study thoroughly analyzes the error factors and provides a means to compensate the error factors, especially (the) main error factors. In summary, our method compensates the geometry rotation error and optical refraction error respectively, followed by calculating the tangent values using a high order polynomial-fitting method to reduce the random error.</p></sec>
<sec>
<label>2.</label>
<title>Measurement Theory</title>
<sec>
<label>2.1.</label>
<title>Measurement Model</title>
<p>The optical refraction caused by the surface protecting glass of the image detector results in the change of coordinate values that makes one-axis coordinate values in the same incident angle of the relative axis be different from the different incident angles of another axis. Therefore methods which are based on the theoretical measurement model, generate large errors between the measured and true values. Furthermore, the larger the incident angles are, the larger the errors are. In the FOV 64°, the largest error is 2°∼3°.</p>
<sec>
<label>2.1.1.</label>
<title>The Model of Theoretical Measurement</title>
<p>The principle of measuring Area DSS is shown in <xref ref-type="fig" rid="f1-sensors-12-11798">Figure 1</xref>. The principle of multi-aperture is the same as that of a single aperture sun sensor. Calculating the mean centroid coordinate value of apertures can improve the measurement accuracy. The incident sun rays create an image spot on the image detector. (<italic>x<sub>c</sub>, y<sub>c</sub></italic>) are the coordinate values of the sun spot center, <italic>l</italic> is the distance from the sun spot center to the origin of the coordinate system, <italic>h</italic> is the distance between the surface of the image detector and the bottom of the optical mask glass, <italic>θ</italic> is the incident angle, and <italic>α, β</italic> are two-axis incident angles, pitch angle and lead angle, respectively.</p>
<p>According to the measurement model, it is not difficult to summarize the formula as follows:
<disp-formula id="FD1">
<label>(1)</label>
<mml:math id="mm1" display="block">
<mml:semantics id="sm1">
<mml:mrow>
<mml:mi>α</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi></mml:msub></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>β</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi></mml:msub></mml:mrow>
<mml:mi>h</mml:mi></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mi>l</mml:mi>
<mml:mi>h</mml:mi></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula>
<disp-formula id="FD2">
<label>(2)</label>
<mml:math id="mm2" display="block">
<mml:semantics id="sm2">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msubsup>
<mml:mi>x</mml:mi>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup>
<mml:mo>+</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mi>c</mml:mi>
<mml:mn>2</mml:mn></mml:msubsup></mml:mrow></mml:msqrt></mml:mrow></mml:semantics></mml:math></disp-formula>
<disp-formula id="FD3">
<label>(3)</label>
<mml:math id="mm3" display="block">
<mml:semantics id="sm3">
<mml:mrow>
<mml:mo>tan</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>=</mml:mo>
<mml:msqrt>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>tan</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>tan</mml:mo>
<mml:mi>β</mml:mi>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mn>2</mml:mn></mml:msup></mml:mrow></mml:msqrt></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>The feature of theoretical measurement model: when either <italic>α</italic> or <italic>β</italic> angle is fixed, the corresponding coordinate value of <italic>x<sub>c</sub></italic> or <italic>y<sub>c</sub></italic> becomes constant. The compensation method is based on a multiple-apertures digital sun sensor, and the mask has 36 apertures with the same distance between every two apertures. In the cone FOV 64°, the sun sensor calculates the mean centroid coordinate value of all the apertures.</p></sec>
<sec>
<label>2.1.2.</label>
<title>The Model of Optical Refraction Measurement</title>
<p>In reality, sun rays have to pass through air, quartz glass, air, protecting glass of the image detector surface and air to the image detector surface, as shown in <xref ref-type="fig" rid="f2-sensors-12-11798">Figure 2</xref>, due to the presence of the image detector protecting glass and the optical mask glass. According to the model of theoretical measurement, it is obvious to summarize the formula as follows:
<disp-formula id="FD4">
<label>(4)</label>
<mml:math id="mm4" display="block">
<mml:semantics id="sm4">
<mml:mrow>
<mml:mi>l</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>4</mml:mn></mml:msub>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>tan</mml:mo>
<mml:mi>θ</mml:mi>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>tan</mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:semantics></mml:math></disp-formula>
<disp-formula id="FD5">
<label>(5)</label>
<mml:math id="mm5" display="block">
<mml:semantics id="sm5">
<mml:mrow>
<mml:msub>
<mml:mi>n</mml:mi>
<mml:mrow>
<mml:mtext mathvariant="italic">glass</mml:mtext></mml:mrow></mml:msub>
<mml:mo>=</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>sin</mml:mo>
<mml:mi>θ</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>sin</mml:mo>
<mml:msub>
<mml:mi>θ</mml:mi>
<mml:mn>3</mml:mn></mml:msub></mml:mrow></mml:mfrac></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In <xref rid="FD5" ref-type="disp-formula">formula (5)</xref>, <italic>n<sub>glass</sub></italic> is the refractive index of the protecting glass of the image detector.</p>
<p>According to the geometric projection rule, the two-axis coordinates are:
<disp-formula id="FD6">
<label>(6)</label>
<mml:math id="mm6" display="block">
<mml:semantics id="sm6">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>×</mml:mo>
<mml:mo>cos</mml:mo>
<mml:mi>φ</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>=</mml:mo>
<mml:mi>l</mml:mi>
<mml:mo>×</mml:mo>
<mml:mo>sin</mml:mo>
<mml:mi>φ</mml:mi>
<mml:mo>,</mml:mo>
<mml:mi>φ</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mo>tan</mml:mo>
<mml:mi>β</mml:mi></mml:mrow>
<mml:mrow>
<mml:mo>tan</mml:mo>
<mml:mi>α</mml:mi></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p><xref rid="FD4" ref-type="disp-formula">Formulas (4)</xref>, <xref rid="FD5" ref-type="disp-formula">(5)</xref> and <xref rid="FD6" ref-type="disp-formula">(6)</xref> are combined to calculate the change of <italic>x</italic> coordinate values using Matlab, with the condition that the angle <italic>α</italic> is fixed, and the angle <italic>β</italic> is altered. The shift trend is shown in <xref ref-type="fig" rid="f3-sensors-12-11798">Figure 3</xref>.</p>
<p>From the shift trend, the shift of <italic>x</italic> coordinate values follows the shift of the angle <italic>β</italic> when the angle <italic>α</italic> is fixed. The shift trend of <italic>x</italic> coordinate values is contrary with that of the angle <italic>β</italic>. From the shift values, the largest error reaches 10 pixels in the FOV 64°. Therefore, the major error factor of DSS is caused by optical refraction of the protecting glass on the image detector surface.</p></sec></sec>
<sec>
<label>2.2.</label>
<title>The Calibration and Test Facility</title>
<p>Because of machining errors and fixing errors, the image detector surface deflects and rotates round the optical axis. DSS uses a calibration method to improve measurement accuracy. Our studies show it is ineffective to eliminate errors only through the fitting method.</p>
<p>DSS calibration facility (<xref ref-type="fig" rid="f4-sensors-12-11798">Figure 4</xref>) requires a sun simulator to supply a parallel light source whose brightness is equal to 1/10 solar constant, and a two-axis gimbal whose angular accuracy is 3 arc-seconds. Before the calibration, the platform of the gimbal was adjusted horizontally and the light from the sun simulator was also in the horizontal plane. The DSS was fixed on the gimbal. The two theodolites perpendicularly guarantee the DSS collinear with the sun simulator. The optical axis of the one theodolite is parallel to the light of the sun simulator. Then by rotating the gimbal according to a certain angle interval, arbitrary sun incident angles can be established, and the values of sun incident angles and the corresponding DSS output coordinates can be recorded. Each set of the angle values and corresponding coordinates are used to calculate the calibration factors.</p></sec></sec>
<sec>
<label>3.</label>
<title>Error Compensation Method</title>
<p>According to the above analysis, the main factors of error in DSS are optical refraction, and deflection and rotation of the image detector around the optical axis. Therefore, error compensated is used and its flow chart is presented in <xref ref-type="fig" rid="f5-sensors-12-11798">Figure 5</xref>.</p>
<sec>
<label>3.1.</label>
<title>The Correction for the Rotation Angle</title>
<sec>
<label>3.1.1.</label>
<title>Calculation of the Rotation Angle</title>
<p>Because of the rotation error and optical refraction, the coordinate value of the angle <italic>α</italic> is not 0 when the incident angle <italic>α</italic> is 0° and the incident angle <italic>β</italic> is not 0°. As shown in <xref ref-type="fig" rid="f6-sensors-12-11798">Figure 6</xref>, the axis <italic>x</italic> is relative to the angle <italic>α</italic>, and the axis <italic>z</italic> is relative to the angle <italic>β</italic>.</p>
<p>From the optical refraction rule as shown in <xref ref-type="fig" rid="f3-sensors-12-11798">Figure 3</xref>, it's known that refraction doesn't bring about shift of the coordinate value of the angle <italic>α</italic> when the incident sun rays move along the axis <italic>y</italic> (the angle <italic>α</italic> is 0°). For the rotation angle, the coordinate value of angle <italic>α</italic> is not 0 when the incident sun rays move along the axis <italic>y</italic> (the angle <italic>α</italic> is 0°). Besides, the coordinate of the angle <italic>α</italic> is symmetrical concerning the origin of coordinates. So the rotation angle can be calculated through the two-axis coordinate values when the angle <italic>α</italic> is 0°, and the angle <italic>β</italic> is from 0° to +64°.</p>
<p>According to the rule of coordinate system rotation, the formula to calculate the rotation angle is as follows:
<disp-formula id="FD7">
<label>(7)</label>
<mml:math id="mm7" display="block">
<mml:semantics id="sm7">
<mml:mrow>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mo stretchy="false">|</mml:mo>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow>
<mml:mo stretchy="false">|</mml:mo></mml:mrow></mml:mrow></mml:mfrac>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In order to the rotation angle more accurate, the arithmetic mean value of the rotation angle <italic>ε<sub>z</sub></italic> is as the value for correlation.</p></sec>
<sec>
<label>3.1.2.</label>
<title>The Rotation Correction</title>
<p>The rotation angle <italic>ε<sub>z</sub></italic> serves to calculate the coordinates <italic>x</italic><sub>2</sub>, <italic>y</italic><sub>2</sub> without rotation error. According to the rule of coordinate system rotation, the formula is as follows:
<disp-formula id="FD8">
<label>(8)</label>
<mml:math id="mm8" display="block">
<mml:semantics id="sm8">
<mml:mrow>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mo>=</mml:mo>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>cos</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>sin</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>−</mml:mo>
<mml:mo>sin</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>cos</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow>
<mml:mspace width="0.2em"/>
<mml:mrow>
<mml:mo>[</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow>
<mml:mo>]</mml:mo></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In <xref rid="FD8" ref-type="disp-formula">formula (8)</xref>, <italic>x</italic><sub>1</sub>, <italic>y</italic><sub>1</sub> are the coordinate values computed by the image processing chip of DSS, and <italic>x</italic><sub>2</sub>, <italic>y</italic><sub>2</sub> are the coordinate values after the first rotation correlation.</p>
<p><xref rid="FD9" ref-type="disp-formula">Formula (9)</xref> is the equation used to compensate rotation error.</p>
<disp-formula id="FD9">
<label>(9)</label>
<mml:math id="mm9" display="block">
<mml:semantics id="sm9">
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>cos</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>sin</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:mo>−</mml:mo>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>sin</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:mo>cos</mml:mo>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></sec></sec>
<sec>
<label>3.2.</label>
<title>Coordinate Map of Refraction</title>
<sec>
<label>3.2.1.</label>
<title>The method of Coordinate map</title>
<p>According to the analysis in Section 2.1.2, concerning the shift trend of coordinate values caused by refraction, the change of one-axis coordinate value depends on both the two-axis coordinate values. As a result, Dual-fit serves to map the coordinate values for correlation of optical refraction. The purpose of the map method is to make the coordinate values of the angle <italic>α</italic> under different values of the angle <italic>β</italic> equal to those of the angle <italic>α</italic> when the value of the angle <italic>β</italic> is 0. According to experimental results, the following Dual-fit map method can achieve high accuracy:
<disp-formula id="FD10">
<label>(10)</label>
<mml:math id="mm10" display="block">
<mml:semantics id="sm10">
<mml:mrow>
<mml:mrow>
<mml:mo>{</mml:mo>
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>M</mml:mi>
<mml:mn>4</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:mo>=</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mn>1</mml:mn></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mn>3</mml:mn></mml:msub>
<mml:msub>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msub>
<mml:mo>+</mml:mo>
<mml:msub>
<mml:mi>N</mml:mi>
<mml:mn>4</mml:mn></mml:msub></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:mrow></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In <xref rid="FD10" ref-type="disp-formula">formula (10)</xref>, <italic>x</italic><sub>2</sub>, <italic>y</italic><sub>2</sub> are the coordinate values after the rotation correlation, and <italic>x</italic><sub>3</sub>, <italic>y</italic><sub>3</sub> are the coordinate values after the coordinate map. In this paper, we collect 5° × 5° grid data points for calibration.</p></sec>
<sec>
<label>3.2.2.</label>
<title>Zoning for Map</title>
<p>From <xref rid="FD10" ref-type="disp-formula">formula (10)</xref>, the error influencing factor of the two coordinate axis values changes following the incident angles. It is difficult to achieve high accuracy if one group of map factors is taken into consideration in the whole CFOV. Therefore, map zoning is used, which reduces some random errors as well as produces less error fluctuations due to the identical coordinate ratio (<italic>x/y</italic>) in each strip-shaped area trend.</p>
<p>Zoning in the first quadrant is shown in <xref ref-type="fig" rid="f7-sensors-12-11798">Figure 7</xref>, dual-fit is made in every strip-shaped area of four quadrants. Every strip-shaped area has one group of map factors.</p></sec></sec>
<sec>
<label>3.3.</label>
<title>High Order Interpolation Polynomials</title>
<p>In order to reduce random errors such as deflection, the method of single axis high order interpolation polynomials serves to calculate the tangent values of one-axis angle. Then, the values of two-axis angles are calculated through an anti-tangent operation. The detailed method is as follows: the tangent values are calculated from the coordinate values either after the rotation correlation in the small CFOV or after the coordinate map correlation in the large CFOV.</p>
<p>The formula to calculate the tangent value is as follows:
<disp-formula id="FD11">
<label>(11)</label>
<mml:math id="mm11" display="block">
<mml:semantics id="sm11">
<mml:mrow>
<mml:mi>α</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>a</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mi>i</mml:mi></mml:msup>
<mml:mo stretchy="false">)</mml:mo></mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>β</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>f</mml:mi>
<mml:mo stretchy="false">(</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo stretchy="false">)</mml:mo>
<mml:mo>=</mml:mo>
<mml:mo>arctan</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:munderover>
<mml:mo>∑</mml:mo>
<mml:mrow>
<mml:mi>i</mml:mi>
<mml:mo>=</mml:mo>
<mml:mn>0</mml:mn></mml:mrow>
<mml:mi>n</mml:mi></mml:munderover>
<mml:mrow>
<mml:msub>
<mml:mi>b</mml:mi>
<mml:mi>i</mml:mi></mml:msub>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi></mml:msup></mml:mrow>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:semantics></mml:math></disp-formula></p>
<p>In <xref rid="FD11" ref-type="disp-formula">formula (11)</xref>, <italic>x</italic> and <italic>y</italic> are the related coordinate values of the angle <italic>α</italic> and <italic>β</italic> after correlation, and <italic>a<sub>i</sub>, b<sub>i</sub></italic> is the fit factors.</p></sec></sec>
<sec sec-type="results">
<label>4.</label>
<title>The Error Compensation Results</title>
<sec>
<label>4.1.</label>
<title>Experimental Test Case</title>
<p>The proposed method of error compensation was applied in a real High Accuracy Sun Sensor (HASS) product to be installed on board a satellite under development (<xref ref-type="fig" rid="f8-sensors-12-11798">Figure 8</xref>). The high accuracy sun sensor is an Area APS DSS, whose CFOV is 64°. The HASS image detector is a STAR1000 sensor with 1024 × 1024 pixels on a 15 μm pitch. The surface protecting glass of the STAR1000 sensor is BK7 glass, with a refractive index of 1.7.</p>
<p>When HASS calculates the angle only through high order interpolation polynomials method, without using compensation, the measurement error is shown in <xref ref-type="fig" rid="f9-sensors-12-11798">Figure 9</xref>. The largest error surpassed 3°.</p>
<p>Before using the proposed method to compensate HASS, the shift trend of coordinate values shown in the <xref ref-type="fig" rid="f10-sensors-12-11798">Figure 10</xref> demonstrates the analysis in Sections 2.1.2 and 2.2.</p></sec>
<sec>
<label>4.2.</label>
<title>The Compensation Index</title>
<p>Because the state of every sun sensor is not the same, the compensation index of every sun sensor is not same either.</p>
<sec>
<label>4.2.1.</label>
<title>The Rotation Angle</title>
<p>The rotation angle is calculated through the coordinate values when angle <italic>α</italic> is 0° and angle <italic>β</italic> varies from 0 to 64° data in <xref ref-type="table" rid="t1-sensors-12-11798">Table 1</xref>. The mean of the rotation angle 
<inline-formula>
<mml:math id="mm12" display="inline">
<mml:semantics id="sm12">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo>=</mml:mo>
<mml:mn>0.3226</mml:mn>
<mml:mo>°</mml:mo></mml:mrow></mml:semantics></mml:math></inline-formula>.</p></sec>
<sec>
<label>4.2.2.</label>
<title>Index of Coordinate Map of Refraction</title>
<p>Based on a width of 10° of strip-shaped area, the map indexes of each strip-shaped area are listed in <xref ref-type="table" rid="t2-sensors-12-11798">Tables 2</xref> and <xref ref-type="table" rid="t3-sensors-12-11798">3</xref>.</p></sec>
<sec>
<label>4.2.3.</label>
<title>Index of Interpolation Polynomials</title>
<p>The calibration experiment collects the relative coordinate values of the incident angle. Then the calibration data including the coordinate value and angle value serves to calculate the index of high order interpolation polynomials in Matlab. <xref rid="FD12" ref-type="disp-formula">Formula (12)</xref> computes the tangent value of incident angle as follows:
<disp-formula id="FD12">
<label>(12)</label>
<mml:math id="mm13" display="block">
<mml:semantics id="sm13">
<mml:mrow>
<mml:mtable>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>tan</mml:mo>
<mml:mi>α</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0.0002</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mn>5</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.0026</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mn>4</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0.0138</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mn>3</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.0059</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>x</mml:mi>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0.4487</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>x</mml:mi>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.0002</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>tan</mml:mo>
<mml:mi>β</mml:mi>
<mml:mo>=</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0.0002</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>5</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.0031</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>4</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0.0154</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>3</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.0077</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:msup>
<mml:mi>y</mml:mi>
<mml:mn>2</mml:mn></mml:msup>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mn>0.4492</mml:mn>
<mml:mo stretchy="false">)</mml:mo>
<mml:mi>y</mml:mi>
<mml:mo>+</mml:mo>
<mml:mo stretchy="false">(</mml:mo>
<mml:mo>−</mml:mo>
<mml:mn>0.0001</mml:mn>
<mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:mrow></mml:semantics></mml:math></disp-formula></p></sec></sec>
<sec>
<label>4.3.</label>
<title>The Results of Error Compensation</title>
<p>After compensation, the errors of the sun sensor in the cone FOV 64° (reference <xref ref-type="fig" rid="f1-sensors-12-11798">Figure 1</xref>) are listed in <xref ref-type="table" rid="t4-sensors-12-11798">Table 4</xref> and <xref ref-type="fig" rid="f11-sensors-12-11798">Figure 11</xref>. The measurement error in cone FOV 10° is smaller than 0.02° and that in FOV 10∼64° is smaller than 0.14°. And the test dataset includes 267 random points.</p></sec></sec>
<sec sec-type="conclusions">
<label>5.</label>
<title>Conclusions</title>
<p>Previous works on Area Array DSS other than this paper do not undertake definite measurements to compensate for the two major error factors, which are the geometry error of fixing and the optical refraction caused by the surface protection glass of the image detector. Thus, it is difficult to attain high accuracy. According to the analysis mentioned above, the optical refraction is the most important error factor of DSS, and the method proposed in this paper compensates the geometry rotation error and optical refraction error, respectively.</p>
<p>HASS uses a high order interpolation polynomials method to compute the two-axis angles and produces a maximal error larger than 3°. By applying the proposed method of error compensation, the accuracy of HASS is greatly improved. The measurement error in FOV 10° is smaller than 0.02° and that in FOV 10°∼64° is smaller than 0.14°. The proposed method of error compensation is thus proven to be effective.</p></sec></body>
<back>
<ack>
<p>This work was performed in The State Key Laboratory of Precision Measurement Technology and Instruments at Tsinghua University, Beijing, China.</p></ack>
<ref-list>
<title>References</title>
<ref id="b1-sensors-12-11798"><label>1.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Leijtens</surname><given-names>J.</given-names></name></person-group><article-title>Sun Sensor Miniaturization Where Is the End?</article-title><conf-name>Proceedings of IEEE Sensors</conf-name><conf-loc>Lecce, Italy</conf-loc><conf-date>26–29 October 2008</conf-date><fpage>1348</fpage><lpage>1351</lpage></citation></ref>
<ref id="b2-sensors-12-11798"><label>2.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Buonocore</surname><given-names>M.</given-names></name><name><surname>Grassi</surname><given-names>M.</given-names></name><name><surname>Rufino</surname><given-names>G.</given-names></name></person-group><article-title>Aps-based miniature sun sensor for earth observation nanosatellites</article-title><source>Acta Astronaut.</source><year>2005</year><volume>56</volume><fpage>139</fpage><lpage>145</lpage><pub-id pub-id-type="doi">10.1016/j.actaastro.2004.09.006</pub-id></citation></ref>
<ref id="b3-sensors-12-11798"><label>3.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Bae</surname><given-names>S.Y.</given-names></name><name><surname>Choonsup</surname><given-names>L.</given-names></name><name><surname>Sohrab</surname><given-names>M.</given-names></name><name><surname>Harish</surname><given-names>M.</given-names></name></person-group><article-title>Silicon Nanotips Antireflection Surface for Micro Sun Sensor</article-title><conf-name>Proceedings of the Sixth IEEE Conference on Nanotechnology IEEE-NANO 2006</conf-name><conf-loc>Cincinnati, OH, USA</conf-loc><conf-date>17–20 June 2006</conf-date><comment>Volume 2</comment><fpage>527</fpage><lpage>530</lpage></citation></ref>
<ref id="b4-sensors-12-11798"><label>4.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Quero</surname><given-names>J.M.</given-names></name><name><surname>Aracil</surname><given-names>C.</given-names></name><name><surname>Franquelo</surname><given-names>L.G.</given-names></name><name><surname>Ricart</surname><given-names>J.</given-names></name><name><surname>Ortega</surname><given-names>P.R.</given-names></name><name><surname>Dominguez</surname><given-names>M.</given-names></name><name><surname>Castañer</surname><given-names>L.</given-names></name><name><surname>Osuna</surname><given-names>R.</given-names></name></person-group><article-title>Tracking control system using an incident radiation angle micro sensor</article-title><source>IEEE Trans. Ind. Electron.</source><year>2007</year><volume>54</volume><fpage>1207</fpage><lpage>1215</lpage><pub-id pub-id-type="doi">10.1109/TIE.2007.893075</pub-id></citation></ref>
<ref id="b5-sensors-12-11798"><label>5.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Xing</surname><given-names>F.</given-names></name><name><surname>You</surname><given-names>Z.H.</given-names></name><name><surname>Zhang</surname><given-names>G.F.</given-names></name></person-group><article-title>Sun sensor based on the MEMS sunlight lead-in</article-title><source>J. Funct. Mater. Devices</source><year>2008</year><volume>14</volume><fpage>246</fpage><lpage>250</lpage></citation></ref>
<ref id="b6-sensors-12-11798"><label>6.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Ortega</surname><given-names>J.G.</given-names></name><name><surname>Tarrida</surname><given-names>C.L.</given-names></name><name><surname>Quero</surname><given-names>J.M.</given-names></name><name><surname>Delgado</surname><given-names>F.J.</given-names></name><name><surname>Ortega</surname><given-names>P.</given-names></name><name><surname>Castaner</surname><given-names>L.</given-names></name><name><surname>Reina</surname><given-names>M.</given-names></name><name><surname>Angulo</surname><given-names>M.</given-names></name><name><surname>Morilla</surname><given-names>Y.</given-names></name><name><surname>López</surname><given-names>J.G.</given-names></name></person-group><article-title>Mems Solar Sensor Testing for Satellite Applications</article-title><conf-name>Proceedings of IEEE Spanish Conference Electron Devices</conf-name><conf-loc>Santiago de Compostela, Spain</conf-loc><conf-date>11–13 February 2009</conf-date><fpage>345</fpage><lpage>348</lpage></citation></ref>
<ref id="b7-sensors-12-11798"><label>7.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Rao</surname><given-names>P.</given-names></name><name><surname>Sun</surname><given-names>S.H.L.</given-names></name><name><surname>Chen</surname><given-names>G.L.</given-names></name></person-group><article-title>New generation of APS-based digital sun sensor</article-title><source>Sci. Technol. Eng.</source><year>2008</year><volume>28</volume><fpage>940</fpage><lpage>945</lpage></citation></ref>
<ref id="b8-sensors-12-11798"><label>8.</label><citation citation-type="confproc"><person-group person-group-type="author"><name><surname>Liebe</surname><given-names>C.C.</given-names></name><name><surname>Mobasser</surname><given-names>S.</given-names></name><name><surname>Youngsam</surname><given-names>B.</given-names></name><name><surname>Wrigley</surname><given-names>C.J.</given-names></name><name><surname>Schroeder</surname><given-names>J.R.</given-names></name><name><surname>Howard</surname><given-names>A.M.</given-names></name></person-group><article-title>Micro Sun Sensor</article-title><conf-name>Proceedings of IEEE Aerospace Conference Proceedings</conf-name><conf-loc>Big Sky, MT, Canada</conf-loc><conf-date>9–16 March 2002</conf-date><comment>Volume 5</comment><fpage>2262</fpage><lpage>2273</lpage></citation></ref>
<ref id="b9-sensors-12-11798"><label>9.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Böhnke</surname><given-names>T.</given-names></name><name><surname>Edoff</surname><given-names>M.</given-names></name><name><surname>Stenmark</surname><given-names>L.</given-names></name></person-group><article-title>Development of a MOEMS sun sensor for space applications</article-title><source>Sens. Actuators A Phys.</source><year>2006</year><volume>103–131</volume><fpage>28</fpage><lpage>36</lpage></citation></ref>
<ref id="b10-sensors-12-11798"><label>10.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Qiu</surname><given-names>S.-C.</given-names></name><name><surname>Sun</surname><given-names>S.-L.</given-names></name></person-group><article-title>Precision calibration of CCD sun sensor</article-title><source>Sci. Technol. Eng.</source><year>2008</year><volume>12</volume><fpage>3294</fpage><lpage>3295</lpage></citation></ref>
<ref id="b11-sensors-12-11798"><label>11.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Yu</surname><given-names>C.H.W.</given-names></name><name><surname>Jia</surname><given-names>J.Z.H.</given-names></name><name><surname>Lv</surname><given-names>Z.H.X.</given-names></name><name><surname>Lu</surname><given-names>X.</given-names></name></person-group><article-title>Error analysis and compensation for CCD sun sensor</article-title><source>Aerosp. Control</source><year>2006</year><volume>4</volume><fpage>35</fpage><lpage>38</lpage></citation></ref>
<ref id="b12-sensors-12-11798"><label>12.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Enright</surname><given-names>J.</given-names></name><name><surname>Sinclair</surname><given-names>D.</given-names></name><name><surname>Li</surname><given-names>C.</given-names></name></person-group><article-title>Embedded algorithms for the SS-411 digital sun sensor</article-title><source>Acta Astronaut.</source><year>2009</year><volume>64</volume><fpage>906</fpage><lpage>924</lpage><pub-id pub-id-type="doi">10.1016/j.actaastro.2008.11.008</pub-id></citation></ref>
<ref id="b13-sensors-12-11798"><label>13.</label><citation citation-type="journal"><person-group person-group-type="author"><name><surname>Chang</surname><given-names>Y.-K.</given-names></name><name><surname>Lee</surname><given-names>B.-H.</given-names></name></person-group><article-title>Development of high-accuracy image centroiding algorithm for CMOS-based digital sun sensors</article-title><source>Sens. Actuators A Phys.</source><year>2007</year><volume>A144</volume><fpage>29</fpage><lpage>37</lpage></citation></ref></ref-list>
<sec sec-type="display-objects">
<title>Figures and Tables</title>
<fig id="f1-sensors-12-11798" position="float">
<label>Figure 1.</label>
<caption>
<p>The principle of DSS. (<bold>a</bold>) Single aperture sun sensor; (<bold>b</bold>) Multiaperture sun sensor.</p></caption>
<graphic xlink:href="sensors-12-11798f1.gif"/></fig>
<fig id="f2-sensors-12-11798" position="float">
<label>Figure 2.</label>
<caption>
<p>The optical refraction model of DSS.</p></caption>
<graphic xlink:href="sensors-12-11798f2.gif"/></fig>
<fig id="f3-sensors-12-11798" position="float">
<label>Figure 3.</label>
<caption>
<p>The trend of coordinate shift. In order to highlight the shift trend of the <italic>x</italic> coordinate, the <italic>x</italic> coordinate values translate towards the origin alone the <italic>x</italic> axis.</p></caption>
<graphic xlink:href="sensors-12-11798f3.gif"/></fig>
<fig id="f4-sensors-12-11798" position="float">
<label>Figure 4.</label>
<caption>
<p>The calibration system schematic diagram and facilities of DSS.</p></caption>
<graphic xlink:href="sensors-12-11798f4.gif"/></fig>
<fig id="f5-sensors-12-11798" position="float">
<label>Figure 5.</label>
<caption>
<p>The flow chart of error compensation of DSS.</p></caption>
<graphic xlink:href="sensors-12-11798f5.gif"/></fig>
<fig id="f6-sensors-12-11798" position="float">
<label>Figure 6.</label>
<caption>
<p>The sketch map of rotation of coordinate system.</p></caption>
<graphic xlink:href="sensors-12-11798f6.gif"/></fig>
<fig id="f7-sensors-12-11798" position="float">
<label>Figure 7.</label>
<caption>
<p>The sketch map of strip-shaped areas.</p></caption>
<graphic xlink:href="sensors-12-11798f7.gif"/></fig>
<fig id="f8-sensors-12-11798" position="float">
<label>Figure 8.</label>
<caption>
<p>High Accuracy Sun Sensor with cubic prism.</p></caption>
<graphic xlink:href="sensors-12-11798f8.gif"/></fig>
<fig id="f9-sensors-12-11798" position="float">
<label>Figure 9.</label>
<caption>
<p>The error of HASS before compensation. (<bold>a</bold>) The error of <italic>α</italic> angle; (<bold>b</bold>) The error of <italic>β</italic> angle.</p></caption>
<graphic xlink:href="sensors-12-11798f9.gif"/></fig>
<fig id="f10-sensors-12-11798" position="float">
<label>Figure 10.</label>
<caption>
<p>The coordinate shift trend of HASS before compensation.</p></caption>
<graphic xlink:href="sensors-12-11798f10.gif"/></fig>
<fig id="f11-sensors-12-11798" position="float">
<label>Figure 11.</label>
<caption>
<p>The error of HASS after compensation. (<bold>a</bold>) The error of <italic>α</italic> angle; (<bold>b</bold>) The error of <italic>β</italic> angle.</p></caption>
<graphic xlink:href="sensors-12-11798f11.gif"/></fig>
<table-wrap id="t1-sensors-12-11798" position="float">
<label>Table 1.</label>
<caption>
<p>The values of rotation angle.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="top"><bold>α/°</bold></th>
<th align="center" valign="top"><bold>β/°</bold></th>
<th align="center" valign="top"><bold><italic>x</italic><sub>1</sub><italic><sub>i</sub></italic>/pixels</bold></th>
<th align="center" valign="top"><bold><italic>y</italic><sub>1</sub><italic><sub>i</sub></italic>/pixels</bold></th>
<th align="center" valign="top"><bold><italic>ε<sub>zi</sub></italic>/°</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">5</td>
<td align="center" valign="top">0.083</td>
<td align="center" valign="top">12.998</td>
<td align="center" valign="top">0.3634</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">10</td>
<td align="center" valign="top">0.155</td>
<td align="center" valign="top">25.850</td>
<td align="center" valign="top">0.3452</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">15</td>
<td align="center" valign="top">0.219</td>
<td align="center" valign="top">39.224</td>
<td align="center" valign="top">0.3211</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">20</td>
<td align="center" valign="top">0.302</td>
<td align="center" valign="top">53.020</td>
<td align="center" valign="top">0.3267</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">25</td>
<td align="center" valign="top">0.376</td>
<td align="center" valign="top">67.594</td>
<td align="center" valign="top">0.3183</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">30</td>
<td align="center" valign="top">0.458</td>
<td align="center" valign="top">83.249</td>
<td align="center" valign="top">0.3152</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">35</td>
<td align="center" valign="top">0.559</td>
<td align="center" valign="top">100.021</td>
<td align="center" valign="top">0.3201</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">40</td>
<td align="center" valign="top">0.659</td>
<td align="center" valign="top">118.644</td>
<td align="center" valign="top">0.3185</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">45</td>
<td align="center" valign="top">0.779</td>
<td align="center" valign="top">139.685</td>
<td align="center" valign="top">0.3194</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">50</td>
<td align="center" valign="top">0.898</td>
<td align="center" valign="top">164.061</td>
<td align="center" valign="top">0.3135</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">55</td>
<td align="center" valign="top">1.063</td>
<td align="center" valign="top">193.273</td>
<td align="center" valign="top">0.315</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">60</td>
<td align="center" valign="top">1.246</td>
<td align="center" valign="top">229.612</td>
<td align="center" valign="top">0.3109</td></tr>
<tr>
<td align="center" valign="top">0</td>
<td align="center" valign="top">64</td>
<td align="center" valign="top">1.429</td>
<td align="center" valign="top">266.858</td>
<td align="center" valign="top">0.3068</td></tr>
<tr>
<td colspan="5" align="center" valign="bottom">
<hr/></td></tr>
<tr>
<td colspan="4" align="center" valign="top">
<mml:math id="mm14" display="inline">
<mml:semantics id="sm14">
<mml:mrow>
<mml:mover accent="true">
<mml:mrow>
<mml:msub>
<mml:mi>ε</mml:mi>
<mml:mi>z</mml:mi></mml:msub></mml:mrow>
<mml:mo>¯</mml:mo></mml:mover>
<mml:mo>/</mml:mo>
<mml:mo>°</mml:mo></mml:mrow></mml:semantics></mml:math></td>
<td align="center" valign="top">0.3226</td></tr></tbody></table></table-wrap>
<table-wrap id="t2-sensors-12-11798" position="float">
<label>Table 2.</label>
<caption>
<p>Values of index M.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th colspan="2" align="center" valign="top"><bold>strip Area/°</bold></th>
<th colspan="4" align="center" valign="top"><bold>Index <italic>M</italic> × 10<sup>3</sup></bold></th></tr>
<tr>
<th colspan="6" align="center" valign="bottom">
<hr/></th></tr>
<tr>
<th align="center" valign="top"><bold><italic>α</italic></bold></th>
<th align="center" valign="top"><bold><italic>β</italic></bold></th>
<th align="center" valign="top"><bold><italic>M</italic><sub>1</sub></bold></th>
<th align="center" valign="top"><bold><italic>M</italic><sub>2</sub></bold></th>
<th align="center" valign="top"><bold><italic>M</italic><sub>3</sub></bold></th>
<th align="center" valign="top"><bold><italic>M</italic><sub>4</sub></bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">0–10</td>
<td align="center" valign="top">10–64</td>
<td align="center" valign="top">959.942</td>
<td align="center" valign="top">2.325</td>
<td align="center" valign="top">1.027</td>
<td align="center" valign="top">71.297</td></tr>
<tr>
<td align="center" valign="top">10–64</td>
<td align="center" valign="top">0–10</td>
<td align="center" valign="top">999.818</td>
<td align="center" valign="top">4.093</td>
<td align="center" valign="top">0.027</td>
<td align="center" valign="top">6.7755</td></tr>
<tr>
<td align="center" valign="top">10–20</td>
<td align="center" valign="top">10–64</td>
<td align="center" valign="top">972.889</td>
<td align="center" valign="top">7.332</td>
<td align="center" valign="top">0.645</td>
<td align="center" valign="top">−476.931</td></tr>
<tr>
<td align="center" valign="top">20–64</td>
<td align="center" valign="top">10–20</td>
<td align="center" valign="top">998.005</td>
<td align="center" valign="top">11.146</td>
<td align="center" valign="top">0.099</td>
<td align="center" valign="top">−164.034</td></tr>
<tr>
<td align="center" valign="top">20–30</td>
<td align="center" valign="top">20–64</td>
<td align="center" valign="top">951.478</td>
<td align="center" valign="top">6.945</td>
<td align="center" valign="top">0.671</td>
<td align="center" valign="top">458.043</td></tr>
<tr>
<td align="center" valign="top">30–64</td>
<td align="center" valign="top">20–30</td>
<td align="center" valign="top">988.327</td>
<td align="center" valign="top">8.890</td>
<td align="center" valign="top">0.228</td>
<td align="center" valign="top">415.243</td></tr>
<tr>
<td align="center" valign="top">30–40</td>
<td align="center" valign="top">30–64</td>
<td align="center" valign="top">953.791</td>
<td align="center" valign="top">17.295</td>
<td align="center" valign="top">0.520</td>
<td align="center" valign="top">465.957</td></tr>
<tr>
<td align="center" valign="top">40–64</td>
<td align="center" valign="top">30–40</td>
<td align="center" valign="top">981.513</td>
<td align="center" valign="top">22.595</td>
<td align="center" valign="top">0.216</td>
<td align="center" valign="top">545.475</td></tr>
<tr>
<td align="center" valign="top">40–50</td>
<td align="center" valign="top">40–64</td>
<td align="center" valign="top">957.596</td>
<td align="center" valign="top">34.327</td>
<td align="center" valign="top">0.332</td>
<td align="center" valign="top">698.877</td></tr>
<tr>
<td align="center" valign="top">50–64</td>
<td align="center" valign="top">40–50</td>
<td align="center" valign="top">968.727</td>
<td align="center" valign="top">38.571</td>
<td align="center" valign="top">0.234</td>
<td align="center" valign="top">518.038</td></tr>
<tr>
<td align="center" valign="top">50–60</td>
<td align="center" valign="top">50–64</td>
<td align="center" valign="top">967.158</td>
<td align="center" valign="top">50.032</td>
<td align="center" valign="top">0.190</td>
<td align="center" valign="top">317.087</td></tr></tbody></table></table-wrap>
<table-wrap id="t3-sensors-12-11798" position="float">
<label>Table 3.</label>
<caption>
<p>Values of index M.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th colspan="2" align="center" valign="top"><bold>Angle Area/°</bold></th>
<th colspan="4" align="center" valign="top"><bold>Index <italic>N</italic> × 10<sup>3</sup></bold></th></tr>
<tr>
<th colspan="6" align="center" valign="bottom">
<hr/></th></tr>
<tr>
<th align="center" valign="top"><bold><italic>α</italic></bold></th>
<th align="center" valign="top"><bold><italic>β</italic></bold></th>
<th align="center" valign="top"><bold><italic>N</italic><sub>1</sub></bold></th>
<th align="center" valign="top"><bold><italic>N</italic><sub>2</sub></bold></th>
<th align="center" valign="top"><bold><italic>N</italic><sub>3</sub></bold></th>
<th align="center" valign="top"><bold><italic>N</italic><sub>4</sub></bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">0–10</td>
<td align="center" valign="top">10–64</td>
<td align="center" valign="top">999.834</td>
<td align="center" valign="top">7.747</td>
<td align="center" valign="top">0.179</td>
<td align="center" valign="top">27.971</td></tr>
<tr>
<td align="center" valign="top">10–64</td>
<td align="center" valign="top">0–10</td>
<td align="center" valign="top">973.931</td>
<td align="center" valign="top">0.576</td>
<td align="center" valign="top">0.714</td>
<td align="center" valign="top">−16.651</td></tr>
<tr>
<td align="center" valign="top">10–20</td>
<td align="center" valign="top">10–64</td>
<td align="center" valign="top">997.435</td>
<td align="center" valign="top">5.043</td>
<td align="center" valign="top">0.135</td>
<td align="center" valign="top">39.810</td></tr>
<tr>
<td align="center" valign="top">20–64</td>
<td align="center" valign="top">10–20</td>
<td align="center" valign="top">970.039</td>
<td align="center" valign="top">0.067</td>
<td align="center" valign="top">0.653</td>
<td align="center" valign="top">216.528</td></tr>
<tr>
<td align="center" valign="top">20–30</td>
<td align="center" valign="top">20–64</td>
<td align="center" valign="top">990.156</td>
<td align="center" valign="top">9.915</td>
<td align="center" valign="top">0.217</td>
<td align="center" valign="top">275.415</td></tr>
<tr>
<td align="center" valign="top">30–64</td>
<td align="center" valign="top">20–30</td>
<td align="center" valign="top">964.378</td>
<td align="center" valign="top">4.041</td>
<td align="center" valign="top">0.597</td>
<td align="center" valign="top">355.476</td></tr>
<tr>
<td align="center" valign="top">30–40</td>
<td align="center" valign="top">30–64</td>
<td align="center" valign="top">983.609</td>
<td align="center" valign="top">21.922</td>
<td align="center" valign="top">0.221</td>
<td align="center" valign="top">350.355</td></tr>
<tr>
<td align="center" valign="top">40–64</td>
<td align="center" valign="top">30–40</td>
<td align="center" valign="top">966.815</td>
<td align="center" valign="top">15.921</td>
<td align="center" valign="top">0.450</td>
<td align="center" valign="top">107.906</td></tr>
<tr>
<td align="center" valign="top">40–50</td>
<td align="center" valign="top">40–64</td>
<td align="center" valign="top">979.153</td>
<td align="center" valign="top">38.063</td>
<td align="center" valign="top">0.180</td>
<td align="center" valign="top">124.986</td></tr>
<tr>
<td align="center" valign="top">50–64</td>
<td align="center" valign="top">40–50</td>
<td align="center" valign="top">968.361</td>
<td align="center" valign="top">34.565</td>
<td align="center" valign="top">0.265</td>
<td align="center" valign="top">133.359</td></tr>
<tr>
<td align="center" valign="top">50–60</td>
<td align="center" valign="top">50–64</td>
<td align="center" valign="top">971.270</td>
<td align="center" valign="top">41.640</td>
<td align="center" valign="top">0.200</td>
<td align="center" valign="top">458.288</td></tr></tbody></table></table-wrap>
<table-wrap id="t4-sensors-12-11798" position="float">
<label>Table 4.</label>
<caption>
<p>The max error in Field of view.</p></caption>
<table frame="hsides" rules="groups">
<thead>
<tr>
<th align="center" valign="top" rowspan="3"><bold>Angle</bold></th>
<th colspan="2" align="center" valign="top"><bold>The largest error of CFOV</bold></th></tr>
<tr>
<th colspan="2" align="center" valign="bottom">
<hr/></th></tr>
<tr>
<th align="center" valign="top"><bold>&lt;=10°</bold></th>
<th align="center" valign="top"><bold>10°∼64°</bold></th></tr></thead>
<tbody>
<tr>
<td align="center" valign="top">α</td>
<td align="center" valign="top">0.018°</td>
<td align="center" valign="top">0.138°</td></tr>
<tr>
<td align="center" valign="top">β</td>
<td align="center" valign="top">0.0193°</td>
<td align="center" valign="top">0.1208°</td></tr></tbody></table></table-wrap></sec></back></article>
