快速使用

推荐运行环境

  • 操作系统:Ubuntu 20.04及以上

  • 容器引擎:Docker 23及以上

  • 运行内存:不少于16GB

  • 可用硬盘空间:不少于64GB

  • GPU硬件:建议使用NVIDIA RTX 4090

组建计算集群

根据选用的无人平台组件类型和用量,组建足够多节点的计算集群。计算集群至少包含1个计算节点。

在多节点集群中,计算节点之间使用nfs进行文件共享,默认共享的文件夹为 /nfsroot

下载竞赛系统文件

从“挑战地下2023”赛事官方网站 软件下载 页,下载晋级赛竞赛测试系统计算集群节点守护程序和Docker镜像文件,放置于 /nfsroot 文件夹中。

启动主服务

在集群任一节点上启动主服务

export SERVER_IP=<SERVER_IP>
export RENDER_SCENES=<CONTAINER_NAMES>

docker load < tzdx2023_main_1.0.tar.gz
docker run -it --rm -v /nfsroot:/nfsroot -p 2000:2000 -p 8000:80 -e SERVER_IP=$SERVER_IP tzdx2023/main:1.0

主服务启动后,即可在同一局域网内,使用网页浏览器打开 http://<SERVER_IP>:8000 地址,访问晋级赛竞赛测试系统用户界面。其中 SERVER_IP 是运行主服务的物理主机IP地址; CONTAINER_NAMES 为允许可视化渲染显示的仿真容器名称列表,逗号分隔,例如 scene-sim-0

启用集群节点

在每一个可用于仿真和算法测评的集群节点上运行如下命令,在主服务中注册可用的计算资源,并接收和执行主服务的资源调用。

pip3 install --upgrade psutil pynvml docker

python3 node.py --name <NODE_NAME> --main <SERVER_IP>

其中 NODE_NAME 为用户自定义的集群节点名称(可选,默认为 $HOSTNAME ), SERVER_IP 是运行主服务的物理主机IP地址。

通过晋级赛竞赛测试系统用户界面的资源监控页面,可以查看已启动的所有集群节点。

创建算法容器镜像

基于算法接口容器镜像,创建参赛队自主探测算法容器镜像。样例步骤如下:

加载Docker镜像文件,并启动容器实例,将主机中存放自主探测算法的 HOST_FOLDER 文件夹映射到容器内部 /tmp 文件夹(可以任意文件夹)

docker load < tzdx2023_bridge_humble_1.0.tar.gz
docker run -it --name example -v <HOST_FOLDER>:/tmp tzdx2023/bridge-humble:1.0

将算法程序复制进容器内部 /root/ros_ws (可以任意文件夹)并编译

cp -r /tmp /root/ros_ws
cd /root/ros_ws
colcon build

编辑容器内部启动文件 /root/run.sh ,添加算法启动命令,例如:

ros2 run example_package example_node

打开新的终端,提交容器修改到镜像,

docker ps -a
docker commit <CONTAINER_ID>

其中 CONTAINER_ID 为完成自主探测算法集成的容器ID。提交后,可通过 docker images 查看生成的镜像ID。然后保存镜像到文件:

docker images
docker save <IMAGE_ID> -o example.tar.gz

其中 IMAGE_ID 为生成的镜像ID。将镜像文件 example.tar.gz 移动到 /nfsroot/match 文件夹中。

将容器镜像文件移动到 /nfsroot/match 文件夹中。

编辑无人平台配置文件

在无人平台配置文件中,设置 example.tar.gz 为虚拟无人平台所对应的自主探测算法

<model>
    ...
    <docker_image>example.tar.gz</docker_image>
</model>

将无人平台配置文件复制到 /nfsroot/match 文件夹中,文件名为 config.sdf

无人平台配置文件样例可从 这里 下载。

加载无人平台配置文件

在运行主服务的物理主机的同一局域网内,使用网页浏览器打开 http://<SERVER_IP>:8000 晋级赛竞赛测试系统用户界面。

进入“测试配置”页面,点击“加载配置文件”按钮。主服务自动解析 /nfsroot/match/config.sdf 配置文件,页面上将显示无人平台组件结构树,以及场景中的ROS话题。

启动测试

晋级赛竞赛测试系统用户界面的“比赛控制”页面,点击“启动测试”按钮。竞赛系统将在计算集群中启动算法测试所需的Docker容器,包括每个参赛队无人平台对应的自主探测算法容器。

根据晋级赛比赛规则,所有算法容器正常启动1分钟后,竞赛系统将自动发出开始赛前准备信号,进入赛前准备。参赛队也可人工干预比赛过程,点击相应按钮手动控制比赛过程。

打包算法并上传

参赛队完成虚拟无人平台配置和相应自主探测算法研发后,将配置文件和算法容器镜像文件以如下文件结构打包,并上传至竞赛官方网站,进行算法测试和评估。

<PackageName>.tar.gz
.  config.sdf
.  <ImageName1>.tar.gz
.  <ImageName2>.tar.gz
.  ...

其中 PackageName 可以为任意有效的文件名。ImageName 可以为任意有效的文件名,并在 config.sdf 中通过 <docker_image> 标签正确引用。