2026年第二届低空经济智能飞行管理挑战赛性能赛BIT-LINC参赛项目代码仓库_基于ROS与Docker容器化技术的多智能体协同调度系统...

第二届低空经济智能飞行管理挑战赛性能赛BIT-LINC参赛项目代码仓库_基于ROS与Docker容器化技术的多智能体协同调度系统...mtuav competition 2024 第二届低空经济智能飞行管理挑战赛 性能赛 BIT LINC 环境配置 需要一台比较好的本地电脑 计算时间的同时 最好也要加上小车和飞机的状态来判断 docker 与去年一样 需要有 docker 支持 这里会自动拉取镜像 cd scripts chmod x race images sh race images sh 创建自定义局域网

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。

# mtuav-competition-2024 第二届低空经济智能飞行管理挑战赛 性能赛(BIT-LINC)

环境配置

需要一台比较好的本地电脑,计算时间的同时,最好也要加上小车和飞机的状态来判断

docker

与去年一样,需要有docker支持,这里会自动拉取镜像

cd scripts chmod +x race_images.sh ./race_images.sh 

创建自定义局域网,并查看子网络详细信息

GPT plus 代充 只需 145docker network create --subnet=192.168.100.0/24 race_net docker network ls docker network inspect race_net 

启动sdk(重新启动sdk)

启动SDK服务,遇到权限问题可以sudo mkdir -p /home/race_log,然后建立局域网互联的container

cd scripts chmod +x start_race.sh ./start_race.sh 

这样会启动三个官方无人机、无人车、平台准备的container(建议初始化),然后再启动用户container(可重复利用)

GPT plus 代充 只需 145docker run -d -p 8888:8888 --name race_user_sdk_container --network race_net --ip 192.168.100.4 -e ROS_MASTER_URI=http://192.168.100.4:11311 -e ROS_IP=192.168.100.4 -v /home/race_log/user_log:/home/race_log -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:/etc/timezone:ro uav-challenge.tencentcloudcr.com/uav_challenge_2024/sdk:user 

相当于四个Docker容器。

重启镜像

cd scripts chmod +x restart_race.sh ./restart_race.sh 

关闭sdk(重启前释放资源)

如果需要关闭SDK服务,则运行下列内容关闭并清除三个容器,后续重新新建进行初始化

GPT plus 代充 只需 145cd scripts chmod +x stop_race.sh ./stop_race.sh 

单机版本的代码开发

我们进入user容器开搞

docker exec -it race_user_sdk_container bash 

确保rosnode list包含/competition_msg_handler_node/map_client_node。然后建议后续直接用vscode插件在容器里面开发吧。

【可选】对于可视化平台,如果目前手头的服务器不支持公开ip的话,可能需要本机转发一下,例如:

GPT plus 代充 只需 145ssh -L 8888:localhost:8888 -p 17003 ps@36.189.234.178 

然后可视化的时候注意要导入/home/sdk_for_user/map_utmm/里面的本地地图才行。

容器内开发过程

race_user_sdk_container容器内的/root/目录拉自己的最新代码

cd ~ git clone https://github.com/superboySB/mtuav-competition-2024 cd mtuav-competition-2024 

下面是一个基于python的简单demo,不包含复杂的算法设计和效率提升,是对竞赛SDK的简易流程示教,demo可以一直送完配置文件中的订单量。

GPT plus 代充 只需 145# 编译 catkin_make # 激活环境 source devel/setup.bash # 运行 rosrun race_demo demo.py 

在解决了转发问题以后,可以在http:// :8888/ 里面看到可视化与console基本是较低延迟同步执行的,其中server-ip就是你可以内网直连的电脑ip(如172.16.0.108),如果使用terminial转发的话就应该是localhost。注意注意!!如果是为了提交代码,我们只做好编译就可以到下一步了。

本地测试run.sh && 在线提交docker镜像

首先,确保race_user_sdk_container/home/目录里面有比赛代码,并且比赛程序的启动方式已经写入到了run.sh文件中,自己测试工程worksapce下面的/home/mtuav-competition-2024/run.sh是否可以跑通,如果可以的话就直接替换掉比赛要求位置的同名文件

cp ~/mtuav-competition-2024/run.sh /home/run.sh bash /home/run.sh 

运行完如果发现也没问题,那别人启动docker就会自动执行比赛程序。接下来执行以下指令

GPT plus 代充 只需 145docker commit race_user_sdk_container race_user:{tag} 

