GPS单点定位实验报告

时间:2024.4.25

GPS原理与应用实验

  目:   GPS单点定位  

    业:    测绘工程     

    级:     12-01       

    号:    

    名:  

指导教师:  

时间:20##.11

目录

一、实验目的......................................................3

二、实验原理………..........................................3

三、实验内容……..............................................3

四、实验效果图..................................................9

五、实验总结......................................................9

一. 实验目的

1.深入了解单点定位的计算过程;

2.加强单点定位基本公式和误差方程式,法线方程式的记忆;

3.通过上机调试程序加强动手能力的培养。

二.实验原理

   一个接收机接受三个火三个以上卫星信号,得出卫星坐标和伪距,利用间接平差计算接收机的坐标。

 三.实验内容

1.程序流程图

                                              

2、实验数据

 

3、实验程序代码

Private Sub Command1_Click()

CommonDialog1.Filter = "TXT files|*.txt|"

CommonDialog1.FilterIndex = 1

CommonDialog1.ShowOpen

Open Me.CommonDialog1.FileName For Input As #1

Do While Not EOF(1)

Line Input #1, Text

textbuff = textbuff + Text + vbCrLf

Loop

Close #1

kk = MSFlexGrid1.Rows - 1

Dim a

ReDim a(kk - 1)

a = Split(textbuff, vbCrLf)

For j = 1 To kk

  For i = 1 To 5

  MSFlexGrid1.TextMatrix(j, i) = a(j - 1 + 5 * (i - 1))

Next i

Next j

For k = 1 To kk

MSFlexGrid1.TextMatrix(k, 0) = "第" & k & "个点"

Next k

MSFlexGrid1.TextMatrix(0, 1) = "X"

MSFlexGrid1.TextMatrix(0, 2) = "Y"

MSFlexGrid1.TextMatrix(0, 3) = "Z"

MSFlexGrid1.TextMatrix(0, 4) = "伪距"

MSFlexGrid1.TextMatrix(0, 5) = "钟差"

End Sub

Private Sub Command2_Click()

kk = MSFlexGrid1.Rows - 1

X0 = 0: Y0 = 0: Z0 = 0

c = 299792458

Dim a()

ReDim a(kk - 1, 3)

Dim ll()

ReDim ll(kk - 1, 0)

For ii = 1 To 100

For i = 1 To kk

 l = (MSFlexGrid1.TextMatrix(i, 1) - X0) / Sqr((MSFlexGrid1.TextMatrix(i, 1) - X0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) ^ 2)

 m = (MSFlexGrid1.TextMatrix(i, 2) - Y0) / Sqr((MSFlexGrid1.TextMatrix(i, 1) - X0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) ^ 2)

 n = (MSFlexGrid1.TextMatrix(i, 3) - Z0) / Sqr((MSFlexGrid1.TextMatrix(i, 1) - X0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) ^ 2)

 a(i - 1, 0) = l

 a(i - 1, 1) = m

 a(i - 1, 2) = n

 a(i - 1, 3) = -1

lk = MSFlexGrid1.TextMatrix(i, 4) - Sqr((MSFlexGrid1.TextMatrix(i, 1) - X0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) ^ 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) ^ 2) + c * MSFlexGrid1.TextMatrix(i, 5)

ll(i - 1, 0) = lk

Next i

gzs = xc(qiuni(xc(zz(a), a)), xc(zz(a), ll))

X0 = X0 - gzs(0, 0)

Y0 = Y0 - gzs(1, 0)

Z0 = Z0 - gzs(2, 0)

j = j + 1

Next ii

Text2.Text = "X=" & X0 & vbCrLf & vbCrLf & "Y=" & Y0 & vbCrLf & vbCrLf & "Z=" & Z0

V = jian(ll, xc(a, gzs))

zjl = xc(zz(V), V)

σ0 = Sqr(zjl(0, 0)) / (kk - 3)

Qx = qiuni(xc(zz(a), a))

