当前位置:首页-文章-MBDUML-正文

MBD基于模型机器人开发方法介绍和案例分享

引言

为了适应竞争激烈的市场,高科技公司必须快速适应技术发展和高效开发新产品和新技术用以满足用户持续变化的需求。尽管计算机硬件成本在降低和算力在持续上升,设计工具不断自我创新带来便利,然而高效创新和创新管理依旧是挑战性话题。挑战并不止来自技术本身的复杂性,来源于研发模式创新,组织结构适应性和组织文化。工程师必须在设计系统时做很多取舍,在越来越快节奏下开展工作,与全球团队跨时区协作,拉通部门边界实现高效跨部门协调。比较糟糕的是在不少公司工程师设计产品的方法可能依旧是根植于工业革命时代。

机器人系统正在变得越来越复杂。提到机器人感知和控制系统,我们可以想到很多相关,诸如:

  • 机械本体:3D建模,应力分析模型,模态分析模型
  • 硬件基础:驱控硬件系统,安全模块,示教器及各种传感器接口等硬件基础;
  • 核心模块:运动规划,动力学,控制算法,抖动抑制,柔性控制,参数辨识;
  • 智能技术:人工智能,视觉测量和检测,视觉跟踪和手眼配合,语音交互,定位导航;
  • 通讯互联:横向的现场通讯,现场到办公室的纵向通讯(如OPC UA),控制器内置web server实现跨平台UI系统与控制器的互联;
  • 应用软件:包装,上下料,打磨,焊接,切割,装配,喷涂等
MBD基于模型机器人开发方法介绍和案例分享 - 第1张

图 1 基于模型开发的流程示意图 [1]

机器人系统变得越来越复杂。机器人内在系统的复杂性越来越要求组织从重视生产管理到重视知识管理,重视产品开发模式和方法的建立,以及重视围绕这样的改变所需求的组织结构的适应性改变。模型本身的概念已经从传统的机械3D模型衍生到各类表达设计和方法的模型,如软件工程领域采用UML来对软件进行建模,表达软件的架构,接口和行为,工程方法如QFD用于表达从需求到技术规格的分析模型。

基于模型的开发理念是已经在车辆,航空和国防等行业实践的一套理念和方法。适合复杂性系统开发,满足知识和设计管理需要,匹配多种开发流程(SCRUM, V-Model,XP等)的一套产品开发理念,同时市场上已有成熟开发工具链支持基于模型的产品开发流程和开发活动。

一.基于模型产品开发介绍(MBD)

1.1 什么是MBD

基于模型设计是一种以模型为中心的产品开发方法。MBD减轻产品开发过程对物理模型的高依赖度,摒弃了纯粹采用文字来描述需求和技术规格,而是将模型贯穿于整个产品的生命周期。模型包含了与产品相关的每个组成如物理原件,控制逻辑,算法以及IP等等。一旦模型被建立,那么可以基于模型做设计,分析,评审,生成报告,甚至生成代码。另外MBD也使能了设计阶段的仿真,代码生成和检查,快速原型开发,持续测试和验证等工作。图 1阐述了基于模型开发的输入,活动以及输出。

MBD基于模型机器人开发方法介绍和案例分享 - 第2张

图 2 基于模型开发的流程示意图 [1]

1.2 MBD的好处

基于模型设计理论和方法体系是一种工程方法论。在生产制造之前,设计产品的3D模型,这是自然而然的步骤。基于模型可以方便开展产品设计,设计评审,模型优化和跨团队和跨领域交流。基于模型才能实现从设计到制造的无缝衔接。同时,模型捕捉团队知识和智慧,是产品知识产权的载体。MBD在机械领域的实践其实已经让我们看到它的各种好处。过去几十年,单一软件产品本身体量逐渐庞大复杂,越来越需要工程化的手段去提高软件产品设计和开发的效率,需要工程化方法去有效组织庞大团队协同协作。这是软件工程理论产生的直接动因。MBD本质是一套产品开发方法论,本身并不局限于机械设计还是软件设计,尽管在具体应用领域MBD发挥的优势可能不同。机器人软件系统开发采用MBD的好处总结如下:

  • 提供虚拟对象
  • 提供一致认识,保证无偏差团队沟通和任务协作
  • 激发新的想法
  • 便于管理复杂系统
  • 使能设计阶段仿真和测试
  • 自动化耗时和易出错任务
  • 直接生成代码框架和核心算法
  • 增加软件产品质量减少风险
  • 捕获团队知识和智慧
  • 是知识产权的载体

