快速使用 ======== 推荐运行环境 ------------ * 操作系统:Ubuntu 20.04及以上 * 容器引擎:Docker 23及以上 * 运行内存:不少于16GB * 可用硬盘空间:不少于64GB * GPU硬件:建议使用NVIDIA RTX 4090 组建计算集群 ------------ 根据选用的无人平台组件类型和用量,组建足够多节点的计算集群。计算集群至少包含1个计算节点。 在多节点集群中,计算节点之间使用nfs进行文件共享,默认共享的文件夹为 :code:`/nfsroot` 。 下载竞赛系统文件 ---------------- 从“挑战地下2023”赛事官方网站 `软件下载 `_ 页,下载晋级赛竞赛测试系统计算集群节点守护程序和Docker镜像文件,放置于 :code:`/nfsroot` 文件夹中。 启动主服务 ---------- 在集群任一节点上启动主服务 :: docker load < tzdx2023_main_1.0.tar.gz docker run -it --rm -v /nfsroot:/nfsroot -p 2000:2000 -p 8000:80 -e SERVER_IP= tzdx2023/main:1.0 主服务启动后,即可在同一局域网内,使用网页浏览器打开 :code:`http://:8000` 地址,访问晋级赛竞赛测试系统用户界面。其中 :code:`SERVER_IP` 是运行主服务的物理主机IP地址。 启用集群节点 ------------ 在每一个可用于仿真和算法测评的集群节点上运行如下命令,在主服务中注册可用的计算资源,并接收和执行主服务的资源调用。 :: python3 node.py --name --main 其中 :code:`SERVER_IP` 是运行主服务的物理主机IP地址。 通过晋级赛竞赛测试系统用户界面的资源监控页面,可以查看已启动的所有集群节点。 创建算法容器镜像 ---------------- 基于算法接口容器镜像,创建参赛队自主探测算法容器镜像。样例步骤如下: 加载Docker镜像文件,并启动容器实例,将主机中存放自主探测算法的 :code:`HOST_FOLDER` 文件夹映射到容器内部 :code:`/tmp` 文件夹(可以任意文件夹) :: docker load < tzdx2023_bridge_humble_1.0.tar.gz docker run -it --name example -v :/tmp tzdx2023/bridge-humble:1.0 将算法程序复制进容器内部 :code:`/root/ros_ws` (可以任意文件夹)并编译 :: cp -r /tmp /root/ros_ws cd /root/ros_ws colcon build 编辑容器内部启动文件 :code:`/root/run.sh` ,添加算法启动命令 :: ros2 run example_package example_node 退出或停止容器,创建容器镜像 :: docker export example > example.tar.gz 将容器镜像文件移动到 :code:`/nfsroot/match` 文件夹中。 编辑无人平台配置文件 -------------------- 在无人平台配置文件中,设置 :code:`example.tar.gz` 为虚拟无人平台所对应的自主探测算法 :: ... example.tar.gz 将无人平台配置文件移动到 :code:`/nfsroot/match` 文件夹中,文件名为 :code:`config.sdf` 。 加载无人平台配置文件 -------------------- 在运行主服务的物理主机的同一局域网内,使用网页浏览器打开 :code:`http://:8000` 晋级赛竞赛测试系统用户界面。 进入“测试配置”页面,点击“加载配置文件”按钮。主服务自动解析 :code:`/nfsroot/match/config.sdf` 配置文件,页面上将显示无人平台组件结构树,以及场景中的ROS话题。 启动测试 -------- 晋级赛竞赛测试系统用户界面的“比赛控制”页面,点击“启动测试”按钮。竞赛系统将在计算集群中启动算法测试所需的Docker容器,包括每个参赛队无人平台对应的自主探测算法容器。 根据晋级赛比赛规则,所有算法容器正常启动1分钟后,竞赛系统将自动发出开始赛前准备信号,进入赛前准备。参赛队也可人工干预比赛过程,点击相应按钮手动控制比赛过程。 打包算法并上传 -------------- 参赛队完成虚拟无人平台配置和相应自主探测算法研发后,将配置文件和算法容器镜像文件以如下文件结构打包,并上传至竞赛官方网站,进行算法测试和评估。 :: .tar.gz . config.sdf . .tar.gz . .tar.gz . ... 其中 :code:`PackageName` 可以为任意有效的文件名。:code:`ImageName` 可以为任意有效的文件名,并在 :code:`config.sdf` 中通过 :code:`` 标签正确引用。