其中tag可以自己定义为版本号之类的玩意。然后登录腾讯云docker服务

docker login uav-challenge.tencentcloudcr.com --username 'tcr$user' --password gXWWpxhO9igRnXzYYV58UexxS1Gw8VQY 

根据比赛方给的appkey和secretKey,我们内部使用

GPT plus 代充 只需 145docker tag race_user:{tag} uav-challenge.tencentcloudcr.com/uav_challenge_2024/3b0859ed3c9d2fd4d7f2a618b85ca413:{tag} docker push uav-challenge.tencentcloudcr.com/uav_challenge_2024/3b0859ed3c9d2fd4d7f2a618b85ca413:{tag} 

其中tag可以自己定义。然后,在本地(非container内部)运行提交官方给的脚本

cd docker_submit_tool ./submit.sh submit uav-challenge.tencentcloudcr.com/uav_challenge_2024/3b0859ed3c9d2fd4d7f2a618b85ca413:{tag} 

如果没什么报错应该就认为是成功提交了一次镜像。然后可以查看自己在线提交的模型的动态与成绩

GPT plus 代充 只需 145./submit.sh query 

方法介绍

这次比赛在泛化性、计算复杂度上都要求低于去年比赛,不过还是沿用了去年冠军小伙的快速路径预计算方法对无人机路径规划的大部分计算进行了加速,以应对一些订单位置可能动态变化的情况。在预计算之后,在线计算的复杂度变得非常低,此时我们构建车机协同相应的状态机实现,尽量提高系统的性能,减少等待时间。

在最近的提交中,重构代码,更加关注能不能有车辆分角色配合(送飞机的、接飞机的,补位的),保证能持续不断的有最近点送高分外卖。可惜了,最后我也顶多能想到一个调参最好能有7000+的策略吧,实在是当场想不到如何才能有冠军那么抽象的分数,期待他们的分享,好好学习一下!

复赛笔记

记录一些不同于初赛的关键信息:

  • [ ] 关于决赛订单信息会不会改变的问题,会看无限提交时期得分是否趋同。如果要改的话,就是订单数量和订单的三个时间点,具体到时候会提前通知,送餐流程不会有很大改变。但是就算变化,也会保证地图信息在测试和正式比赛是一致的。
  • [ ] 上货时,需要自己判断系统时间满足订单的ordertime。方式不麻烦,为直接读取心跳中的三个时间,心跳中的时间就是按照当前系统时间算的(在scene docker初始化时会加上当前系统时间戳),直接拿心跳中的3个时间作比较就行。(直接用python的语言获取当前时间戳就完事了,更方便维护一个订单的状态机,scene镜像初始化以后这些信息其实就都有了,拿到第一个心跳后开始维护就好)注意注意,不要直接用config里面的、要用心跳的返回,只要系统一启动就处理好、不会发生变化。初赛对订单地点进行分类,这个没问题,但想上货必须在orderTimer之后、timeout以前。
  • [ ] 避障、车辆避碰不要太在意边界,要留出至少0.5的余量(线上的漂移差不多也是)。计算和障碍物碰撞的时候按照小车是坐标点进行计算,和飞机同理,不用考虑3m、5m。只有计算车车、机机碰撞按照圆来算,简化计算。
  • [ ] errortype为23指的是货物不在可配送时间范围
  • [ ] 线上和线下的飞行时间可能存在一些估计上的差距?但小车出生点等信息线上、线下都一致。
  • [ ] 必须小车和飞机状态都是ready以后,才可以移动小车,否则给小车下发移动指令是不生效的(这里要看看cmd等待逻辑的死循环是不是有必要串行去给?)
  • [ ] 无限提交时期内的单次任务的运行时间为20min,正式决赛后为60min
  • [ ] 决赛没有开放PX4控制螺旋桨转速,飞机也不能悬停,只能指令下发

初赛笔记

记录一些比较关键的信息,莫要做的太复杂:

  • [ ] 目前车机协同作业区没有障碍物
  • [ ] 初赛中,下单时间、订单是否超时都不考虑
  • [ ] 换电和上货的time_est不是手动设置的,飞机会自己完成,状态会变成上货中、换电中。指令需要你发,仿真机仿真这个过程。无人机在小车上才能完成换电或者上货的操作,充电操作不需要无人机和小车解绑。
  • [ ] 正式比赛会给6个小车、30个无人机
小讯
上一篇 2026-03-21 09:01
下一篇 2026-03-21 08:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/240562.html