Skip to content

Latest commit

 

History

History
85 lines (52 loc) · 4.81 KB

项目总结.md

File metadata and controls

85 lines (52 loc) · 4.81 KB

项目总结

1 项目完成状况

1.1 机器人子系统

完成度估计:80%.

基本实现梯型插值,其中正向运动的插值能够通过单元测试。负向运动尚有未解决的问题。已经整合至系统中。

1.2 物理引擎

完成度估计:75%.

完成了物理引擎的数学建模。包括碰撞检测,碰撞物理过程求解。但是代码未能通过编译,无法检测算法是否正确。

1.3 系统框架

完成度估计:95%.

系统框架已经基本定型,各个线程(任务)间通信模块经白盒测试均能正常运行,内存管理正常。但是由于子模块的开发进度不理想,无法很好地整合各子模块进行最后的运行。

2 成员贡献

注:按姓名排序

姓名 学号 主要负责内容 净提交代码/文档行数
姜娇英 U201310615 插值算法设计、单元测试编写 297-151=146
李君威 U201310747 运动策略 ---
涂虎 U201310626 运动策略 ---
王冉 U201310666 物理引擎设计 667-502=162
张启宁 U201210709 系统框架设计 1426-608=818
周佩 U201310616 插值算法设计、代码编写 274-94=180
朱凯 U201310678 物理引擎设计 323-151=172

提交代码/文档行数见Github仓库统计,截止至最终提交前一次提交。

3 软件编译运行方式

首先,将本项目的文件克隆到本地并进入到该文件夹:

git clone https://github.com/RTCSD2016/air_hockey.git
cd air_hockey

然后构建:

cmake .
make

生成文件在build目录下:

cd build
./air_hockey           # 主程序
./unit_test            # 启动单元测试

4 个人总结

姜娇英

和周佩一起完成了机器人插值运动以及单元测试,运用了梯形插值法并且可以完成正向测试。由于时间仓促,没能完成进阶要求即S形插值。

王冉

这次项目我主要完成了物理引擎部分各参数的确定,冰球类,球桌类和击球器类的定义。和朱凯同学合作写了碰撞检测,冰球速度,位置更新的函数,同时留出了得分和碰撞两个函数调用的接口供任务使用。通过项目复习了C++面向对象的编程,对操作系统的工作过程有了基本的了解。后面非常可惜没有能完成程序编译和单元测试,感觉水平还有待提升,今后继续学习。

张启宁

在这个项目中我主要负责设计整个系统的结构、编写任务管理与通信代码、编写构建系统代码等等。在此过程中我学习使用了 Xenomai 各种 API,熟悉了 C++ 的编译过程及特点,能够基本使用 cmake 编写较复杂的自动化构建系统,学习了单元测试库 CppUnit 的使用,还练习使用了一些常见的简单的设计模式。

我在这个项目中充当 Program Manager 的角色。根据我的理解,这个角色主要是负责从宏观上设计整个程序的架构、协调不同模块间的接口等。之前有过不少小型项目经验,不过都是一个人做的小项目,出现问题可以很快地解决,毕竟自己完全了解程序中的每一个细节。在这一次的合作项目中,我才发现一群人编写代码要麻烦多了,最大的困难在于沟通上。因为沟通的成本很高,沟通中往往会出现理解的偏差,从而影响彼此的代码质量。虽然最后无法完成项目有点遗憾,但是还是学到了很多东西。在此,非常感谢队友们对我的不成熟组织能力的包容。谢谢!

周佩

在本次的团队项目中,我主要参与了插值模块的设计和代码的编写。通过团队项目,我学会了使用git进行团队合作,复习了以前学习过的C++程序设计,了解了谷歌代码规范,进一步感受到了C++类的继承、实现及其封装性,学会了基础的Linux操作。较为可惜的是,我写的插值代码并未考虑应对特殊情况,又由于沟通不到位,导致后期单元测试过程不顺利。此外,这次的项目让我更加明白了团队合作中成员责任感的重要性。

朱凯

在整个项目中做的是物理引擎这一块。这一块主要的任务其实就碰撞检测和碰撞速度计算。有现成的开源物理引擎可以用,粗略的学习了一下ODE,感觉对这个项目来说杀鸡用牛刀,而且学习成本高。所以就打算自己写。建立物理模型和数学模型,然后转换成代码。第一次用github用起来很不熟练,学了一个新东西。还有编译代码也很烦人,编译器很不好用,可能是用vs习惯了。最后也没能完整完成任务。