快速使用

推荐运行环境

  • Ubuntu 20.04及以上

  • Docker 23及以上

  • 可用运行内存大于8GB

  • 可用硬盘空间大于16GB

下载程序镜像

从“挑战地下2023”赛事官方网站 软件下载 页,下载初赛竞赛测试系统Docker镜像文件。

加载Docker镜像文件:

docker load < tzdx2023_main_0.3.tar.gz
docker load < tzdx2023_scene-sim_0.3.tar.gz
docker load < tzdx2023_bridge_humble_0.3.tar.gz

启动主服务

docker run -d --rm -p 2000:2000 -p 8000:80 tzdx2023/main:0.3

主服务启动后,即可在同一局域网内,使用网页浏览器打开 http://<SERVER_IP>:8000 地址,访问初赛竞赛测试系统用户界面。其中 SERVER_IP 是运行主服务的物理主机IP地址。

启动场景仿真服务

docker run -d --rm --privileged --network host -e DISPLAY=$DISPLAY --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all -e SERVER_IP=<SERVER_IP> tzdx2023/scene-sim:0.3

本示例仅启动一个场景仿真服务容器实例。

加载仿真配置文件

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

进入“仿真场景”页面,点击“加载配置文件”按钮,选择仿真配置文件。主服务自动解析仿真配置文件完成后,页面上将显示场景元素结构树,以及场景中的ROS话题。

在加载仿真配置文件之后,点击“启动仿真”按钮。

示例配置文件可 从这里下载 ,请解压后上传竞赛系统。

提示

初赛竞赛测试系统0.3新增了通信设备组件,详见 仿真配置文件无人平台组件

启动算法接口服务

需为每一个无人平台启动一份算法接口服务容器镜像。

docker run -d --rm -e SERVER_IP=<SERVER_IP> -e MODEL_NAME=my_robot tzdx2023/bridge-humble:0.3

其中 MODEL_NAME 是仿真配置文件中自定义的无人平台名称。示例配置文件中的无人平台名称为 my_robot

启动自主探测算法

由参赛队自行为每一个无人平台启动一组自主探测算法。

同一个无人平台的自主探测算法和算法接口服务需运行在同一局域网内,以保证自主探测算法和算法接口服务能够通过ROS交换数据。

提示

建议将自主探测算法导入到算法接口服务容器中编译、运行。初赛竞赛测试系统0.3提供了不同ROS版本的算法接口服务容器镜像,同时提供了参赛样例程序,可从“挑战地下2023”赛事官方网站 软件下载 页下载。

本示例可在系统中使用如下ROS话题,接收竞赛系统授时、无人平台传感器数据,控制无人平台运动,提交比赛过程中的算法数据:

/clock

类型: builtin_interfaces/Time

由参赛队算法控制 my_robot 无人平台中的 chassis 底盘的运动。

/my_robot/chassis/cmd_vel

类型: geometry_msgs/Twist

由参赛队算法控制 my_robot 无人平台中的 chassis 底盘的运动。

/my_robot/front_camera/image

类型: sensor_msgs/Image

参赛队算法通过此ROS话题接收 my_robot 无人平台中的 front_camera 摄像头的图像数据。

/my_robot/lidar/points

类型: sensor_msgs/PointCloud2

参赛队算法通过此ROS话题接收 my_robot 无人平台中的 lidar 激光雷达的点云数据。

/my_robot/comm/data

类型: std_msgs/ByteMultiArray

参赛队算法通过此ROS话题接收 my_robot 无人平台中的 comm 通信收发器接收到的通信数据。

可在系统中使用如下ROS服务,接收和控制比赛过程:

/match/control/prepare,/match/control/start,/match/control/finish

类型: std_srvs/SetBool

由参赛队算法接收开始准备比赛、开始比赛、结束比赛的控制。

注意

参赛队算法需自行实现这三个服务,以接收比赛控制信号。

/match/request/prepare,/match/request/start,/match/request/finish

类型: std_srvs/SetBool

由参赛队算法请求开始准备比赛、开始比赛、结束比赛。

比赛过程中,参赛队算法按照比赛规则提交算法数据,例如:

/my_robot/odometry

类型: nav_msgs/Odometry

参赛队算法通过此ROS话题提交探测平台的自定位数据。以选用的移动平台的原点为参考点,符合ROS前左上(FLU)坐标系。

/detection/objects

类型: tzdx_msgs/DetectionArray

参赛队算法通过此ROS话题提交已经探测到的所有目标的列表。消息类型定义详见 ROS消息定义

/relay/data

类型: std_msgs/ByteMultiArray

竞赛系统专用通信中继接收数据的接口。