搜索
bottom↓
回复: 59

电子罗盘校准 椭球拟合

  [复制链接]

出0入0汤圆

发表于 2014-5-1 19:01:26 | 显示全部楼层 |阅读模式
本帖最后由 onev 于 2014-5-1 22:25 编辑

/**********************************************************************************************
说明:本程序是在VS2012环境下写就。虽然是在C++环境下写就但实际还是C编程,故构造函数、析构函数均略去。
     鉴于C++的流输入和流输出的使用更为方便简洁,因而使用cin、cout代替printf()、scanf()等函数。
描述:
作者:onev
时间:2014
***********************************************************************************************/
#include <iostream>
#include <string>
#include <cmath>
//#include <cstdio>


using namespace std;

#define NUM 6 //线性方程组大小


//http://zh.wikipedia.org/wiki/%E7%BA%BF%E6%80%A7%E6%96%B9%E7%A8%8B%E7%BB%84
//double matrix_A[4][4] = {{5, -1, -1, -1},{-1, 10, -1, -1},{-1, -1, 5, -1},{-1, -1, -1, 10}};//矩阵A
//double matrix_b[4] = {-4, 12, 8, 34};//矩阵b
//double matrix_x[4] = {0, 0, 0, 0};//解



float matrix_Q[6][3] = {{-135, 54, -152},{92, -93, -164},{72, 86, -165},{66, 151, 66},{-87,153,-108},{-82,-112,-167}};//6组电子罗盘数据,顺序X、Y、Z

double matrix_A[NUM][NUM] = {{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0}};//A矩阵由后面的PP函数产生
double matrix_b[NUM] = {0,0,0,0,0,0};//同上
double matrix_x[NUM] = {0, 0, 0, 0, 0, 0};

double matrix_M[7] = {0};        


void PP(void)
{
        double matrix_temp1[NUM][NUM] = {0};

        for (int i = 0; i < NUM; i++)
        {
                matrix_temp1[0] = matrix_Q[0]*matrix_Q[0];
                matrix_temp1[1] = matrix_Q[1]*matrix_Q[1];
                matrix_temp1[2] = matrix_Q[2]*matrix_Q[2];
                matrix_temp1[3] = matrix_Q[0];
                matrix_temp1[4] = matrix_Q[1];
                matrix_temp1[5] = matrix_Q[2];

        }
      
  for (int j = 0; j < NUM; j++)
        {
                for (int i = 0; i < NUM; i++)
                {
                        matrix_A[j][0] += matrix_temp1[j]*matrix_temp1[0];
                        matrix_A[j][1] += matrix_temp1[j]*matrix_temp1[1];
                        matrix_A[j][2] += matrix_temp1[j]*matrix_temp1[2];
                        matrix_A[j][3] += matrix_temp1[j]*matrix_temp1[3];
                        matrix_A[j][4] += matrix_temp1[j]*matrix_temp1[4];
                        matrix_A[j][5] += matrix_temp1[j]*matrix_temp1[5];
                }
        }
      
        for (int i = 0; i < NUM; i++)
        {
                for (int j = 0; j < NUM; j++)
                {
                        matrix_b += -matrix_temp1[j];
                }
                cout << "matrix_b[" << i <<"]" << matrix_b << endl;
                cout << "*********************************************" << endl;
        }
        for (int i = 0; i < NUM; i++)
        {
                for(int j = 0; j < NUM; j++)
                {
                        cout << "matrix_A[" << i <<"]" << "["<< j << "]" << matrix_A[j] << endl;
                }
        }
         
}


