一、什么是VTD分布式显示系统?
VTD (Virtual Test Drive)是德国VIRES公司开发的一套用于驾驶辅助系统,主动安全和自动驾驶的完整模块化仿真工具。其运行于Linux 平台,功能覆盖了道路环境建模、交通场景建模、天气和环境模拟、简单和物理真实的传感器仿真以及高精度的实时画面渲染等。
VIRES公司是自动驾驶仿真开放格式OpenDrive, OpenCRG 和OpenScenario的主要贡献者,VTD的功能和存储也依托于这些开放格式。
而VTD分布式显示系统:只要有一台主机Master安装了VTD软件,主机就可以通过局域网共享本地的VTD文件;从机也可以通过访问局域网获取主机上的VTD文件,另外从机上只需要安装部分依赖包就可以打开VTD的IG模块,从而实现VTD的分布式系统;VTD分布式显示系统适用于有多路视屏输出的场景仿真;
二、如何配置VTD分布式显示系统?
一步步走一定能成功
注意1:指导是基于VTD2021.4版本拟制的; 注意2:需要License支持分布式; 注意3:指定主机Master和从机Slave: (从机不用安装VTD,只需要安装依赖包即可;主机需要安装VTD和Helium)
1、从机依赖包安装及系统配置
- 安装 python 2.7 因为 ROD 需要老版本来处理 track;
- 自动更新软件镜像源
点击 system settings,选择 software & update,在 Ubuntu Software 标签下,看到: Download From,下拉菜单中选择就近的镜像源,后续安装依赖都会从这里下载。 或者通过命令: 需要编辑 $ sudo vim /etc/apt/sources.list 手动更改列表里面的 source (填写资源地址);
3)然后更新 $ sudo apt-get update ; 4)安装必要依赖 $ sudo apt-get install xterm freeglut3 openssh-server synaptic nfs-common mesa-utils xfonts-75dpi libusb-0.1-4 libpng12 若无 libpng12,尝试安装 libpng12-0 若仍然找不到资源则在网络中搜索,举例 URL: http://kr.archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54- 1ubuntu1_amd64.deb 5) 最后执行 $ sudo apt-get update
6) 安装 $ sudo apt install libqt4-qt3support libqt4-svg qt4-qtconfig 7) 执行 $ qtconfig-qt4 在 Appearance 标签下,设置 GUI Style 为 plastique 然后点击“Tune Palette…” 在弹出窗口中的 Central color roles 下来菜单选择 ToolTipText 然后在 Select Color 中点击颜色,调节成黑色
2、配置两台电脑的网络关系,使彼此可以通过 ssh 免密登陆
假设当前主机Master: IP:192.168.0.1 用户名:Master_username 主机名:Master_hostname 假设当前从机Slave: IP:192.168.0.2 用户名:Slave_username 主机名:Slave_hostname
1、 $ sudo apt-get install ssh 保证安装了最新的版本 1)从主机 Master打开一个新的终端 $ ping 192.168.0.2, 从机Slave 打开一个新的终端 上 $ ping 192.168.0.1 能互相ping通(需要两台主机连接到同一交换机上)。
2、Master 和 Slave 分别需要生成 RSK 给彼此使用 1)在 Master 上执行 $ ssh-keygen -t rsa 然后回车三次完成生成 2)进入/home/Master_username/.ssh/id_rsa 寻找生成的文件 id_rsa 和 id_rsa.pub 然后在终端中输入$ ssh Master_username@Master_hostname ,需要输入登陆密码(成功的标志是.ssh 文件夹多出来一个文件 known_hosts) 3)成功后则输入$ exit 退出 注意:在 home 下点击 Ctrl+H 可以显示所有隐藏文件找到在文件夹 4)/home/Master_username/.ssh/并打开一个新的终端: 5)执行 $ cp id_rsa.pub authorized_keys 此命令复制生成新文件:authorized_keys,并且$ sudo chmod 600 authorized_keys (文件读写权限) 6)测试验证 $ ssh Master_username@Master_hostname 后可以无密码登陆自己 7)成功后则输入$ exit 退出 8)使用下列任一种方式在从机上生成新的authorized_keys: ① 把 id_rsa.pub 的内容复制,然后粘贴到从机的/home/Slave_username/.ssh/authorized_keys 下面 ② 在/home/Slave_username/.ssh/打开一个新的终端: 通过命令进行拷贝 $ scp id_rsa.pub Slave_username@192.168.0.2:home/Slave_username/.ssh/ ; 然后$ cat id_rsa.pub >> authorized_keys 在slave上拷贝生成一个authorized_keys 9)在 Master终端上输入$ ssh Slave_username@192.168.0.2成功后输入$ exit 10)在 Slave 终端上输入$ ssh Master_username@192.168.0.1 成功后输入$ exit 11)打开Slave 终端登录到Master;使用名字,而不是 IP 进行登录$ ssh Master_username@Master_hostname,修改/etc/hosts $ sudo vim /etc/hosts打开以后填写上对方的 IP 和 Name 即可,192.168.0.2 Slave_username 12)打开Master 终端登录到Slave;使用名字,而不是 IP 进行登录$ ssh Slave_username@Slave_hostname,修改/etc/hosts $ sudo vim /etc/hosts 打开以后填写上对方的 IP 和 Name ; 在Slave添加:192.168.0.1 Master_username 注意:这个文件中通常已经有两行: 127.0.0.1 localhost 和 127.0.1.1 本机名 (无用)
3、安装Helium将License共享到对应端口上,使局域网成员可以访问到License;
这个步骤的目的是为了使从机有打开VTD IG模块的权限 注:具体查看文档《Study_LicServer.pdf》进行License的配置
4、配置 NFS 在 Master 电脑上( Master )
1)Master 作为 NFS server 存在,在 Master 中$ sudo apt-get install nfs-kernel-server 2)编辑文件 $ sudo vim /etc/exports 进行编辑 添加 %ADDRESS_VTD% %SLAVE_IP% %AUTHORITY% 如/home/Master_username/VIRES/VTD2021 *(rw,sync,no_root_squash,no_subtree_check) 格式:主机VTD的文件路径 (rw,sync,no_root_squash,no_subtree_check) 注意:其中相当于任意 client-IP; 3)使设置生效 $ service portmap restart 然后 $ sudo service nfs-kernel-server restart 然后 $ sudo exportfs 然后显示出 /home/Master_username/VIRES/VTD2021 (出现上述这句话说明,主机的VTD2021文件夹处于共享状态) 4)在从机上可以通过 $ showmount -e %Master_IP% 命令查看指定 IP 上的共享的服务(Master 共享到从机的路径) 5)要改变 VTD 安装文件夹权限 $ chmod 777 /home/Master_username/VIRES/VTD2021 6) 使用命令 $ sudo ufw status 查看防火墙状态
5、配置 NFS 在运行 IG 的电脑( Slave )
1) Slave 上安装$ sudo apt-get install nfs-common 2) 使用$ showmount -e %Master_IP% 才看到服务端的共享文件夹路径 这是可以看到 /home/Master_username/VIRES/VTD2021 3) 创建一个文件夹用来挂载主机上的 VTD 安装位置 $ mkdir /home/Slave_username/SLAVE/VTD2021 4)$ chmod 777 /home/Slave_username/SLAVE 更改文件夹权限 然后进行挂载 $ mount --target nfs %Master IP%:%Master VTD ADDRESS% %SLAVE VTD ADDRESS%即 5)$ sudo mount --target nfs 192.168.0.1: /home/Master_username/VIRES/VTD2021 /home/Slave_username/SLAVE/VTD2021 或者不用–target 而是-t ; 在客户端 Slave 电脑打开文件夹,可以看到 Master 上的内容 6) $ sudo umount /home/Slave_username/SLAVE/VTD2021 卸载后再关机 (如果主机VTD文件夹内容有发生改变,则需要在从机上重新挂载VTD文件夹)
6、配置 VTD 的 Setup 来实现分布式 IG 仿真
1) 从机的前提条件是安装好所有正常安装 VTD 所需要的依赖,尤其是显卡驱动; 2) 打开主机的 /home/Master_username/VIRES/VTD2021/Data/Setups并复制一个DualHost文件夹然后重命名DualHost_1; 3)配置~/DualHost_1/Setup/Config/SimServer中的 simServer.xml文件 4)找到<!-- this is the remote host-- >,操作下面的host; 位置如下:
</Host>
<Host name="Slave_username" vtdRoot="/home/Slave_username/SLAVE/VTD2021" username="Slave_hostname">
<Process
</Process>
</Host>
5)将workDir 和 cmdline 中的$ VI_SET_DIR改成
V
I
C
U
R
R
E
N
T
S
E
T
U
P
;
例
如
:
C
m
d
l
i
n
e
=
"
VI_CURRENT_SETUP; 例如: Cmdline="
VIC?URRENTS?ETUP;例如:Cmdline="VI_CURRENT_SETUP/Config/Imgegenerator/AutoCfg1.xml nottrigger -m 0x01" 上述的AutoCfg1.xml具体配置请参考 :七、VTD中IG配置的基本架构 6)添加Licesen的环境变量,其中eno1是你的网卡名称; 方法如下:
</Host>
<Process
</Process>
<EnvVar name=”VI_LIC_DEVICE” val=”eno1” />
</Host>
7)修改 IG 的配置 ~/DualHost_1/Bin/IGLinks/Setup/Config/Imgegenerator中的 IGbase.xml 中更改标签 taskControlServerAddress 和 imageTransferServerAddress 的地址 从“127.0.0.1”更改成 TC 在网络上的 IP,即 Master 192.168.0.1 否则 IG 无法和 TC 通信
7、VTD中IG配置的基本架构
1、因为每个IG都需要有独立的参数,所以需要复制下述两份文件; 1)复制一个 ~/Config/Imgegenerator/AutoCfg.xml 并重命名为AutoCfg1.xml 2)复制一个 ~/Config/Imgegenerator/AutoCfgDisplay.xml 并重命名为AutoCfgDisplay1.xml 注意: AutoCfg1.xml在Simserver.xml中被调用; AutoCfgDisplay.xml在AutoCfg1.xml中被调用;
3)修改增加的AutoCfg1.xml文件 修改AutoCfg1.xml文件中调用的IG参数文件名称为AutoCfgDispla1.xml。
4)修改增加的AutoCfgDisplay1.xml文件 修改AutoCfgDisplay1.xml文件中的IG参数。
重启VTD软件,新的IG配置即可生效
综上,完成VTD的分布式配置,经过一个周才把VTD分布式调好,如果有不懂的,请留言;
|