Text3.Text = "σX=" & σ0 * Sqr(Qx(0, 0)) & vbCrLf & vbCrLf & "σY=" & σ0 * Sqr(Qx(1, 1)) & vbCrLf & vbCrLf & "σZ=" & σ0 * Sqr(Qx(2, 2))

End Sub

Private Sub Form_Load()

MSFlexGrid1.ColWidth(1) = 1300

MSFlexGrid1.ColWidth(2) = 1300

MSFlexGrid1.ColWidth(3) = 1300

MSFlexGrid1.ColWidth(4) = 1300

Text2.Text = ""

Text3.Text = ""

End Sub

'矩阵相减

Public Function jian(m, n)

Dim i, j As Integer

If UBound(m, 1) <> UBound(n, 1) Or UBound(m, 2) <> UBound(n, 2) Then

MsgBox ("请确认输入数组是否可以相减!")

Else

Dim c()

ReDim c(UBound(m, 1), UBound(n, 2))

For i = 0 To UBound(c, 1)

For j = 0 To UBound(c, 2)

c(i, j) = m(i, j) - n(i, j)

Next j

Next i

jian = c

End If

End Function

'矩阵的转置

Public Function zz(a)

Dim i As Integer, j As Integer, t As Integer, b()

If UBound(a, 1) = UBound(a, 2) Then

For i = 0 To UBound(a, 1)

For j = 0 To UBound(a, 2)

If i < j Then

t = a(i, j)

a(i, j) = a(j, i)

a(j, i) = t

End If

Next j

Next i

zz = a

Else

ReDim b(UBound(a, 2), UBound(a, 1))

For i = 0 To UBound(a, 2)

For j = 0 To UBound(a, 1)

b(i, j) = a(j, i)

Next j

Next i

zz = b

End If

End Function

'两矩阵相乘

Public Function xc(a, b)

Dim i As Integer, j As Integer, k As Integer

If UBound(a, 2) <> UBound(b, 1) Then

MsgBox ("这两个矩阵不能够相乘")

Exit Function

End If

ReDim sd(UBound(a, 1), UBound(b, 2))

For i = 0 To UBound(a, 1)

For j = 0 To UBound(b, 2)

For k = 0 To UBound(b, 1)

sd(i, j) = sd(i, j) + a(i, k) * b(k, j)

Next k

Next j

Next i

xc = sd

End Function

Public Function qiuni(a)

Dim c, m%, n%, p#, l%, i%, j%, ab#

m = UBound(a, 1)

n = UBound(a, 2)

If m <> n Then

MsgBox ("该矩阵不可逆!!!")

Exit Function

End If

ReDim c(m, 2 * n + 1)

For i = 0 To m

 For j = 0 To n

  c(i, j) = a(i, j)

  Next j

Next i

For i = 0 To m

 For j = m + 1 To 2 * m + 1

  c(i, j) = 0

  Next j

Next i

i = 0

For j = m + 1 To 2 * m + 1

 c(i, j) = 1

 i = i + 1

 Next j

For k = 0 To n

 If c(k, k) = 0 Then

 For i = k + 1 To n

  If c(i, k) <> 0 Then

   GoTo this

   End If

  Next i

 If i = n + 1 Then

 MsgBox ("该矩阵不可逆!!!")

 Exit Function

 End If

this:

 For j = 0 To 2 * m + 1

  p = c(k, j)

  c(k, j) = c(i, j)

  c(i, j) = p

  Next j

  End If

ab = 1# / c(k, k)

For j = 0 To 2 * m + 1

 c(k, j) = c(k, j) * ab

Next j

For i = 0 To n

 If i <> k Then

  For j = 0 To 2 * m + 1

    If j <> k Then

    c(i, j) = c(i, j) - c(i, k) * c(k, j)

    End If

  Next j

  c(i, k) = 0

 End If

Next i

Next k

For i = 0 To m

 For j = 0 To m

  a(i, j) = c(i, j + n + 1)

  a(i, j) = Round(a(i, j), 4)

  Next j

Next i

qiuni = a

End Function

四.实验结果图

