RoboMaster

标题: 【RM2021-RMUC模拟器项目简介开源】华南理工大学 华南虎 [打印本页]

作者: huang825172    时间: 2021-8-17 14:48
标题: 【RM2021-RMUC模拟器项目简介开源】华南理工大学 华南虎


        为了在疫情防控形势严峻、造车排期紧张的 2021 赛季备赛期间,给操作手们提供跑场、对战训练、战术分析的条件,弥补先前仿真系统联机功能相对较弱的缺口,华南虎战队开发了一套 RMUC 比赛模拟器软件。模拟器能够在单机或联机模式下运行,提供了较为完整的场地、赛制模拟功能,最多支持 15 人联机对战。经多次模拟赛验证,模拟器主要功能运行稳定,为战队赛前的场地熟悉、战术准备提供了帮助。我们将分享本赛季模拟器开发的经验总结和可用的模拟器软件,希望能够为各参赛队提供研发思路,拓宽竞技机器人赛场的技术广度,发现解决问题的全新视角。

[attach]30479[/attach]

功能概述

        模拟器系统分为服务端与客户端两部分,均打包为 Windows 平台应用程序。服务端用于在局域网或公网服务器部署,以 Headless 模式运行。客户端可在本地独立运行,可作为 Host 端运行,也可以连接服务器。模拟器的开发目标是实现规则手册中的所有赛制,目前已实现的功能有(部分赛制已变更):

        模拟器服务端软件可以在 1 核 2G 配置下流畅运行,具体部署方式参照组织手册。模拟器客户端软件会根据实际运行帧率调整画质水平,经测试在 i7-8550u + MX150 + 16G 配置下可以流畅运行。

[attach]30480[/attach]
(裁判 AR 视角)

[attach]30481[/attach]
(击打能量机关)

[attach]30482[/attach]
(矿石掉落)

[attach]30483[/attach]
(击打哨兵)

[attach]30484[/attach]
(云台手第二屏)

研发思路

        与仿真软件不同,模拟器主要用于以视觉方式呈现赛场,协助参赛队员在没有完整场地的情况下提前适应比赛氛围,把握比赛节奏。相对而言,模拟器不要求精确的物理模拟、尺寸匹配,系统的设计以视觉为主导。
        模拟器开发所使用的技术栈主要包括游戏引擎、网络同步方案、实时通讯方案等。可供选择的方案组合很多,具体的功能与利弊对比在完整的开源文档中有详细介绍。综合考虑开发效率、学习难度、软件稳定性等因素,我们最终选择了 Unity引擎 + Mirror网络库 技术栈。此外还使用了 WebSocket 等周边技术。
        模拟器的软件主要包括匹配系统和对战模拟系统两部分。匹配系统只参与联机游戏,其作用是为所有客户端分配角色,并保证所有客户端同步开始对战模拟。对战模拟系统是模拟器软件的核心,其包括所有赛制逻辑的实现、所有机器人的运动模型、各客户端间的网络同步、根据时间推进比赛进程等功能。
        为了还原真实的赛场,模拟器所使用的场地模型来自官方公布的文件,车辆模型来自机械组同学的 CAD 文件。为了压缩素材大小,优化软件性能和视觉效果,在将模型导入引擎之前,需要先对其进行简化、修补、材质划分。模型导入后,为了让车辆响应操作,需要为每种机器人设计不同的运动模型,并通过不断测试、调整,逐渐优化模型参数,使操作手感接近于真车。完成机器人手感调校后,就可以逐步加入裁判系统逻辑和网络同步功能。由于网络同步过程贯穿于所有逻辑中,在开发初期就应该对使用的网络框架进行了解,并基于此进行软件架构设计。在开发过程中,需要不断进行测试,测试内容包括单元测试、功能走查、压力测试等,尽早发现并修正逻辑上和网络同步上的问题。当主要功能开发完成后,可以渐进地组织模拟赛,除继续修复漏洞之外,将模拟器训练逐步结合到操作手日常训练中去。

[attach]30485[/attach]
(场地模型处理)

[attach]30486[/attach]
(DevLog)

[attach]30487[/attach]
(模拟器训练)

资料链接

        我们已经将模拟器开发过程中的经验和思考整理成文档,与模拟器软件一起开源。


        在总结文档中,我们详述了模拟器的各组成部分及其实现方式,并给予 2021 赛季模拟器进行了反思和展望。目前 RM 模拟器开发的参考资料非常少,希望我们能为这一领域的技术积累作出贡献。

