示例SysML设计“罗卜”快跑自动驾驶

本文涉及的产品
云原生网关 MSE Higress,422元/月
性能测试 PTS,5000VUM额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【10月更文挑战第6天】

1 完整示例:“罗卜”自动驾驶汽车

我们设计了一个自动驾驶汽车系统,系统由多个子系统组成,如感知系统、控制系统、导航系统、动力系统等。并且使用SysML的Internal Block Diagram (IBD) 来详细描述这些子系统的内部结构和它们之间的交互。
5G边缘计算2.png

具体步骤:

1 定义主要块(Blocks):

自动驾驶汽车系统作为一个整体块。

内部子系统如感知系统(Perception System)、控制系统(Control System)、导航系统(Navigation System)、动力系统(Power System)等。

2 定义块内的部分属性(Part Properties):

在感知系统块内,定义雷达(Radar)、摄像头(Camera)、激光雷达(Lidar)等部分属性。

在控制系统块内,定义转向控制器(Steering Controller)、加速控制器(Acceleration Controller)等部分属性。

3 定义端口和接口(Ports and Interfaces):

在感知系统块的雷达、摄像头、激光雷达上定义数据输出端口,用于传输感知数据。

在控制系统块的转向控制器、加速控制器上定义数据输入端口,用于接收控制指令。

4 添加连接器(Connectors):

使用连接器连接感知系统的数据输出端口和控制系统的数据输入端口,表示感知数据传输到控制系统进行处理。

连接导航系统的输出端口和控制系统的输入端口,表示导航指令传输到控制系统进行执行。

5 标注属性和接口信息:

为每个端口标注数据类型,如雷达的输出端口传输距离数据,摄像头的输出端口传输图像数据等。
为连接器标注传输协议和数据格式,确保不同部分属性之间的交互一致性。

现在这是一个复杂的自动驾驶汽车系统(Autonomous Car System),增加了导航系统(Navigation System)引用了外部的地图服务(Map Service)。

+------------------------------------------------+
|           Autonomous Car System                |
|                                                |
|  +-------------------+-----------------------+ |
|  | Perception Sys    | Control System        | |
|  |                   |                       | |
|  |  +-------------------------------------+  | |
|  |  | Camera: SensorBlock                 |  | |
|  |  | Resolution: 1080p                   |  | |
|  |  | FrameRate: 30 fps                   |  | |
|  |  +-------------------------------------+  | |
|  |                   |                       | |
|  |  [传感器端口]    |----|   [控制端口]     |    |
|  +-------------------+-------+---------------+ |
|                                  |             |
|                                  |             |
|  +-----------------------------+ |             |
|  | MapService: 地图服务         |<--------------+
|  +-----------------------------+               |
|                                                |
|               +-----------------+              |
|               |     Block       |              |
|               |  Car System     |              |
|               |   [燃油口:       |             | 
|               |   FuelType ->]  |              |
|               +-----------------+              |
|                                                |
|                                                |
|  +-----------------------------------------+   |
|  | Weight: 1500 kg                         |   |
|  | MaxSpeed: 220 km/h                      |   |
|  | BatteryCapacity: 75 kWh                 |   |
|  +-----------------------------------------+   |
+------------------------------------------------+

在这个IBD图中使用了如下示例定义:

块(Block):Car System,Perception System,Control System
部件(Part):Camera
值属性(Value Property):Weight, MaxSpeed, BatteryCapacity, Resolution, FrameRate
端口(Port):Sensor Port, Ctrl Port
连接器(Connector):连接Sensor Port和Ctrl Port的线条
值属性(Value Property):  表示块内部的属性值,如大小、重量等。
流属性(Flaw Property): 显示连接;流动的物质、能量或数据的类型;提供或要求的服务。
引用属性(Reference Property):MapService引用了Map Service块

2 分析示例优缺点:

通常实际的自动驾驶系统有更复杂更精细的系统,其中包含多个部件和值属性。

比如在感知系统(Perception System)中有上百个个摄像头(Camera)或者视觉感知部件,我们可以为其定义一些值属性,如速度,分辨率(Resolution)和帧率(FrameRate)。

通过添加值属性,IBD图不仅展示了系统的结构和接口,还提供了系统和部件的具体数值特征,帮助工程师更加全面地理解和设计系统。

添加引用属性,不仅展示了系统的内部结构和接口,还清晰地表示了系统与外部对象或服务之间的依赖关系,更全面地理解和设计复杂系统。

IBD系统内部块图具有以下优点:

  • 详细描述清晰定义系统内部结构:

该图详细描述了自动驾驶汽车系统的各个子系统及其内部组成部分,使工程师清晰了解系统内部的结构和各部分之间的关系。例如,感知系统中的各个传感器如何协同工作,以及它们如何与控制系统交互。

  • 统一接口和交互:

通过定义统一的端口和接口,IBD确保了各子系统之间的数据传输和交互的一致性和标准化。
例如,所有感知数据传输到控制系统时,数据格式和传输协议都是一致的,避免了接口不兼容的问题。

  • 提高系统设计的可理解性和可维护性:

IBD图的直观表示使得系统设计更易于理解,不仅对设计者,对后期的维护人员也是如此。
例如,系统维护人员可以通过IBD快速定位到某个子系统的具体接口和连接,方便进行故障排查和维护。

  • 支持系统集成和测试:

IBD帮助定义了各个子系统的具体接口和交互方式,为系统集成提供了明确的指导。
在系统集成和测试阶段,工程师可以依据IBD图验证各子系统的接口和交互是否正确,实现了设计到实现的无缝对接。

  • 提高系统设计的准确性和完整性:

IBD的详细描述和规范化设计有助于提高系统设计的准确性,避免遗漏关键的组成部分和接口。
例如,通过IBD可以检查每个子系统的端口是否都有对应的连接器,确保所有的交互路径都被考虑到。

3 使用警告和实践场景

使用场景

  • 系统内部结构建模:

用途: 描述系统内部的组成部分及其相互关系,展示系统内部的细节结构。
示例: 在一个汽车系统中,描述引擎内部各个部件(如气缸、活塞)的组成和连接关系。

  • 子系统交互建模:

用途: 详细描述系统内部子系统或组件之间的交互和连接方式。
示例: 在一个通信系统中,描述发送器、接收器、信号处理模块之间的连接和数据流动。

  • 接口定义:

用途: 明确定义系统内部各部分的接口,展示数据、信号或物理连接的传递路径。
示例: 在一个嵌入式系统中,描述处理器与存储器、I/O 设备之间的接口和连接关系。

  • 系统集成与验证:

用途: 在系统集成和验证阶段,使用内部块图确保各个部分正确连接和交互。
示例: 在设计和验证一个复杂电子系统时,确保各个模块之间的连接符合设计要求。

  • 与UML2的关系

继承关系: 内部块图基于 UML 的复合结构图(Composite Structure Diagram)进行了扩展,专门用于系统工程。

元素一致性: 两者使用相似的基本元素,如端口、连接器等,但内部块图包含更多系统工程特有的元素和关系。

扩展性: 内部块图在功能和用途上进行了扩展,适用于复杂系统的内部结构和子系统交互建模需求。

最佳实践方式:

    * 积极地将对象三元组模式分类技术应用于块,以分离控制对象、接口对象和数据对象。
    * 通过在 BDD 定义和 IBD 用法之间交替递归分解(“嵌套”)块层次结构。
    * 将所有活动分配给代表 Conrol 对象 Blocsk 的分区。

UML2具有以下局限:

局限于软件系统:UML 的类图和组件图主要用于软件系统的建模,难以适应复杂的多领域系统。
接口表示不统一:UML 的接口表示较为自由,可能导致设计的混乱和不一致。
缺乏细节描述:UML 的类图和组件图通常缺乏对内部组成部分和具体接口的详细描述,
不适用于超复杂系统的详细设计。

4 总结优缺点

SysML中的IBD图的优点:

可以看出在开发自动驾驶汽车系统时,通过IBD详细描述了各个子系统的内部结构和接口,使得系统设计更加清晰和规范。

