Skip navigation.

70池中之物

Ray's BLOG

August 2006

( Monthly archive )

Yaseu FT-7800R + Diamond 770R

成功安装到了车上,回头上两张靓照来秀一秀。
继续等待核配呼号中...

背景,能看到天线的,


中控台,


验机通过 - 成为准火腿

,

体谅,忠诚,进取,友爱,适度,爱国

今天一早赶往天莲大厦,不到9点就到达,经过不是很复杂的验机流程后顺利拿到检测通过通知单。然后再赶往天坛的中国无协交表,交钱,一切顺利,11点半赶回公司上班。

今天一路上使用昨天晚上花了2个小时制作的地图,非常精确,从天莲大厦到天坛的一段还带了个搭车的MM,一路上用自己做的地图导航很是顺利。

优秀程序员的个性特点

来自:http://www.softwarebyrob.com/articles/Personality_Traits_of_the_Best_Software_Developers.aspx

1, 做一个悲观主义者。

将开发应用程序看作是一件极度艰苦,在前进道路上充满荆棘和陷阱的征程。带着必死的信念才能绝地反击,一一击破困难,一步一步逼近 bug-free,并在长期意义上取得成功。

2, 极度反感垃圾代码。

文人相轻,而好的程序员往往容易走两个极端,对某些代码崇拜的不得了,而对垃圾代码则极度反感,这不仅仅包括代码,也包括解决方案。为了解决守护进程总是以为退出的问题而写一个脚本来定期重起的做法,最令优秀程序员看不起,解决问题就要解决根本。

3, 人生的长期规划者。

能够长期有步骤的规划自己的人生,说明了他具备了长期坚持一件事情的能力,也只有这样才能在长期的商业软件开发过程中持之以恒,一直保持严谨的工作态度,有张有驰。

4, 强烈关注开发细节。

对于代码中的拼写错误,排版不一致,甚至更小的看起来不影响程序运行的小的瑕疵都不能容忍,象强迫症一样一定要全部解决才罢休。这正是一个优秀程序员所应该具备的品质。

最好的程序员比最差的程序要员好28倍,从而我也知道了,为什么我周围的有些程序员朋友为什么那么成功。

网站推荐

Gtalk 再次升级 - 无比粗暴地

还在抱怨 Gtalk 总是偷偷摸摸地升级嘛?

昨天晚上打开电脑后马上在 Gtalk 上开始和朋友语音聊天,大概10分钟之后,突然聊天窗口被关闭,随机好友列表窗口也被关闭,Gtalk 退出,大概10秒中之后,Gtalk 重新启动,自动登陆。然后发现每个好友多了一个“Send voicemail" 的新选项。

PS: 今天在我的 R52 上似乎还没有耍流氓。

玩转GPS(二) - 基本概念与技术背景

- GPS 工作原理

又一次在文章基本上完成的时候,停电了!再次被考验意志了,我一定要坚持完成,而且要比第一次写的更好。

声明:本文所有的内容均来自于我自己的理解,或者从网上学习得来,如果有不对的地方请指正。

众所周知,GPS 系统通过 GPS 专用卫星来定位,GPS 卫星总共有24颗,全部由美国发射并维护,其中21颗用于运行,3颗备用。24颗卫星运行于近地20000公里的轨道上,平均的分布在6个轨道平面上,轨道倾角为55度,各个轨道平面之间相距60度。卫星的运行速度为每12小时绕地球飞行一圈。这样,我们的GPS 接收模块在任何时间至少可以在地平线以上看到4颗卫星,而事实上,4颗卫星可见也是接收模块进行定位的基本要求。

首先,我们搞清楚,GPS 接收模块通过接收卫星发射来的信息来进行自身的定位,然后才是进行进一步的数据处理,然后交给其他的部件,比如某种软件进行进一步的数据应用,比如导航,测速等等。那么接收模块是如何通过卫星提供的信息进行自身定位的呢?