/******************************************************************************
函数  : SOR()
功能  : SOR迭代法解线性方程组
调用  : 外部
说明  : 松弛因子0~1 比如0.9    精度自己决定 比如0.000001
返回值: 有
******************************************************************************/
int SOR()
{
        int i = 0, j = 0,k = 0;
        double w = 0, precision = 0, temp = 0, x[NUM] = {0, 0, 0, 0};//w:松弛因子   precision:精度
        cout << "请输入松弛因子w: "<< endl;
        cin >> w ;
        cout << "请输入精度: "<< endl;
        cin >> precision;
        for(k = 0; k < 1000; k++)//迭代次数最多不超过100
        {
                for(i = 0; i < NUM; i++)  
                {
                        temp = 0;
                        for(j = 0; j < NUM; j++)
                        {
                                if(j != i)
                                temp += matrix_A[j]*matrix_x[j];        
                        }
                        matrix_x = (1-w)*x+w*(matrix_b-temp)/matrix_A;
                        cout << matrix_x << "        ";
                        if(i == 3)
                        cout << endl;        
                }
                for(i = 0; i < NUM; i++)
                {
                        if(fabs(matrix_x-x) < precision)
                        {
                                if(i == 3)
                                {
                                        cout << endl;
                                        cout << "您输入的松弛因子w = " << w << endl;
                                        cout << "  输入的精度precision = " << precision << endl;
                                        cout << "迭代次数: " << k << endl;
                                        cout << "迭代结果:"<< endl;
                                        for (int i = 0; i < NUM; i++)
                                        {
                                                cout << "x" << i << ":" << matrix_x << endl;
                                        }
                                /*        cout <<"x1 = " << matrix_x[0] << "    x2 = " << matrix_x[1];
                                        cout <<       "x3 = " << matrix_x[2] << "    x4 = " << matrix_x[3];
                                        cout <<       "x5 = " << matrix_x[4] << "    x6 = " << matrix_x[5] << endl;*/
                                        return 0;
                                }
                        }
                        else
                                break;
                }
                for(i = 0; i < NUM; i++)
                x = matrix_x;
        }
}


void OO(void)
{
        matrix_M[0] = matrix_x[3]/2/matrix_x[0];
        matrix_M[1] = matrix_x[4]/2/matrix_x[1];
        matrix_M[2] = matrix_x[5]/2/matrix_x[2];
        matrix_M[3] = 1.0/(matrix_x[3]*matrix_x[3]/matrix_x[0]/4
                                          +matrix_x[4]*matrix_x[4]/matrix_x[1]/4
                                          +matrix_x[5]*matrix_x[5]/matrix_x[2]/4
                                          -1);//这里把地球磁场大小设成了1
        matrix_M[4] = sqrtl(/*abs*/(matrix_M[3])*matrix_x[0]);
        matrix_M[5] = sqrtl(/*abs*/(matrix_M[3])*matrix_x[1]);
        matrix_M[6] = sqrtl(/*abs*/(matrix_M[3])*matrix_x[2]);
        for(int i = 0; i < 7; i++)
        {
                cout << endl;
                cout << "******************" << endl;
                cout << "matrix_M[" << i << "]:" << matrix_M << endl;
        }
}

                                
int main()
{
        PP();
        SOR();
        OO();
        cout << (matrix_x[3]*matrix_x[3]/matrix_x[0]/4
                                          +matrix_x[4]*matrix_x[4]/matrix_x[1]/4
                                          +matrix_x[5]*matrix_x[5]/matrix_x[2]/4) << endl;
}
说明:测量值[Xm,Ym,Zm]      校正后[Xc,Yc,Zc]     平移参数[Ox,Oy,Oz]      缩放参数[gx,gy,gz]   
关系:Xc=(Xm+Ox)*gx  
           Yc=(Ym+Oy)*gy
           Zc=(Zm+Oz)*gz   
  PP(); OO();函数不解释。
  matrix_M[0]对应Ox;matrix_M[1]对应Oy;matrix_M[2]对应Oz;
  matrix_M[4]对应gx; matrix_M[5]对应gy; matrix_M[6]对应gz;
  这是我自己做的椭球拟合,最小二乘法。
  问题来了:用AHRSupdate进行姿态解算时在开始的大概十几二十秒内会乱七八糟的飘,过了这会儿之后基本回归正常,但偏航角yaw会有偏移这时,这说的偏移不是漂移。过了刚刚说的时间段后姿态很稳定,yaw不飘,放那不动三个角都不会动,或者你动了之后放那也不会飘,关键在于为什么开始时会有那种乱七八糟的飘呢?一直找不到原因,另外因为还没装MATLAB,求教能否检验一下我的椭球拟合是否正确呢?

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入0汤圆

 楼主| 发表于 2014-5-1 19:02:27 | 显示全部楼层
怎么字都变形了

出0入0汤圆

 楼主| 发表于 2014-5-3 12:25:51 | 显示全部楼层
