diff --git a/src/Neuro_Mujoco/main.py b/src/Neuro_Mujoco/main.py index 1c240566dd..1aa90433a3 100644 --- a/src/Neuro_Mujoco/main.py +++ b/src/Neuro_Mujoco/main.py @@ -1,9 +1,3 @@ -#! /usr/bin/env python -# -*- coding: utf-8 -*- -""" -MuJoCo功能整合工具(支持强化学习策略控制 + ROS 1通信) -优化点:新增基于PyTorch的策略网络推理,自动生成控制指令 -""" import os import sys import time @@ -189,29 +183,8 @@ def visualize(model_path: str, use_ros: bool = False, policy_path: Optional[str] :param model_path: 模型文件/目录路径 :param use_ros: 是否启用ROS模式 :param policy_path: 预训练策略模型路径(.pth) - 可视化模型并运行模拟(支持ROS 1模式) - - 参数: - model_path: 模型文件/目录路径 - use_ros: 是否启用ROS模式(默认False) - """ - # 新增:模型路径智能校验(支持目录自动找XML/MJB文件) - if os.path.isdir(model_path): - # 遍历目录找第一个XML/MJB文件 - model_files = [] - for file in os.listdir(model_path): - if file.endswith(('.xml', '.mjb')): - model_files.append(os.path.join(model_path, file)) - if not model_files: - logger.error(f"目录 {model_path} 中未找到.xml/.mjb模型文件") - return - model_path = model_files[0] - logger.info(f"自动选择目录中的模型文件: {model_path}") - - model_path: 模型文件路径 - use_ros: 是否启用ROS模式(默认False) """ - # 智能校验模型路径(支持目录自动找XML/MJB) + # 模型路径智能校验(支持目录自动找XML/MJB文件) if os.path.isdir(model_path): model_files = [] for file in os.listdir(model_path): @@ -332,7 +305,7 @@ def ctrl_callback(msg: Float32MultiArray): # 映射到实际控制范围 if ctrl_range is not None: - action = ctrl_range[:, 0] + (ctrl_range[:, 1] - ctrl_range[:, 0]) * (action + 1) / 2 + action = ctrl_range[:, 0] + (ctrl_range[:, 1] - ctrl_range[:, 0]) * (action + 1) / 2 # 核心映射:[-1,1]→[ctrl_min,ctrl_max] 线性缩放,保证指令符合执行器物理极限 data.ctrl[:] = action @@ -388,8 +361,6 @@ def ctrl_callback(msg: Float32MultiArray): logger.error(f"可视化过程出错: {str(e)}", exc_info=True) # ===================== 主函数(命令行入口) ===================== -# ===================== 主函数(仅优化model参数help+保持其他逻辑不变)===================== -# ===================== 主函数(完全保持原有逻辑不变)===================== def main() -> None: parser = argparse.ArgumentParser( description="MuJoCo功能整合工具(支持强化学习策略控制 + ROS 1通信)", @@ -397,20 +368,14 @@ def main() -> None: ) subparsers = parser.add_subparsers(dest="command", required=True) - # 1. 可视化命令 - viz_parser = subparsers.add_parser("visualize", help="可视化模型并运行模拟") - viz_parser.add_argument("model", help="模型文件路径/目录(支持.xml/.mjb)") - viz_parser.add_argument("--ros", action="store_true", help="启用ROS 1模式") - viz_parser.add_argument("--policy", help="预训练策略模型路径(.pth文件)") - # 1. 可视化命令(优化model参数help为通用提示,移除硬编码路径) + # 1. 可视化命令(修复重复添加model参数问题) viz_parser = subparsers.add_parser("visualize", help="可视化模型并运行模拟") - viz_parser.add_argument("model", help="模型文件路径或包含模型的目录(支持.xml/.mjb格式)") - viz_parser.add_argument("model", help="/home/lan/桌面/nn/mujoco_menagerie/anybotics_anymal_b") viz_parser.add_argument( - "--ros", - action="store_true", - help="启用ROS模式(发布关节状态/基座姿态,订阅控制指令)" + "model", + help="模型文件路径/目录(示例:/home/lan/桌面/nn/mujoco_menagerie/anybotics_anymal_b)" ) + viz_parser.add_argument("--ros", action="store_true", help="启用ROS 1模式(发布/订阅关节控制话题)") + viz_parser.add_argument("--policy", help="预训练策略模型路径(.pth文件)") # 2. 速度测试命令 speed_parser = subparsers.add_parser("testspeed", help="测试模型模拟速度(多线程)")