学习过空间解析几何的朋友都知道,如果已知在三维空间中三个点的坐标,同时知道自身与这三个点之间的 距离,那么就可以把自身的坐标锁定在两个确定点之内。而如果还有第四个点做参考的话,那么可以从这两个点中筛选出自身的精确空间坐标。也就是说如果GPS接收模块能同时知道空中3颗卫星的空间坐标,以及距离这三颗卫星的距离的话,那么就可以定位出两个点,而现实中,GPS 接收模块没有必要联系第四颗卫星,即可确定自身的坐标,因为我们都清楚我们在地球上,因此可以排除另一个点。

对于卫星的空间坐标来讲,这个好办,因为所有卫星的轨道都是固定的,至少是可以非常精确预测或者计算的,所以时时刻刻卫星都知道自己在什么位置,并且可以通过广播的方式发射出去。OK. 那么我们假定天空中三颗卫星已经被你锁定,获取了他们的空间坐标,并且此时此刻他们是不动的,下一步,也是最重要的一步,就是你需要获得与他们之间的距离。如何获得?让卫星告诉我们吗?显然不行,因为卫星要同时给地球上所有的GPS接收模块服务,它不会帮我们计算,所以我们只能使用这个公式,距离=速度×时间。

无线电波无论通过什么频率在发射,它的速度我们常识上认为和光速是一致的,(虽然不同频率的电波在穿过大气层以及其他被其他空间物质所阻碍时会在不同程度上的改变速度,但是此时我们暂时忽略不计,事实上,这个偏差也确实不大);而时间呢,我们想象,如果在接收模块和卫星那段都有非常非常非常精确的时钟的话,当卫星在广播自身的空间坐标的同时加上时间戳,经过接收机对比本系统的时钟,就可以获悉电波的运行时间了。而事实上,在卫星上可以配备非常非常非常精确的原子钟,但是在GPS接收模块上的时钟却远没有卫星上的精确,试想无线电以如此快的速度传播,并且距离最多不过20000公里,一旦时间上有微小的偏差,那么定位距离将产生显著的差错。理论上似乎没有办法获得卫星与接收模块的精确距离了...

这时,工程相对于理论的优势就可以发挥作用了,也是时候请第四颗卫星出马了。注意,我们意识到所有的24颗卫星的时间都是一致并且是精确可靠的,而接收模块相对于卫星的时间误差也是一致的,所以只要找到这个误差值,那么问题就迎刃而解了。当我们发现通过已知的三个卫星数据计算出自身的坐标不对时,比如发现自己不在地球上,那么就需要用逼近的方法来不停的调整这个误差值,然后计算与第四颗卫星之间的理论距离,并与测算出来的距离进行比较,直到这个误差被消除为止。这样我们就得到了这个关键的参数,修正值,也就是在GPS软件中常常被显示的参数 - fix.

到此为止,重要的问题基本上已经被解决了。但是还有两个问题不可忽略,一个是,我们在前面假定四颗被锁定的卫星是固定不动的,事实上这样做是为了分析方便,实际上,卫星是在高速运动的,但是这并没有给数学建模造成多大的复杂度,因为当今对于 GPS 接收模块来说,存储所有卫星的星历,或者计算其星历都不是什么难事,也就是说固定时间内其行进的距离是可以计算出来的。另外一个问题就是无线电波在传输过程中的速度损失,而这是有理论依据,根据其传输频率,可以计算出其速度损失,从而做相应的调整。

除此之外,还会有各种干扰,以及其他一些不可测的因素会影响定位的精确性,这是无论如何也不能被避免的,这也是为什么一般来讲定位精度会在10米,而不是0.00001 毫米。

另外还有几个有意思的因素,一是有些时候你的 GPS 接收模块是不能同时看到4颗卫星的,虽然几率不大,但是确实存在这样的情况。二是你的 GPS 接收模块的核心性能参数不是其计算能力,而是其通道个数和时钟的准确程度,时钟直接决定了定位准确度以及做逼近所需的时间,而所谓的通道个数是指接收模块能同时和几个卫星通讯,理论上通道越多越好,假如有四个通道,那么初次定位以及计算修正值都不会因为通道切换而影响精确度,如果仅仅有一个通道,那么要轮询接收来自四颗卫星的数据,卫星可以以1000次/妙的间隔广播,但是你的接收模块恐怕难有这么快的轮询频率的。一般的民用设备会有三个通道。

