Skip to content
Merged
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
dc6e7bb
MuJoCo 智能体神经决策
Vortex444 Sep 23, 2025
2c5063f
MuJoCo 智能体神经决策
Vortex444 Sep 23, 2025
4f98dd9
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Sep 23, 2025
bccc27f
MuJoCo 智能体神经决策
Vortex444 Sep 24, 2025
c57a219
Mujoco智能体神经决策
Vortex444 Sep 24, 2025
ed5c91f
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Sep 24, 2025
3bd54cd
Revert "Mujoco智能体神经决策"
Vortex444 Sep 24, 2025
756f7e8
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Sep 24, 2025
c69928c
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco …
Vortex444 Sep 24, 2025
4a4b8be
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Sep 24, 2025
395c0f0
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Sep 25, 2025
20113e5
基于 MuJoCo 的神经网络代理实现
Vortex444 Sep 25, 2025
134d51d
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Sep 25, 2025
9dc57ef
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Sep 29, 2025
615ef40
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Oct 13, 2025
c0f3a6b
优化代码结构:改用ThreadPoolExecutor、添加类型注解和日志系统
Vortex444 Oct 13, 2025
b567d78
忽略 mujoco_menagerie 目录
Vortex444 Oct 13, 2025
2b11544
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Oct 13, 2025
3f2e254
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Oct 13, 2025
24a1873
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Oct 13, 2025
c3ef47c
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Oct 14, 2025
26881be
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Oct 20, 2025
014316d
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Oct 27, 2025
cc36b9d
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Nov 17, 2025
e5e9e65
修复convert_model函数XML导出bug:正确传递MjData实例
Vortex444 Nov 17, 2025
2f0072e
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Nov 17, 2025
def716f
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Nov 17, 2025
372dc90
修复convert_model函数XML导出bug:正确传递MjData实例
Vortex444 Nov 18, 2025
0733d26
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Nov 18, 2025
cda7baa
feat: 完善ROS集成配置,添加仿真启动流程
Vortex444 Dec 1, 2025
2133e11
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 1, 2025
226de2b
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Dec 1, 2025
a3a7ece
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 2, 2025
d6246fc
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 8, 2025
214d487
修改了README.md文件
Vortex444 Dec 8, 2025
da48709
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Dec 8, 2025
74878c0
新增了 ROSManager 类,将 ROS 功能封装为独立模块
Vortex444 Dec 8, 2025
191005d
新增了 ROSManager 类,将 ROS 功能封装为独立模块
Vortex444 Dec 8, 2025
90117c5
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 8, 2025
7c45df1
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Dec 8, 2025
e5e9900
提交感知模块和控制模块ros封装
Vortex444 Dec 11, 2025
dc20865
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 11, 2025
c1d0623
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 14, 2025
8f1bc5d
添加 mujoco_ros 相关启动/脚本文件,添加控制和感知模块
Vortex444 Dec 14, 2025
3d0450d
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Dec 14, 2025
a8473e2
feat: 优化ROS关节状态发布逻辑,支持多自由度关节
Vortex444 Dec 15, 2025
3456741
删除提交的感知模块的临时文件
Vortex444 Dec 15, 2025
ab47944
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Dec 15, 2025
eb7efb1
删除提交的感知模块的临时文件
Vortex444 Dec 15, 2025
b11f752
feat: 优化ROS关节状态发布逻辑,支持多自由度关节
Vortex444 Dec 15, 2025
bf06da2
新增ros感知模块和控制模块文件
Vortex444 Dec 15, 2025
4408689
优化visualize命令模型路径处理+通用化参数提示
Vortex444 Dec 15, 2025
3aa92a6
Merge branch 'main' into mujoco
Vortex444 Dec 15, 2025
3b751b6
新增强化学习策略控制功能到MuJoCo可视化工具
Vortex444 Dec 16, 2025
15ce163
新增强化学习策略控制功能到MuJoCo可视化工具
Vortex444 Dec 16, 2025
2f9b8c3
Merge branch 'main' into mujoco
Vortex444 Dec 16, 2025
249cca9
修改了README.md文件,新增一些修改过的内容
Vortex444 Dec 16, 2025
472169b
Merge branch 'mujoco' of https://github.com/Vortex444/nn into mujoco
Vortex444 Dec 16, 2025
20fd735
Merge branch 'OpenHUTB:main' into mujoco
Vortex444 Dec 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 79 additions & 46 deletions src/Neuro_Mujoco/README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# 基于 MuJoCo 的神经网络代理实现
实现基于 MuJoCo 物理引擎的机器人、机械结构等智能体的感知、规划与控制,结合神经网络实现动态环境中的自主决策与行为生成。
实现基于 MuJoCo 物理引擎的机器人、机械结构等智能体的感知、规划与控制,结合神经网络实现动态环境中的自主决策与行为生成。新增**强化学习策略推理**与**ROS 1 实时通信**功能,支持端到端的智能控制流程。

