BTPDM优化方向和Roadmap - Ligcox/BTP_DM GitHub Wiki

我们做了什么

木鸢Birdiebot从2020赛季正式走入RoboMaster的世界,遗憾的是,在2020年的线上评审中,我们并没有获得线上评审评委的认可。在2021年我们第一次踏入了RoboMaster的赛场,在一年中我们继续对BTPDM进行优化,上场发挥有了一定比较稳定的效果。目前BTPDM主要解决的问题包括:

系统主体框架和各个功能模块间和非功能模块的解耦
硬件与软件的通讯,即BCP
哨兵机器人及地面机器人的自瞄任务
步兵机器人激活小能量机关

在BTPDM的开发过程中,我们借鉴了大量的其他参赛队伍的开源项目和工程,在此向在RoboMaster参赛过程中提供开源项目和参与到RoboMaster生态建设的队伍表示由衷的感谢!

BTPDM在构思的阶段希望设计一套快速通用的机器人上位机框架,即所有机器人都可以通过一套框架,在各种架构的上位机上实现不同的赛场环境任务,目前BTPDM也仅仅迈出了第一步。完全尝试使用脚本语言编写的RoboMaster开源框架也是目前我们认知范围内一次比较大的尝试,但是我们通过大量的运行测试和赛场实际表现仍然认为这是一个令人感到欣喜的地方。脚本语言带来的跨平台特性和开发效率是传统C/C++开发无法匹敌的,此外脚本语言庞大的开源生态也为后续的迭代开发提供了动力。

未来优化方向

目前BCPDM在RoboMaster赛场上取得的表现给了我们很大的信心,但是对整个框架的设计、编写和功能实现,仍然有大量需要优化的地方,主要特现在以下几个部分

功能模块

在BCP的设计之初,我们一共定义了4个任务,分别为:

mode == 0: 自瞄模式
mode == 1: 反小陀螺模式
mode == 2: 击打能量机关模式
mode == 3: 吊射装甲板模式

囿于时间有限,目前仅实现了自瞄和能量机关模式,其他任务,特别是可靠的地面机器人对敌方哨兵机器人的吊射,是RoboMaster赛场上非常重要的功能模块,这一点需要较好的目标识别和预测。此外,随着规则的更新,也可能出现一些全新的任务方式,如哨兵对能量机关的击打、地面机器人的反飞镖等,这些功能的完善后续仍有大量的优化空间。

图像姿态解算

目前采用了灯条的8个位姿关键点作为pnp解算的输入。对比相似三角形、梯形解算等方法对目标的姿态解算并没有 显著 的提升,在5m装甲板正对的情况下,误差大约为8%,超过6m的范围内(特别是对_距离_的)解算误差较为明显。

因此未来会考虑优化pnp解算算法,动态的实现对目标距离的解算或尝试使用深神经网络的方式计算目标距离。

数据融合

目前BTPDM实现的主要仍然是对图像在 图像坐标系 下的定位,通过融合IMU数据,能够更好地解算出目标在 世界坐标系 下的位置。这一点也是后续优化的关键点之一,这能够有效地提高哨兵机器人在移动状态下对敌方移动目标的击打效果。

数据预测

目前BTPDM仅仅通过简单的卡尔曼滤波方式对目标实现预测,预测效果并不尽如人意。预测问题是一个复杂的系统工程,需要对多个模块从信息的获取到处理加工做大量的优化。在拥有稳定的决策数据源情况下,目标的预测才能够取得较好的效果,否则一切都是无源之水。这需要在对上述两个部分的内容有较好的优化后,重新对预测算法模块进行编写。

ROS迁移

目前BTPDM的主要功能已经实现,但面对未来更加复杂赛场环境、机器人性能提升带来的软件迭代等,依旧为BTPDM的持续优化带来着巨大的挑战。BTPDM目前完成的很多工作目前也有较为成熟的工具,如:日志记录、健康管理等。在并行方面,我们依然认为BTPDM目前做的不够完善。在未来的优化过程中,我们希望将BTPDM的主体模块迁移到ROS中,实现更加极致地机器人上位机。