再次用iPhone指南针确认了一下,yaw角没什么大偏差,只是开始时的乱飘还没解决  自己顶起

出0入0汤圆

发表于 2014-5-4 10:49:11 | 显示全部楼层
楼主能介绍点原理性的东西么,或者参考什么论文的能方便发出来么?

出0入0汤圆

 楼主| 发表于 2014-5-4 12:03:50 | 显示全部楼层
jiangtianyu007 发表于 2014-5-4 10:49
楼主能介绍点原理性的东西么,或者参考什么论文的能方便发出来么?


椭球拟合的论文很多,你可以上知网之类的查   直接Google就能查到很多,也可以参考这篇  网上到处有  你可以直接将代码复制应用也行 但请勿用于商业目的谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-5-4 12:22:30 | 显示全部楼层
AHRSupdate这个是四元数解姿态吧,这里的四元数初始化时要把你的地磁航向角加进入,不能单单1,0,0,0这样赋值

出0入0汤圆

 楼主| 发表于 2014-5-4 12:28:36 | 显示全部楼层
cshp138 发表于 2014-5-4 12:22
AHRSupdate这个是四元数解姿态吧,这里的四元数初始化时要把你的地磁航向角加进入,不能单单1,0,0,0这样 ...

已初始化 但影响不大

出0入0汤圆

发表于 2014-7-17 15:29:50 | 显示全部楼层
楼主代码完全不能用

double matrix_temp1[NUM][NUM] = {0};

        for (int i = 0; i < NUM; i++)
        {
                matrix_temp1[0] = matrix_Q[0]*matrix_Q[0];
                matrix_temp1[1] = matrix_Q[1]*matrix_Q[1];
                matrix_temp1[2] = matrix_Q[2]*matrix_Q[2];
                matrix_temp1[3] = matrix_Q[0];
                matrix_temp1[4] = matrix_Q[1];
                matrix_temp1[5] = matrix_Q[2];
        }

最低级的错误也产生了。

出0入0汤圆

发表于 2014-7-18 10:53:12 | 显示全部楼层
利用四元数,旋转矩阵,来计算定位矩阵,航向精度有所提高,你说这个只是说前期它需要校正数据计算

出0入0汤圆

 楼主| 发表于 2014-7-18 17:05:19 | 显示全部楼层
jiangtianyu007 发表于 2014-7-17 15:29
楼主代码完全不能用

double matrix_temp1[NUM][NUM] = {0};


不能用是什么意思,怎么个不能用法,具体点。

出0入0汤圆

 楼主| 发表于 2014-7-18 17:07:36 | 显示全部楼层
chinamaken 发表于 2014-7-18 10:53
利用四元数,旋转矩阵,来计算定位矩阵,航向精度有所提高,你说这个只是说前期它需要校正数据计算 ...

难道我的标题还能有其他解释不成?!

出0入25汤圆

发表于 2014-7-18 19:52:29 | 显示全部楼层
lz 会不会是编译器的问题。  建议用icc  试试。 我之前也是被 gcc 搞的一踏糊涂。

icc 比较简单的。  

出0入0汤圆

发表于 2014-7-19 12:24:22 | 显示全部楼层
onev 发表于 2014-7-18 17:05
不能用是什么意思,怎么个不能用法,具体点。

就是我贴的代码呀。

定义了二维数组,却赋值给了地址。

出0入0汤圆

 楼主| 发表于 2014-8-27 14:13:46 | 显示全部楼层
rei1984 发表于 2014-7-18 19:52
lz 会不会是编译器的问题。  建议用icc  试试。 我之前也是被 gcc 搞的一踏糊涂。

icc 比较简单的。   ...

为什么都不仔细看呢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-8-29 17:04:04 | 显示全部楼层
请问楼主,for (int i = 0; i < NUM; i++)
        {
                matrix_temp1[0] = matrix_Q[0]*matrix_Q[0];
                matrix_temp1[1] = matrix_Q[1]*matrix_Q[1];
                matrix_temp1[2] = matrix_Q[2]*matrix_Q[2];
                matrix_temp1[3] = matrix_Q[0];
                matrix_temp1[4] = matrix_Q[1];
                matrix_temp1[5] = matrix_Q[2];
        }这断怎么理解,因为对C++不是很懂,那个for中的i似乎没有用到,请lz解释下吧

