UKHAS Wiki

UK High Altitude Society

User Tools

Site Tools


code:fit

This is an old revision of the document!


Gnu Octave calibration routine

This is a spheroid fitter for obtaining sensor bias and gain for each axis of an accelerometer or magnetometer given a set of sample data.

function bias_gain=nr_fit()
fp=fopen('rpy90bothways.TXT','r');
 
data=fscanf(fp,'%f    %f    %f    %f    %f    %f    %f    %f    %f    %f',[10,inf]);
accel=data(5:7,:);
datalenght=size(data)(2);
bias_gain=[1;1;1;0;0;0];
err_mean=1;
correction=zeros(6,1);
while(err_mean>0.02)
	err_mean
	fflush(stdout);
	err_mean=0;
	correction_total=zeros(6,1);
	for(i=1:datalenght)
		measured=[bias_gain(1),0,0;0,bias_gain(2),0;0,0,bias_gain(3)]*(accel(1:3,i)-bias_gain(4:6));
		erro=1-dot(measured,measured);
		correction+=[2*bias_gain(1)*(accel(1,i)-bias_gain(4))^2;2*bias_gain(2)*(accel(2,i)-bias_gain(5))^2;2*bias_gain(3)*(accel(3,i)-bias_gain(6))^2;-2*bias_gain(1)^2*(accel(1,i)-bias_gain(4));-2*bias_gain(2)^2*(accel(2,i)-bias_gain(5));-2*bias_gain(3)^2*(accel(3,i)-bias_gain(6))];
		correction*=erro/(datalenght*dot(correction,correction));
		err_mean+=abs(erro)/datalenght;
		correction_total+=correction;
	endfor
	bias_gain+=correction_total;
endwhile
bias_gain(1)=abs(1/bias_gain(1));
bias_gain(2)=abs(1/bias_gain(2));
bias_gain(3)=abs(1/bias_gain(3));
bias_gain(4)*=-1;
bias_gain(5)*=-1;
bias_gain(6)*=-1;	
endfunction	
code/fit.1264248290.txt.gz · Last modified: 2010/01/23 12:04 by laurenceb

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki