自动驾驶系统的示例和关键组成

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
云原生网关 MSE Higress,422元/月
函数计算FC,每月15万CU 3个月
简介: 【10月更文挑战第5天】本文介绍了使用SysML系统工具设计自动驾驶汽车内部组件的方法,重点在于通过内部块图(IBD)详细展示各子系统(如感知、控制、导航和动力系统)的内部结构及它们之间的交互。IBD不仅定义了各部件的接口和连接,还支持递归分解,有助于理解系统结构和设计接口,促进系统集成。通过端口、连接器等元素,IBD清晰展现了数据和物理流在部件间的通信方式。

1 简介

自动驾驶系统如火如荼,现在我们也要造一个自动驾驶的汽车,那么汽车内部应该使用哪些组件和块?

本文使用sysML系统工具粗略地设计一个汽车内部的各个部分。 包括各部件描述,接口,外部依赖等,构建自动驾驶汽车的内部设计利用SysML的内部块图(IBD)来详细展示系统组件。

IBD描述了块的内部结构,包括子系统、部件、接口和连接,揭示了系统内部工作机制。它用于表示软件、硬件等组件,定义端口和接口,支持递归分解。通过端口和连接器,IBD显示数据和物理流如何在部件间通信。

感知系统、控制系统、导航系统和动力系统等子系统内部结构及它们之间的交互可通过IBD清晰展现。

这种建模方法有助于理解系统结构、设计接口和进行系统集成,但可能因复杂性而难以管理,需结合其他图表示动态行为。
image.png

2 内部定义

  • 结构图:内部块图 ibd

内部块图(Internal Block Diagram, IBD):

  • 定义:

块:块(符号:带有关键字 = «block»的矩形)表示一个系统组件,一个模块化结构单元,封装其内容(属性、行为、约束)并支持第一类(即可以在模型存储库中绘制和直接操作)接口。

模块封装的行为包括:操作、信号和状态机。用于连接和连接(“布线”)模块接口的唯一交互点称为端口。

在 SysML 中,内部块图用于描述块(Block)内部的结构,显示块的内部组成部分(子块或部件)及其相互之间的连接关系。它通过展示各个部分之间的连接和交互,提供系统内部详细的结构视图。

internal Block Diagram (内部块图,简称IBD) 是系统建模语言 (SysML) 中的一种图,用于显示系统组件的内部结构和它们之间的连接关系。

IBD 详细描述了一个块 (block) 内部的组成部分和这些组成部分之间的接口和交互。

  • 设计目的:

描述块内部的子部件及其之间的连接关系。主要用于详细建模系统的内部结构和子系统之间的交互,帮助理解和设计系统的内部工作机制。

内部块图 (IBD) 的目的是显示模块的封装结构内容(部件、属性、连接器、端口、接口),以便可以使用基于接口的设计技术递归分解和“连接”。

如果使用得当,BDD + IBD 是递归可伸缩的,并且在数学上(参数化)可模拟。

这些设计将会帮助工程师理解系统内部构造,进行分层设计。如果内部块图描述不准确,可能导致系统集成困难。

3 简单示例:

  • ibd组成元素:

块可以指定软件、硬件、机械和湿件(人员、组织、设施)组件。
块支持信息和物理流的提供(实现或实现)和必需(使用)接口。块可以递归分解为部件,其中每个部件也必须由块定义。

内部块图 (ibd):内部块图是特定块拥有的静态结构图,它显示了其封装的结构内容:部件、属性、连接器、端口和接口。换句话说,IBD 是封装(“黑盒”)块的“白盒”透视图。

通过在块定义图 (BDD) 定义和内部块图 (IBD) 用法之间交替,可以将块递归分解(“嵌套”)为部件(请参阅下面的用法说明)。

image.png

  • 使用示例:

行为可以由块(例如,操作、信号和状态机)封装,也可以直接或间接(通过接口)分配给块(例如,活动/操作)。
可以通过约束块对块进行数学约束,以生成数学上可模拟的参数图。以下为一个飞行器ibd图的示例

image.png