五.实验总结

   此次实验让我深入了解单点定位的计算过程,加强了对单点定位基本公式和误差方程式,法线方程式的记忆。并通过上机调试程序加强了自己动手能力的培养。通过此次实验为以后的GPS的学习打下了基础。


第二篇:声源定位和GPS模拟实验报告


声源定位和GPS模拟实验报告

一.实验原理

1.     声源定位(二维)


如图所示,3个接收传感器S 0、S 1、S 2的坐标分别是(X 0,Y 0)、(X 1,Y 1)、(X 2,Y 2),当平面上某处(X,Y)发出超声波时,该信号将先后被3个传感器所接收,设时间分别是t 0,t 1,t 2,实验只能测出它们到达各个传感器的时间差△t 1=t 1-t 0, △t 2=t 2-t 0。设声波沿媒质表面的传播度为c,对换能器S 0、S 1而言,声源发生的位置应该在到该两点的距离差为c△t 1的曲线上,这是一条双曲线。显然,利用△t 1、△t 2可以得到两条双曲线,它们的交点即是声源

将S0设为原点,声源位置为(X,Y),用极坐标表示,则满足:

化简整理的

引入,    则可得

至此,声源位置已通过极坐标给出。

2.     GPS模拟

本实验对GPS过程的声学模拟是在一个二维的平面上进行的,位置(Xi,Yi)(i=1,2,……)已知的发送换能器(传感器做发送用,模拟“导航卫星“)发出声波(模拟卫星发出的电磁波),被位置(X,Y)的待求接收传感器(模拟用户)接收,它们之间有关系:

  (i=1,2,……)

式中c为波的传播速度。显然,对一个二维的定位问题(确定X和Y),如果传播速度已知,要算出X和Y可以归结为一个求解两个变量的代数方程问题,也就是说原则上只要有两颗不同位置的模拟卫星就行了。实际的GPS定位,则至少要对四颗卫星同时进行测量,才能确定地球坐标系中的三维坐标和因接收机时钟不同步所造成的种差修正。在本实验中,为了减小时差不准对定位精度的影响,应当获取来自多个“卫星“的位置和时差信息,并通过最小二乘法求得”用户“的位置和声波的传播速度。即当n大于3时,

F(X,Y,c)==min

由此可获得X,Y,c应满足的一组代数方程:

这是一个三元的非线性代数方程组,可通过计算方法求得数值解。若c未知,而且需要考虑钟差修正,则获得一组四元代数方程。可由牛顿迭代法求数值解。

二.实验仪器

传播媒质、模拟源(铅笔芯折断)、压力传感器、接收放大器、时差测定装置、计算机、隔离放大器、单脉冲发生器。

实验电路:

三.数据处理

1.     声源定位

选择坐标(50,200)单位:时间us   位置mm

实验测得的结果(49.8,201.9)跟实际值相比相差很少,笔芯折断的位置和网格的误差都有可能引起实验结果与实际值的差异。

2.     GPS模拟

计算的P3的坐标为X=-0.00170731 mm    Y=-0.00144067mm

实验误差较小

主要误差来源:发生器的位置读数有误差,传感器与媒质界面的接触不均匀也可能带来误差。

思考题

1.1从测量原理、仪器组成和信息特点来讨论声源定位和GPS仿真实验的相同点和不同点。

答:测量原理:前者是已知接收器位置求声源位置;后者是已知发生器位置求接收器位置。

仪器组成:前者:传播媒质、电压传感器、接收放大器、时差测定仪、模拟源。

后者:传播媒质、电压传感器,接收放大器,时差测定仪、隔离放大器、单脉冲发生器。

信息特点:都是位置坐标和时间差。

2考虑到钢媒质的表面波传播速度约为3000 m/s,传播距离最长约为54cm,那么时差测定仪最大的读数应该不会大于多少?

答:t=d/c=180us

2.1声源定位的发射源位置如何确定?是否用两个时差就可以了?

答:用时间差所确定的双曲线的交点坐标即发射源坐标。两个时间差就可以了。

