分布式系统说明

ID

项目

描述

1

全局设置模块切换

包括通用设置、可视化工具、系统设置、系统信息、系统配置和Agent列表,点击Agent列表可对Agent列表信息进行管理

2

Agent名称及在线情况显示

添加的Agent名称及是否在线情况

3

Agent信息详情展示

展示Agent的详细信息,包括Agent uuid、Agent ip、Agent port、System、CPU和Memory

4

添加Agent按钮

点击添加Agent按钮,弹出增加Agent弹框

5

Agent名称

在弹框中输入Agent名称,并点击创建按钮,即可新增一个Agent

6

新增节点按钮

点击此按钮,弹出新增节点弹框,包括输入节点名称、和选择节点类型

7

输入节点名称

输入节点名称

8

节点类型选择

下拉选框包括以下几项动力学节点、动态仿真节点、API服务节点、SimOneDriver控制器节点、目标级传感器节点、物理级传感器节点(GPU)、Web可视化节点、可视化节点(GPU)、Web可视化节点、可视化节点(GPU)、判定节点、阿波罗控制接入节点、车联网功能节点、VR节点、模拟控制器节点、用户自定义接入节点

9

删除节点

点击此按钮弹出删除节点弹框

10

删除Agent弹框

点击确定按钮,即可删除选中的Agent

11

节点信息列表

包括节点ID、节点名称

12

更多操作选项

点击此按钮,弹出两个按钮包括编辑和删除两个按钮

13

编辑按钮

点击编辑按钮,弹出编辑按钮弹框

14

节点名称

可在此修改节点名称

15

节点类型选择

点击此可弹出下拉选框,修改节点类型

16

启动命令行

可视化GPU节点,物理级传感器节点会用,启动UE的时候可以设置位置,窗口分辨率,所用显卡等等可输入的样式包括:-windowed -resX=640 -resY=480 WinX=1280 WinY=540 -GraphicsAdapter=0-windowed : 这里还有一种选项是 -fullscreen , 决定是窗口化显示还是在当前屏幕全屏;-resX=%d -resY=%d : 填该节点的可视化窗口占用的屏幕像素大小(注意对于摄像头传感器来说,这个分辨率并非仿真摄像头实际渲染输出的分辨率,只是可视化时的显示分辨率)WinX=%d WinY=%d :填该节点的可视化窗口的起始位置,即窗口左上角的屏幕像素坐标;-GraphicsAdapter=%d :将该节点绑定到对应显卡,填0,1,2……分别意为将当前节点绑定至第1,2,3……张显卡来渲染,多显卡同时仿真多路传感器时该参数很重要

17

删除节点按钮

点击删除节点按钮弹出删除节点弹框

18

删除节点确定

点击删除节点弹框中的确定按钮即可删除节点

备注

以下内容讲述如何配置可视化 GPU 节点的参数

在启动命令行时输入对应的参数,启动UE的时候可以设置位置,窗口分辨率,所用显卡等等。

可输入的样式包括:-windowed -resX=640 -resY=480 WinX=1280 WinY=540 -GraphicsAdapter=0;

  • -windowed : 这里还有一种选项是 -fullscreen , 决定是窗口化显示还是在当前屏幕全屏;

  • -resX=%d -resY=%d : 填该节点的可视化窗口占用的屏幕像素大小(注意对于摄像头传感器来说,这个分辨率并非仿真摄像头实际渲染输出的分辨率,只是可视化时的显示分辨率)

  • WinX=%d WinY=%d :填该节点的可视化窗口的起始位置,即窗口左上角的屏幕像素坐标;

  • -GraphicsAdapter=%d :将该节点绑定到对应显卡,填0,1,2……分别意为将当前节点绑定至第1,2,3……张显卡来渲染,多显卡同时仿真多路传感器时该参数很重要

Agent Launcher

ID

项目

描述

1

Agent授权状态

包括已授权和未授权

2

Agent ID

此 Agent 的授权码

3

Public IP

Agent绑定的网卡ip

4

WebIP地址和端口号

分布式集群中 Master 主机的 IP 地址

5

服务器地址

系统部署的服务器对外访问的地址

6

服务运行状态

绿色代表服务运行正常,红色代表服务运行异常

7

服务日志

点击此按钮跳转到Foundation的Log日志文件夹

8

停止按钮

点击此按钮,将切换Agent的在线和离线状态

9

启动按钮

当重新点击此按钮时,可将离线的Agent切换至在线状态

10

启动状态展示

包括两种状态展示success to start 和 failed to start

分布式系统

1. 架构图

2. 名词解释

模块名称

含义

Master

核心 Master 节点,负责管理各个 Agent,负责 Agent 的增删改查

Agent

分布式节点的代理节点

Work

内部抽象的仿真工作节点,比如 Nodetimer、BridgeIO、VehicleDynamic 等

3. 架构介绍