还有,你知道为什么美国要让卫星以这么快的速度运行吗?答案是为了便于维护,因为这样的话,每颗卫星每天至少两次掠过管理中心的上空,管理机构每天可以对其进行两次维护,做必要的调整,比如对卫星做时钟校准操作等等。


- 相关的通讯协议

前面介绍的是接收模块和卫星之间的通讯原理,似乎离用户还是远了一些,我们只需要知道这个无线电辐射对人无害就足够了。而接收模块和 GPS 软件之间的通讯协议其实更有意思。

GPS 接收模块可能和软件集成在一个设备上,比如那些支持内置 GPS 模块的 PDA,而很多时候,GPS 接收模块和掌上设备或者说软件载体是分离的,他们之间相连的话,一般采用USB 直接连接或者蓝牙连接等方式,不论如何,我们认为这是物理层或者链路层的协议,甚至传输层的协议我们也不需要关心,这里我们关心的是 GPS 客户端软件如何与 GPS 接收模块交换数据。

对于专有品牌的硬件和其相应的软件产品往往他们之间采用私有的通讯协议,我们也不作探讨。对于标准的或者说通用的数据传输方式来讲,常用的是 NMEA (National Marine Electronics Association) 协议/标准,通过这个协议,GPS 接收模块可以实时的将初步加工好的数据传送给软件客户端,软件客户端也可以通过这个协议和硬件之间交换“路点”,“路径”文件(?待确认)。

事实上NMEA 不仅定义了坐标等信息的传输语句的格式,还针对硬件参数制定了很多规范。基本上对于地理信息的都是以 $ 开头的以行为单位的语句,其数据类型为纯文本。而实际上某些特定品牌,比如 Garmin, 甚至是基于同样的语法做的vendor 扩展,非常类似 Radius 协议。举个简单的例子说明,

语句为:

$PGRME,15.0,M,45.0,M,25.0,M*22

解释为:
PGRMEP 表示为厂商扩展,GRM 是Garmin的厂商代码,E 是语句类型,只被Garmin 识别
15.0,M Estimated horizontal position error in metres (HPE)
45.0,M Estimated vertical error (VPE) in metres
25.0,M Overall spherical equivalent position error

关于 NMEA 定义的进一步信息我会找时间再研究,或者是有需要的时候再进一步研究,感兴趣的朋友可以参考下面的参考文献。似乎没有针对NMEA 的RFC :smile:


参考文献:
http://www.gpsinformation.org/dale/nmea.htm
http://vancouver-webpages.com/peter/nmeafaq.txt

朋友

不过,我的温顺也是有限度的,由它去吧,我就是我。

---

<<4400>> 终于从 Athlon 那里考来了,在未来一周紧张的工作中会给我些许放松的。
周一去无线电管理局验我的 7800,然后准备装在车上了,不过这种雨季我还真不舍得把真钻的天线(俗称苗子)放在车外。
有朋友休假回来了,有朋友马上要去休假,那么我呢?
开始参与了一个新的项目,祝我自己好运!

朋友给我一个在线收音机的网址,基于web的,效果很好,歌曲我也非常喜欢。不过应其要求,不能共享给别人,所以自己独享ing...

200 KM/H - 从此以后

,

时速表的指针终于指到了200,虽然此时GPS测试出来的速度是189。但是从此以后我也不必再去探询究竟能开多快了。市区80,高速120将作为基本指导时速。

附: 如果真的要飙车的话,那么怎么飙?

1, 飙车不是竞速,竞速的话,那么就是比谁的车动力大了。所以飙车不要一味追求高速度,关键是加速时机。
2, 分析路况,利用慢车。路上有慢车的话,一定要利用,比如当你和慢车并排并把竞争者压在身后的时候,那么不要急于提速离开,这个时候可以找前面的时机,比如先降档,然后迅速提速到下一辆慢车旁,或者迅速从两辆慢车中穿过,并且不给后车跟上的机会,如此几次,他基本上就跟不上了。昨天成功的将一辆总是闪灯挑衅的雅阁以不足120km的时速压在身后十数公里。开车,也是要讲礼貌滴。
August 2006
S M T W T F S
July 2006September 2006
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31