《实时控制软件设计》第三周作业
一.阅读笔记:
1. Xenomai简介:
- Xenomai 是一种采用双内核机制的Linux 内核的强实时扩展。由于Linux 内核本身的实现方式和复杂度,使得Linux 本身不能使用于强实时应用。在双内核技术下,存在一个支持强实时的微内核,它与Linux 内核共同运行于硬件平台上,实时内核的优先级高于Linux 内核,它负责处理系统的实时任务,而Linux 则负责处理非实时任务,只有当实时内核不再有实时任务需要处理的时候,Linux 内核才能得到运行的机会。
- Xenomai 基于Adeos(Adaptive Domain Environment for Operating System)实现双内核机制。Adeos 的设计目标是为操作系统提供一个灵活的、可扩展的自适应环境,在这个环境下,多个相同或不同的操作系统可以共存,共享硬件资源。目前,Adeos 是基于Linux 内核实现的,主要的应用是在Linux 的实时化方面,使基于Linux 的系统能满足强实时的要求(例如Xenomai 和RTAI3.2 以上版本都是基于Adeos 实现的)。在基于Adeos 的系统中,每个操作系统都是在独立的域内运行(但不一定所有的域实现的都是操作系统,也可以是完成其它功能的软件实体),每个域可以有独立的地址空间和类似于进程、虚拟内存等的软件抽象层,而且这些资源也可以由不同的域共享。
- Xenomai 在Adeos 系统中的域优先级高于Linux 域,每当中断到来之后,Adeos先调度Xenomai 对该中断进行处理、执行中断相应的实时任务,只有当Xenomai 没有实时任务和中断需要处理的时候,Adeos 才会调度Linux 运行,这就保证了Xenomai的中断响应速度和实时任务不受Linux 的影响,从而提供了实时系统的可确定性。Xenomai 实时内核为开发强实时应用提供了丰富的功能,主要包括实时线程调度与管理、用户空间实时任务支持、线程同步服务、时钟服务、中断服务、动态内存申请和实时对象注册服务等。
2. 团队项目
2.1项目简介:
完成一个团队项目,主要功能是实现一个两轴机械手的运动控制仿真,主要功能包括:
- 用户接口任务:负责接收来自用户的请求,并发送运动指令给轨迹插补任务。
- 轨迹插补任务:接收运动指令,实时计算各轴的位置和速度设定值。
- 物理引擎接口:基于ODE开源物理引擎,创建一个两轴机械手及环境的物理模型,用轨迹插补任务输出的各轴位置和速度设定值控制模型的运动,并把实时状态反馈给轨迹插补任务。
- 图形化用户接口:可基于qt把上述功能集成到一个GUI界面。
2.2感兴趣模块:
对物理引擎接口模块比较感兴趣,之前也有接触过Unity3D物理引擎。
2.3团队协作开发的理解:
团队有一致的集体目标, 团队要一起完成这目标。团队成员有各自的分工, 互相依赖合作, 共同完成任务。在一个控制软件项目中倾向于做仿真分析的任务。
二.实时编程作业:
1. 下载代码库并编译:
- 练习代码:
simple_motion.git- 程序运行结果: