第二章 系统安装
本章介绍KY-RTI在Linux和Windows操作系统下的安装方法。
2.1 Linux安装
安装程序:RTI-1.3NGv6.tar.gz。假设当前的Linux用户名为lbq,HOME目录为/home/lbq。KY-RTI的安装目录为HOME目录,则操作步骤如下。
第1步:解压文件。
cd /home/lbq
tar xvfz RTI-1.3NGv6.tar.gz
图2.1 Linux系统中KY-RTI的目录结构
KY-RTI的整个目录结构如图2.1所示。KY-RTI采用了与DMSO RTI-1.3NGV6一致的目录结构。KY-RTI的根目录为RTI-1.3NGV6,子目录为Linux-os-opt-mt。该子目录名称其实并不重要,可以任意命名,譬如在x86_64上命名为Linux-x86_64-opt-mt,在飞腾上命名为Linux-ft-opt-mt等。在Linux-os-opt-mt目录下的apps、bin、config、doc、etc、include、lib是DMSO RTI-1.3NGV6原有的目录结构,KY-RTI保留了这些目录。对一般用户而言,可以忽略config、doc、etc这3个目录,它们只在移植旧的仿真程序时有用。
(1) apps
该目录是GNU C++示例,包括helloWorld、chat、chat-ddm、FQR、game-ddm、testtime、time-tick、time-notick、ping-tick、pong-tick等示例程序和一个README文件。
目录 | 用例简介 |
helloWorld | 该例是DMSO RTI-NG1.3v6自带的例子,其源代码和目录结构几乎原封不动。虽然作为DMSO的示范用例,但该例较为复杂,建议新手从其他用例入门。 |
chat | 一个聊天程序,该例使用了交互类,没有使用tick服务。 |
chat-ddm | 一个DDM分组聊天程序,该例使用了交互类,没有使用tick服务。 |
FQR | 一个使用乐观时间管理服务的用例,使用了tick服务。 |
game-ddm | 一个支持进入/离开区域范围报警功能的DDM用例程序,该例使用了对象类,没有使用tick服务。 |
testtime | 一个用于测试ping和pong两个程序之间发送若干个消息需要花费多少时间的用例,使用了tick服务。 |
time-tick | 该例使用了对象类和时间管理服务,使用了tick服务。 |
time-notick | 该例使用了对象类和时间管理服务,没有使用tick服务。 |
ping-tick | 使用了tick服务的ping用例 |
pong-tick | 使用了tick服务的pong用例 |
(2) apps-qt
该目录包括2个使用Qt Creator开发的Qt示例。
目录 | 用例简介 |
QtChatConsole | 一个Qt聊天程序,该例使用了交互类,没有使用tick服务。 |
QtTimeManagement | 一个使用了对象类和时间管理服务,没有使用tick服务的Qt程序。 |
(3) apps-java
该目录包括3个支持OpenJDK和Oracle JDK的Java示例。
目录 | 用例简介 |
Chat | 一个Java聊天程序,该例使用了交互类,没有使用tick服务。 |
time-tick | 该例使用了对象类和时间管理服务,使用了tick服务。 |
time-notick | 该例使用了对象类和时间管理服务,没有使用tick服务。 |
(4) apps-python
该目录包括4个Python示例。
目录 | 用例简介 |
chat | 一个Python聊天程序,该例使用了交互类,没有使用tick服务。 |
FQR | 一个使用乐观时间管理服务的用例,使用了tick服务。 |
time-tick | 该例使用了对象类和时间管理服务,使用了tick服务。 |
time-notick | 该例使用了对象类和时间管理服务,没有使用tick服务。 |
(5) jar
该目录包括kyrti.jar和RTIManager.jar,用于Java开发。
(6) module
该目录用于Python开发。如果该目录不存在,则表示作者没有提供该功能,apps-python目录下的示例因缺少该模块而不能运行。
(7) bin
该目录为KY-RTI服务器程序所在目录。
目录 | 用例简介 |
RTIManager.sh | 以图形化方式启动KY-RTI服务器,需要安装Java。 |
KY-RTI | 以命令行方式启动KY-RTI服务器,不需要安装Java。 |
configure.rti | 设置图形化启动/命令行启动,以及使用的端口号。 |
MachineInfo | 采集KY-RTI服务器的硬件信息。 |
MachineInfo.txt | MachineInfo程序运行后的结果保存文件。 |
HelloWorld.fed | HelloWorld程序采用的fed文件。 |
chat.fed | 聊天程序、ping/pong程序采用的fed文件。 |
tracer.fed | 时间管理程序采用的fed文件。 |
README | 对两种启动方式的说明 |
(8) include
该目录为KY-RTI的GNU C++和Qt的头文件目录,如图2.1所示,所有文件与DMSO RTI-1.3NGV6一致。
(9) lib
该目录为KY-RTI的GNU C++和Qt的库文件目录,所有文件与DMSO RTI-1.3NGV6一致。
第2步:设置环境变量。
在Linux-os-opt-mt目录下的env.sh和env.csh用于设置环境变量,shell脚本请参照env.sh,csh请参照env.csh。当前操作系统的用户大都采用shell。
设置环境变量一般可以采用下列几种方法之一,但以第一种方法最为可靠,后面两种方法在有些操作系统上不起作用。环境变量设置完后,要关闭所有打开的终端并重新打开。
(1) vim $HOME/.bashrc
将环境变量添加到.bashrc文件的最后。
(2) vim /etc/profile
将环境变量添加到/etc/profile文件的最后。
(3) cp env.sh env.csh /etc/profile.d/
根据安装目录修改env.sh、env.csh后将它们拷贝到/etc/profile.d/。
所添加的环境变量如图2.2所示,如果没有安装Java,则可以安装OpenJDK或者从Oracle网站下载JDK安装。
lbq@kylin260:~/RTI-1.3NGv6/Linux-os-opt-mt$ more env.sh
#!/bin/sh
export RTI_HOME=/home/lbq/RTI-1.3NGv6
export RTI_BUILD_TYPE=Linux-os-opt-mt
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${RTI_HOME}/${RTI_BUILD_TYPE}/lib
#支持OpenJDK和Oracle JDK。如果Java安装在指定目录,则设置JAVA_HOME和PATH
#export JAVA_HOME=/home/lbq/jdk1.8.0_171
#export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=$CLASSPATH:.:${RTI_HOME}/${RTI_BUILD_TYPE}/jar/kyrti.jar
export PYTHONPATH=$PYTHONPATH:${RTI_HOME}/${RTI_BUILD_TYPE}/module/python
图2.2 env.sh文件内容,
第3步:确认环境变量是否生效
执行下列命令,如果不为空则设置成功。
echo $RTI_HOME
第4步:获取授权文件
KY-RTI在正常运行之前,需要进行授权。为简化用户开发,只需要授权KY-RTI服务器这一台机器,其他所有客户端机器都不需要授权。相关步骤为:
(1)获取机器信息
cd /home/lbq/RTI-1.3NGv6/Linux-os-opt-mt/bin
./MachineInfo
(2)将本机新生成的MachineInfo.txt发送到邮箱:walt_lbq@163.com或hlarti@163.com
(3)将收到的授权文件改名为RTI.lic,拷贝到/etc目录,使用root用户执行下列命令。
sudo cp RTI.lic /etc/
sudo chmod 755 /etc/RTI.lic
第5步:启动KY-RTI服务器
cd /home/lbq/RTI-1.3NGv6/Linux-os-opt-mt/bin
启动方式一:图形化启动,需要安装Java
(1)修改configure.rti,设置";; UsingRTIManager On",此为缺省方式
;; UsingRTIManager On
;; RTI Server's Port Number
port=20000
(2)启动控制台,支持多个联邦
./RTIManager.sh
图2.3 KY-RTI图形化启动界面
启动方式二:命令行启动,不需要安装Java,每个port支持1个联邦
(1)修改configure.rti,设置";; UsingRTIManager Off"
;; UsingRTIManager Off
;; RTI Server's Port Number
port=20000
(2)启动一个终端,执行下列命令来启动KY-RTI服务器
./KY-RTI
KY-RTI是一个控制台程序,启动界面非常简单,沿用了DMSO RTI-1.3NGV6的风格,但性能高、稳定性极好。
图2.4 KY-RTI命令行启动界面
第6步:启动一个仿真成员
启动KY-RTI软件包中的任意一个仿真成员示例,如果不报错则安装完成。
注意:如果仿真成员不能连接到KY-RTI服务器,则需要关闭防火墙。防火墙会影响程序之间的通信。对于两台机器,需要在每台机器上使用“ping ip地址”命令确定网络是否正常。
2.2 Windows安装
第1步:安装软件包
在Windows系统下,用户的需求多种多样。有两种软件包和相应的安装方法。
方法一:自动安装
直接运行RTI-1.3NGv6.exe,所有环境变量由安装程序自动解决。安装程序会将KY-RTI相关的动态库文件拷贝到Windows系统目录下。
方法二:手动安装
一些用户认为安装程序将动态库文件拷贝到Windows系统目录不好控制,因此希望提供手动安装方法,动态库文件保存在KY-RTI的自身目录。
(1)选择一个目录,将RTI-1.3NGv6.zip解压到该目录。假设安装目录为:C:\KY-RTI。
(2)将C:\KY-RTI\dll目录添加到系统的PATH目录。
方法为:从桌面或资源管理器中选择“计算机”,右键“属性”,点击“高级系统设置”,点击“环境变量”,选择“系统变量”中的“Path”,点击“编辑”按钮,在后面添加“;C:\KY-RTI\dll”。注意,在Windows系统下,目录之间用‘;’分隔;在Linux系统下,则用‘:’分隔。
KY-RTI的整个目录结构如图2.5所示。根目录为KY-RTI,子目录包括VC++开发所需要的include、lib、dll目录和demo-vc用例目录,include目录与DMSO RTI-1.3NGV6完全一致,如图2.6所示;子目录还包括Qt用例目录demo-qt;用于Java开发的jar和demo-java用例目录;用于VC#开发的include-cs和demo-cs用例目录,include-cs为用户提供了可供参考的VC#版本的HLA服务,因为VC#与Java语法类似,所以开发Java程序需要使用HLA服务时也可参考该目录下的文件。
图2.5 Windows系统中KY-RTI的目录结构
图2.6 Windows系统中KY-RTI的include目录
第2步:开发Java仿真应用
基于Java开发仿真应用,需要安装Java并正确设置环境变量。
(1)安装Java。Windows系统下通常是Oracle JDK,可从Oracle官网下载JDK压缩包。
假设JDK软件包解压后的目录为:C:\jdk1.8.0_171,则设置下列环境变量。
(a)JAVA_HOME=C:\jdk1.8.0_171
(b)在PATH环境变量后面添加“;${JAVA_HOME}/bin”
(2)将kyrti.jar拷贝到某一目录,并将其添加到CLASSPATH环境变量。通常可设置为:
CLASSPATH=.;C:\KY-RTI\jar\ky-rti.jar
第3步:获取授权文件
KY-RTI在正常运行之前,需要进行授权。为简化用户开发,只需要授权KY-RTI服务器这一台机器,其他所有客户端机器都不需要授权。相关步骤为:
(1)获取机器信息
运行bin目录下的MachineInfo.exe程序,将与本机相关的信息发送到邮箱:walt_lbq@163.com或hlarti@163.com
(2)将收到的授权文件改名为RTI.lic,拷贝到C盘根目录“C:\”。
第4步:关闭防火墙
防火墙会影响程序之间的通信。对于两台机器,需要在每台机器上使用“ping ip地址”命令确定网络是否正常。
第5步:启动KY-RTI服务器
支持两种启动方式,与Linux启动方式一致。下列操作在KY-RTI\bin目录下进行。
启动方式一:图形化启动,需要安装Java
(1)修改configure.rti,设置";; UsingRTIManager On",此为缺省方式
;; UsingRTIManager On
;; RTI Server's Port Number
port=20000
(2)启动控制台,支持多个联邦
RTIManager.bat
图2.7 KY-RTI图形化启动界面(Windows)
启动方式二:命令行启动,不需要安装Java,每个port支持1个联邦
(1)修改configure.rti,设置";; UsingRTIManager Off"
;; UsingRTIManager Off
;; RTI Server's Port Number
port=20000
(2)启动一个终端,执行下列命令来启动KY-RTI服务器
KY-RTI.exe
KY-RTI是一个控制台程序,启动界面非常简单,沿用了DMSO RTI-1.3NGV6的风格,但性能高、稳定性极好。注意:该方式建议先启动一个终端,然后在终端中执行KY-RTI.exe,这样当程序异常退出后(譬如没有经过认证)用户能够在终端中看到原因;否则,如果直接用鼠标点击KY-RTI.exe执行程序,则程序异常退出后用户不会了解具体原因。
图2.8 KY-RTI命令行启动界面(Windows)
第5步:启动一个仿真成员
启动KY-RTI软件包中的任意一个仿真成员示例,如果不报错则安装完成。
KY-RTI的Linux、Windows版本和源码请联系作者:walt_lbq@163.com
KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具
KY-RTI分布仿真技术:第七章 Visual C++程序设计
KY-RTI分布仿真技术:第八章 Visual C#程序设计
KY-RTI分布仿真技术:附录1 分组聊天(HLA数据分发管理的应用)