BDD 块定义与 IBD 块使用二分法,BDD和IBD相辅相成(参见黑盒与白盒),并在系统分析和设计过程中支持递归结构分解技术。
BDD 定义块的属性,包括其部件属性(强拥有的部件)和引用属性(共享部件)。

IBD 在封装它们的块的结构上下文中指定零件属性和引用属性的用法或角色。否则,IBD 中的零件属性和参照属性可能具有不同的用法或角色,具体取决于它们在 IBD 中的实现方式(“连接”)。

可以对比UML 2 类图和组件图;SA/SD系统上下文和结构图图;IDEF IDEF1X 图等。

4 主要元素和表示方法

  • 方法属性

端口和接口: 使用端口(Port)和接口(Interface)来表示系统内部组件之间以及系统与外部环境之间的交互。

    端口: 用于定义组件的接口点,通过端口进行交互。

    接口: 定义通过端口进行的交互类型,如数据流、信号传递等。
  • 部件(Part):

块的内部组成部分,表示子系统或组件。部件是块的组成部分,表示块内部的子系统或组件。

部件在块内表示,通常是较小的矩形框,并标注部件名称和类型。示例:

+-----------------+
|     Block       |
|  Car System     |
|  +-------------+|
|  | Camera:     ||
|  | SensorBlock ||
|  +-------------+|
+-----------------+
  • 块(Block):

系统的基本构建单元,表示系统或子系统。

块是表示系统的基本构建单元。它可以表示任何类型的系统元素,包括硬件、软件、人员或过程等。

表示方法:一个块通常在一个矩形框中表示,框内包含块的名称。

自动汽车示例:

+-----------------+
|     Block       |
|  Car System     |
+-----------------+
  • 端口(Port):

块的接口点,用于定义交互接口。 端口表示块之间或块内部的交互接口点。端口可以是标准端口或流端口。

表示方法:端口在块或部件的边缘画出,通常是一个小矩形或圆形,并标注端口名称。示例:

+-----------------+
|     Block       |
|  Car System     |
|  [传感器端口]    |
+-----------------+
  • 接口(Interface):

定义通过端口进行的交互类型。接口定义了通过端口进行的交互的类型或协议。

表示方法:接口通常与端口相关联,并且在定义端口时可以标注接口类型。示例:

+-----------------+
|     Block       |
|  Car System     |
|  [传感器端口:    |
|   传感器数据]    |
+-----------------+
  • 连接器(Connector):

表示部件之间的连接关系。 用于表示系统内部组件之间的连接,展示信号、数据或物理连接路径。连接器表示不同部件之间的连接和交互。

表示方法:连接器通常是线条,连接两个端口,并可以标注连接的类型或协议。示例:

    +-----------------+       +-----------------+
    |     Block       |-------|     Block       |
    |     摄像系统     |       |    控制系统     |
    +-----------------+       +-----------------+
  • 流属性(Flow Properties):

定义通过端口传递的流动数据或物理量。定义通过端口传递的流动数据或物理量,表示组件间的交互流。流属性表示通过端口进行的流动,通常是物质、能量或信息。

表示方法:流属性在端口定义中表示,并标注流动的类型和方向。示例:

    +-----------------+
    |     Block       |
    |  Car System     |
    |  [燃油端口:    |
    |   FuelType ->]  |
    +-----------------+
  • 值属性(Value Property):

表示块内部的属性值,如大小、重量等。

表示方法:

块内表示:值属性通常在块或部件的内部用文本表示,并标注属性名称和值。
值属性类型:值属性可以有具体的类型(如整数、浮点数、字符串等)和单位。

如下一个自动驾驶汽车系统(Car System)块,其中包含一些值属性,如重量(Weight)、最大速度(MaxSpeed)和电池容量(BatteryCapacity)。示例:

+------------------------------------------------+
|                  Car System                    |
|                                                |
|  +-----------------------------------------+   |
|  | Weight: 1500 kg                        |   |
|  | MaxSpeed: 220 km/h                     |   |
|  | BatteryCapacity: 75 kWh                |   |
|  +-----------------------------------------+   |
|                                                |
|  +-----------------+    +-----------------+    |
|  | Perception Sys  |    | Control System  |    |
|  |  [传感器端口]    |----|   [控制端口]     |    |
|  +-----------------+    +-----------------+    |
|                                                |
+------------------------------------------------+
  • Reference Property(引用属性):

