我是靠谱客的博主 优雅花卷,最近开发中收集的这篇文章主要介绍磁力计椭球拟合使用篇 IMU 加速度、电子罗盘校准,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

磁力计校准椭球拟合使用篇

!!下方蓝色函数链接!!

matlab 椭球拟合函数链接

串口打印磁力计数据,可以选择原始数据不进行任何缩放(前提是各轴向分辨率一致)。

	get_RM3100_data(&mx,&my,&mz);
	printf("%d,%d,%drn",mx,my,mz);

各个位置方向旋转,进行数据采样,一定要保证数据各个角度都采集到,数据越多效果越好。
将数据保存未txt文档。
从上面matlab 的椭球拟合文档中将function copy一下,稍微修改:

clc;
clear all;
filename = 'mag_ellipsoid1.txt';
mag_data = load(filename);
x= mag_data(:,1);
y= mag_data(:,2);
z= mag_data(:,3);
%椭球拟合函数1
[ center, radii, evecs, v, chi2 ] = ellipsoid_fit_new( [ x y z ], '' );
fprintf( '椭球 圆心: %.5g %.5g %.5gn', center );
fprintf( '椭球 半径: %.5g %.5g %.5gn', radii );
fprintf( '椭球面:n' );
fprintf( '%.5g %.5g %.5gn%.5g %.5g %.5gn%.5g %.5g %.5gn', ...
    evecs(1), evecs(2), evecs(3), evecs(4), evecs(5), evecs(6), evecs(7), evecs(8), evecs(9) );
fprintf( 'Algebraic form:n' );
fprintf( '%.5g ', v );
fprintf( 'n拟合的平均偏差: %.5fn', sqrt( chi2 / size( x, 1 ) ) );
fprintf( 'n' );
% draw data
figure,
plot3( x, y, z, '.r' );
hold on;
%draw fit
mind = min( [ x y z ] );
maxd = max( [ x y z ] );
nsteps = 50;
step = ( maxd - mind ) / nsteps;
[ x, y, z ] = meshgrid( linspace( mind(1) - step(1), maxd(1) + step(1), nsteps ), linspace( mind(2) - step(2), maxd(2) + step(2), nsteps ), linspace( mind(3) - step(3), maxd(3) + step(3), nsteps ) );
Ellipsoid = v(1) *x.*x +   v(2) * y.*y + v(3) * z.*z + ...
          2*v(4) *x.*y + 2*v(5)*x.*z + 2*v(6) * y.*z + ...
          2*v(7) *x    + 2*v(8)*y    + 2*v(9) * z;
p = patch( isosurface( x, y, z, Ellipsoid, -v(10) ) );
hold off;
xlabel('X轴');
ylabel('Y轴');
zlabel('Z轴');
grid on;
set( p, 'FaceColor', 'g', 'EdgeColor', 'none' );
view( -70, 40 );
axis vis3d equal auto;
camlight;
lighting phong;
hold on;

得到拟合结果:拟合结果1
数值结果

如何使用得到的数值

		get_RM3100_data(&mx,&my,&mz);
		
		printf("%d,%d,%drn",mx,my,mz);
		//椭球校准
		mx1 = mx-64.384;//椭圆圆心平移至0,0,0 
		my1 = (my+58.583)*  4269.5/ 3869;//平移轴圆心,并且将y轴按x轴缩放
		mz1 = (mz-31.555)*  4269.5/3783.7;//平移轴圆心,并且将z轴按x轴缩放

测试:

	//计算平面偏航角度
	angle=atan2(my1,mx1)*180/3.14159+180 ;

平面上计算偏航角度,找个桌子角旋转90°测试一下,看角度值是否可靠。

ps 简单一试,一切从简。大佬勿喷。基于MATLANB 的离线椭球校准窗户纸就在这了。其他方法大同小异。研究算法的去看matlab function。

最后

以上就是优雅花卷为你收集整理的磁力计椭球拟合使用篇 IMU 加速度、电子罗盘校准的全部内容,希望文章能够帮你解决磁力计椭球拟合使用篇 IMU 加速度、电子罗盘校准所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(23)

评论列表共有 0 条评论

立即
投稿
返回
顶部