出0入0汤圆

 楼主| 发表于 2014-9-12 10:59:58 | 显示全部楼层
本帖最后由 onev 于 2014-9-12 11:03 编辑

很奇怪,我的代码明明不是这样的,复制粘贴就变了

出0入0汤圆

 楼主| 发表于 2014-9-12 11:05:40 | 显示全部楼层
jiangtianyu007 发表于 2014-7-17 15:29
楼主代码完全不能用

double matrix_temp1[NUM][NUM] = {0};

不知道为什么 我的代码不是这样的不知道为什么复制粘贴后变了

出0入0汤圆

 楼主| 发表于 2014-9-12 11:11:36 | 显示全部楼层
jiangtianyu007 发表于 2014-7-19 12:24
就是我贴的代码呀。

定义了二维数组,却赋值给了地址。

pp()函数应该是这样的  至于复制粘贴后为什么变了  我不知道   我的原始代码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-9-12 11:13:06 | 显示全部楼层
PANGKUN 发表于 2014-8-29 17:04
请问楼主,for (int i = 0; i < NUM; i++)
        {
                matrix_temp1[0] = matrix_Q[0]*matr ...

请参照18楼

出0入0汤圆

 楼主| 发表于 2014-9-12 11:26:30 | 显示全部楼层
本帖最后由 onev 于 2014-9-12 11:53 编辑
chinamaken 发表于 2014-7-18 10:53
利用四元数,旋转矩阵,来计算定位矩阵,航向精度有所提高,你说这个只是说前期它需要校正数据计算 ...


磁力计不校正根本不能用,地球磁场太小很容易受周边环境影响,所以须要校正,一般的椭圆校正有很大的缺陷,本来就是一个椭球,虽然你只用到它的一个平面,但只用平面校正显然误差会大,因为你怎么知道你校正的时候是在水平面呢?所以须要进行椭球校正,这里的椭球校正是椭球校正中最简单的,但够用了,而且是本人写的,没有参考任何人的,因为无从参照。

出0入0汤圆

发表于 2014-9-12 11:50:27 | 显示全部楼层
我也在想校准磁力计,特别是全姿的。

出0入0汤圆

发表于 2014-9-12 17:31:10 | 显示全部楼层
onev 发表于 2014-9-12 11:11
pp()函数应该是这样的  至于复制粘贴后为什么变了  我不知道   我的原始代码: ...

方便源代码压缩一下上传么?
还有请教下楼主,您拟合的约束方程是什么?Xc Yc Zc满足什么方程呢?

出0入0汤圆

 楼主| 发表于 2014-9-14 19:42:29 | 显示全部楼层
本帖最后由 onev 于 2014-9-14 19:43 编辑
jiangtianyu007 发表于 2014-9-12 17:31
方便源代码压缩一下上传么?
还有请教下楼主,您拟合的约束方程是什么?Xc Yc Zc满足什么方程呢? ...


Xc、Yc、Zc是校正后的输出,既然是椭球校正,当然是校正后满足 球 了,即在球面上。

出0入0汤圆

 楼主| 发表于 2014-9-14 19:58:07 | 显示全部楼层
onev 发表于 2014-9-14 19:42
Xc、Yc、Zc是校正后的输出,既然是椭球校正,当然是校正后满足 球 了,即在球面上。 ...

如果打不开 用CAJVIEWER打开

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-15 14:04:07 | 显示全部楼层
onev 发表于 2014-9-14 19:42
Xc、Yc、Zc是校正后的输出,既然是椭球校正,当然是校正后满足 球 了,即在球面上。 ...

但是满足的这个球的半径是怎么确定呢?

出0入0汤圆

 楼主| 发表于 2014-9-17 08:35:25 | 显示全部楼层
本帖最后由 onev 于 2014-9-17 08:37 编辑
jiangtianyu007 发表于 2014-9-15 14:04
但是满足的这个球的半径是怎么确定呢?

这跟你的当地地球磁场大小是一致的,你的数值我是不知道的哟!我在这里直接定义磁场大小为1。我明明写着注释,你没看啊!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-9-17 11:54:12 | 显示全部楼层
楼主,我和你的情况一样,一上电一段时间内,姿态会漂的很乱,但是过段时间就会稳定。我觉得是初始化四元数的问题,因为我之前不用磁力计用 IMUupdate函数的时候也是需要初始化一下欧拉角和四元数上电之后才不会乱漂。用AHRSupdate函数时,就算我用之前的初始化程序初始化也不行,我认为应该是这段代码中的初始化yaw的公式有错误,但是一直没有解决。不知道这个问题楼主你有没有已经解决了?
  1. /********************根据MPU6050得到的加速度值初始化欧拉角********************/
  2. void init_euler_angle()
  3. {
  4.         HMC5883_out();
  5.         euler_roll_init = atan2(ACCEL_ay(), ACCEL_az());                        //初始化欧拉翻滚角
  6.         euler_pitch_init =  -asin(ACCEL_ax() / ACCEL_1G);                        //初始化欧拉俯仰角       
  7.         euler_yaw_init = atan((my*cos(euler_roll_init) - mz*sin(euler_roll_init))/(mx*cos(euler_pitch_init) + my*sin(euler_roll_init)*sin(euler_pitch_init)
  8.                                         - mz*sin(euler_pitch_init)*cos(euler_roll_init)));  
  9. }
复制代码

出0入0汤圆

发表于 2014-9-22 22:29:30 | 显示全部楼层
onev 发表于 2014-9-17 08:35
这跟你的当地地球磁场大小是一致的,你的数值我是不知道的哟!我在这里直接定义磁场大小为1。我明明写着注 ...

直接定为1应该不对吧。。。。个人觉得应该定为R,也是个参数,但是这样的话就变成非线性方程组了,需要用迭代法求解。

出0入0汤圆

发表于 2014-9-22 22:47:31 | 显示全部楼层
mark 下回来看

出0入0汤圆

 楼主| 发表于 2014-10-1 23:32:01 | 显示全部楼层
jiangtianyu007 发表于 2014-9-22 22:29
直接定为1应该不对吧。。。。个人觉得应该定为R,也是个参数,但是这样的话就变成非线性方程组了,需要用 ...

定为1是可以的,对后面的解是没有影响的。你说变成非线性方程组,请给你的原因,另外线性方程组难道不是用迭代法来解?

出0入0汤圆

 楼主| 发表于 2014-10-1 23:33:25 | 显示全部楼层
残忆视觉 发表于 2014-9-17 11:54
楼主,我和你的情况一样,一上电一段时间内,姿态会漂的很乱,但是过段时间就会稳定。我觉得是初始化四元数 ...

最近乱七八糟的事很多,等闲下来了,希望咱们能专门来讨论这个问题

出0入0汤圆

发表于 2014-10-2 12:55:28 | 显示全部楼层
真的很感谢!!

出0入0汤圆

发表于 2014-10-2 14:01:53 | 显示全部楼层
09年到14年的进步

出0入0汤圆

发表于 2014-10-8 19:57:14 | 显示全部楼层
楼主不错啊

出0入0汤圆

发表于 2014-10-8 20:24:04 | 显示全部楼层
问题来了之后居然不是挖掘机……

出105入79汤圆

发表于 2014-12-9 21:47:52 | 显示全部楼层
使用vs2012实现了一下,感觉很不错。 要是能够自动识别典型值就好了。其实就是当每个轴取得最大最小值的时候记录下当前的xyz,这样就有6个xyz了。  这种是一次线性拟合,期待楼主搞个非线性的拟合,能够纠正传感器的非线性就好了。
磁场强度应该取楼主给的示范数据的平方和应该为40000左右,大家根据各自的xyz取平方和就行了。这样校正出来的数据大小将会和原来类似。

还有一个问题,图片上的那行代码是【i】【j】吗? 我必须要取【j】【i】才能算对

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-12-11 09:58:59 | 显示全部楼层
qwe2231695 发表于 2014-12-9 21:47
使用vs2012实现了一下,感觉很不错。 要是能够自动识别典型值就好了。其实就是当每个轴取得最大最小值的时 ...

参考 18楼

出0入0汤圆

 楼主| 发表于 2015-3-29 09:22:11 | 显示全部楼层
qwe2231695 发表于 2014-12-9 21:47
使用vs2012实现了一下,感觉很不错。 要是能够自动识别典型值就好了。其实就是当每个轴取得最大最小值的时 ...

嗯 对的  这都是复制粘贴代码时发生了错误

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-3-29 19:01:56 | 显示全部楼层
先标记一下 有空学习研究

出0入0汤圆

发表于 2015-4-15 22:23:15 | 显示全部楼层
请问楼主,算出修正后的X,Y,Z数据之后,要如何计算出航向角Yaw?

出0入0汤圆

 楼主| 发表于 2015-4-16 10:01:00 | 显示全部楼层
iseafish 发表于 2015-4-15 22:23
请问楼主,算出修正后的X,Y,Z数据之后,要如何计算出航向角Yaw?

用AHRS      

出0入0汤圆

发表于 2015-5-26 11:54:30 | 显示全部楼层
谢谢分享!!!

出0入0汤圆

发表于 2015-8-3 14:45:14 | 显示全部楼层
必须赞楼主一个 ,很少有看到椭球拟合的,正蛋疼着呢

出0入0汤圆

发表于 2015-8-5 08:57:30 | 显示全部楼层
qwe2231695 发表于 2014-12-9 21:47
使用vs2012实现了一下,感觉很不错。 要是能够自动识别典型值就好了。其实就是当每个轴取得最大最小值的时 ...

上边的数据有6组,你说的平方和是他们的平均值吗?这个40000怎么确认的呢?

出0入0汤圆

发表于 2015-8-5 09:36:41 | 显示全部楼层
我的旋转以电子罗盘为中心吗?我是菜鸟,望不吝赐教,

出0入0汤圆

发表于 2015-12-17 11:55:03 | 显示全部楼层
请教楼主一个问题,在计算罗盘方位角的时候用俯仰和横滚角进行补偿但是补偿之后的数据乱飘,Xr=Xcosα+Ysinαsinβ+ Zcosβsin,Yr=Ycosβ- Zsin,就是当罗盘水平时即俯仰和横滚都为零时方位角才准确,不知道什么原因请您帮我看一下谢谢了!
http://www.amobbs.com/thread-5639795-1-1.html

出0入0汤圆

发表于 2016-7-13 10:49:41 | 显示全部楼层
谢谢分享!验证一下!

出0入0汤圆

发表于 2016-8-10 09:50:36 | 显示全部楼层
标记!!!!!

出0入0汤圆

发表于 2016-8-12 15:41:47 | 显示全部楼层
正在研究中~

出0入0汤圆

发表于 2016-8-15 14:28:32 | 显示全部楼层
我看了您的这个帖子,里面拟合椭球时有个矩阵matrix_A[NUM][NUM],这个矩阵代表什么含义,它的求解方式又是什么意思呢?不知道是否方便介绍下,谢谢

出0入0汤圆

发表于 2016-8-15 14:44:12 | 显示全部楼层
感谢楼主分享,里面拟合椭球时有个矩阵matrix_A[NUM][NUM],这个矩阵代表什么含义,它的求解方式又是什么意思呢?

方便的话想加一下您的QQ,谢谢。

出0入0汤圆

发表于 2016-8-15 14:45:44 | 显示全部楼层
感谢分享,里面拟合椭球时有个矩阵matrix_A[NUM][NUM],这个矩阵代表什么含义,它的求解方式又是什么意思呢?

不知道是否方便加一下楼主QQ,谢谢。

出0入0汤圆

发表于 2016-12-19 16:19:01 | 显示全部楼层
yaw在找地理北向呢。。。。所以才会乱跳

出0入0汤圆

发表于 2016-12-19 16:19:16 | 显示全部楼层
yaw在找地理北向呢。。。。所以才会乱跳

出0入0汤圆

发表于 2016-12-24 19:46:48 | 显示全部楼层
标记一下,最近也在看这方面的东西

出0入0汤圆

发表于 2016-12-30 15:18:34 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2016-12-30 20:01:05 来自手机 | 显示全部楼层
收藏,留用

出0入0汤圆

发表于 2017-1-1 19:39:47 | 显示全部楼层
一直在找椭球拟合算法,没找到好用的,感谢楼主

出0入0汤圆

发表于 2017-11-30 16:32:39 | 显示全部楼层
顶起,回头验证一下,多交流
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-16 13:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表