后续开发

        在 2021 赛季模拟器开发过程中,我们还有很多设想未能实现,具体内容在 GitHub Wiki 文档中有所提及。由于这一版模拟器还有很多不完善的地方,而 RoboMaster 的赛制每年都不相同,我们希望能够在已有经验的基础上,继续推动新版模拟器的开发。
        模拟器开发是一项综合性很强的工作,要将它做得更好,除了需要在技术上不断突破,更离不开思维的交流碰撞。在此,我们诚邀各方有志之士一同进行新版模拟器的设计、研发工作。感兴趣的队伍可以扫描二维码进群。

[attach]30488[/attach]

总结展望

        研发 RM 模拟器,是一件十分有意思的事情。相对于造车,模拟器开发给队伍带来的压力很小;模拟器使用就像打游戏,同样不会给队员造成负担。线上模拟赛能够有效弥补造车进度紧张、校内缺乏场地造成的操作手训练空档,提升队员战术意识,让比赛对抗更加精彩。我们希望能通过分享模拟器开发经验,吸引更多队伍加入自研模拟器行列,期待大家精彩的技术分享!




作者: Mentos_Seetoo    时间: 2021-8-17 14:50
前排占位一楼!
作者: 小袁搜题    时间: 2021-8-17 14:53
二楼,捧场
作者: Cristiano Jie    时间: 2021-8-17 15:00
搬小板凳
作者: Hero-w    时间: 2021-8-17 15:08
终于来了
作者: 菜狗灰灰    时间: 2021-8-17 15:13
摸着虎虎过河!
作者: 苏锌雨    时间: 2021-8-17 15:17

作者: 林河马    时间: 2021-8-17 15:18
本帖最后由 林河马 于 2021-10-8 16:18 编辑

首页帮顶

作者: Deemo    时间: 2021-8-17 15:19
好耶好耶!
作者: youhm1    时间: 2021-8-17 15:41
顶,模拟训练真的很重要
作者: 猪猪多喝热水    时间: 2021-8-17 16:05
感谢开源
作者: kinsky-金斯基    时间: 2021-8-17 16:21
太强了,业界标杆
作者: 小黑丶LV    时间: 2021-8-17 17:10
mark!太需要了
作者: DOOMFIST    时间: 2021-8-17 21:43
虎哥 是新游戏喔~
作者: Ericisc    时间: 2021-8-26 23:19
太强了,给虎虎大爹打call
作者: RELL    时间: 2021-8-29 10:22
请问主机开启服务器过后,还是说服务器离线怎么解决,(或者有可能是服务器开启失败,能否推荐个教程)file:///C:/Users/Mrs/Desktop/QQ%E6%88%AA%E5%9B%BE20210829101926.png
作者: Lin shuo    时间: 2021-8-29 21:42
小老虎确实牛逼啊

作者: huang825172    时间: 2021-8-30 10:50
RELL 发表于 2021-8-29 10:22
请问主机开启服务器过后,还是说服务器离线怎么解决,(或者有可能是服务器开启失败,能否推荐个教程) ...

服务器离线这个是在网页上看的吗?网页端后面几个版本没有跟进,接口可能有些问题,不用参考。
如果是连接不上服务器的话,可能是:
+ 程序弹窗问网络权限的时候,需要给公用、专用网络权限
+ 主机是本地PC,防火墙规则没有设置,需要增加 7 7 7 7 端口 udp,tcp 入站规则
+ 主机是云服务器,检查防火墙是否开启,如果开启的话同本地主机设置,阿里云的话防火墙默认是关闭的,直接在网页控制台设置安全组规则
+ 其他部署步骤请查看开源资料 Github Release 中的手册,再有问题可以加QQ群咨询或者直接戳群主
作者: 李黔琦    时间: 2021-9-8 11:24
捧场捧场!!!
作者: 灵机石榴鸭    时间: 2022-2-4 16:37
大佬太强了!!!
作者: 圆老近    时间: 2022-4-22 20:05
大佬NB
作者: 猫不奕    时间: 2023-6-3 21:06
模拟器太酷辣




欢迎光临 RoboMaster (https://bbs.robomaster.com/) Powered by Discuz! X3.2