分布式架构采用主从模式,Master 作为核心节点,管理各个 Agent,每台机器(或者每个 docker)只能有一个 Agent,所以每增加一个 Agent 相当于增加一台机器的资源;

  • Agent 负责 Work 节点的增删改查、启动停止,每个 Agent 可以管理若干个不同的 Work 节点,可以由用户选择在这个 Agent 下使用哪些 Work 节点,非常灵活;

  • Work 节点是具体的工作节点,负责具体的业务,比如 Nodetimer 是时间服务节点,BridgeIO 是 API 数据收发节点,VehicleDynamic 是动力学节点等;

4. 配置节点和代理的原因

  1. 资源扩展:一台机器的资源是有限的,采用分布式架构,可横向扩充资源;

  2. 用户可配置:可以根据用户自己的需求,选择添加几个 Agent,在每个 Agent 下使用哪些 Work 节点都可以由用户自主选择,灵活性强;

  3. 跨平台:无论是 Windows 还是 Linux 系统,都可以轻松的接入分布式架构,一个 docker 也可以作为一个 Agent 接入,兼容不同的平台;

5. 具体用途

  1. 多车互动:每个 Agent 配置一台主车,每台主车之间就可以进行交互;

  2. 高精度渲染:一台机器的 GPU 性能有限,无法支持多个摄像头、UE 的高精度渲染,可将 UE、摄像头分布到各个 Agent 下,充分利用每一台机器的 GPU 性能,实现多摄像头、多 UE 的高精渲染;

6. 节点或代理如何选择

在 Agent 列表管理下,可以对不同的 Agent(代理)进行增删改查,每台机器(或者 docker)是一个 Agent,每个 Agent 有唯一的 Agent uuid,若 Agent 连接成功,会显示 Agent 的 ip 地址;

在每个 Agent 下,可以选择的节点有以上几种类型,一般而言,选择什么类型的节点取决于这个 Agent 的用途。

比如这个 Agent 要进行高精度渲染,那么需要在这个 Agent 下添加可视化节点(GPU)和物理级传感器节点(GPU),一种类型可以根据需要添加一个或者多个,另外在这个 Agent 下不需要用到的节点可以删除;

7. 分布式系统配置

分布式系统配置分为主控配置和从机配置,主控和从机都可以是 Windows 或者是 Linux 系统,在整个分布式架构中,只能有一台主控,从机不限;

7.1 Windows 主控配置

  1. 在系统设置里将 IP 地址改为本机实际 IP 地址,点击保存;

  1. 右下角托盘,打开 Agent 配置,将 Web 地址改为本机实际 IP 地址,然后点击停止、启动;

  1. 主控 Agent ip 变成本机实际 IP 地址,修改成功;

  1. 点击添加 Agent,添加从机,此时会显示已添加的 Agent1 和 Agent2(名称自定义),每个 Agent 会有专属的 Agent uuid,记住这个 id;

7.2 Windows 从机配置

  1. 安装时,选择分布式-Agent,点击下一步;

  1. 将 AgentID 改成上面记住的 Agent uuid,WebIP 改成主控的 IP 地址,点击立即安装;

  1. 安装完成,如果在安装的时候忘记修改 AgentID 和 WebIP 或者修改错误,也可以在右下角托盘的 Agent 配置里再次修改 AgentID 和 Web 地址,然后点击停止、启动;

  1. 打开主控的 Agent 列表管理,可以看到 uuid 为 20001 的 Agent1 连接成功(显示绿色),并显示此从机的 Agent ip 和操作系统 Windows;

7.3 Linux 主控配置

如果要将 Linux 作为主控的话,基本步骤与 Windows 主控配置差不多,因为 Linux 没有托盘,所以在第二步上有所不同。

  1. 进入 simone docker;

  2. 在 /Simone/Common/Foundation 目录下,编辑 Agent.cfg 文件;

  1. 将 webip 改成主控的 IP 地址,即本机 Linux 实际的 IP 地址,保存退出,然后重启 simone;

  1. 其它步骤与 Windows 主控配置基本一致;

7.4 Linux 从机配置

Linux 系统下,simone 是在 docker 里,所以要进入到 docker 里进行修改(linux 安装 simone 不再赘述);

  1. 进入 simone docker 命令:sudo docker exec -it simone bash

  2. 在 /Simone/Common/Foundation 目录下,编辑 Agent.cfg 文件;

  1. 将 authcode 改成主控 Agent 列表新建的 Agent uuid,将 webip 改成主控的实际 IP 地址,保存退出;

  1. 在 /home/unreal/.simone 目录下,将 SimOneOS.conf 文件里的内容清空,然后退出 docker,并重启 simone;

  1. 打开主控的 Agent 列表管理,可以看到 uuid 为 20002 的 Agent2 连接成功(显示绿色),并显示此从机的 Agent ip 和操作系统 Linux;

8. 节点配置不成功的报错及解决方案

No work node

一般缺失某个节点的原因是实际用到了某个节点,但并没有添加;

比如用到了物理级传感器,但是在节点配置里并没有添加,就会出现这个错误;

解决方案是在某个 Agent 的节点配置里添加 GPU,并重启 simone;