导航与定位实验报告_第1页
导航与定位实验报告_第2页
导航与定位实验报告_第3页
导航与定位实验报告_第4页
导航与定位实验报告_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、导航与定位上机实习报告学生姓名: 孔 令 周 班 学 号: 20101002021/11610211 指导教师: 黄鹰 、 徐战亚 中国地质大学(武汉)信息工程学院 2011年 7月实习一 GPS设备使用【实验目的】(1) 熟悉GPS设备的使用(2) 熟悉GPS绝对静态定位和绝对动态定位(3) 使用GPS设备得出某一点、某一线、某一面的相关数据【实验设备】动态GPS接收机、静态GPS接收机、天线、GPS定位设备由于设别数目的限制,这次实习改用一个google的软件,获得GPS数据,此图为软件中的一张截图,上面显示了精准度157feet,卫星数目,每颗卫星的信号强度,这张图则显示了所在地的经度和

2、纬度分别为东经114度23分30.013秒北纬30度31分19.809秒。【实验步骤】时间:2012年9月2日中午12点30开始,下午三点中结束。内容:1、 测量点:测量点在北区,从艺术与传媒学院开始,经过北宗,北区食堂,北门,北区体育馆直到图书馆这一段路程,整个路线成G字型(如下图)。2、 测量线:线的话主要是艺术与传媒学院到北宗与隧道口延伸的路相交的 丁字路口,然后从该路口一直到北区食堂下面,在就走向北区校门,进而转向体育馆侧边的路,绕过体育馆到达图书馆正门这样一个路线(如下图)。3、 测量面:该路线主要包括了图书馆,北区篮球场,排球场,北一楼,北 区图书馆,经管院楼还有外国语学院楼。 【

3、实验结果】部分数据(全部数据在GPS_DATA.xls中):实习二 GPS定位接口解析与开发【实验题目】GPS信号解析编写小程序读取GPS信号并进行解析,将解析结果以一定形式展现出来。 根据老师用GPS导航仪测量得到的测量数据进行解析,将track.txt中的数据进行解析,根据不同的格式按照NMEA-0183协议对导航电文进行GPS信息的解析:1、使用语言不限:C , C+ ,C# ,JAVA2、对于获取信号可采用以一定时间间隔读取文件中GPS信号的形式代替从串口中读取信号。3、该实验基本要求能解析出空间信息(即解析GPRMC格式的GPS信号),其他信号格式的解析以及星历图的绘制可在完成基本要

4、求之后进行扩展。 4、对解析出来的数据进行画图处理,得到真正的轨迹。【实验原理】GPS设备通过对接收到的导航电文进行分析处理,计算出设备所在的经纬度、海拔、航速、航向等空间信息,并按照规定的协议将空间信息以及卫星信息进行组织,将有组织的数据解析出来然后做应用。初始化串口打开串口按字节读取串口发出的字符终止字符? 是 将所得到的字符拼接成字符串 否 根据字符串内容进行GSP解析GPS信号结果应用关闭串口【实验设计】1、 设计思想根据提供的txt文档,实现程序与文件之间的通信,读取txt中的内容,然后根据GPS解析协议将其进行解析。得到经纬度坐标,然后将经纬度坐标进行操作得到真实的轨迹路线图做出显

5、示。2、 详细设计声明对文件的关联对象Fielstream对象,声明对文件进行读取的对象Streamreader,然后对文件关联对象进行关联本地文件,然后用此关联对象初始化文件读取对象,然后对文件进行一步步的读取,对读取之后的数据进行立刻解析,根据解析协议的种类不同对不同类型的GPS数据进行解析,然后做输出处理。根据文件的头部信息我们可以知道经纬度在那些地方,由于我们只需要解析GPRMC数据,所以经纬度是很容易得到的数据,得到经纬度字符串之后就可以通过函数转换成可操作的经纬度数据,得到经纬度数据之后就转换成为屏幕坐标,然后就可以划线了。经过划线处理连续的划线就成就了轨迹。关于平滑的问题:由于画

