《实时控制软件设计》第四周作业

一、博客作业:

本学期课程的目标是完成一个二轴桌面冰球游戏的软件设计。一种冰球桌游戏台实物如下图所示(可到淘宝京东等网站搜索一些实际品牌产品介绍和玩法):

在Linux(xenomai)环境下中开发一个类似的游戏软件,该软件有如下相对独立的软件模块:

1) 冰球桌仿真环境:包含一个冰球桌面(及四周的挡板球洞),一个冰球,一个或两个击球器的模型, 类似下图所示。基于物理引擎模拟冰球与击球器和挡板的碰撞产生的实际运动。仿真可支持练习模式和对战模式。练习模式下只有一个半区有击球器,由仿真环境随机发球给击球器;对战模式下两个半区各有一个击球器。仿真环境要实时对外提供冰球和击球器的当前状态(位置和速度)。

2)一个两轴平面直角机械手,控制击球器在桌面的半区运动,打击从对面半区发来的冰球,通过运动规划控制击球器运动,使冰球进入对方球洞得分。机械手的控制软件包括但不限于如下功能:

  • 根据仿真环境提供的冰球当前的运动状态,制定运动策略,确定击球点。

  • 发送运动控制指令给机械手控制器,使其能在给定时间点,在预期的位置以预期的速度击打到冰球。

  • 机械手控制器解析并执行运动控制指令,并通过轨迹插补和加减速控制使运动平滑。

所有同学将通过参加不同的开发小组来完成各自的具体任务。小组的组建在第四周完成。请在博客中针对整个系统设计或其中的某一个功能阐述你的设计思路和方案,包括但不限于:

1)可以使用的第三方库和工具。

2)模块和任务的划分,以及相互之间的数据接口和通信机制。

3)关键的算法以及算法的设计与仿真。

并在下周课堂上参与讨论并完成小组分工和组建。

二、编程作业:

  • 完善自己在第三周编写的轨迹插补程序,参照整个团队项目的需求进行功能扩展。

  • 针对团队项目需求,编写一个c++的头文件,定义一个类对象,完成一个具体的功能,可不用给出具体的成员函数实现,但用注释语句说明该函数的功能,将该文件提交到github。
    (比如定义一个Axis对象,成员变量包括轴参数、轴状态、所接受的运动指令队列等数据,成员函数包括参数初始化、运动指令处理等函数)

posted @ 2016-12-16 09:28  chenhust  阅读(383)  评论(0编辑  收藏  举报