一、目的:
通过团队协作项目,完成一个软件模块从需求分析、功能分解、编程实现到测试集成的流程,在此过程中掌握相关团队协作、流程管理和软件构建工具的使用,锻炼在项目开发过程中有效和团队成员沟通交流,编写清晰的项目文档,分工协作达成项目目标的能力。
二、团队项目流程和评价标准:
请参照FFL博士的博客中描述的“团队项目alpha阶段”内容,利用github的相关功能和插件完成项目。
三、团队组成
团队不少于4人,不多于8人,并推选一名Project Manager。本周完成团队组建、确定团队任务和Project Manager推选工作。
四、团队任务
团队成员协商选择如下选项之一作为开发任务:
1)完成一个完整的桌面冰球机器人游戏项目(功能描述见第四周作业)。
2)完成其中的一个子系统。
3)完成其中的两个或三个子系统。
最终都要提交一个可以运行的软件及相关技术文档,子系统划分见第五点。
五、桌面冰球机器人游戏软件子系统划分:
1)机器人实时控制子系统:
- 输入:目标击球位置,到达该位置的时间,以及在该位置击球器的速度矢量。
- 输出:在每个控制周期给出X轴和Y轴的实时位置和速度指令。
- 主要参数:X轴和Y轴的最大行程、最大速度加速度限制。
- 功能:能够根据输入的运动目标指令,实时规划从当前位置达到目标击球位置的运动轨迹,以及到达击球位置后的减速停止轨迹,在每个控制周期输出X轴和Y轴的位置和速度设定值。
2)物理引擎子系统
- 输入:击球器的当前位置和速度(受机器人控制)。
- 输出:冰球的当前位置和速度。
- 主要参数:游戏桌几何尺寸(长、宽和底边上的门洞宽度),冰球和击球器的几何尺寸,仿真物理过程所需要的动力学参数。
- 功能:根据系统参数创建一个仿真系统,根据初始条件能实时计算出冰球在游戏台上与挡板和击球器的碰撞作用下的位置和速度。
3)游戏策略子系统
- 输入:冰球的当前位置和速度。
- 输出:目标击球位置,到达该位置的时间,以及在该位置击球器的速度矢量。
- 主要参数:与物理引擎子系统的参数相一致。
- 功能:根据冰球当前位置和速度,确定击球点,计算出击球器的控制指令。
4)GUI子系统
- 输入:击球器、冰球的当前位置和速度。
- 输出:每个控制周期两个驱动轴的实时位置和速度指令。
- 主要参数:与物理引擎子系统的参数相一致。
- 功能:能实时显示击球器和冰球在游戏桌上的运动,并提供适当的人机操作接口。