6、出来的线可能会有一些点的问题会出现断线的可能和不连续,所以要做平滑处理,记录多个点,每两个点之间都划线一条就能满足平滑的要求。读取数据准备文件关联文件关联准备文件解析读取文件GPGSVGPRMCGPSGAGPGGA有效?无效数据 否 是使用经纬度绘图得到经纬度使用经纬度绘图【成果展示】【实验心得】【调试报告】1. 第一个遇到的问题是读文件的问题:因为要解析数据就必须要对文本进行解析,以前写的C#程序都是比较简单的程序,所有的操作都在内存中进行,只需要输入输出就够了,但是大型的问题光靠内存是远远不够的,数据量一大就不可能把所有的数据放在内存中,GPS这种数据大多来遥感数据和测绘数据,这些数据量都

7、是几何倍数的增长,要在内存中进行处理根本不可能,所以这个问题也是学习GPS所必须面临的问题,我第一次实习课基本就花在C#文件读取上面了。一旦文件可以读取其他的就好办,主要是声明一个文件流对象,然后将此文件流对象关联文件,在用这个文件流对象初始化一个读取流对象,然后调用读取流对象的读取方法。这样就可以实现读取了。2. tablecontrol控件:这是我第一次使用这个控件,真的挺好用的,效果也不错。考虑到要对不同类型的GPS数据进行显示,如果全部放在一个界面中就显得非常臃肿,所以我将他们分开在几个页面中,这几个页面通过tablecontrol控件进行管理,这样就显得比较有组织。3. string

8、的分段:因为要对不同数据进行判断,第一件事就是对数据集的头进行判断跟分类,可能是考虑到这一点,所有的GPS数据都是非常规矩的,头的长度都是一样长的,这样判断起来也比较方便,而且组织的时候都是用“,”做分段,这样就比较容易对数据进行切割,然后处理。4. 经纬度坐标转化成为屏幕坐标的方法:这是我早google上搜到的方法,首先把控制的警卫框架找到,最大经度减去最小经度,得到经度差。最大纬度减去最小纬度,得到纬度差。然后将经度差乘以3600除以面板宽度,纬度差乘以3600除以面板宽度得到每秒经纬度代表的屏幕像素坐标。最后为了让图像分布均匀。将实际的经纬度转化成秒,然后减去最小经度,然后除以每秒经度代

9、表的屏幕像素坐标。同理做纬度均匀。最后将坐标点得到然后划线。【心得体会】 GPS是一个非常重要的技术,精确的GPS数据时一把双刃剑。在好的一面他可以方便人们做很多东西,在今后的时代找东西将离不开地图,而地图如果要做到精确的话就不得不用到GPS数据。所以GPS数据是定量解析的基础数据。所有的定量分析都需要解析并且处理这些数据,这在生活上会给我们很大的方便,不仅在查找,交通导航等等方面都会有重要的用途。所以这次实习对我们帮助很大,他让我们了解到生活中的GPS数据的结构,让我们学以致用,了解熟悉GPS并且爱上GPS,我们熟悉他,解析他,应用它。可以创造出许多方便的应用于社会价值。在医疗,规划,建设等

10、方方面面都是重要的。 坏的一方面是过于精确的GPS数据让我们变得不安全,不仅是数据被盗窃之后可能造成国家的安全问题,对方的导弹什么的可以精确打击。对我们的危险太大了。错误的解析也会造成许多社会问题,比如修的地铁因为数据的偏差或解析的错误会造成重大的事故。所以我们处理GPS数据肩负十分重要的使命。我们会好好处理这些数据的。 然后对于做这样一次实习我学到很多东西:认识到生活中真真正正的GPS数据的样子和解析过程。他所遵循的结构规范,还有认识到公共接口的重要性,他 让数据变得有规矩。让我树立了做好一名程序员的信心。让我们知道了做好一个GPS解析与应用的重要性与基本方法。实习让我们有了一些经验与许多信

