marcorasta
Jul 06, 2009, 10:53 AM
hello everybody,
this is my first post. I'm sorry to bother you all, but i'm definitely getting crazy with the imu i'm working to. I don't want to build an uav or agv (at least, not now), but my issue is quite related to the topic. the imu is a crossbow imu700ca-200. It should be quite good, but i can't get a good trajectory out of it (no gps at the moment, loose, tight and deep integration will follow).
I store data in a file, then i open them in matlab to run the alignment algorithm. it works quite well, implementing coarse and fine tuning alignment.
once i have the rotation matrix, i rotate all the data in the local frame (gravity on z, NED frame), then i go for the mechanization equation in the 2D xy plane. the 2D code is the following:
[code]
for index = 1:size(data,1)
% data columns = ax,ay,wz
psi_nw = psi_ld + data(index,3)*Ts; % it is the heading, starting from 0
DCM2D = compute_DCM2D(psi_nw); % rotation matrix
vb = (DCM2D.'*v_ld); % body frame velocity
store(:,index) = (data(index,1:2).'-data(index,3)*vb(1)*[0;1]); % centripetal acceleration for debug
v_nw = v_ld + (DCM2D*(data(index,1:2).'-data(index,3)*vb(1)*[0;1]))*Ts ; % new velocity, just taking account for centripetal acceleration
p_nw = p_ld + v_nw*Ts; % new position
% variables update
v_ld = v_nw;
p_ld = p_nw;
psi_ld = psi_nw;
p(:,index) = p_nw;
v(:,index) = v_nw;
psi(:,index) = psi_nw;
end
[\code]
am i wrong? thanks for your attention :)
this is my first post. I'm sorry to bother you all, but i'm definitely getting crazy with the imu i'm working to. I don't want to build an uav or agv (at least, not now), but my issue is quite related to the topic. the imu is a crossbow imu700ca-200. It should be quite good, but i can't get a good trajectory out of it (no gps at the moment, loose, tight and deep integration will follow).
I store data in a file, then i open them in matlab to run the alignment algorithm. it works quite well, implementing coarse and fine tuning alignment.
once i have the rotation matrix, i rotate all the data in the local frame (gravity on z, NED frame), then i go for the mechanization equation in the 2D xy plane. the 2D code is the following:
[code]
for index = 1:size(data,1)
% data columns = ax,ay,wz
psi_nw = psi_ld + data(index,3)*Ts; % it is the heading, starting from 0
DCM2D = compute_DCM2D(psi_nw); % rotation matrix
vb = (DCM2D.'*v_ld); % body frame velocity
store(:,index) = (data(index,1:2).'-data(index,3)*vb(1)*[0;1]); % centripetal acceleration for debug
v_nw = v_ld + (DCM2D*(data(index,1:2).'-data(index,3)*vb(1)*[0;1]))*Ts ; % new velocity, just taking account for centripetal acceleration
p_nw = p_ld + v_nw*Ts; % new position
% variables update
v_ld = v_nw;
p_ld = p_nw;
psi_ld = psi_nw;
p(:,index) = p_nw;
v(:,index) = v_nw;
psi(:,index) = psi_nw;
end
[\code]
am i wrong? thanks for your attention :)