二. 基于V模型MBD开发流程和工具链支持

2.1 V模型开发流程简要

产品线工程有以下三个维度:

  • Multi-Product: 表示产品系列中的不同产品
  • Multi-phase: 表示产品所处的开发阶段
  • Multi-baseline: 表示同一个产品的版本,配置和变更管理
MBD基于模型机器人开发方法介绍和案例分享 - 第3张

图 3 产品线工程的三个维度 [2]

这三个维度事实上都可以用基于模型的方式去表达和管理。V模型MBD开发流程本身对应其中的Multi-phase这个维度。本篇分享侧重Multi-phase这个维度的方法和相关支撑工具。

V模型MBD开发基本流程如图 4所示。

MBD基于模型机器人开发方法介绍和案例分享 - 第4张

图4 V模型开发流程 [3]

需求分析(Requirement Analysis)

需求来自客户,这个阶段与客户详尽沟通,了解用户需求和偏好。这个阶段非常重要,因为大多数用户不确定他们想要什么,所以需求分析是具有挑战性工作。这个阶段的输出是下个流程阶段Functional Specification的输入,也是作为Acceptance Testing的输入。一系列开发开具支持需求管理,实现从需求到技术规格以及到系统模型的映射,最知名的工具之一是Raitonal/Doors , Matlab也开始原生支持这个功能,并且提供Door的接口。 具体工具请阅读2.8章节以及本文附录。

技术规格( Functional Specification)

这个阶段的名称有不同的称呼,但基本含义都是将需求从用户语言翻译成技 术语言,呈现的是系统模块范围,功能要求,性能要求以及用户使用及维护方面技术实现要求。这个阶段的输出是下个流程阶段系统设计的输入,也是System Testing的输入。

系统设计( High level Design)

这个阶段的名称也有不同的称呼:顶层设计,系统设计,架构设计等等。但基本含义都是从全局角度对系统进行结构设计和模块分割,确定各模块技术实现方案以及各模块间的接口。这个阶段的输出是下个流程阶段模块设计的输入,也是Integration Testing的输入。一系列开发开具支持系统设计,实现从从多个维度对系统进行建模,捕获系统特征和行为,最知名的工具之一是Rational Rhapsody,支持除了系统架构设计,也支持仿真,代码生成和测试用例生成。具体工具请阅读2.8章节以及本文附录。

模块设计( Module Design)

根据系统设计结果,设计各子模块。跨领域是机电系统建模的特性之一,Modelica跨越不同领域,实现复杂物理系统建模,包括机械,电子,电力,液压,热,控制及面向过程的子系统模型。Matlab及其工具箱系列也是重要的选择之一。具体工具请阅读2.8章节以及本文附录。

代码实现(Coding)

基于模型的系统设计支持代码生成。很多人对这一块持有疑惑甚至否定态度,但事实是这是高安全行业如汽车,航空等领域的常规做法。如果你信任编译器将C代码编译成汇编,进而生成机器人代码,那么为什么不信任将更简单的图形语言描述的模型翻译成C语言呢? dSPACE/TargetLink支持代码生成。Matlab/Simulink工具链也支持将模型及脚本翻译成C,C++, HIL, PLC等语言。一位汽车行业的朋友说,一辆高级轿车,上亿行代码,98%都是自动生成的。

单元测试(Unit Testing)

单元测试对象是最小功能单元,其实在模块模型开发阶段就开始展开,保证生成代码的质量。 Matlab提供原生的单元测试框架,支持设计阶段的测试。将测试从实现和验证阶段提前到设计阶段。实际实施形式可以是MIL测试也可以是SIL测试。

集成测试(Integration Testing)

集成测试测试多模块共存性和接口兼容性潜在问题。其实在系统设计模型的开发阶段就开始展开,保证模块功能划分的合理性和接口的一致性和完备性。

系统测试(System Testing)

系统测试对应技术规格对系统整体功能及系统与外界交互进行测试。大多数软件和硬件兼容性,功能完整性等问题再这个阶段被暴露。

接受测试(Acceptance Testing)

接受测试对应商业需求分析阶段,要求在用户环境中进行测试。测试产品环境适应性和与其他用户现场设施的兼容性。

2.2 需求管理追踪和覆盖

需求管理追踪和覆盖的主要内容:

  • 需求分解和管理
  • 需求与设计链接和追踪
  • 需求覆盖及可视化

2.2.1 需求分解和管理