Roadmap

Roadmap

写给未来BTPDM的开发者

2021赛季转瞬即逝,我们曾怀着憧憬踏入RoboMaster的世界,RoboMaster的世界给了每一个青年工程师一个发挥自己能力和梦想的舞台;我们也曾共同经历了无数的悲伤和欣喜,一同度过了无数个不再漫长的黑夜。四季轮替,平淡的生活因为一点点信念和理想,因为RomoMaster和每个人心里共同的目标,少了些许乏味和枯燥。对于即将道别的Robomaster2021,对于即将重新面对更多挑战的BTPDM,这个part希望留给未来BTPDM的开发者。

RoboMaster属于每一位有理想的青年工程师,希望你也是其中之一。我不知道应该极致如何定义,但是成为极致应该是每个工程师内心的准绳。相对于极致,追逐极致的过程其实更有意义。希望每一位BTPDM的开发者能够有责任心能够负责好各自的部分,能够尽力地完成每个功能的实现,即使因为各种缘故无法继续进行,也一定要留好注释,做好工作的交接。不要由于个人的失误使得一个团队加重负担。编写的每一行代码应该有清晰的逻辑和周到的设计,你们的代码可能需要未来的工程师去修改和维护。在保证功能正常运行的前提下,请务必保证代码的干净卫生,妥善地处理各个模块间耦合关系,保证代码的复用性。

RoboMaster是一个比赛,但是更多的需要技术的迭代和更新。希望未来每一位BTPDM的开发者都能够保持好奇心,哪怕天马行空和不切实际,但往往灵感就在那一刻出现。做好技术的积累和储备,在必要的时候,留好技术文档供今后的开发者和工程师参考和学习,你也可以通过issues页面联系我们,相信会有更多的开发者保留着和你我一样的热情,参与到问题的讨论和解决中去。以往开发者的经验是重要的,在大多数时候去问问他们怎么做,他们乐与帮助你解决问题,然后一点点的去完善他们,这对未来你的开发很有帮助。

RoboMaster不是一个人的赛场,再完善的设计离不开团队的协作。RoboMaster的每一位工程师更多的是依靠的理想和信念在支撑着他们完成每一次迭代,也许这个过程中每个人都有他们的小脾气,都会有很多不完美的地方,但是他们都是BTPDM中不可或缺的一环。更多的参与到你的团队中去,更多的完成能力范围内的工作。你的每一次push,都会为赛场上机器人的优异表现而添砖加瓦。也许这个过程中可能需要一些磨合,可能有些不愉快,但是未来谁又不是呢?

RoboMaster2021备赛过程和BTPDM设计和实现中参考了大量的开源项目,有大量的参赛队伍、往届队员和供应商与我们进行沟通和交流,为我们不断的提供优化的思路、目标和方向,囿于篇幅和精力有限,在此不再将他们一一整理列出。同时感谢疫情压力下RoboMaster幕后的每一位小伙伴,是你们给了我们一个完整的RoboMaster2021赛季。另外,将最最真挚的感谢送给木鸢Birdiebot每一位并肩作战的小伙伴,没有你们便没有BTPDM的快速迭代、优化和测试,衷心地希望每一位木鸢Birdiebot的成员未来依旧怀揣着青年工程师对技术最极致的热爱,将理想和未来链接;带着每个RMer独有的特质在未来的路上能够心里有火,眼里有光。

希望各位RMer和未来BTPDM的开发者共同努力,一同建设更加美好的RoboMaster开源生态,一同将更加极致的机器人带入RoboMaster赛场,未来一同在各自的领域闪闪发光~

贡献者

BTPDM架构设计:@Li
BTPDM核心逻辑编写:@Ligcox
BTPDM能量机关测试:@harry2002731

联系我们

木鸢Birdiebot战队欢迎各位RMer通过各种方式与我们进行线上或线下的技术交流,你可以通过以下方式联系我们:

地址:上海市松江区龙腾路33号上海工程技术大学实训楼1157室木鸢机甲工作室
Emai:[email protected]