2GPS仿真实验用最小二乘法求数值解时,一般会涉及4个待测参数,除用户接收机的X,Y坐标和传播速度C以外,另一个参数是什么?有无具体的物理意义?

答:另一个参数为钟差,它是卫星与接收器时间同步性的一个衡量指标。

1、 声源定位

#include

#include

using namespace std;

#define c 2982

#define pai 3.1415926535

int main()

{

double x0,x1,x2,y0,y1,y2,t0,t1,t2,t3,A,B,D,angle1,angle2,dt1,dt2,r;

x0=0,x1=0,x2=0.3;

y0=0,y1=0.45,y2=0.45;

int i = 8;

while(i--)

{

        cout <<"请输入第"<<8-i<<"组时间数据"<< endl;

        cin >> t1 >> t2>> t3;

        t1 = t1 / 1000000;

        t2 = 0;

        t3 = t3 / 1000000;

        dt1 = t1 - t2;

        dt2 = t3 - t2;

        A = x2*(pow(x1,2)+pow(y1,2)-pow(c*dt1,2)) - x1*(pow(x2,2)+pow(y2,2)-pow(c*dt2,2));

        B = y2*(pow(x1,2)+pow(y1,2)-pow(c*dt1,2)) - y1*(pow(x2,2)+pow(y2,2)-pow(c*dt2,2));

        D = c*dt1*(pow(x2,2)+pow(y2,2)-pow(c*dt2,2)) - c*dt2*(pow(x1,2)+pow(y1,2)-pow(c*dt1,2));

        angle2 = atan(B/A);

        if(acos(D/sqrt(pow(A,2)+pow(B,2)))+angle2 < pai/2)

               angle1 = acos(D/sqrt(pow(A,2)+pow(B,2)))+angle2;

        else

               angle1 = angle2 - acos(D/sqrt(pow(A,2)+pow(B,2)));

        r = (pow(x1,2)+pow(y1,2)-pow(c*dt1,2))/(2*(x1*cos(angle1)+y1*sin(angle1)+c*dt1));

        cout << "声源坐标为:("<

} // end while;

return 0;

} // end main;

2、 GPS模拟

#include

#include

#include

using namespace std;

#define c 2982

#define min 0.0000000001

void GPS(double x[10] , double y[10] , double t[10] , double x1 , double y1 , int num)

{

       double a1,a2,a3,a4,b1,b2,mult,D=0,E=0;

       int i;

       while(1)

       {

              a1 = a2 = a3 = a4 = b1 = b2 = 0;

              for(i = 0; i < 10; i ++)

              {

                     a1 = a1-(3*pow((x[i]-x1),2)+pow((y[i]/1000-y1),2)-pow(c*t[i]/1000000,2));

                     a2 = a2+2*(x[i]/1000-x1)*(y1-y[i]/1000);

                     a3 = a2;

                     a4 = a4-(3*pow((y[i]-y1),2)+pow((x[i]/1000-x1),2)-pow(c*t[i]/1000000,2));

                     b1 = b1+(pow((x[i]/1000-x1),2)+pow((y[i]/1000-y1),2)-pow(c*t[i]/1000000,2))*(x1-x[i]/1000);

                     b2 = b2+(pow((x[i]/1000-x1),2)+pow((y[i]/1000-y1),2)-pow(c*t[i]/1000000,2))*(y1-y[i]/1000);

              } //end for;

              mult = a3/a1;

              a4 -= a2*mult;

              b2 -= b1*mult;

              E = b2/a4;

              D = (b1-a2*E)/a1;

              x1 += D;

              y1 += E;

              if((pow(D,2)+pow(E,2)) < min)

                     break;

       } // end while;

       x1 = x1*1000;

       y1 = y1*1000;

       cout <<"点P"<< num <<"定位于: X = "<< fixed << setprecision(8)<< x1;

       cout <<"(mm) , Y = "<< fixed << setprecision(8)<< y1 <<"(mm)"<

} // end GPS;

int main()