图 5是Rational/Doors软件对直升机系统开发的需求分解和管理的样例。需求及其分级采用左侧的树形组织,各项需求可以用图形化语言描述,并且可以链接到具体模型。 Rational/Doors采用工程化的方法对系统需求进行管理。

MBD基于模型机器人开发方法介绍和案例分享 - 第5张

图 5 直升机系统需求分解和管理

2.2.2需求与设计链接和追踪

图 6展示了Rational/Doors软件与Matlab/Simulink软件的联合使用。Doors中的某条需求可以映射到Simulink模型中,Simulink模型可以与Doors中的代理模型(surrogate module)建立连接,这样可以实现正如2.2.1 需求分解和管理章节所说那样在Doors中用图形化方式表达需求。

MBD基于模型机器人开发方法介绍和案例分享 - 第6张

图 6需求与设计链接和追踪 [4]

2.2.3 需求覆盖及可视化

图 7展示了需求的设计实现覆盖和测试覆盖。蓝色进度条表示设计实现覆盖,绿色进度条表示测试通过覆盖,红色表示测试覆盖但未通过。

MBD基于模型机器人开发方法介绍和案例分享 - 第7张

图 7需求测试覆盖及可视化 [5]

2.3技术规格分析

需求来源不止最终客户,还有来自竞争对手的产品规格,以及公司内部的产品线商业和技术规划,这些可以统称为需求。从需求到技术规格可以采用QFD(Quality Function Deployment)方法来映射和分析。QFD有时也称为House of Quality. QFD连接了用户需求,产品功能和产品商业价值。QFD可以有效地将需求转化为详细的工程设计要求。QFD通过矩阵形式赋予产品属性优先级,帮助产品设计决策,生成产品的技术规格。

图 8为QFD矩阵示意图,图 8为一个实践样例。QFD中的重要元素为:

  • 用户需求
  • 竞争对手产品特性
  • 设计需求(公司内部声音)
  • 用户需求和设计需求的相关性
  • 优先级和综合评分

这个矩阵模型表达了产品技术规划过程,帮助产品设计决策和产品设计规格生成,详细内容可参考[8-10]

MBD基于模型机器人开发方法介绍和案例分享 - 第8张

图 8 QFD 矩阵示意图 [6]

MBD基于模型机器人开发方法介绍和案例分享 - 第9张

图 9 QFD 实践样例1 [7]

MBD基于模型机器人开发方法介绍和案例分享 - 第10张

图 10 QFD实践样例2 [8]

2.4 架构模型设计

UML语言是描述软件架构的独立图形化无歧义语言,提供6种结构图(Structural Diagram)和7种行为图(Behavioral Diagram)从不同角度描述一个软件系统,如图 11所示。由于篇幅限值,这里不展开给出每种图的样例,仅描述它们在软件架构设计中的角色和用途。

MBD基于模型机器人开发方法介绍和案例分享 - 第11张

图 11 UML的13种模型图

2.4.1 结构图

包图(Package diagram)

描述系统模型元素的组织关系

组件图(Component diagram)

描述系统组件如库文件和可执行文件如何关联

类图(Class diagram)

描述类以及他们之间的关系:继承,聚合,组成和关联

组织结构图(Composite structure diagram)

描述子系统之间的数据接口关系

对象图(Object diagram)

描述运行时类实例对象及他们之间互相连接/引用关系

部署图(Deployment diagram)

描述系统组件部署于硬件平台的位置及与硬件接口之间的连接

2.4.2 行为图

用例图(Use case diagram)

表达系统对外功能,哪些用户对象以及他们与系统的交互方式

状态机(state machine diagram)

描述系统和功能单元内部状态划分及状态之间跳转条件

活动图(Activity diagram)

描述系统运行时动作发出的逻辑关系

顺序图(Sequence diagram)

表达实例对象交互顺序,实例对象可以是类对象也可以是函数对象

通讯图(Communication diagram)

描述系统内部子系统之间协作关系

交互图(Interaction overview diagram)

活动图与顺序图的组合图

时序图(Timing diagram)

描述对象内部和对象之间交互沿着时间轴的变化

2.5 模块模型设计

图 12为 Matlab提供的基于模型设计的相关工具包括专业知识领域建模如物理建模,电力电子建模和控制系统建模等以及专业领域的算法模块如信号处理,视觉处理和机器学习。

MBD基于模型机器人开发方法介绍和案例分享 - 第12张

图 12 对MBD模块模型设计的支持 [9]

