【摘 要 】分析定位系统软件IPS设计的几个问题,包括建模,及对异常处理、通讯信号处理、绘制图像的部分探讨.
【关 键 词 】水下定位;软件;C#
1.概述
随着社会的发展,海洋资源显得越来越重要.而人类探索、开发海洋资源的主要工具之一就是水下机器人.有缆遥控水下机器人(ROV)、无缆水下机器人(AUV)是两大发展方向.当ROV潜入水下时通过电缆可以传输它的方位信息,但AUV没有电缆就难以知道它在水下的方位了.
一般水下机器人下水时都会带上一个声信标,并通过费伦蒂公司海洋研究设备部(Ferr-
anti O.R.E)研制的综合超短基线声跟踪系统Trackpoint之类的设备,获得水下目标相对母船的位置.如果把这个信息输入到计算机,并利用GPS获得母船的经纬度,就可以计算出水下目标的经纬度.Integrated Positioning System(IPS)是创新水下技术有限公司(Creative Underwater Technology Inc.)开发的一套软件,就可以进行这样的计算.
但IPS是一个独立的程序,使用时需要占用一台主机,并且购写IPS的不菲.如果研究自主的类似IPS的定位系统(MyIPS),不仅节约采购经费,还可以把程序嵌入到AUV的水面监控系统中.
MyIPS综合了多门学科,主要用到计算机图像、通讯、信号处理、大地测量等.
2.系统结构
2.1 硬件
工控机一台,有25针和9针RS-232串口各一个;
4410D型TrackpointⅡ,带发声器,应答器;
NovAtel公司OEM4型GPS卡.
2.2 系统结构
MyIPS利用4410D型TrackpointⅡ获取水下目标的相对位置,用GPS卡获得母船的大地坐标.然后计算出水下目标的大地坐标.其结构如图1所示:
3.数学模型
从系统结构图可以看到,MyIPS有两个数据源:TrackpointⅡ数据和GPS数据.MyIPS的关键就是从这两组数据计算出所需.
如果归结成数学问题就是已知椭球面上一点的经度纬度(母船的经度纬度,由GPS获得),椭球面上另外一点至该点的大地线长度和大地线的方位角(水下目标相对母船位置,由TrackpointⅡ获得),推求另外一点的经度纬度.这是高等大地测量学中的大地主题正解问题.如图2所示:椭球面极三角形PAB,P为极点,A点为椭球面上一已知点,大地线AB的大地方位角A1.2亦为已知值,且已知A及B两点间的大地长度S1.求B点的经度纬度.对这个问题我国著名大地测量专家张志新曾于六○年代提出过计算公式,见参考文献[1、2].这里根据实际的需求情况,在允许的误差范围内进行简化,以便于计算.
当声信标的类型为TRANSPONDER或RESPON-DER4410D型TrackpointⅡ的绝对精度如下表所示:
实际上4410D型TrackpointⅡ的有效距离为2km,当距离为2km时TrackpointⅡ的误差至少为2km×0.5%等于10m.参考“国际椭球”的参数,取地球的曲率半径等于6,371,228米,在以为半径的球体中,弦长L等于2km对应的弧长S为:
S等于2×arcsin等于2×6371228×acsin ()≈2000.0188m
S-L等于0.0188<<10m.
S和L的值相差不大,远小于Trackpoint的10m误差,因此就把TrackpointⅡ测量的距离当做两点间的大地线长.同时以平面坐标系来计算B点的坐标.同样采用“国际椭球”的参数.如图3所示,A点为母船位置,用GPS获取该点的经纬度,B点为水下目标的位置.当Trackpoint系统连接上COMPASS后,将COMPASS/RS232 DATA设置为以正北为基准,Trackpoint输出的BRG(BEARING,目标方向)就是∠NAB,X就是△x,Y就是△y.则:
纬度差为:360°×;
经度差为:360°×.
若COMPASS/RS232 DATA没被设置为以正北为基准,则∠NAB等于HDG(HEADING,母船方向)+BRG(BEARING,目标方向),又因为AB等于S.R.(SLANT RANGE,斜距),则△x等于S.R*sin∠NAB,△y等于S.R*cos∠NAB.
用A点(母船)的经纬度相应加上经度纬度差就得到B点(目标)的经纬度.
在距离不远的情况下,这样计算的精度就可以满足要求了.
4.软件设计
4.1 设计概要
本人使用的是Visual C#.NET,所以以下举例是基于C#语言.
MyIPS具有可视化的界面,有便捷的操作菜单和工具条,其界面如图4所示:
MyIPS不仅以数字的形式反映数据,还可以图形的方式直观的反映出,母船与水下目标的位置关系.
程序简要流程图如图5所示:
4.2 主要技术及算法
①异常处理
当要从COM1和COM2读取数据,及试图和数据库连接时可能出现异常情况.因此使用try-catch 语句对可能出现的异常进行处理,以增强软件的健壮性.
实际使用中COM端口可能会被占用或其它故障,以致无法使用.将打开COM端口的命令放到try语句块中,则当出现以上可能时,程序转到catch语句,执行异常情况下的处理程序.
②数据处理
Trackpoint输出的数据格式有九种,而GPS输出的数据也有好几种.以GPS的GPGGA格式数据为例: $GPGGA,082631.00,3041.4634,N,11118.4636,E,1,06,1.5,128.29,M,-24.23,M,,*46
这是一条完整的GPGGA格式的GPS数据,可以看到数据的开头有一个标识符号$,当从缓冲区读取数据时,读到$字符就表示后面的数据就是要提取的有用信息.
对于Trackpoint输出的NMEA ORE、NMEA TTM格式的数据也是以“$”符号作为开始标志.NCSC格式以“J”符号作为开始标志,其它格式的数据虽然没有特殊的符号作为开始标志,但它们的开头都包含时间信息如“16:55:32”,但读到相隔两个字符长度的“:”时,就表示一条数据开始了.
数据处理的代码如下:
取出各有效字段后,还要将其类型由字符串型转化成浮点小数型,再进行数据计算,并把结果存储到数据库文件中去.
③绘图
检测设以母船为中心,在800*600的矩形中心画上船的标记,同时定义一个变量Tick作为放大倍数.
母船的位置在屏幕上以像素表示为点(400,300),经度和纬度差的数值很小,在距离近时可能只有0.0001°的差别,因此需要将经纬度差乘上Tick,比如:当Tick等于10000时,则经纬度每变化0.0001°,在屏幕上的变化就是一个像素的位移.屏幕的像素是以左上角为原点的,如果按上北下南左西右东的方向在屏幕上建立坐标系,则目标B点的像素坐标表示成如下(在东北半球时):
等于+Tick×△x(等于400,为A点像素的X坐标);
等于-Tick×△y(等于300,为A点像素的Y坐标);
当在其它半球时需相应变换正负号.
若定义两个变量WE和NS,当在东半球时WE等于1,在西半球时WE等于-1;
当在南半球时NS等于1,在北半球时NS等于-1;
修改上面公式成:
等于+WE×NS×Tick×△x(等于400,为A点像素的X坐标);
等于+WE×NS×Tick×△y(等于300,为A点像素的Y坐标);
WE和NS的取值可由GPS数据判断.如:
$GPGGA,082631.00,3041.4634,N,11118.4636,E,1,06,1.5,128.29,M,-24.23,M,,*46
通过数据分析函数可以提出第3和第4个逗号之间的字符“N”,表示在北半球,所以NS等于-1,同样“E”表示在东半球,所以WE等于1.
另外,视图的放大和缩小按钮可以改变Tick的大小,然后刷新视图,这样可以满足目标和母船距离远近不同时在屏幕上的反映.
5.结论和建议
从上述可以看出,设计IPS的主要技术并不复杂,但实际中因为TrackpointⅡ和GPS发送数据的速率不同,要想更快的分析数据,还必须研究优化的算法.为了提高在远距离时计算结果的精度,还要对数学模型进行改进,添加修正参数.