改完几个小类后,开始对Road和Cross这样主要的类开刀了,不动则以,一动则全动啊~~
原来的代码逻辑上的混乱造成的后果开始显现了,在一个类里面堆积了大量的代码,到处相互影响,很难简单的分成几个类,需要重新设计、考虑,加上lp心情不太好,周末过得真是焦头烂额啊!
终于周一了,大量要移出的函数已经标注出来了,底层数据结构也基本理顺了,下面要加速了!最多一个礼拜之内就要重构完成,然后添加xith3d的显示代码,看看三维的效果如何~:)
2008年3月31日星期一
2008年3月28日星期五
查看java源码的利器——AmaterasUML
AmaterasUML是自动生成UML图的Eclipse插件,可以import现存的Java代码,生成UML图。这个功能对于现在的我来说真是再适用不过了~~
作为Eclipse的插件,安装十分简单,下载解压缩到plugin目录下就可以了,需要注意的是要求Eclipse为3.3版本,且依赖于GEF插件,这都很容易满足。
我的用法是在src目录下new一个uml文件夹,然后在其中新建和Java类同名的cld文件,然后在编辑区内右键java->import,输入Java类名,然后确定就可以了,会马上生成UML图,非常的快。我准备将所有的类都生成UML图,然后导出为图片,放在一个文件里看,这样比看源码要舒服多了~~
实践证明我前面的想法是naive的!!将所有相关的Java类(比如说一个包内的所有类)导入到一个cld文件中,再自动排列一下,就可以更自然生成相互间的关系,比自己手动放入一个文件看要方便多了~~真是个好东西啊:)
作为Eclipse的插件,安装十分简单,下载解压缩到plugin目录下就可以了,需要注意的是要求Eclipse为3.3版本,且依赖于GEF插件,这都很容易满足。
我的用法是在src目录下new一个uml文件夹,然后在其中新建和Java类同名的cld文件,然后在编辑区内右键java->import,输入Java类名,然后确定就可以了,会马上生成UML图,非常的快。我准备将所有的类都生成UML图,然后导出为图片,放在一个文件里看,这样比看源码要舒服多了~~
实践证明我前面的想法是naive的!!将所有相关的Java类(比如说一个包内的所有类)导入到一个cld文件中,再自动排列一下,就可以更自然生成相互间的关系,比自己手动放入一个文件看要方便多了~~真是个好东西啊:)
xith3d可以用scala调用了
原理上来说,xith3d作为java实现的一个库,应该很容易用scala来调用的。不过由于我对scala还不熟悉,加上对ecllipse环境也有点迷糊,昨晚没有搞定,不过大概知道问题出在哪里了。今早过来就开始添加jar文件,设置VM参数,果然就可以了。速度上好像是比Java直接调用要慢一些,不过考虑到语法上的便利性,这点损失还是值得的~~
2008年3月27日星期四
解决了xith3d在eclipse里找不到jogl的错误
把xith3d的例子程序拷贝到eclipse的工程中,当然相应的jar文件也拷贝到lib目录下了,并且添加为build path了,运行时报错,分析了一下,主要是java.library.path中找不到相应的dll文件(我是在Windows下)。上网查了一下,java.class.path是寻找*.jar文件的目录集,java.library.path是寻找动态链接文件(在Windows下就是dll文件)的目录集,我没有如命令行下一样-Djava.library.path=...,所以就报错了~~
知道怎么回事以后就添加上吧,可是在run dialog里先是在Arguments里的Program arguments里设置,没用!后来在VM arguments里设置才OK了~~
-Djava.library.path=${workspace_loc:jJTSS}\lib\third-party\gluegen\windows-i586\;
${workspace_loc:jJTSS}\lib\third-party\jogl\windows-i586\;
${workspace_loc:jJTSS}\lib\third-party\lwjgl\win32;
${workspace_loc:jJTSS}\lib\third-party\joal\windows-i586
其中${workspace_loc:jJTSS}就是当前项目的根目录,这样可以避免eclipse拷到其他目录下运行时会出现错误,要重新修改路径。
知道怎么回事以后就添加上吧,可是在run dialog里先是在Arguments里的Program arguments里设置,没用!后来在VM arguments里设置才OK了~~
-Djava.library.path=${workspace_loc:jJTSS}\lib\third-party\gluegen\windows-i586\;
${workspace_loc:jJTSS}\lib\third-party\jogl\windows-i586\;
${workspace_loc:jJTSS}\lib\third-party\lwjgl\win32;
${workspace_loc:jJTSS}\lib\third-party\joal\windows-i586
其中${workspace_loc:jJTSS}就是当前项目的根目录,这样可以避免eclipse拷到其他目录下运行时会出现错误,要重新修改路径。
scala与java在eclipse中共存
开始重构了,先把原来的源码看了一遍,加上不少中文的注释,大致明白当初自己是怎么想的了:)
下面就是重构java代码,已经写得差不多的部分保留,其他部分干脆就用scala重写一遍,作为better java,scala的语法更加简洁,可读性更强,这两天看scala by example,除了16、17两章看得头晕外,其他基本上都明白了,下面就要动手实践了~~
今天要在eclipse里原来的JTSS工程里加入scala的代码,遇到了问题。开始时是无法new新的scala的package出来,总说没有文件夹,我新建了folder也不行,后来总算发现要将新建的folder设为src才行。写了个简单的scala文件出来,却无法运行。到bin目录下看了一下,根本就没有编译,只是简单的将*.scala文件拷贝到bin的相应目录下!看来是scala没起作用。上网搜了一下,在这里找到了个解决方案,可是实验了一下,还是不行,而且将project clean了一下后出现大量错误,连java的编译器也不工作了,我仔细看了帖子的内容,发现是由于JDT的独占性造成的,Eclipse的Groovy插件已经解决了这个问题,可scala的好像还没解决~
没办法,只好用土办法,新建一个scala的工程,将scala的代码放到里面,再设置JTSS为依赖的项目。编写一个简单的scala文件,使用了JTSS中的一个自写的简单类,可以运行。不过这两个工程的名字该叫什么才好呢?分别叫jJTSS和sJTSS吧~~哈哈
下面就是重构java代码,已经写得差不多的部分保留,其他部分干脆就用scala重写一遍,作为better java,scala的语法更加简洁,可读性更强,这两天看scala by example,除了16、17两章看得头晕外,其他基本上都明白了,下面就要动手实践了~~
今天要在eclipse里原来的JTSS工程里加入scala的代码,遇到了问题。开始时是无法new新的scala的package出来,总说没有文件夹,我新建了folder也不行,后来总算发现要将新建的folder设为src才行。写了个简单的scala文件出来,却无法运行。到bin目录下看了一下,根本就没有编译,只是简单的将*.scala文件拷贝到bin的相应目录下!看来是scala没起作用。上网搜了一下,在这里找到了个解决方案,可是实验了一下,还是不行,而且将project clean了一下后出现大量错误,连java的编译器也不工作了,我仔细看了帖子的内容,发现是由于JDT的独占性造成的,Eclipse的Groovy插件已经解决了这个问题,可scala的好像还没解决~
没办法,只好用土办法,新建一个scala的工程,将scala的代码放到里面,再设置JTSS为依赖的项目。编写一个简单的scala文件,使用了JTSS中的一个自写的简单类,可以运行。不过这两个工程的名字该叫什么才好呢?分别叫jJTSS和sJTSS吧~~哈哈
2008年3月25日星期二
面试小结
经历了中兴的笔试、面试,今天终于结束了。
笔试的题目能做的都做了,还有就是一点也不懂的,通讯方面的东西。
面试的一面感觉很糟糕,本以为肯定歇菜了,没想到还是通知我二面了,二面没谈什么技术方面的东西,主要是个人和企业文化方面的契合度,扯了一通。英语口试就是随便聊聊,没什么好说的。
小结一下,面试还是要准备充分一些,一面中很多东西其实都懂的,没准备好,不知从何答起,给人的感觉就是支支吾吾。二面就好了很多,更自信,思维更清晰了。
面中兴这样的企业,和自己的专业关系不大,做的项目也扯不上什么关系,只有嵌入式系统还能谈谈,一面时的c语言小程序让我很是郁闷,实力完全没有展现出来,不过这和当时的心理状态也是有很大的关系,只有心态好了才能发挥出水平~~
以后要注意了~~
笔试的题目能做的都做了,还有就是一点也不懂的,通讯方面的东西。
面试的一面感觉很糟糕,本以为肯定歇菜了,没想到还是通知我二面了,二面没谈什么技术方面的东西,主要是个人和企业文化方面的契合度,扯了一通。英语口试就是随便聊聊,没什么好说的。
小结一下,面试还是要准备充分一些,一面中很多东西其实都懂的,没准备好,不知从何答起,给人的感觉就是支支吾吾。二面就好了很多,更自信,思维更清晰了。
面中兴这样的企业,和自己的专业关系不大,做的项目也扯不上什么关系,只有嵌入式系统还能谈谈,一面时的c语言小程序让我很是郁闷,实力完全没有展现出来,不过这和当时的心理状态也是有很大的关系,只有心态好了才能发挥出水平~~
以后要注意了~~
2008年3月19日星期三
从测试开始重构
JTSS的重构从测试开始~~
先力求能在程序中将scala用起来,以前的java代码能用的则用,不能用的则用scala重写,测试代码用JUnit4,不知道能不能测试scala的代码,边走边看吧~~
先力求能在程序中将scala用起来,以前的java代码能用的则用,不能用的则用scala重写,测试代码用JUnit4,不知道能不能测试scala的代码,边走边看吧~~
2008年3月17日星期一
2008年3月14日星期五
课题论述
交通信息工程及控制主要研究的是交通领域的信息化、智能化,我研究的动态路径诱导DRGS(Dynamic Route Guidance System)是智能交通系统ITS(Intelligent Traffic System)研究的一个重要方面,也是改善城市交通运输状态比较直接、见效最快的途径之一。DRGS是基于电子、计算机、网络和通信等现代技术,利用全球卫星导航系统GNSS(Global Navigation Satellite Systems)、电子交通图(Electornic Map of Traffic Network)、计算机和先进的通信技术,使得车载计算机能够自动显示车辆位置、交通网络图和道路交通状况,还可根据出行的起讫点向用户提供最优路径引导指令和丰富的实时交通信息,或者通过获得的实时交通信息帮助驾驶员找到一条从出发点到目的地的最优路径,其特点是把人、车、路综合起来考虑。
因此,动态路径诱导系统可以充分发挥信息技术的作用,通过许多不同学科高新技术的融合,体现了解决交通问题的“智能”性。系统所具有的实时最优路径选择功能,能够通过城市交通控制中心提供的信息,为驾驶员找到从当前位置至目的地的最优路径,以减少车辆在道路上的滞留时间,这样就可以缓解城市交通的压力,减少城市交通阻塞,并且最终实现交通流在路网中各个路段上的合理分配。不仅如此,动态路径诱导系统还可以给驾驶员带来实在的效益,因此该系统已经成为国内外研究和开发ITS的热点。
动态路径诱导系统是一个比较复杂和庞大的系统,即便是其中一个子系统的研究,往往也涉及到大量的内容和研究工作。通过查阅资料,从国内外研究现状可以看出,即使是目前开发最为成功的诱导系统,也同样存在着各种各样的不足。因此本课题针对直接影响当前动态路径诱导系统实用性的一些关键技术展开研究。以现有动态路径诱导系统的薄弱环节——系统有效性验证为核心,重点研究符合实际驾驶行为的交通仿真模型,以及驾驶行为模型的标定方法等,同时实现了一个车载诱导平台原型,和仿真平台相连接,对动态路径诱导系统的有效性进行度量。
因此,动态路径诱导系统可以充分发挥信息技术的作用,通过许多不同学科高新技术的融合,体现了解决交通问题的“智能”性。系统所具有的实时最优路径选择功能,能够通过城市交通控制中心提供的信息,为驾驶员找到从当前位置至目的地的最优路径,以减少车辆在道路上的滞留时间,这样就可以缓解城市交通的压力,减少城市交通阻塞,并且最终实现交通流在路网中各个路段上的合理分配。不仅如此,动态路径诱导系统还可以给驾驶员带来实在的效益,因此该系统已经成为国内外研究和开发ITS的热点。
动态路径诱导系统是一个比较复杂和庞大的系统,即便是其中一个子系统的研究,往往也涉及到大量的内容和研究工作。通过查阅资料,从国内外研究现状可以看出,即使是目前开发最为成功的诱导系统,也同样存在着各种各样的不足。因此本课题针对直接影响当前动态路径诱导系统实用性的一些关键技术展开研究。以现有动态路径诱导系统的薄弱环节——系统有效性验证为核心,重点研究符合实际驾驶行为的交通仿真模型,以及驾驶行为模型的标定方法等,同时实现了一个车载诱导平台原型,和仿真平台相连接,对动态路径诱导系统的有效性进行度量。
个人简介
在网上填了个人简介,这里也放一份吧~~
本科时开始对计算机产生兴趣,在正常学习之余辅修了计算机专业课程,本科毕业前曾在南京一私企社会实践,除了软件编程外还接触到了硬件,开始对硬件也产生了兴趣。本科毕业后保送研究生,导师的研究方向偏向硬件,我所作的项目也基本上是硬件设计和嵌入式软件编程。用过silicon公司的C8051F005(指令集和C51相同),加上光耦、显示屏和小电机组成输液泵,没有用嵌入式操作系统,直接对硬件编程控制;用过TI公司的C5402,全汇编实现七号信令的第二层协议;用过三星公司的S3C2410,加上GPS接收机、触摸屏组成车载诱导平台原型,以Xenomai(基于Linux的开源嵌入式实时操作系统)加QtopiaCore(开源跨平台图形库)为基础实现功能,编程语言为ARM汇编、C、C++。
除了嵌入式系统编程外,对普通计算机编程也有所涉足。平时自己用的一些工具类小程序,如文本处理,word文档合并之类的,主要是用python来编写,作为动态语言,python语法简练,支持的库也很多,用起来很方便。大一些的程序,如交通仿真平台这类软件,主要用java和scala来编写。Java作为工业级软件,还是值得信赖的。Scala具有动态语言的语法,同时能进行静态类型检查,写出的代码最后还是编译为可在JVM上运行的字节码,和Java是绝佳搭配!当然Jython也是一个选择,据说sun公司也开始支持了。对于算法方面的研究主要用Matlab来实现,用过其中的遗传算法、神经网络和模糊控制工具箱,感觉用于科学计算,特别是包含矩阵的运算,比较强大,但对通用编程的支持(尤其是面向对象编程方面)很烂,奇烂无比。图形界面编程方面用Qt和Xith3d,Qt就不用多说了,开源、跨平台、功能强大,现在已经不仅仅是图形库了,简直就是一个跨平台的编程环境了!Xith3d是为了交通仿真平台(用Java实现)而选用的,API类似于Java3D,底层可以换用多种库来实现,jogl、lwjgl,甚至Qt-jambi也快要实现了!很好,很强大~
业余时间对计算机科学的新方向和新动态,特别是开源软件方面的动态比较关心,也用过不少开源软件。对Linux系统比较喜欢,最近更是爱上了KDE4~
平时喜欢体育运动,特别是打篮球,场上司职锋卫摇摆人,喜欢LJ(勒布朗-詹姆斯)的风格,当然也是火箭的拥趸。
个性随和,容易与人相处,有团队合作的经验。
2008年3月13日星期四
乱了乱了,好好理理
忙了一个中午,现在开始眼皮打架头发晕了,感觉事情好多啊,得理理了~~
由小李的文章想到lp的文章,自己看了不少资料了,也该总结一下了,与其写在blog里,不如整理成文章的形式,往一般的杂志上投投,也顺带解决了lp的问题,也可以当成练笔了,无论什么事情,只要练习(训练)足够多,没有干不了的!
手头上可以写CAN、Xenomai、RTDM,下面可以写ACO,Multi-agent,动态路径优化,先把想法写出来,往一些小杂志上投投,通过写文章总结再深入,再投核心的~~
想的挺美的哦,哈哈:)
有几件事是要做的:
文章且不说,手头有两本书要看,一本是“蚁群优化”,介绍ACO的,动态路径搜索就从它开始起步;另一本是“Killer Game Programming in Java”,介绍Java2d/3d编程的,对于我用xith3d编程有借鉴作用,而xith3d是用于交通仿真平台的图形界面编程的,这个仿真平台对于大论文是不可或缺的!
另外手头的两篇小文章要赶紧写完,最迟15号都要结束。16号就要开始新的工作了!
由小李的文章想到lp的文章,自己看了不少资料了,也该总结一下了,与其写在blog里,不如整理成文章的形式,往一般的杂志上投投,也顺带解决了lp的问题,也可以当成练笔了,无论什么事情,只要练习(训练)足够多,没有干不了的!
手头上可以写CAN、Xenomai、RTDM,下面可以写ACO,Multi-agent,动态路径优化,先把想法写出来,往一些小杂志上投投,通过写文章总结再深入,再投核心的~~
想的挺美的哦,哈哈:)
有几件事是要做的:
- 最佳聚类数确定,利用确定后最佳聚类数据构建TSK模型,对TSK模型的规则进行解释,结合实测数据进行试验,对实验结果进行分析,最好的结果就是精度也合适,解释性也强。
- 交通流短时预测,对现有的预测方法进行分析,找出比较好的来用,当然可以略加修改,不过主要还是应用现有的方法,不费心思去研究了~
- 动态最短路径搜索,先编出经典OpenClose表的算法,然后编写元启发式算法,包括进化计算、蚁群等等,构建可控仿真环境,对各个算法在仿真中的效果进行比较,针对交通流动态变化的特点,找出一个能快速求出最佳路线的方法,当然算法肯定依赖于交通流短时预测的好坏,不过也不能完全依赖,鲁棒性要强,并且最好不要频繁变化,对给出的最优路线能在线更新,并且能与驾驶者交互,让其选择最终路线。嘿嘿,好像要求还挺高的哦~~
- 移植嵌入式实时操作系统Xenomai到fs2410上,编写RTDM和实时应用程序。RTDM主要是关于串口的,实时应用程序主要注意IPC,多线程、多进程环境下能保证程序正常运行。图形界面用QtopiaCore实现,已经完成基础工作了,上层应用软件部分编程牵扯到地图数据,静态动态信息的存储、查询,动态路径查找算法的实现,这些都是要花功夫搞定的。
文章且不说,手头有两本书要看,一本是“蚁群优化”,介绍ACO的,动态路径搜索就从它开始起步;另一本是“Killer Game Programming in Java”,介绍Java2d/3d编程的,对于我用xith3d编程有借鉴作用,而xith3d是用于交通仿真平台的图形界面编程的,这个仿真平台对于大论文是不可或缺的!
另外手头的两篇小文章要赶紧写完,最迟15号都要结束。16号就要开始新的工作了!
2008年3月7日星期五
2008年3月4日星期二
关于Xenomai可以做些什么
关注Xenomai已经有一阵子了,一直想为它做点什么,使用它当然是一个途径,不过暂时没时间来用,怎么也要到4月份才能开始动手用。那么之前就翻译一些它的文档放到blog上,可能不是这里,因为国内访问这里有点麻烦,所以想放在space的blog上。
话归正题,一直想在实时嵌入式系统方面做些文章,但是仅介绍是不行的,结合Xenomai做个系统可以算一个吧,当然里面还要有些算法的内容。能想到的另一个途径是写驱动方面的东西,例如基于RTDM的驱动程序。
以上的想法都要等到手头上的东西完成才能启动,4月份我看差不多吧~~
话归正题,一直想在实时嵌入式系统方面做些文章,但是仅介绍是不行的,结合Xenomai做个系统可以算一个吧,当然里面还要有些算法的内容。能想到的另一个途径是写驱动方面的东西,例如基于RTDM的驱动程序。
以上的想法都要等到手头上的东西完成才能启动,4月份我看差不多吧~~
2008年3月2日星期日
订阅:
博文 (Atom)