# 环境配置
平台:Windows 10/11,Ubuntu 20.04/22.04(ROS推荐),macOS(Intel/Apple Silicon)
软件:Python 3.7-3.12(需支持 3.7 及以上版本)、PyTorch(不依赖 TensorFlow
软件:Python 3.7-3.12(需支持 3.7 及以上版本)、PyTorch(策略网络依赖
核心依赖:MuJoCo 物理引擎、mujoco-python 绑定

# 基础依赖安装
安装 Python 3.11(推荐版本)
安装 MuJoCo 及相关依赖
安装核心依赖
```shell
# 安装MuJoCo Python绑定
pip install mujoco -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

# 安装PyTorch(根据系统配置选择合适版本
# 安装PyTorch(策略网络必需,根据系统配置选择
pip3 install torch torchvision torchaudio -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com

# 安装文档生成工具
Expand All @@ -24,9 +24,50 @@ pip install -r requirements.txt
(可选)验证安装:
```shell
python -c "import mujoco; print('MuJoCo version:', mujoco.__version__)"
python -c "import torch; print('PyTorch version:', torch.__version__)" # 验证策略依赖
mkdocs --version
```

# 核心功能使用
## 1. 模型可视化与控制
支持直接加载模型文件或目录,集成策略控制与ROS通信:
```shell
# 基础可视化(无控制)
python mujoco_utils.py visualize /path/to/model.xml

# 启用ROS 1模式(发布关节状态/基座姿态,接收控制指令)
python mujoco_utils.py visualize /path/to/model.xml --ros

# 加载预训练策略模型(自动生成控制指令)
python mujoco_utils.py visualize /path/to/model.xml --policy /path/to/policy.pth

# 联合模式(ROS + 策略控制)
python mujoco_utils.py visualize /path/to/model.xml --ros --policy /path/to/policy.pth
```
- 交互说明:可视化窗口支持鼠标拖拽旋转、滚轮缩放,按ESC键退出
- 控制优先级:ROS指令 > 策略推理 > 无控制

## 2. 模型格式转换
支持XML与MJB(二进制)格式互转(MJB加载速度更快):
```shell
# XML转MJB
python mujoco_utils.py convert input.xml output.mjb

# MJB转XML
python mujoco_utils.py convert input.mjb output.xml
```

## 3. 模拟速度测试
多线程测试模型仿真性能,评估实时性:
```shell
# 默认参数(1线程,10000步)
python mujoco_utils.py testspeed /path/to/model.xml

# 自定义配置(4线程,50000步,控制噪声0.02)
python mujoco_utils.py testspeed /path/to/model.xml --nthread 4 --nstep 50000 --ctrlnoise 0.02
```
输出指标包括:每秒步数、实时因子(仿真时间/真实时间)、线程耗时统计

# ROS 集成配置(Ubuntu 专属)
### 1. ROS 版本要求
- Ubuntu 20.04 → ROS Noetic
Expand Down Expand Up @@ -61,28 +102,27 @@ rm -rf build devel
catkin_make -DPYTHON_EXECUTABLE=$(which python3)
```

### 5. ROS 启动步骤
#### 5.1 激活环境
```shell
# 激活 Python 虚拟环境
source ~/桌面/nn/.venv/bin/activate

# 加载 Catkin 环境
source ~/桌面/nn/catkin_ws/devel/setup.bash
```

#### 5.2 启动仿真与 ROS 节点
```shell
# 启动 Anymal B 模型 + ROS 控制/订阅节点
roslaunch mujoco_ros main.launch
# 或使用绝对路径(避免软链接歧义)
roslaunch ~/桌面/nn/src/Neuro_Mujoco/mujoco_ros/launch/main.launch
# 策略网络说明
## 网络结构
轻量级多层感知器(MLP),适用于机器人关节控制:
```python
class PolicyNetwork(nn.Module):
def __init__(self, obs_dim: int, action_dim: int, hidden_dim: int = 64):
super().__init__()
self.net = nn.Sequential(
nn.Linear(obs_dim, hidden_dim), # 观测维度=关节位置数+速度数
nn.Tanh(),
nn.Linear(hidden_dim, hidden_dim),
nn.Tanh(),
nn.Linear(hidden_dim, action_dim), # 输出维度=控制维度(nu)
nn.Tanh() # 输出范围[-1,1],自动映射到实际控制范围
)
```

#### 5.3 核心节点说明
- `mujoco_core`:MuJoCo 仿真核心,发布关节状态(`/mujoco/joint_states`)、基座姿态(`/mujoco/pose`)
- `mujoco_ctrl_publisher`:控制指令发布者,发布 `/mujoco/ctrl_cmd` 话题(适配 Anymal B 控制维度 nu=12)
- `mujoco_state_subscriber`:状态订阅者,实时打印关节状态与基座姿态
## 观测与控制映射
- 输入观测:`[关节位置(qpos) + 关节速度(qvel)]`
- 输出控制:归一化指令`[-1,1]`,通过模型`actuator_ctrlrange`自动映射到实际范围

# 文档查看
在命令行中进入项目根目录,运行:
Expand All @@ -97,40 +137,33 @@ mkdocs serve
→ 错误导入 ROS 2 库,替换为 ROS 1 的 `rospy` 即可。

2. **`unrecognized arguments: __name:=mujoco_core`**
修改 `main.py` 中参数解析
修改参数解析逻辑,忽略ROS自动添加的参数
```python
# 原代码:args = parser.parse_args()
args, unknown = parser.parse_known_args() # 忽略 ROS 自动参数
args, unknown = parser.parse_known_args() # 替代 parser.parse_args()
```

3. **`模型文件不存在`**
修改 `launch/main.launch` 中的模型路径,指向真实 MuJoCo 模型(如 Anymal B:`/home/lan/桌面/nn/mujoco_menagerie/anybotics_anymal_b/anymal_b.xml`)
检查模型路径是否正确,可视化命令支持自动搜索目录下的`.xml`/`.mjb`文件

4. **`NameError: name 'count' is not defined`**
→ 初始化 `count` 变量或注释冗余计数逻辑:
```python
count = 0 # 循环前初始化
while ...:
count += 1
if count % 5 == 0: # 按需保留
...
```
4. **`策略模型加载失败`**
→ 确认:① 模型文件存在 ② PyTorch已安装 ③ 模型输入/输出维度与环境匹配(obs_dim=qpos+qvel维度,action_dim=nu)

5. **`ROS话题无数据`**
→ 检查:① `roscore`是否启动 ② Catkin环境是否加载(`source devel/setup.bash`)③ 关节名称映射是否正确

# 贡献指南
提交代码前,请阅读 贡献指南。代码优化方向包括:
- 遵循 PEP 8 代码风格 并完善注释
- 实现神经网络在 MuJoCo 模拟环境中的应用(如强化学习控制、运动规划等
- 撰写对应功能的 文档
- 添加自动化测试(包括模型加载验证、物理模拟稳定性测试、神经网络推理性能测试等
- 优化物理模拟与神经网络的交互效率(如数据采集、动作执行链路
- 扩展 ROS 功能(如多机通信、RViz 可视化、Gazebo 联合仿真)
- 扩展策略网络类型(如CNN、RNN,适配视觉观测
- 优化策略推理效率(如ONNX导出、TensorRT加速)
- 完善ROS功能(如服务调用、参数服务器配置
- 增加自动化测试(模型加载/转换验证、策略性能基准测试
- 支持多智能体仿真与分布式控制

# 参考资源
- MuJoCo 官方文档
- MuJoCo GitHub 仓库
- MuJoCo Python 绑定教程
- MuJoCo 模型库(Menagerie)
- 神经网络基础原理
- MuJoCo 强化学习教程(MJX)
- ROS Noetic 官方文档
- Catkin 工作空间教程
- PyTorch 神经网络教程
- ROS 1 Noetic 官方文档
- 强化学习在MuJoCo中的应用(MJX框架)
Loading