11、心。 最后做完期待已久的GPS室外实习以后,我感觉现在的卫星技术已经非常发达了。在看不见的天上居然有至少7颗卫星在飞着,想想都觉得不可思议。更不可思议的是我们可以与他对话,获得他得到的信息。这更让我感到GPS技术室一门很有前途很有魅力的技术!代码:第一题:string foresix;FileStream sFile;StreamReader sReader;public int NextPage(string str) int flag = -1;for (int i = 0; i < str.Length; i+) if (i < 6) foresix += stri;text

12、Box1.Text += stri;if (foresix = "$GPGSA") tabctl.SelectedTab = GPGSA;flag = 3;else if (foresix = "$GPGGA") tabctl.SelectedTab = GPGGA;flag = 2;else if (foresix = "$GPRMC") tabctl.SelectedTab = GPRMC;flag = 1;else if (foresix = "$GPGSV") tabctl.SelectedTab = GP

13、GSV;flag = 4;else MessageBox.Show("不?存ä?在¨²此ä?种?格?式º?!ê?");foresix = ""return flag;/显示:public void ShowPage(int flag,string str) if (flag = 1) textBox2.Text = ""textBox3.Text = ""textBox4.Text = ""textBox5.Text = "&

14、quot;textBox6.Text = ""textBox7.Text = ""textBox8.Text = ""textBox9.Text = ""textBox10.Text = ""textBox11.Text = ""textBox12.Text = ""textBox13.Text = ""textBox14.Text = ""for (int i = 7; i <= 8; i+) textBox

15、7.Text += stri;for (int i = 9; i <= 10; i+) textBox6.Text += stri;for (int i = 11; i <= 16; i+) textBox5.Text += stri;if (str18 = 'A') textBox12.Text = "有®D效¡ì"else textBox12.Text = "无T效¡ì"for (int i = 20; i <= 21; i+)textBox11.Text += st

16、ri;for (int i = 22; i <= 28; i+) textBox10.Text += stri;for (int i = 32; i <= 34; i+) textBox9.Text += stri;for (int i = 35; i <= 41; i+) textBox8.Text += stri;for (int i = 45; i <= 49; i+) textBox13.Text += stri;for (int i = 51; i <= 56; i+) textBox14.Text += stri;for (int i = 58; i

17、<= 59; i+) textBox4.Text += stri;for (int i = 60; i <= 61; i+) textBox3.Text += stri; for (int i = 62; i <= 63; i+) textBox2.Text += stri; tabctl.SelectedTab=START;sFile = new FileStream("track.txt", FileMode.Open, FileAccess.Read);sReader = new StreamReader(sFile);button1.Enabled

18、 = false;button2.Enabled = false;label55.Left -= 2;if (label55.Right < 0)label55.Left = this.Width;timer1.Enabled = false;string str = sReader.ReadLine();int flag=NextPage(str);button4.Enabled = false;button1.Enabled = true;button2.Enabled = true;ShowPage(flag, str);第二题:using System;using System.

19、Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace GPS public partial class Form1 : Form Bitmap bitM; Graphics g; Pen pen = new Pen(new SolidBrush(Color.Black), 2.0f); Point p

20、oint = new Point4; FileStream sFile; StreamReader sReader; int i = 4; int j = 0; double scaleX, scaleY,minX,maxY; string textline = File.ReadAllLines("track.txt"); int lines;/track共2有®D多¨¤少¦¨´行D public Form1() InitializeComponent(); bitM = new Bitmap(this.pane

21、l1.Width, this.panel1.Height); g = Graphics.FromImage(bitM); lines = textline.Length; private void button1_Click(object sender, EventArgs e) /panel1.Controls.Clear(); label1.Visible = false; pictureBox1.Visible = false; timer1.Enabled = true; sFile = new FileStream("track.txt", FileMode.Op

22、en, FileAccess.Read); sReader = new StreamReader(sFile); button1.Enabled = false; pictureBox2.Visible = true; pictureBox3.Visible = true; pictureBox4.Visible = true; pictureBox5.Visible = true; pictureBox6.Visible = true; pictureBox7.Visible = true; pictureBox8.Visible = true; pictureBox9.Visible =