在后期的系统集成和测试阶段,工程师们能够快速定位和解决接口问题,确保了系统的正确性和稳定性。

如果没有内部块图,可能导致系统接口定义不统一,不同子系统之间的数据传输出现不兼容问题。

同时系统设计不够详细,导致在系统集成时发现遗漏关键的组成部分或接口,增加了调试和修改的工作量。

最后系统维护困难,维护人员难以快速理解和定位各个子系统的具体接口和交互,增加了维护成本和时间。

现在通过SysML的IBD,能够有效地解决这些问题,确保系统设计的准确性、完整性和可维护性,最终帮助系统成功实现其预期功能。

可能的使用限制:

* 混淆控制对象、接口对象和数据对象块。
* SA/SD DFD 反模式(又名“回到 1980 年左右的未来”反模式)= 将活动图定义为功能流程图,而不表示控制对象的部件。
* Bloctivity Anti-Pattern = 混淆块和活动语法和语义。
  • 复杂性管理困难:

问题: 对于大型复杂系统,内部块图可能变得非常复杂,尤其是当涉及大量部件和连接时,图可能变得难以管理和理解。

一个复杂的电子系统包含成百上千个部件及其连接,内部块图可能变得过于复杂,难以清晰展示。

  • 动态行为表示不足:

问题: 内部块图主要描述系统的静态结构,缺乏对系统动态行为和运行时交互的详细描述。

在需要描述系统运行时的动态行为和交互过程时,内部块图无法提供足够的信息,需要结合其他图(如序列图、活动图)来补充。

  • 细节表达能力有限:

问题: 在表达具体的实现细节和低层次的设计时,内部块图可能显得不足,特别是对于硬件电路或软件算法的详细描述。

需要详细描述硬件电路中各个元件的连接和功能时,内部块图可能无法提供足够的细节。

  • 学习曲线陡峭:

问题: 对于新手来说,理解和使用内部块图及其相关元素可能具有一定的学习难度。

系统工程师在初次使用内部块图时,可能需要时间来熟悉各种元素和关系,才能有效地进行建模。

SysML 的 Internal Block Diagram (IBD) 图在系统设计中扮演着重要的角色,通过详细描述系统块内部的组成部分和接口,帮助工程师理解和设计复杂的多领域系统。

与 UML2 的类图和组件图多用于软件系统相比,SysML 的 IBD 更加适合用于复杂大型系统的详细设计和验证。

目录
相关文章
|
8天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
10天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1570 11
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
15天前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1122 1
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
15天前
|
人工智能 Serverless API
AI助理精准匹配,为您推荐方案——如何快速在网站上增加一个AI助手
通过向AI助理提问的方式,生成一个技术方案:在网站上增加一个AI助手,提供7*24的全天候服务,即时回答用户的问题和解决他们可能遇到的问题,无需等待人工客服上班,显著提升用户体验。
1246 6
|
13天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
819 28
|
2天前
|
人工智能 关系型数据库 Serverless
1024,致开发者们——希望和你一起用技术人独有的方式,庆祝你的主场
阿里云开发者社区推出“1024·云上见”程序员节专题活动,包括云上实操、开发者测评和征文三个分会场,提供14个实操活动、3个解决方案、3 个产品方案的测评及征文比赛,旨在帮助开发者提升技能、分享经验,共筑技术梦想。
535 69
|
7天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
571 3
|
3天前
|
移动开发 JavaScript 前端开发
💻揭秘!如何用 Vue 3 实现酷炫的色彩魔方游戏✨
本文分享了开发基于Canvas技术的小游戏"色彩魔方挑战"的完整过程。游戏旨在考验玩家的观察力和耐心,通过随机生成的颜色矩阵和一个变化点,玩家需在两幅画布中找出不同的颜色点。文章详细讲解了游戏的核心功能,包括随机颜色矩阵生成、点的闪烁提示、自定义配色方案等。此外,作者展示了使用Vue 3和TypeScript开发的代码实现,带领读者一步步深入了解游戏的逻辑与细节。
113 68
|
17天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
928 5