{

       int yy;

       double t1[10] , t2[10] , t3[10] , x[10] , y[10];

       cout << "请输入时间数据(us)与坐标数据(mm):" << endl;

       int i;

       for(i = 0; i <= 9; i ++)

       {

              cout << "第" << i+1 << "组:" << endl;

              cin >> t1[i] >> t2[i] >> t3[i] >> x[i] >> y[i];

       } // end for;

       GPS(x,y,t1,0,0.45,1);

       GPS(x,y,t2,0.3,0.45,2);

       GPS(x,y,t3,0,0,3);

       cin>>yy;

       return 0;

} // end main;

更多相关推荐:
单位推荐报告

关于某某同志初聘为中学二级教师职务的推荐报告某某同志,男,19xx年x月出生。20xx年x月毕业于某某学院,本科学历,文学学士学位。20xx年x月参加工作,现在桃溪镇初中任教。该同志自参加工作以来,认真备课、上…

单位推荐报告

关于推荐为优秀教师的报告男年月出生年月毕业于莱阳农学院本科学历年月参加工作现在任教该同志自参加工作以来认真备课上课听课评课及时批改作业讲评作业做好课后辅导工作广泛涉猎各种知识形成比较完整的知识结构严格要求学生尊...

人才引进单位申请报告

关于王哲同志的人才引进申请报告上海市人力资源和社会保障局上海东方证券资本投资有限公司以下简称东证资本系东方证券股份有限公司以下简称东方证券专业直接投资机构东证资本成立于20xx年2月主要从事境内企业股权投资股权...

单位自查报告

治庸问责自查总结20按照市委十一届十一次全体扩大会议关于掀起责任风暴实施治庸计划优化投资发展环境重要指示精神市旅游局党组高度重视成立了局党组书记局长张侠任组长的治庸和优化环境工作领导小组多次召开动员会议推进会议...

单位工伤事故报告

单位工伤事故报告兹有县中学职工女汉族年月日生身份证号码5331220227年7月参加工作中学一级教师职务为副校长分管教学语文骨干教师任初三年级143班147班语文课每周每班5节课因20xx年2月26日星期二早上...

单位工程开工报告

单位工程开工报告工程开工复工报审表湘监统编施20xx12工程名称桂阳县仁义镇中心学校中学部综合楼和多功能厅工程编号00001施工现埸质量管理检查记录湘质监统编湘质监统编桂阳县仁义镇中心学校中学部综合楼和多功能厅...

事业单位清算报告

事业单位法人清算报告范本XX局举办单位根据XX县机构编制委员会审批机关关于同意撤销XX事业单位批复X编20xxXX号文件精神XX事业单位已撤销退出事业单位序列本清算组自XX年XX月XX日正式成立现将本清算组成立...

机关、事业单位辞职报告

辞职报告尊敬的XXX厅办公室领导您好非常感谢领导给予我在厅办公室工作的机会以及在这一年半里对我的帮助和关怀因我应聘XXX单位XXX一职并已得到录用故现向厅办公室提出辞职申请我于20xx年8月到XXX厅工作感谢办...

勘察单位质量检查报告1

勘察单位质量检查报告注1本表为A4页面打印2质量检查意见应包括以下内容1图审机构对勘察文件提出的整改意见落实情况2工程中勘察变更文件变更程序是否符合要求3勘察单位对单位工程质量检查的总体评价及竣工验收意见设计单...

设计单位工程质量评价报告

设计单位工程质量评价报告工程名称兴文县大树子煤矿扩建工程施工单位兴文县大树子煤矿设计单位工程质量评价报告

单位工程质量评估报告

JLC005房屋建筑工程和市政基础设施工程单位工程质量评估报告监理号工程名称子项名称监理单位章甲乙丙级年月日工程概况SN9120xx0000004989建龙软件打印批准文号川建发20xx280号四川省建设厅监制...

监理单位单位考察报告

来广营A4B4组团项目监理单位考察报告一中咨工程建设监理公司中咨工程建设监理公司是中国国际工程咨询公司全资子公司成立于19xx年1月注册资金20xx万元人民币是国内最早从事工程项目管理工作的专业公司之一公司发展...

单位报告(41篇)