图 13为基于Simulink提供的模块开发机器人系统的各子模块模型。待仿真验证后即可基于模型针对需要对子模块生成代码。基于模型的仿真输出测试报告可作为认证材料。

MBD基于模型机器人开发方法介绍和案例分享 - 第13张

图 13 基于模型设计机器人控制系统开发 [10]

2.6 代码生成

dSPACE/TargetLink和 Matlabl/Simulink工具链都支持从模型生成目标语言,前者一般支持C语言生成,后者支持更多的目标语言生成如C,C++, HIL, PLC等语言。在代码生成配置阶段提供多种配置选项,比如目标语言,目标硬件特性,优化选项等。

MBD基于模型机器人开发方法介绍和案例分享 - 第14张

图 14 代码生过程 [11]

MBD基于模型机器人开发方法介绍和案例分享 - 第15张

图 15 从模型生成C++代码 [12]

2.7 测试验证

MBD基于模型机器人开发方法介绍和案例分享 - 第16张

图 16 MIL/SIL/PIL/HIL 示意和差异 [13]

测试与测试差别

第2.1章节提及的单元测试,集成测试和系统测试是从系统颗粒度角度来定义测试活动和内容,它们都是开发阶段;而接受测试是从开发和交付流程角度定义测试活动和内容,标志产品的可交付;MIL测试,SIL测试,PIL测试以及HIL测试是按照运行环境和运行对象本身存在状态划分的。它们不同维度,可以交叉。

MIL测试

测试环境:

§ 被控对象以模型的形式运行于主机(Host-PC)

§ 控制算法以模型的形式运行于主机

测试目的:

§ 检验控制算法的效果满足设计需求

§ 在非实时环境下可以有效控制被控对象的模型

§ 测试结果为下阶段工作提供重要参考。

SIL测试

测试环境:

§ 被控对象以模型的形式运行于主机(Host-PC)

§ 控制算法以目标代码形式运行于主机

测试目的:

§ 检验软件结构对算法效率的影响

§ 检验和分析定点计算对算法的影响

PIL测试

测试环境:

§ 被控对象以模型的形式运行于主机(Host-PC)

§ 控制算法以目标代码形式运行于开发板上

测试目的:

§ 模拟真实计算平台:开发板上的重要硬件配置与最终控制器平台相同

§ 测试在目标硬件上的运行性能

§ 检查相关问题,如:代码大小,堆栈耗尽,代码运行超时等

HIL测试

测试环境:

§ 被控对象以模型的形式运行于HIL实时测试平台

§ 控制算法以目标代码形式运行于开发板上

测试目的:

§ 避免测试活动对实物带来潜在损害和人员受伤的风险

§ 方便各种故障注入测试

§ 更安全方式测试系统对错误响应的行为以及测试系统的健壮性

2.8 MBD工具链支持

图 17表示了整个V模型流程基于MBD产品开发的工具链支持,附录中提供了更加详细工具链列表及相关连接,感兴趣可以查看。图 18为Matlab/Simulink工具链对基于V模型MBD开发的工具支持,包含需求管理,需求追踪,系统架构,模块模型开发,测试和验证以及代码生成。

MBD基于模型机器人开发方法介绍和案例分享 - 第17张

图 17 V模型开发活动与工具链支持 [14]

MBD基于模型机器人开发方法介绍和案例分享 - 第18张

图 18 Matlab/Simulink 对基于V模型的MBD开发的支持 [15]

三.基于MBD实践案例介绍

3.1 手持仪器软件架构设计

图 19 为Rational/Doors软件产品对软件架构设计的工具支持,提供完整的开发环境,允许用户组织软件设计,提供UML模型控件绘制软件架构图,管理复杂系统,支持仿真和代码生成,生成设计文档。

MBD基于模型机器人开发方法介绍和案例分享 - 第19张

图 19 基于工具软件架构设计案例 [16]

3.2 机器人接口模板设计

图 20描述了Robot,Controller以及Sensor线程与父线程Atomic Task的继承关系。图 21描述了基类Robot定义了机器人通用接口,具体机器人MekaA1和机器人StaubliRX60继承基类Robot实现相关接口。图 22描述一个抽象Sensor的接口;Camera作为Sensor的一个具体形态继承Sensor实现相关接口并进一步提供Camera特有的接口;具体相机厂家基于Camera提供具体相机的接口实现,如图中的相机Guppy80, SR4000, GX1050.

MBD基于模型机器人开发方法介绍和案例分享 - 第20张