表示块外部的对象或块。表示方法:

块内表示:引用属性在块的内部用矩形框表示,通常标注引用属性的名称和引用的块。
箭头指示:有时在引用属性旁边使用箭头指示引用关系。
类型标注:引用属性可以标注其引用的块类型。

示例:

汽车系统(Car System)其控制系统(Control System)引用了外部的GPS系统(GPS System)。

+------------------------------------------------+
|                  Car System                    |
|                                                |
|  +-------------------+-----------------------+ |
|  | Perception Sys    | Control System        | |
|  |                   |                       | |
|  |  +-------------------------------------+  | |
|  |  | Camera: SensorBlock                 |  | |
|  |  | Resolution: 1080p                   |  | |
|  |  | FrameRate: 30 fps                   |  | |
|  |  +-------------------------------------+  | |
|  |                   |                       | |
|  |  [传感器端口]    |----|   [控制端口]     |    |
|  +-------------------+-------+---------------+ |
|                                  |             |
|                                  |             |
|  +-------------------------+     |             |
|  | GPS: GPS System         |<----+             |
|  +-------------------------+                   |
|                                                |
+------------------------------------------------+

现在的自动汽车系统(Robot System)中,其控制系统(Control System)引用了一个外部的传感器网络(Sensor Network)。

目录
相关文章
|
7天前
|
编解码 Java 程序员
写代码还有专业的编程显示器?
写代码已经十个年头了, 一直都是习惯直接用一台Mac电脑写代码 偶尔接一个显示器, 但是可能因为公司配的显示器不怎么样, 还要接转接头 搞得桌面杂乱无章,分辨率也低,感觉屏幕还是Mac自带的看着舒服
|
9天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1568 10
|
1月前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
12天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
782 27
|
2天前
|
移动开发 JavaScript 前端开发
💻揭秘!如何用 Vue 3 实现酷炫的色彩魔方游戏✨
本文分享了开发基于Canvas技术的小游戏"色彩魔方挑战"的完整过程。游戏旨在考验玩家的观察力和耐心,通过随机生成的颜色矩阵和一个变化点,玩家需在两幅画布中找出不同的颜色点。文章详细讲解了游戏的核心功能,包括随机颜色矩阵生成、点的闪烁提示、自定义配色方案等。此外,作者展示了使用Vue 3和TypeScript开发的代码实现,带领读者一步步深入了解游戏的逻辑与细节。
103 68
|
2天前
|
存储 前端开发 JavaScript
🚀前端轻松实现网页内容转换:一键复制、保存图片及生成 Markdown
在现代前端开发中,提升用户的交互体验至关重要。本文将详细介绍如何使用 HTML2Canvas 和 Turndown 两个强大的 JavaScript 库,实现将网页选中文本转化为图片并保存或复制到剪贴板,或将内容转换为 Markdown 格式。文章包含核心代码实现、技术细节和功能拓展方向,为开发者提供了一个轻量级的解决方案,提升用户体验。
100 68
|
16天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
849 5
|
9天前
|
存储 SQL 关系型数据库
彻底搞懂InnoDB的MVCC多版本并发控制
本文详细介绍了InnoDB存储引擎中的两种并发控制方法:MVCC(多版本并发控制)和LBCC(基于锁的并发控制)。MVCC通过记录版本信息和使用快照读取机制,实现了高并发下的读写操作,而LBCC则通过加锁机制控制并发访问。文章深入探讨了MVCC的工作原理,包括插入、删除、修改流程及查询过程中的快照读取机制。通过多个案例演示了不同隔离级别下MVCC的具体表现,并解释了事务ID的分配和管理方式。最后,对比了四种隔离级别的性能特点,帮助读者理解如何根据具体需求选择合适的隔离级别以优化数据库性能。
232 4
|
2天前
|
人工智能
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
云端问道12期-构建基于Elasticsearch的企业级AI搜索应用陪跑班获奖名单公布啦!
121 1
|
6天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
472 2