- freely available
Sensors 2012, 12(6), 8157-8175; doi:10.3390/s120608157
Published: 12 June 2012
Abstract: This paper presents an improved iterative nonlinear calibration method in the gravitational field for both low-grade and high-grade triaxial accelerometers. This calibration method assumes the probability density function of a Gaussian distribution for the raw outputs of triaxial accelerometers. A nonlinear criterion function is derived as the maximum likelihood estimation for the calibration parameters and inclination vectors, which is solved by the iterative estimation. First, the calibration parameters, including the scale factors, misalignments, biases and squared coefficients are estimated by the linear least squares method according to the multi-position raw outputs of triaxial accelerometers and the initial inclination vectors. Second, the sequence quadric program method is utilized to solve the nonlinear constrained optimization to update the inclination vectors according to the estimated calibration parameters and raw outputs of the triaxial accelerometers. The initial inclination vectors are supplied by normalizing raw outputs of triaxial accelerometers at different positions without any a priori knowledge. To overcome the imperfections of models, the optimal observation scheme is designed according to some maximum sensitivity principle. Simulation and experiments show good estimation accuracy for calibration parameters and inclination vectors.
Triaxial accelerometers have been used extensively in the fields of inertial navigation and gravimetry [1,2]. For accurate specific force measurements, calibration must be implemented to estimate some parameters which transform the raw outputs of accelerometers into linear acceleration. The calibration parameters contain the scale factors, misalignments, biases, nonlinear coefficients, temperature drifts and so on. Traditionally, the calibration relies on some precise inertial test setup to estimate the parameters according to the input and output reference information . However, such an expensive setup is not suitable for low-cost MEMS accelerometers. Meanwhile, nowadays the calibration setup cannot provide enough accurate reference information for high-grade accelerometers due to the unmatched accuracy improvement. Thus an efficient calibration for both low-grade and high-grade triaxial accelerometers needs to be designed without the requirement of precise orientation information.
In recent years, a promising multi-position calibration for triaxial accelerometers in the gravitational field has been proposed as an effective solution to relax the precise orientation supplied by the setup [3–14]. These calibration methods have been implemented based on the fact that the norm of the raw outputs of triaxial accelerometers ideally is equal to the gravity value. In most cases, a cost function, namely, the squared error between the magnitude of input specific force and the magnitude of raw outputs has been utilized to estimate the calibration parameters [3–12]. Different estimation methods have been utilized to attack the optimization problem. In  a Newton's iterative method was used to minimize the cost function to get the calibration parameters. In  the minimization of the cost function was numerically performed using the lsqnonlin function of the Matlab optimization toolbox. In  the downhill simplex optimization method was used to minimize the cost function. In [6–11] the authors utilized the iterative least square estimation method to implement the cost function's minimization. In particular, the authors in  argued the calibration improvement and alignment properties of the proposed algorithm. Interestingly, three different calibration strategies for two three-axis sensors are investigated for in-the-field calibration purposes in . In  a Kalman filter was used to estimate the calibration parameters. Thus we see that iterative methods are mostly utilized to solve the optimal functions and achieve high estimation accuracy, but the need for an initial rough estimate makes them inconvenient. In  a simple non-iteration method without any initial guess has been proposed but the misalignments of triaxial accelerometers are not considered. In  the authors summarized the minimization of the cost function as a 3-D ellipsoid-fitting problem and proposed a minimum-volume enclosing ellipsoid optimization to solve the calibration procedure issue. The authors in  proposed an improved multi-position calibration for solving the unknown parameters including scale factors, misalignments and biases. However, nonlinear errors have not been considered in the above calibration methods. The authors in  solve the calibration problems using the maximum likelihood estimation (MLE) method and validate the asymptotically unbiased property by comparing the variance of estimated parameters with the Cramer-Rao bound. However, some problems are still not settled for the proposed MLE method. Firstly, the initial calibration parameters for the two-step iterative estimation have not been solved. Secondly, the Euler angles representation of the inclination vector is not perfect for the singularity of roll angles as pitch angles approach to 90 degrees or −90 degrees. Thirdly, the optimal observation scheme for the estimation is not discussed. Finally, the nonlinear errors of triaxial accelerometers are not considered.
In view of the above disadvantages, this paper proposes an improved iterative calibration method for both linear and nonlinear models of triaxial accelerometers. For the inclination vector estimation, the second-column elements of direction cosine matrix have been chosen instead of Euler angles to overcome the singularity. Besides, the rough inclination vector estimation at different positions is derived by normalizing the raw outputs of triaxial accelerometers without any a priori knowledge. Thus a modified two-step iterative estimation has been designed compared with the estimation flow in . Meanwhile the sequence quadric program (SQP) method is utilized to attack the nonlinear constrained optimal problem in the iterative estimation. For the optimal observation, a maximum sensitivity of some constant output as a function of calibration parameters is designed to make the measurement accuracy of triaxial accelerometers consistent in the whole gravitational field.
This paper is organized as follows: Section 2 describes the linear and nonlinear models of triaxial accelerometers. Section 3 presents the improved iterative calibration method, including the two-step iterative estimation flow and the method to derive initial inclination vectors. The optimal observation in the gravitational field has been designed according to the maximum sensitivity principle in Section 4. Section 5 reports the error analysis by Monte Carlo simulations. Section 6 describes the calibration results for triaxial quartz accelerometers. Meanwhile, the experiment results validate the measurement accuracy improvement by the nonlinear model over the linear model. Conclusions are drawn in Section 7.
2. Modeling of Triaxial Accelerometers
2.1. Definition of Related Parameters
Some related definitions including the frames and parameters are listed in Table 1.
2.2. Linear and Nonlinear Models for the Triaxial Accelerometers
The imperfect installation makes the sensitivity axes of triaxial accelerometers non-orthogonal. For specific force measurements, an orthogonal frame needs to be defined according to some reference information. Here, we define the b-frame so that xb coincides with the sensitivity axis xa, yb lines in the xayb plane and zb constitutes a right-handed orthogonal frame with xb and yb Thus, the linear model of triaxial accelerometers can be derived as follows [3–16]:and the corresponding parameters in Equation (1) take the following forms:
For simple analysis, the measurement noise va is assumed to be the zero-mean Gaussian white noise with the variance of σ2. But the linear model cannot always fit in the precise specific force measurement because of such errors as nonlinearities and temperature drifts. So a nonlinear model including the squared coefficients is derived below [17,18]:where:
The calibration for both linear and nonlinear models is implemented to estimate the scale factors, misalignments, biases and squared coefficients. At the same time, the specific force of fb can also be estimated. Especially, the observation information including only the raw outputs of triaxial accelerometers and gravity value makes the calibration procedure difficult. An improved iterative calibration method will be described in the following section.
3. The Improved Iterative Calibration for the Triaxial Accelerometers
Firstly, an improved two-step iterative calibration algorithm is designed. Secondly, the initial value is supplied according to the raw outputs of triaxial accelerometers.
3.1. Improved Two-Step Iterative Estimation Scheme
In the gravitational field, the specific force vector is equal to the minus gravity vector. We define the local level frame, n-frame, so that xn points to north, yn points to upward, and zn points to east. Then the gravity vector in n-frame can be denoted as gn = [0 −g 0]T. The relative attitude between b-frame and n-frame can be represented by the direction cosine matrix of . The Euler rotation sequence from n-frame to b-frame is defined as follows: first around y-axis with ψ, then around z-axis with θ, and finally around with x-axis with ϕ, or equivalently:
In the static case, the specific force vector satisfies the following relationship:
We can define two sets of vectors from Equation (7), i.e., the parameter vector and inclination vector, as below:Thus the nonlinear model of triaxial accelerometers at the k-th position can be represented as: where
Then for m sets of positions, we have:
For the zero-mean Gaussian white noise, the raw output of p is subjected to the Gaussian distribution. Thus the following nonlinear least square optimal function can be derived by the maximum likelihood estimation method :
Considering the nonlinear objection function in Equation (13), a two-step separation estimation method can be utilized below, as described below.
3.1.1. Estimation of the Parameter Vector
Given the inclination vector ŷ the parameter vector x is estimated by the following optimal solution:and the linear observation function can be easily derived from Equation (14) as follows [19,20]:
Thus the parameter vector can be easily estimated according to the multi-position observation.
3.1.2. Estimation of the Combined Inclination Vector
Given the parameter vector x̂, the combined inclination vector y is estimated by solving the following optimal function:
As noises at different positions are independent, the solution of combined inclination vector is identical to solving the individual inclination vector. Utilizing the above estimated parameter vector, we can get the following observation equation at the k-th position:
Obviously, the above constrained problem is a nonlinear constrained estimation, which can be effectively solved by the sequence quadratic program (SQP) method . Firstly, the standard constrained optimal presentation can be derived from Equation (17) as:
The Lagrange function can be constructed from Equation (18) below:
Thus the Karush-Kuhn-Tucker (KKT) condition equation is derived as:
The first KKT equation in Equation (20) means ∇L(ck,uk)=0;, which can be solved by the following Newton iterative method:and the correction quantity of σck and σuk in Equation (21) is the solution of the following linear equations:
The corresponding parameters in Equation (22) can be denoted as:
Additionally, the initial Lagrange multiplier of uk,0 can be chosen as a large integer such as 1,000.
3.1.3. Flow of Two-Step Iterative Estimation
Consequently, the flow of two-step iterative estimation can be described in Figure 1 below:
The two-step iterative estimation method can also be used to estimate the parameters of the linear model of triaxial accelerometers.
3.2. Initial Values Selection of Two-Step Iterative Estimation
Refering to Figure 1, the initial values for the combined inclination vector in the two-step iterative estimation must be solved. Because the misalignments between b-frame and a-frame are small, the raw outputs of accelerometers in the gravitational field contain the rough inclination vector information. For example, the x-axis accelerometer attains the maximum raw output when the x-axis points upward, while the other two accelerometers approach the zero-value raw output. The raw output information coincides with the input specific force. The norm of raw outputs of triaxial accelerometers in the gravitational field is bounded by some lower bound and some upper bound. Thus an initial estimated inclination vector at the k-th position can be given as:
This initial value enables the two-step iterative algorithm and proves to be a very good candidate. It makes the parameters converge to the true values without exception in our simulations and experiments.
4. Scheme of Optimal Observations
Insufficient observations may degrade the calibration parameter accuracy. The optimal observation for estimating the calibration parameters should be analyzed. The fact that the norm of input specific force in the static case equals to the gravity value is a key to analyze the optimal observation scheme. As the sensitivity of the gravity value with respect to the calibration parameters depends on the observation positions, the maximum sensitivity principle can be utilized to get the optimal observation scheme, as done in . According to Equations (3) and (6), the observation equation can be derived as follows:
Expanding Equation (27) results in the following equation:
The operator of mathematical expectation can be implemented on both sides of Equation (28) as below:
The symbol of p̂a,i in Equation (29) denotes the expectation of p̂a,i and Δ denotes the sum of measurement noise variance, i.e., .
Before the sensitivity analysis, the projection of the gravity vector in b-frame can be derived from Equation (6) as below:
According to Equations (29) and (30), we can get the sensitivity functions as shown in Appendix. By solving the maximum of the sensitivity functions, the optimal attitude angles can be obtained respectively as shown in Table 2.
In general, the optimal observations of the above 18 positions can be utilized to estimate the calibration parameters of triaxial accelerometers.
5. Simulation and Data Analysis
In the simulation settings, we assume that the measurement noise of accelerometers is . The raw outputs of triaxial accelerometers (sampled at 100 Hz) are collected for 1 minute at each position. To diminish the measurement noise, the averaged raw output at each position is utilized to estimate the calibration parameters and inclination vectors. A set of calibrated results is shown in Table 3, as compared with the true calibration parameters. It shows that, the calibration error are less than 1 ppm for scale factors, less than 0.2 arc-seconds for misalignments, less than 2 μg for biases and less than 3 × 10−6 g/g2 for squared coefficients. Meanwhile, the estimation error of inclination vector is less than 1 arc-sec for 18 positions and the residual gravity error is less than 1.5 μg as shown in Figure 2(a,b), respectively.
The error distribution of calibration parameters in 500 Monte Carlo simulations are shown in Figure 3(a–e), associated with the standard deviation of inclination vector estimation error in Figure 3(f). The statistic errors of the calibration parameters are shown in Table 4.
The standard deviation for scale factor errors are less than 1 ppm, less than 0.3 arc-seconds for misalignment errors, less than 2 μg for bias errors and less than 3 × 10−6 g/g2 for squared coefficient errors. Meanwhile the standard deviation of inclination vector estimation error is less than 1 arc-sec for the optimal 18 observation positions.
6. Experiments and Data Analysis
The calibration experiments are implemented for the triaxial quartz accelerometers with the noise of . A low-grade two-axis turntable with about 2 arc-minutes (1σ) is utilized to supply the approximately optimal 18-position static observation which also avoids the lever arms problem. However, the orientation information of the turntable is not used for estimation. The raw outputs of triaxial accelerometers are collected for 1 minute at each position with the sample frequency of 100 Hz. The averaged raw output at each position is utilized for the iterative estimation. The calibration procedure is implemented for three groups for comparison purpose. An experiment snapshot is given in Figure 4.
Three groups of calibration results for the same triaxial quartz accelerometers are shown in Table 5. The standard deviation of scale factor are less than 3 ppm, less than 0.1 arc-seconds for misalignments, less than 2 μg for biases and less than 2 × 10−6 g/g2 for squared coefficients. Obviously, the squared coefficient of z-accelerometer is larger than the other two accelerometers by one order of magnitude, so the squared coefficient of the z-accelerometer has more effect on the measurement accuracy of gravity value compared with the noise variance.
Meanwhile, the standard deviation of inclination vector estimation for 18 positions is less than 1 arc-second, as shown in Figure 5(a). To verify the measurement accuracy of triaxial accelerometers in the total gravity space, the positions for estimation and additional 48 positions for verification are respectively described in Figure 5(b) and the estimation and verification errors are shown in Figure 5(c). The standard deviation of estimated gravity error is 5.83 μg comparing with 5.24 μg for the verified gravity error. These two equivalent gravity errors validate the effectiveness of the chosen optimal 18-position observation. Thus the nonlinear model of triaxial accelerometers indicates enough accurate specific force measurement in the gravitational field. Besides, the calibration parameters of linear model are also estimated by the proposed two-step iterative method. The error comparison of linear and nonlinear models is shown in Figure 5(d). The standard deviation of estimation error by the linear model is 7.74 μg similar with 7.08 μg as the verified error. Consequently, the nonlinear model of triaxial accelerometers has higher accuracy than the linear model.
Laboratory calibration of triaxial accelerometers is a necessary step for high-accuracy specific force measurements. This paper proposes an improved iterative estimation method to derive the scale factors, misalignments, biases and squared coefficients associated with the inclination vectors at different positions. Additionally, no orientation information is required for the calibration. Thus the proposed calibration method is suitable for both low-grade and high-grade triaxial accelerometers. The main contributions of this paper can be summarized as follows:
Elements of direction cosine matrix are utilized for estimation instead of Euler angles to avoid the inclination vector computation singularities. The nonlinear errors of triaxial accelerometers are also estimated.
The initial inclination vectors are derived by normalizing raw outputs of triaxial accelerometers without any a priori information.
The optimal observation scheme is designed according to the maximum sensitivity principle to overcome the imperfections of models.
Simulation results illustrate the sufficient estimation accuracy of parameters and inclination vectors. The experiments have validated the effectiveness of optimal 18-position scheme by error comparison at estimated positions and verified positions. Comparison of the residual gravity error also proves that the measurement accuracy can be improved with the nonlinear model of triaxial quartz accelerometers with respect to the linear model case.
The work was supported in part by National Natural Science Foundation of China (61174002), Foundation for the Author of National Excellent Doctoral Dissertation of PR China (FANEDD 200897), Program for New Century Excellent Talents in University (NCET-10-0900) and Fok Ying Tung Education Fundation (131061).
- Titterton, D.H.; Weston, J.L. Strapdown Inertial Navigation Technology; Peter Peregrinus on Behalf of the Institute of Electrical Engineers: London, UK, 2004.
- Chatfied, A.B. Fundamentals of High Accuracy Inertial Navigation; American Institute of Aeronautics and Astronautics: Reston, VA, USA, 1997.
- Skog, I.; Handel, P. Calibration of a MEMS Inertial Measurement Unit. Proceedings of the IMEKO XVII World Congress—Metrology for a Sustainable Development, Rio de Janeiro, Brazil, 17–22 September 2006.
- Frosio, I.; Stuani, S.; Borghese, N.A. Autocalibration of MEMS Accelerometer. Proceedings of the IEEE Instrumentation and Measurement Technology Conference, Sorrento, Italy, 24– 27 April 2006.
- Fong, W.T.; Ong, S.K.; Nee, A.Y.C. Methods for In-Field User Calibration of an Inertial Measurement Unit without External Equipment. Meas. Sci. Technol. 2008, 19, doi:10.1088/0957-0233/19/8/085202..
- Won, S.-H.P.; Golnaraghi, F. A Triaxial Accelerometer Calibration Method Using a Mathematical Model. IEEE Trans. Instrum. Meas. 2010, 59, 2144–2153.
- Shin, E.H. Accuracy Improvement of Low Cost INS/GPS for Land Applications. M.S. Thesis, Department of Geomatics Engineering, University of Calgary, Calgary, AB, Canada, 2001.
- Syed, Z.F.; Aggarwal, P.; Goodall, C.; Niu, X.; El-Sheimy, N. A New Multi-Position Calibration Method for MEMS Inertial Navigation Systems. Meas. Sci. Technol. 2007, 18, 1897–1907.
- Sahawneh, L.; Jarrah, M.A. Development and Calibration of Low Cost MEMS IMU for UAV Applications. Proceedings of the 5th International Symposium on Mechatronics and Its Applications, Amman, Jordan, 27–29 May 2008.
- Dorveaux, E.; Vissière, D.; Matrin, A.-P.; Petit, N. Iterative Calibration Method for Inertial and Magnetic Sensors. Proceedings of the Joint 48th IEEE Conference on Decision and Control and 28th Chinese Control Conference, Shanghai, China, 16– 18 December 2009.
- Dorveaux, E.; Vissière, D.; Petit, N. On-the-Field Calibration of an Array of Sensors. Proceedings of the American Control Conference Marriott Waterfront, Baltimore, MD, USA, 30 June– 2 July 2010.
- Bekkeng, J.K. Calibration of a Novel MEMS Inertial Reference Unit. IEEE Trans. Instrum. Meas. 2009, 58, 1967–1974.
- Grip, N.; Sabourova, N. Simple Non-Iteration Calibration for Triaxial Accelerometers. Meas. Sci. Technol. 2011, 22, doi:10.1088/0957-0233/22/12/125103..
- Bonnet, S.; Bassompierre, C.; Godin, C.; Lesecq, S.; Barraud, A. Calibration Methods for Inertial and Magnetic Sensors. Sens. Actuators A Phys. 2009, 156, 302–311.
- Zhang, H.L.; Wu, Y.X.; Wu, W.Q.; Wu, M.P.; Hu, X.P. Improved Multi-Position Calibration for Inertial Measurement Units. Meas. Sci. Technol. 2010, 21, doi:10.1088/0957-0233/21/1/015107..
- Panahandeh, G.; Skog, I.; Jansson, M. Calibration of the Accelerometer Triad of an Inertial Measurement Unit, Maximum Likelihood Estimation and Cramer-Rao Bound. Proceedings of the International Conference on Indoor Positioning and Indoor Navigation, Zurich, Switzerland, 15–17 September 2010.
- IEEE Aerospace and Electronic System Society. IEEE Standard Specification Format Guide and Test Procedure for Linear, Single-Axis, Nongyroscopic Accelerometers; Institute of Electrical and Electronics Engineers: New York, NY, USA, 1978.
- Ang, W.T.; Riviere, C.N. Nonlinear Regression Model of a Low-g MEMS Accelerometer. IEEE Sens. J. 2007, 7, 81–88.
- Kay, S.M. Fundamentals of Statistical Signal Processing and Estimation Theory; Prentice Hall: Upper Saddle River, NJ, USA, 1999.
- Gibbs, B.P. Advanced Kalman Filtering, Least-Squares and Modeling; John Wiely and Sons Inc.: Hoboken, NJ, USA, 2011.
- Hendrix, E.M.T. Introduction to Nonlinear and Global Optimization; Springer: New York, NY, USA, 2010.
|Table 1. Definition of the related parameters.|
|a-frame||The non-orthogonal frame denoted by the accelerometers' sensitivity axes|
|b-frame||The orthogonal reference frame related to triaxial accelerometers|
|n-frame||The orthogonal local level frame|
|The direction cosine matrix from n-frame to b-frame|
|The non-orthogonal transformation from b-frame to a-frame|
|pi||The raw output of the i-axis accelerometer|
|ka,i||The scale factor of the i-axis accelerometer|
|τyx,τyy τzx, τzy, τzz||The misalignments of triaxial accelerometers|
|p0,i||The bias of the i-axis accelerometer|
|k2,i||The squared coefficient of the i-axis accelerometer|
|va,i||The measurement noise of the i-axis accelerometer|
|fb||The representation of the specific force in b-frame|
|f2,b||The squared representation of the specific force in b-frame|
|The representation of unit gravity vector in b-frame at the k-th position|
|Table 2. The optimal observations for estimating calibration parameters.|
|Estimated parameters||Optimal observations of (θ,ϕ)|
|Table 3. A set of simulation results for triaxial accelerometers.|
|True parameters (pulse/m/s2)||Calibrated parameters (pulse/m/s2)||Error (ppm)|
|True parameters (rad)||Calibrated parameters (rad)||Error (arc-sec)|
|Misalignments||τyx||1.7453 × 10−4||1.7443 × 10−4||−0.0215|
|τzx||3.0229 × 10−4||3.0161 × 10−4||−0.1426|
|τzy||1.7453 × 10−4||1.7534 × 10−4||0.1672|
|τyy||0.99999998||0.99999998||3.7569 × 10−6|
|τzz||0.99999993||0.99999994||1.3787 × 10−5|
|True parameters (m/s2)||Calibrated parameters (m/s2)||Error (μg)|
|Biases||p0,x||0.01||1.0016 × 10−2||1.6087|
|p0,y||0.02||2.0002 × 10−2||0.3784|
|p0,z||0.03||3.0007 × 10−2||1.4047|
|True parameters (g/g2)||Calibrated parameters (g/g2)||Error (g/g2)|
|Squared coefficients||k2,x||1.0 × 10−5||1.0614 × 10−5||6.1459 × 10−7|
|k2,y||2.0 × 10−5||2.2634 × 10−5||2.6347 × 10−6|
|k2,x||3.0 × 10−5||3.0298 × 10−5||2.9839 × 10−7|
|Table 4. Calibration results of 500 Monte Carlo simulations for triaxial accelerometers.|
|Scale factor errors (ppm)||ka,x||−2.273||1.924||0.007||−0.029||0.654|
|Misalignment errors (arc-sec)||τyx||−0.919||0.843||−0.015||−0.008||0.269|
|τyy||−1.488 × 10−4||1.584 × 10−4||2.39 × 10−6||1.41 × 10−6||4.698 × 10−5|
|τzz||−2.302 × 10−4||2.658 × 10−4||7.29 × 10−6||6.657 × 10−6||8.842 × 10−5|
|Bias errors (μg)||p0,x||−4.754||5.063||−0.021||−0.108||1.631|
|Squared coefficient errors (g/g2)||k2,x||−7.555 × 10−6||6.303 × 10−6||6.924 × 10−8||2.035 × 10−7||2.312 × 10−6|
|k2,y||−6.057 × 10−6||6.938 × 10−6||−2.529 × 10−9||5.979 × 10−8||2.208 × 10−6|
|k2,z||−6.185 × 10−6||8.245 × 10−6||2.043 × 10−7||2.079 × 10−7||2.271 × 10−6|
|Table 5. Three groups of calibration results for triaxial accelerometers.|
|#1 (pulse/m/s2)||#2 (pulse/m/s2)||#3 (pulse/m/s2)||Deviation (ppm)|
|#1 (arc-sec)||#2 (arc-sec)||#3 (arc-sec)||Deviation (arc-sec)|
|#1 (μg)||#2 (μg)||#3 (μg)||Deviation (μg)|
|#1 (g/g2)||#2 (g/g2)||#3 (g/g2)||Deviation (g/g2)|
|Squared coefficients||k2,x||2.9523 × 10−6||8.5401 × 10−7||1.0946 × 10−6||1.1483 × 10−6|
|k2,y||−2.2722 × 10−6||−4.5485 × 10−6||−4.7544 × 10−6||1.3775 × 10−6|
|k2,z||−3.3496 × 10−5||−3.5066 × 10−5||−3.6377 × 10−5||1.4424 × 10−6|
© 2012 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/).