图 20 机器人任务接口模板案例 [17]

MBD基于模型机器人开发方法介绍和案例分享 - 第21张

图 21 机器人接口模板案例 [17]

MBD基于模型机器人开发方法介绍和案例分享 - 第22张

图 22传感器接口模板案例 [17]

3.3 基于MBD的机器人算法开发

图 23为机器人开发Matlab/Simulink模型框图。Matlab/Simulink工具链对基于V模型MBD开发的工具支持,包含需求管理,需求追踪,系统架构,模型开发,测试和验证以及代码生成。在设计阶段即可开展单元测试和部分程度的集成测试,提前发现和消除潜在问题。图 24展示了Matlab/Simulink对ROS的支持。

MBD基于模型机器人开发方法介绍和案例分享 - 第23张

图 23 机器人算法开发案例 [18]

MBD基于模型机器人开发方法介绍和案例分享 - 第24张

图 24 Matlab+ROS的开发案例 [19]

3.4 基于MBD的MIL和PIL测试

图 25和图 26分别为SIL测试和PIL测试框图。在SIL 测试阶段,控制模型将被编译生成代码并运行于宿机PC 上,而被控对象依旧以模型的形式运行在Matlab/Simulink的运行环境。通过SIL 测试可以检验和分析定点计算对算法的影响以及软件结构对算法效率的影响。PIL 测试是将控制模型编译运行于目标评估板上,被控对象依旧运行于Matlab/Simulink 环境中。该评估板上的处理器等重要硬件配置与最终的控制器平台相同,这样可以提前验证控制模型在目标处理器上的运行性能,检查相关问题,如:代码大小,堆栈耗尽,代码运行超时等。

MBD基于模型机器人开发方法介绍和案例分享 - 第25张

图 25 SIL测试案例 [20]

MBD基于模型机器人开发方法介绍和案例分享 - 第26张

图 26 PIL测试案例 [20]

四.附录:工具链列表

需求管理与跟踪

TargetLink in combination with SYNECT http://www.dspace.com

Simulink Requirements™ http://www.mathworks.com

Simulink Verification and Validation™ http://www.mathworks.com

IBM® Rational® DOORS® http://www.ibm.com

PTC™ Integrity http://www.ptc.com

BTC EmbeddedSpecifier® http://www.btc-es.de

需求覆盖分析

BTC EmbeddedTester® http://www.btc-es.de

TPT http://www.piketec.com

架构设计

SystemDesk http://www.dspace.com

SYNECT http://www.dspace.com

DaVinci Developer http://www.vector.com

Enterprise Architect http://www.sparxsystems.de

IBM® Rational® Rhapsody http://www.ibm.com

EB tresos® Studio http://www.elektrobit.com

模型检查

MES Model Examiner® (MXAM) http://www.model-engineers.com

模型分析和审核

MES M-XRAY® http://www.model-engineers.com

模型比较

Model Compare http://www.dspace.com

SimDiff http://www.ensoft.de

ANSYS Medini™ Unite www.medini.eu

基于模型的测试

BTC EmbeddedTester® http://www.btc-es.de

MES Test Manager® (MTest) http://www.model-engineers.com

Reactis® http://www.reactive-systems.com

TPT http://www.piketec.com

测试案例生成

BTC EmbeddedTester® http://www.btc-es.de

Reactis® http://www.reactive-systems.com

TPT http://www.piketec.com

模型覆盖分析

BTC EmbeddedTester® http://www.btc-es.de

Simulink Verification and Validation™ http://www.mathworks.com

正式验证

BTC EmbeddedSpecifier® http://www.btc-es.de

BTC EmbeddedValidator® http://www.btc-es.de

编码检查

QA-C http://www.qa-systems.com

PC-lint http://www.gimpel.com

代码覆盖分析

BTC EmbeddedTester® http://www.btc-es.de

Testwell CTC++ http://www.verifysoft.de

运行时间误差分析

Astrée http://www.absint.com

Polyspace Code Prover™ http://www.mathworks.com

资源使用情况分析

aiT WCET Analyzer http://www.absint.com

StackAnalyzer http://www.absint.com

TimingProfiler http://www.absint.com

辅助性MathWorks®工具箱

Simulink Control Design™ http://www.mathworks.com

Simulink Coder™ http://www.mathworks.com

Other toolboxes http://www.mathworks.com

数据管理和协作

SYNECT http://www.dspace.com

本文来源:知乎,作者:YuanH。

相关文章

换一批