23、true; pictureBox10.Visible = true; pictureBox11.Visible = true; private void panel1_Paint(object sender, PaintEventArgs e) ControlPaint.DrawBorder(e.Graphics,panel1.ClientRectangle,Color.Orange,ButtonBorderStyle.Solid); public void clin() textBox1.Text = "" textBox2.Text = "" tex

24、tBox3.Text = "" textBox4.Text = "" textBox5.Text = "" if (lines <= 30) timer1.Enabled = false; private void timer1_Tick(object sender, EventArgs e) if (lines >30) clin(); string tempstr1, tempstr2; string data; string str_time = new string4; string str_avaliable =

25、 new string4; string str_jd = new string4; string str_wd = new string4; int x = new int4; int y = new int4; double screenX = new double4; double screenY = new double4; while (i > 0 ) string str = sReader.ReadLine(); lines-; data = str.Split(','); str_avaliablej = data2;/有®D效¡

26、36;位? if (str3 = 'R' && str4 = 'M' && str5 = 'C' && str_avaliablej = "A") i-; tempstr1 = data3; tempstr2 = data5; screenXj = double.Parse(tempstr2) * 3600 / scaleX - minX; screenYj = maxY - double.Parse(tempstr1) * 3600 / scaleY; xj = (int)sc

27、reenXj; yj = (int)screenYj; str_timej = data1;/时º¡À间? str_jdj = data5; str_wdj = data3; j+; if (double.Parse(str_time0) >= 075245.000) pen = new Pen(new SolidBrush(Color.Red), 2.0f); for (int a = 0; a < 4; a+) pointa.X = xa; pointa.Y = ya; for (int a = 0; a <= 1; a+) textBox3

28、.Text += str_time0a; for (int a = 2; a <= 3; a+) textBox4.Text += str_time0a; for (int a = 4; a <= 9; a+) textBox5.Text += str_time0a; textBox1.Text = str_jd0; textBox2.Text = str_wd0; if (str_avaliable0 = "A") textBox6.Text = "有®D效¡ì" else textBox6.Text = &q

29、uot;无T效¡ì" clin(); g.DrawLine(pen, point0, point1); /this.panel1.BackgroundImage = bitM; /panel1.Refresh(); for (int a = 0; a <= 1; a+) textBox3.Text += str_time1a; for (int a = 2; a <= 3; a+) textBox4.Text += str_time1a; for (int a = 4; a <= 9; a+) textBox5.Text += str_time1

30、a; textBox1.Text = str_jd1; textBox2.Text = str_wd1; if (str_avaliable1 = "A") textBox6.Text = "有®D效¡ì" else textBox6.Text = "无T效¡ì" clin(); g.DrawLine(pen, point1, point2); /this.panel1.BackgroundImage = bitM; /panel1.Refresh(); for (int a = 0;

31、 a <= 1; a+) textBox3.Text += str_time2a; for (int a = 2; a <= 3; a+) textBox4.Text += str_time2a; for (int a = 4; a <= 9; a+) textBox5.Text += str_time2a; textBox1.Text = str_jd2; textBox2.Text = str_wd2; if (str_avaliable2 = "A") textBox6.Text = "有®D效¡ì" else textBox6.Text = "无T效¡ì" clin(); /this.panel1.BackgroundImage = bitM; /panel1.Refresh(); g.DrawLine(pen, point2, point3); for (int a = 0; a <= 1; a+) textBox3.Text += str_time3a; for (int a = 2; a <= 3; a+) textBox4.Text += str_time3a; fo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论