Janus 客户端入门指南
面向零基础队员。读完这篇文档,你将理解 Janus 客户端的每一个模块在做什么,以及它们如何协同工作。 前置阅读:建议先读完 RCSSServerMJ 入门指南,了解仿真服务器和通信协议的基础概念。 代码声明:Janus 为南邮 Apollo 战队开源代码,如需交流或获取相关信息,请通过 About 页邮箱联系。 快速阅读路线 10 分钟速读:先看“第一章:Janus 是什么”“第二章:主循环”和“第十三章:完整数据流”,抓住客户端每帧的输入、决策和输出。 30 分钟入门:按服务器通信、感知解析、世界模型、决策系统、技能系统这条线读,把 server.py、world_parser.py、decision_maker.py 串起来。 深入阅读:重点读 Walk、Keyframe、GetUp 和工具函数几章,再回到“代码对应关系一览”,对照源码逐个文件看。 第一章:Janus 是什么 Janus 是一个 RoboCup 3D 足球仿真客户端。它不负责物理仿真(那是服务器的事),它只做一件事: 收到服务器发来的感知 → 做决策 → 把动作发回去 类比:如果服务器是"足球场 + 裁判",那 Janus 就是"球员的大脑"。每 20ms,大脑从眼睛和身体收到信息(感知),想好下一步做什么(决策),然后命令肌肉动起来(动作)。 代码在哪 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Janus_main/Janus3D/ ├── run_player.py ← 入口:启动一个球员 ├── start.sh / start3v3.sh ← 脚本:启动整支队伍 ├── kill.sh ← 脚本:杀掉所有球员进程 ├── build_binary.sh ← 脚本:打包成比赛用的二进制 ├── pyproject.toml ← 依赖配置 └── mujococodebase/ ← 所有核心代码 ├── agent.py ← 主控:把所有模块串起来 ├── server.py ← 网络:和服务器的 TCP 通信 ├── world_parser.py ← 感知解析:S-expression → Python 数据 ├── robot.py ← 机器人模型:23 个电机的控制 ├── decision_maker.py ← 决策:该干什么 ├── world/ ← 世界模型:球、球员、场地、比赛状态 ├── skills/ ← 技能系统:走路、起身、站立 └── utils/ ← 工具:坐标变换、神经网络加载 第二章:主循环 — Agent 每帧在做什么 打开 agent.py,整个客户端的核心就是 Agent.run() 里的 4 行代码: ...