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

简介: 【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)。

目录
相关文章
|
jenkins 测试技术 持续交付
提升软件测试效率的创新实践
在软件开发过程中,测试环节扮演着至关重要的角色。本文探讨了如何通过创新的方法和工具,提高软件测试的效率和质量。我们将从自动化测试、持续集成与持续部署(CI/CD)、测试驱动开发(TDD)三个方面,详细介绍这些技术如何改变传统的测试流程,帮助团队更快地发现和修复缺陷,最终实现更高质量的软件交付。
536 67
|
数据可视化 前端开发 搜索推荐
数字孪生可视化开发技术(ThingJS)学习笔记
数字孪生可视化开发技术(ThingJS)学习笔记
1034 0
|
PHP Python
矩阵制度三三复制直销系统模式开发详解 | 矩阵制度三三复制直销系统开发源码demo示例
矩阵制度三三复制模式是一种常见的直销模式,也被称为三三复制模式。该模式限制了前排的数量,只能填满3个位置,奖金则是按照固定的深度来进行领取的。在该模式中,每个参与者都可以推荐其他人加入,如果成功推荐,就可以获得相应的奖金。具体来说,如果推荐一个参与者,可以获得20美元的奖金;如果推荐两个参与者,可以获得10美元的奖金;如果推荐三个参与者,可以获得4美元的奖金。此外,该模式还有一些其他的奖金制度,如培育奖金、扣税等。
|
SQL 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
【大数据技术Hadoop+Spark】Spark SQL、DataFrame、Dataset的讲解及操作演示(图文解释)
568 0
|
数据采集 数据可视化 Ubuntu
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
该功能包提供了一个手动校准Livox雷达和相机之间外参的方法,已经在Mid-40,Horizon和Tele-15上进行了验证。其中包含了计算相机内参,获得标定数据,优化计算外参和雷达相机融合应用相关的代码。本方案中使用了标定板角点作为标定目标物,由于Livox雷达非重复性扫描的特点,点云的密度较大,比较易于找到雷达点云中角点的准确位置。相机雷达的标定和融合也可以得到不错的结果。
相机和livox激光雷达外参标定:ROS功能包---livox_camera_lidar_calibration 使用方法
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
948 15
|
前端开发 关系型数据库 MySQL
使用 PHP 和 MySQL 实现留言板功能
使用 PHP 和 MySQL 实现留言板功能
631 0
|
缓存 监控 网络协议
9条实用的思科Catalyst系列交换机巡检命令!
9条实用的思科Catalyst系列交换机巡检命令!
512 1
|
机器学习/深度学习 人工智能 自然语言处理
RT-DETR原理与简介(干翻YOLO的最新目标检测项目)
RT-DETR原理与简介(干翻YOLO的最新目标检测项目)
|
算法 调度 决策智能
Python高级算法——模拟退火算法(Simulated Annealing)
Python高级算法——模拟退火算法(Simulated Annealing)
1811 1