欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

easy_GPS开源代码归整!

程序员文章站 2024-02-11 21:25:52
...

1、最小二乘求解单点定位:

当矩阵G可逆时,如下两种求解方式一致!

G*Δx=b

Δx=inv(G^G)*G^b

代码出现在:

easy_GPS开源代码归整!

2、利用伪距进行相对定位中:easy4

选取卫星高度角最大的一颗,当作参考卫星!

    %选高度角最大的当作参考星
    flag=0;
    if flag==0
        id=find(max(el)==el);
        flag=1;
    end
    
for iter = 1:30
    % k is the reference satellite. We select the first one   k是参考卫星,选择第一颗卫星作为参考卫星

    [tcorr,rhok_j,Xk_ECF] = get_rho(time, obs2(id), Eph(:,col_Eph(id)),X_j);      % time时刻,卫星k钟差,流动站j到卫星k的距离rhok_j,卫星k(第一颗)的位置
    [tcorr,rhok_i,Xk_ECF] = get_rho(time, obs1(id), Eph(:,col_Eph(id)),X_i);      % time时刻,卫星k钟差,参考站i到卫星k的距离rhok_i,卫星k(第一颗)的位置
%     obs2(id)=[];obs1(id)=[];Eph(:,col_Eph(id))=[];
%     for t = 1:m-1 % t runs over PRNs given in sats; ref.sat. is number 1
    t=1;
    while (t<=m)
        [tcorr,rhol_j,Xl_ECF] = get_rho(time, obs2(t), Eph(:,col_Eph(t)), X_j);       % time时刻,卫星t钟差,流动站j到卫星t的距离rhok_j,卫星t(t = 2:m)的位置
        [tcorr,rhol_i,Xl_ECF] = get_rho(time, obs1(t), Eph(:,col_Eph(t)), X_i);       % time时刻,卫星t钟差,参考站i到卫星t的距离rhok_i,卫星t(t = 2:m)的位置
        A(t,:) = [(Xk_ECF(1)-X_j(1))/rhok_j - (Xl_ECF(1)-X_j(1))/rhol_j,  ...   % (参考卫星-流动站)-(卫星-流动站)
            (Xk_ECF(2)-X_j(2))/rhok_j - (Xl_ECF(2)-X_j(2))/rhol_j,  ...
            (Xk_ECF(3)-X_j(3))/rhok_j - (Xl_ECF(3)-X_j(3))/rhol_j];             % 接收机间求一次差,卫星间求二次差后组成的双差观测方程 系数阵 A
        observed = (obs1(id)-obs2(id))-(obs1(t)-obs2(t)); % (参考卫星和基准站伪距-参考卫星和流动站伪距)-(基准站伪距-流动站伪距)
        calculated = (rhok_i-rhok_j)-(rhol_i-rhol_j);
        omc(t,1) = observed - calculated;     % 常数项 = 双差观测值 - 双差计算值
        t=t+1;
    end; % t 
    %删掉
    A(id,:)=[];omc(id)=[];

注意参考星选好了之后,如何构建矩阵:参考谢刚P171

easy_GPS开源代码归整!

3、