这一个月因为要赶ChinaOpen的关系,将原本的开发进度加快了很多,将更多的时间放在了Coding上。
1. 首先是增加对3D sim里面的很多概念都有了更加深入的理解,比如simulation里面的时间,还有机器人的关节和相对坐标系的表示等。这些概念虽然相对于整个Agent的框架来说只是很小的一部分,但是对于整个Agent的正确运作却有着至关重要的作用。
2. 理解Server的重要性。作为一个Agent,对于环境的假设越少,那么他的通用性就会越高。但是我发现在Server的设计中,有很多我们可以利用的设计模式和函数库,或者从更小的层面上来说,可以利用里面的一些常量和函数,因为Server的库写得相当不错。从这个方面来说,Apollo3d做的就相当不错,他们SF上面公开的Basecode就基本是利用了server的底层框架写的。而且了解Server的一些配置对于以后的调试和训练也很有帮助,比如自己写一个训练场景的配置,然后利用这个场景来进行测试。这些都需要对server作一些深入的了解。
3. 对于在做大型工程里面,一个好的调试方案是一个提高开发效率的很重要的因素。从这个层面来说,图形界面相对于传统的CLI界面有着天然的优势,不单只是实时性上,而且在可视性和可理解性上也是。而在当前我在开发Agent的时候仍然是利用的非常原始的text界面的调试方法,也并没有形成一个非常正规的思路,所以有时候在调试BUG的时候会显的非常让人烦躁而沮丧。在接下来的工作中,应该首先找到一个调试的思路,并且尝试可视化的途径。这样可以使自己的思路不被打断。
4. 时刻保持清醒的头脑是最重要的,而不是一味的coding。虽然coding可以增加代码,但是不一定可以增加实际的进度。在进行开发的时候,经常的就是因为没有coding而觉得进度很慢,然后如果头脑不清醒的话,很容易导致垃圾代码的产生,并由此导致BUG的出现,有可能最终并不比考虑清楚之后的时间快。
5. 对于Script+ C++的驱动方式很感兴趣,希望之后有机会探讨一下这方面的可能性。如果是要利用scripting language来担当高层驱动的话,那么在设计的最开始就需要考虑上层决策的思考模型,这样就可以为上层编写一个一致的底层接口以供使用。这种方法是一种top-down的方法,和我现在接触的bottom-up有很大的区别。