[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-rohanpsingh--LearningHumanoidWalking":3,"tool-rohanpsingh--LearningHumanoidWalking":65},[4,23,32,40,49,57],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[17,13,20,19,18],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":29,"last_commit_at":38,"category_tags":39,"status":22},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74913,"2026-04-05T10:44:17",[19,13,20,18],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":46,"last_commit_at":47,"category_tags":48,"status":22},3215,"awesome-machine-learning","josephmisiti\u002Fawesome-machine-learning","awesome-machine-learning 是一份精心整理的机器学习资源清单，汇集了全球优秀的机器学习框架、库和软件工具。面对机器学习领域技术迭代快、资源分散且难以甄选的痛点，这份清单按编程语言（如 Python、C++、Go 等）和应用场景（如计算机视觉、自然语言处理、深度学习等）进行了系统化分类，帮助使用者快速定位高质量项目。\n\n它特别适合开发者、数据科学家及研究人员使用。无论是初学者寻找入门库，还是资深工程师对比不同语言的技术选型，都能从中获得极具价值的参考。此外，清单还延伸提供了免费书籍、在线课程、行业会议、技术博客及线下聚会等丰富资源，构建了从学习到实践的全链路支持体系。\n\n其独特亮点在于严格的维护标准：明确标记已停止维护或长期未更新的项目，确保推荐内容的时效性与可靠性。作为机器学习领域的“导航图”，awesome-machine-learning 以开源协作的方式持续更新，旨在降低技术探索门槛，让每一位从业者都能高效地站在巨人的肩膀上创新。",72149,1,"2026-04-03T21:50:24",[20,18],{"id":50,"name":51,"github_repo":52,"description_zh":53,"stars":54,"difficulty_score":46,"last_commit_at":55,"category_tags":56,"status":22},2234,"scikit-learn","scikit-learn\u002Fscikit-learn","scikit-learn 是一个基于 Python 构建的开源机器学习库，依托于 SciPy、NumPy 等科学计算生态，旨在让机器学习变得简单高效。它提供了一套统一且简洁的接口，涵盖了从数据预处理、特征工程到模型训练、评估及选择的全流程工具，内置了包括线性回归、支持向量机、随机森林、聚类等在内的丰富经典算法。\n\n对于希望快速验证想法或构建原型的数据科学家、研究人员以及 Python 开发者而言，scikit-learn 是不可或缺的基础设施。它有效解决了机器学习入门门槛高、算法实现复杂以及不同模型间调用方式不统一的痛点，让用户无需重复造轮子，只需几行代码即可调用成熟的算法解决分类、回归、聚类等实际问题。\n\n其核心技术亮点在于高度一致的 API 设计风格，所有估算器（Estimator）均遵循相同的调用逻辑，极大地降低了学习成本并提升了代码的可读性与可维护性。此外，它还提供了强大的模型选择与评估工具，如交叉验证和网格搜索，帮助用户系统地优化模型性能。作为一个由全球志愿者共同维护的成熟项目，scikit-learn 以其稳定性、详尽的文档和活跃的社区支持，成为连接理论学习与工业级应用的最",65628,"2026-04-05T10:10:46",[20,18,14],{"id":58,"name":59,"github_repo":60,"description_zh":61,"stars":62,"difficulty_score":10,"last_commit_at":63,"category_tags":64,"status":22},3364,"keras","keras-team\u002Fkeras","Keras 是一个专为人类设计的深度学习框架，旨在让构建和训练神经网络变得简单直观。它解决了开发者在不同深度学习后端之间切换困难、模型开发效率低以及难以兼顾调试便捷性与运行性能的痛点。\n\n无论是刚入门的学生、专注算法的研究人员，还是需要快速落地产品的工程师，都能通过 Keras 轻松上手。它支持计算机视觉、自然语言处理、音频分析及时间序列预测等多种任务。\n\nKeras 3 的核心亮点在于其独特的“多后端”架构。用户只需编写一套代码，即可灵活选择 TensorFlow、JAX、PyTorch 或 OpenVINO 作为底层运行引擎。这一特性不仅保留了 Keras 一贯的高层易用性，还允许开发者根据需求自由选择：利用 JAX 或 PyTorch 的即时执行模式进行高效调试，或切换至速度最快的后端以获得最高 350% 的性能提升。此外，Keras 具备强大的扩展能力，能无缝从本地笔记本电脑扩展至大规模 GPU 或 TPU 集群，是连接原型开发与生产部署的理想桥梁。",63927,"2026-04-04T15:24:37",[20,14,18],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":82,"owner_twitter":83,"owner_website":84,"owner_url":85,"languages":86,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":29,"env_os":99,"env_gpu":100,"env_ram":100,"env_deps":101,"category_tags":106,"github_topics":107,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":22,"created_at":115,"updated_at":116,"faqs":117,"releases":156},2373,"rohanpsingh\u002FLearningHumanoidWalking","LearningHumanoidWalking","Training a humanoid robot for locomotion using Reinforcement Learning","LearningHumanoidWalking 是一个基于深度强化学习训练人形机器人行走能力的开源项目。它旨在解决机器人在复杂、非结构化地形（如松软或不平整地面）上保持平衡和稳定行走的难题，让机器人能够像人类一样灵活迈步。\n\n该项目不仅支持基础的站立与行走任务，还引入了电流反馈机制和规划步态技术，显著提升了机器人在动态环境中的鲁棒性。代码架构清晰，基于 MuJoCo 物理引擎构建，并提供了针对 JVRC 和宇树 H1 等主流人形机器人的现成环境配置。其模块化设计允许用户轻松定义奖励函数、调整任务逻辑，甚至快速适配新的机器人模型。\n\nLearningHumanoidWalking 特别适合机器人领域的研究人员、算法工程师以及高校开发者使用。如果你正在探索双足机器人的运动控制，或者需要一套可复现、易扩展的强化学习基准框架来验证新算法，这个项目将提供极大的便利。通过简单的命令行指令，用户即可启动分布式训练或评估已训练的模型，高效地推进从仿真到实机的研究进程。","# LearningHumanoidWalking\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZgfNzGAkk2Q\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_5c25ff80488f.png\" alt=\"humanoid-walk\" style=\"width:1000px\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\nCode for the papers:\n- [**Robust Humanoid Walking on Compliant and Uneven Terrain with Deep Reinforcement Learning**](https:\u002F\u002Fieeexplore.ieee.org\u002Fabstract\u002Fdocument\u002F10769793)\n[Rohan P. Singh](https:\u002F\u002Frohanpsingh.github.io), [Mitsuharu Morisawa](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-morisawa.html), [Mehdi Benallegue](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-benalleguem.html), [Zhaoming Xie](https:\u002F\u002Fzhaomingxie.github.io\u002F), [Fumio Kanehiro](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-kanehiro.html)\n\n- [**Learning Bipedal Walking for Humanoids with Current Feedback**](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2303.03724.pdf)\n[Rohan P. Singh](https:\u002F\u002Frohanpsingh.github.io), [Zhaoming Xie](https:\u002F\u002Fzhaomingxie.github.io\u002F), [Pierre Gergondet](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-gergondet.html), [Fumio Kanehiro](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-kanehiro.html)\n\n- [**Learning Bipedal Walking On Planned Footsteps For Humanoid Robots**](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2207.12644.pdf)\n[Rohan P. Singh](https:\u002F\u002Frohanpsingh.github.io), [Mehdi Benallegue](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-benalleguem.html), [Mitsuharu Morisawa](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-morisawa.html), [Rafael Cisneros](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-cisneros.html), [Fumio Kanehiro](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-kanehiro.html)\n\n\n## Code structure:\nA rough outline for the repository that might be useful for adding your own robot:\n```\nLearningHumanoidWalking\u002F\n├── envs\u002F                      \u003C-- Environment implementations\n│   ├── common\u002F\n│   │   ├── base_humanoid_env.py   \u003C-- Base class for all humanoid environments\n│   │   ├── mujoco_env.py          \u003C-- MuJoCo simulation wrapper\n│   │   └── robot_interface.py     \u003C-- Robot state\u002Fcontrol abstraction\n│   ├── jvrc\u002F                      \u003C-- JVRC robot environments\n│   └── h1\u002F                        \u003C-- Unitree H1 robot environment\n├── tasks\u002F                     \u003C-- Task definitions (rewards, termination)\n├── rl\u002F                        \u003C-- Reinforcement learning\n├── robots\u002F                    \u003C-- Robot abstractions (PD control, stepping logic)\n├── models\u002F                    \u003C-- MuJoCo model files\n└── tests\u002F                     \u003C-- Test suite\n```\n\n### Key abstractions:\n- **BaseHumanoidEnv**: Common functionality for humanoid environments (observation history, action smoothing, reset logic)\n- **BaseTask**: Interface for task implementations (reset, step, calc_reward, done)\n- **Reward functions**: Explicit parameter functions in `tasks\u002Frewards.py` for testability\n\n## Requirements:\n- Python version: >= 3.10\n- [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) package manager\n\n```bash\n$ uv sync\n```\n\n## Usage:\n\nEnvironment names supported:\n\n| Task Description      | Environment name |\n| ----------- | ----------- |\n| Basic Standing Task   | 'h1' |\n| Basic Walking Task   | 'jvrc_walk' |\n| Stepping Task (using footsteps)  | 'jvrc_step' |\n| Cartpole swing-up  | 'cartpole' |\n\n\n#### **To train:**\n\n```\n$ uv run run_experiment.py train --logdir \u003Cpath_to_exp_dir> --num_procs \u003Cnum_of_cpu_procs> --env \u003Cname_of_environment>\n```\n\nNote: Setting `RAY_ADDRESS=` ensures Ray starts a new local cluster instead of connecting to an existing one.\n\n#### **To play:**\n\n```\n$ uv run run_experiment.py eval --logdir \u003Cpath_to_actor_pt>\n```\n\nOr, we could write a rollout script specific to each environment.\n\n#### **Cartpole**\n\nA minimal swing-up task for testing the RL pipeline. The goal is to swing the pole from hanging down to balancing upright.\n\n```\n$ uv run run_experiment.py train --env cartpole --n-itr 500 --gamma 0.95 --std-dev 0.15 --learn-std\n```\n\n## Configuration\n\nEnvironment behavior is configured via YAML files in `envs\u002F\u003Crobot>\u002Fconfigs\u002F`. Key parameters:\n\n```yaml\n# Simulation\nsim_dt: 0.001              # Physics timestep\ncontrol_dt: 0.025          # Control loop period\nobs_history_len: 1         # Observation history length\naction_smoothing: 0.5      # Action filtering coefficient\n\n# Task parameters\ntask:\n  goal_height: 0.80        # Target standing height\n  swing_duration: 0.75     # Gait swing phase duration\n  stance_duration: 0.35    # Gait stance phase duration\n\n# Reward weights (sum to 1.0)\nreward_weights:\n  foot_frc_score: 0.225\n  foot_vel_score: 0.225\n  # ... see configs for full list\n```\n\n## Adding a new robot\n\n1. Create `envs\u002F\u003Crobot>\u002F` directory with:\n   - `gen_xml.py` - MJCF generation from URDF\n   - `configs\u002Fbase.yaml` - Configuration\n   - `\u003Crobot>_env.py` - Environment class\n\n2. Inherit from `BaseHumanoidEnv` and implement:\n   ```python\n   class MyRobotEnv(BaseHumanoidEnv):\n       def _get_default_config_path(self) -> str: ...\n       def _build_xml(self) -> str: ...\n       def _setup_robot(self) -> None: ...\n       def _setup_spaces(self) -> None: ...\n       def _get_robot_state(self) -> np.ndarray: ...\n       def _get_external_state(self) -> np.ndarray: ...\n   ```\n\n3. Register in `envs\u002F__init__.py`:\n   ```python\n   ENVIRONMENTS = {\n       \"my_robot\": (MyRobotEnv, \"my_robot\"),\n       # ...\n   }\n   ```\n\n4. Run tests: `uv run pytest tests\u002F -v`\n\n#### **What you should see:**\n\n*Ascending stairs:*\n![climb_up](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_50eff0d7aa3b.gif)\n\n*Descending stairs:*\n![climb_down](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_e53dc7faa51a.gif)\n\n*Walking on curves:*\n![curve](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_87fa61b45d5c.gif)\n\n\n## Citation\nIf you find this work useful in your own research, please cite the following works:\n\nFor omnidirectional walking:\n```\n@inproceedings{singh2024robust,\n  title={Robust Humanoid Walking on Compliant and Uneven Terrain with Deep Reinforcement Learning},\n  author={Singh, Rohan P and Morisawa, Mitsuharu and Benallegue, Mehdi and Xie, Zhaoming and Kanehiro, Fumio},\n  booktitle={2024 IEEE-RAS 23rd International Conference on Humanoid Robots (Humanoids)},\n  pages={497--504},\n  year={2024},\n  organization={IEEE}\n}\n```\n\nFor simulating \"back-emf\" effect and other randomizations:\n```\n@article{xie2023learning,\n  title={Learning bipedal walking for humanoids with current feedback},\n  author={Singh, Rohan Pratap and Xie, Zhaoming and Gergondet, Pierre and Kanehiro, Fumio},\n  journal={IEEE Access},\n  volume={11},\n  pages={82013--82023},\n  year={2023},\n  publisher={IEEE}\n}\n```\n\nFor walking on footsteps:\n\n```\n@inproceedings{singh2022learning,\n  title={Learning Bipedal Walking On Planned Footsteps For Humanoid Robots},\n  author={Singh, Rohan P and Benallegue, Mehdi and Morisawa, Mitsuharu and Cisneros, Rafael and Kanehiro, Fumio},\n  booktitle={2022 IEEE-RAS 21st International Conference on Humanoid Robots (Humanoids)},\n  pages={686--693},\n  year={2022},\n  organization={IEEE}\n}\n```\n\n### Credits\nThe code in this repository was heavily inspired from [apex](https:\u002F\u002Fgithub.com\u002Fosudrl\u002Fapex). Clock-based reward terms and some other ideas were originally proposed by the team from OSU DRL for the Cassie robot, so please also consider citing the works of Jonah Siekmann, Helei Duan, Jeremy Dao, and others.\n","# 学习类人机器人行走\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=ZgfNzGAkk2Q\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_5c25ff80488f.png\" alt=\"humanoid-walk\" style=\"width:1000px\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n论文相关代码：\n- [**基于深度强化学习的柔性不平地面上稳健的类人步行**](https:\u002F\u002Fieeexplore.ieee.org\u002Fabstract\u002Fdocument\u002F10769793)\n罗汉·P·辛格 ([Rohan P. Singh](https:\u002F\u002Frohanpsingh.github.io))、森澤光治 ([Mitsuharu Morisawa](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-morisawa.html))、梅迪·贝纳莱古 ([Mehdi Benallegue](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-benalleguem.html))、谢兆明 ([Zhaoming Xie](https:\u002F\u002Fzhaomingxie.github.io\u002F))、金弘文夫 ([Fumio Kanehiro](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-kanehiro.html))\n\n- [**利用电流反馈学习类人机器人的双足行走**](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2303.03724.pdf)\n罗汉·P·辛格 ([Rohan P. Singh](https:\u002F\u002Frohanpsingh.github.io))、谢兆明 ([Zhaoming Xie](https:\u002F\u002Fzhaomingxie.github.io\u002F))、皮埃尔·热贡代 ([Pierre Gergondet](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-gergondet.html))、金弘文夫 ([Fumio Kanehiro](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-kanehiro.html))\n\n- [**为类人机器人学习基于规划步态的双足行走**](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2207.12644.pdf)\n罗汉·P·辛格 ([Rohan P. Singh](https:\u002F\u002Frohanpsingh.github.io))、梅迪·贝纳莱古 ([Mehdi Benallegue](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-benalleguem.html))、森澤光治 ([Mitsuharu Morisawa](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-morisawa.html))、拉斐尔·西斯内罗斯 ([Rafael Cisneros](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-cisneros.html))、金弘文夫 ([Fumio Kanehiro](https:\u002F\u002Funit.aist.go.jp\u002Fjrl-22022\u002Fen\u002Fmembers\u002Fmember-kanehiro.html))\n\n\n## 代码结构：\n仓库的大致框架，可能对添加您自己的机器人有所帮助：\n```\nLearningHumanoidWalking\u002F\n├── envs\u002F                      \u003C-- 环境实现\n│   ├── common\u002F\n│   │   ├── base_humanoid_env.py   \u003C-- 所有类人环境的基类\n│   │   ├── mujoco_env.py          \u003C-- MuJoCo仿真封装\n│   │   └── robot_interface.py     \u003C-- 机器人状态\u002F控制抽象\n│   ├── jvrc\u002F                      \u003C-- JVRC机器人环境\n│   └── h1\u002F                        \u003C-- Unitree H1机器人环境\n├── tasks\u002F                     \u003C-- 任务定义（奖励、终止条件）\n├── rl\u002F                        \u003C-- 强化学习\n├── robots\u002F                    \u003C-- 机器人抽象（PD控制、步态逻辑）\n├── models\u002F                    \u003C-- MuJoCo模型文件\n└── tests\u002F                     \u003C-- 测试套件\n```\n\n### 关键抽象：\n- **BaseHumanoidEnv**：类人环境的通用功能（观测历史、动作平滑、重置逻辑）\n- **BaseTask**：任务实现的接口（重置、步骤、计算奖励、是否结束）\n- **奖励函数**：在`tasks\u002Frewards.py`中以显式参数形式定义，便于测试。\n\n## 需求：\n- Python版本：>= 3.10\n- [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) 包管理器\n\n```bash\n$ uv sync\n```\n\n## 使用方法：\n\n支持的环境名称：\n\n| 任务描述      | 环境名称 |\n| ----------- | ----------- |\n| 基本站立任务   | 'h1' |\n| 基本行走任务   | 'jvrc_walk' |\n| 基于步态规划的行走任务  | 'jvrc_step' |\n| 单摆倒立任务  | 'cartpole' |\n\n\n#### **训练：**\n\n```\n$ uv run run_experiment.py train --logdir \u003C实验目录路径> --num_procs \u003CCPU核心数> --env \u003C环境名称>\n```\n\n注意：设置`RAY_ADDRESS=`可确保Ray启动一个新的本地集群，而不是连接到现有的集群。\n\n#### **运行：**\n\n```\n$ uv run run_experiment.py eval --logdir \u003Cactor权重文件路径>\n```\n\n或者，我们可以为每个环境编写专门的回放脚本。\n\n#### **Cartpole**\n\n一个用于测试RL流程的最小化倒立摆任务。目标是将摆杆从下垂状态摆动至直立平衡。\n\n```\n$ uv run run_experiment.py train --env cartpole --n-itr 500 --gamma 0.95 --std-dev 0.15 --learn-std\n```\n\n## 配置\n\n环境行为通过`envs\u002F\u003Crobot>\u002Fconfigs\u002F`中的YAML文件进行配置。关键参数如下：\n\n```yaml\n# 模拟\nsim_dt: 0.001              # 物理时间步长\ncontrol_dt: 0.025          # 控制循环周期\nobs_history_len: 1         # 观测历史长度\naction_smoothing: 0.5      # 动作滤波系数\n\n# 任务参数\ntask:\n  goal_height: 0.80        # 目标站立高度\n  swing_duration: 0.75     # 步态摆动阶段持续时间\n  stance_duration: 0.35    # 步态支撑阶段持续时间\n\n# 奖励权重（总和为1.0）\nreward_weights:\n  足部力得分: 0.225\n  足部速度得分: 0.225\n  # ... 完整列表见配置文件\n```\n\n## 添加新机器人\n\n1. 创建`envs\u002F\u003Crobot>\u002F`目录，包含以下内容：\n   - `gen_xml.py`：从URDF生成MJCF\n   - `configs\u002Fbase.yaml`：配置文件\n   - `\u003Crobot>_env.py`：环境类\n\n2. 继承自`BaseHumanoidEnv`并实现：\n   ```python\n   class MyRobotEnv(BaseHumanoidEnv):\n       def _get_default_config_path(self) -> str: ...\n       def _build_xml(self) -> str: ...\n       def _setup_robot(self) -> None: ...\n       def _setup_spaces(self) -> None: ...\n       def _get_robot_state(self) -> np.ndarray: ...\n       def _get_external_state(self) -> np.ndarray: ...\n   ```\n\n3. 在`envs\u002F__init__.py`中注册：\n   ```python\n   ENVIRONMENTS = {\n       \"my_robot\": (MyRobotEnv, \"my_robot\"),\n       # ...\n   }\n   ```\n\n4. 运行测试：`uv run pytest tests\u002F -v`\n\n#### **预期效果：**\n\n*上楼梯：*\n![climb_up](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_50eff0d7aa3b.gif)\n\n*下楼梯：*\n![climb_down](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_e53dc7faa51a.gif)\n\n*曲线行走：*\n![curve](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_readme_87fa61b45d5c.gif)\n\n## 引用\n如果您在自己的研究中使用了本工作，请引用以下文献：\n\n关于全向行走：\n```\n@inproceedings{singh2024robust,\n  title={基于深度强化学习的仿人机器人在柔性不平地面上的鲁棒行走},\n  author={Singh, Rohan P 和 Morisawa, Mitsuharu 和 Benallegue, Mehdi 和 Xie, Zhaoming 和 Kanehiro, Fumio},\n  booktitle={2024 IEEE-RAS 第23届国际仿人机器人会议（Humanoids）},\n  pages={497--504},\n  year={2024},\n  organization={IEEE}\n}\n```\n\n关于模拟“反电动势”效应及其他随机化处理：\n```\n@article{xie2023learning,\n  title={利用电流反馈学习仿人机器人的双足行走},\n  author={Singh, Rohan Pratap 和 Xie, Zhaoming 和 Gergondet, Pierre 和 Kanehiro, Fumio},\n  journal={IEEE Access},\n  volume={11},\n  pages={82013--82023},\n  year={2023},\n  publisher={IEEE}\n}\n```\n\n关于沿足迹行走：\n```\n@inproceedings{singh2022learning,\n  title={为仿人机器人学习基于规划足迹的双足行走},\n  author={Singh, Rohan P 和 Benallegue, Mehdi 和 Morisawa, Mitsuharu 和 Cisneros, Rafael 和 Kanehiro, Fumio},\n  booktitle={2022 IEEE-RAS 第21届国际仿人机器人会议（Humanoids）},\n  pages={686--693},\n  year={2022},\n  organization={IEEE}\n}\n```\n\n### 致谢\n本仓库中的代码深受 [apex](https:\u002F\u002Fgithub.com\u002Fosudrl\u002Fapex) 的启发。基于时钟的奖励项及其他一些想法最初由俄亥俄州立大学强化学习团队为 Cassie 机器人提出，因此也请考虑引用 Jonah Siekmann、Helei Duan、Jeremy Dao 等人的相关工作。","# LearningHumanoidWalking 快速上手指南\n\n本指南帮助中国开发者快速部署并运行基于深度强化学习的人形机器人行走训练框架。\n\n## 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux (推荐 Ubuntu 20.04\u002F22.04)\n*   **Python 版本**: >= 3.10\n*   **包管理器**: [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) (高性能 Python 包安装工具)\n*   **硬件建议**: 配备 NVIDIA GPU 的机器用于加速训练（虽然基础训练可在 CPU 进行，但效率较低）\n\n> **提示**：国内用户若下载 `uv` 或 PyPI 包速度较慢，可配置国内镜像源。\n> *   安装 uv: `curl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh` (如遇网络问题，可尝试通过国内镜像站下载二进制文件)\n> *   配置 pip 镜像 (uv 兼容 pip 配置): 在项目根目录创建 `.pip.conf` 或在命令中指定 `--index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`\n\n## 安装步骤\n\n本项目使用 `uv` 进行依赖管理，安装过程非常简洁。\n\n1.  **克隆仓库**\n    ```bash\n    git clone https:\u002F\u002Fgithub.com\u002Fosudrl\u002FLearningHumanoidWalking.git\n    cd LearningHumanoidWalking\n    ```\n\n2.  **同步依赖**\n    使用 `uv` 自动创建虚拟环境并安装所有必要的依赖包（包括 MuJoCo, Ray, PyTorch 等）。\n    ```bash\n    uv sync\n    ```\n    *注：若需使用国内源加速，可执行 `uv sync --index-url https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple`*\n\n## 基本使用\n\n本框架支持多种任务环境，包括站立、行走、踏步以及经典的 Cartpole 平衡测试。\n\n### 1. 训练模型 (Train)\n\n使用 `run_experiment.py` 脚本启动训练。以下是最基础的训练命令示例，以训练 **Unitree H1 机器人站立** 任务为例：\n\n```bash\nuv run run_experiment.py train --logdir .\u002Flogs\u002Fh1_stand --num_procs 4 --env h1\n```\n\n**参数说明：**\n*   `--logdir`: 模型日志和检查点的保存路径。\n*   `--num_procs`: 并行采集数据的 CPU 进程数（根据机器核心数调整）。\n*   `--env`: 环境名称。\n\n**支持的环境名称 (`--env`)：**\n\n| 任务描述 | 环境名称 | 备注 |\n| :--- | :--- | :--- |\n| 基础站立任务 | `h1` | Unitree H1 机器人 |\n| 基础行走任务 | `jvrc_walk` | JVRC 机器人 |\n| 踏步任务 (基于脚印规划) | `jvrc_step` | JVRC 机器人 |\n| 倒立摆摆起任务 | `cartpole` | 用于测试 RL 流程的最小示例 |\n\n**Cartpole 测试示例**（快速验证环境是否正常工作）：\n```bash\nuv run run_experiment.py train --env cartpole --n-itr 500 --gamma 0.95 --std-dev 0.15 --learn-std\n```\n\n> **注意**：如果希望 Ray 启动一个新的本地集群而不是连接现有集群，请在命令前设置环境变量：\n> `RAY_ADDRESS= uv run ...`\n\n### 2. 评估\u002F演示模型 (Eval)\n\n训练完成后，可以使用保存的策略网络进行可视化评估：\n\n```bash\nuv run run_experiment.py eval --logdir \u003Cpath_to_actor_pt>\n```\n将 `\u003Cpath_to_actor_pt>` 替换为训练生成的模型文件路径（通常在 `--logdir` 指定的目录下）。\n\n### 3. 配置文件修改\n\n如需调整物理仿真步长、奖励权重或任务目标，请编辑 `envs\u002F\u003Crobot>\u002Fconfigs\u002F` 目录下的 YAML 文件。\n\n示例 (`envs\u002Fh1\u002Fconfigs\u002Fbase.yaml`)：\n```yaml\n# Simulation\nsim_dt: 0.001              # 物理仿真步长\ncontrol_dt: 0.025          # 控制循环周期\nobs_history_len: 1         # 观测历史长度\naction_smoothing: 0.5      # 动作平滑系数\n\n# Task parameters\ntask:\n  goal_height: 0.80        # 目标站立高度\n  swing_duration: 0.75     # 摆动相持续时间\n  stance_duration: 0.35    # 支撑相持续时间\n```\n\n完成上述步骤后，您即可开始探索人形机器人在复杂地形下的鲁棒行走策略。","某机器人研发团队正致力于让 Unitree H1 人形机器人在工厂复杂的非结构化地面（如带有电缆沟盖板或轻微斜坡的车间）实现稳定自主巡检。\n\n### 没有 LearningHumanoidWalking 时\n- **开发周期漫长**：工程师需手动编写数百行基于模型预测控制（MPC）的代码来调整步态，每次修改参数都需重新编译仿真，迭代一次耗时数天。\n- **地形适应性差**：传统算法在平整地面表现尚可，但一旦遇到松软地毯或不规则凸起，机器人极易因受力估算偏差而摔倒。\n- **调试成本高昂**：缺乏高效的强化学习闭环，团队不得不频繁进行真机测试，导致电机过热甚至硬件损坏的风险显著增加。\n- **泛化能力受限**：针对特定地形训练的步态无法迁移到新场景，每更换一种地面材质就需要重新设计整套控制逻辑。\n\n### 使用 LearningHumanoidWalking 后\n- **训练效率飞跃**：利用其内置的 MuJoCo 仿真环境和并行训练架构，团队仅需配置 YAML 文件即可启动大规模强化学习，将步态收敛时间从数周缩短至数小时。\n- **鲁棒性显著增强**：通过深度强化学习生成的策略，机器人能像人类一样感知地面反作用力变化，在湿滑或凹凸不平的路面上自动调整重心保持平衡。\n- **安全验证前置**：绝大部分极端工况（如意外推搡、脚下打滑）均在仿真环境中完成“试错”与优化，真机部署时已具备极高的安全性。\n- **策略灵活复用**：基于 `BaseHumanoidEnv` 抽象层开发的行走策略具有良好的泛化性，稍作微调即可适配 JVRC 或其他双足机器人平台。\n\nLearningHumanoidWalking 通过将复杂的动力学控制转化为数据驱动的自我进化过程，让人形机器人真正具备了在现实世界中稳健行走的能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Frohanpsingh_LearningHumanoidWalking_50eff0d7.gif","rohanpsingh","Rohan P. Singh","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Frohanpsingh_9f3ab985.jpg","Humanoid robotics researcher",null,"New York City","rohan565singh@gmail.com","rohan565singh","rohanpsingh.github.io","https:\u002F\u002Fgithub.com\u002Frohanpsingh",[87,91],{"name":88,"color":89,"percentage":90},"Python","#3572A5",99.8,{"name":92,"color":93,"percentage":94},"Shell","#89e051",0.2,1101,128,"2026-04-02T15:29:18","BSD-2-Clause","","未说明",{"notes":102,"python":103,"dependencies":104},"该项目使用 'uv' 作为包管理器进行依赖同步（运行 'uv sync'）。基于 MuJoCo 物理引擎进行人形机器人仿真训练。支持的环境包括 JVRC、Unitree H1 及 Cartpole 测试任务。训练和评估通过 'uv run' 命令执行，并支持使用 Ray 进行多进程并行训练。",">=3.10",[105],"uv",[18],[108,109,110,111,112,113,114],"bipedal-robots","cassie","humanoids","ppo","reinforcement-learning","jvrc-1","mujoco","2026-03-27T02:49:30.150509","2026-04-06T06:46:02.826754",[118,123,128,133,138,143,147,151],{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},10908,"训练时出现 'Too many contacts' 警告怎么办？","该警告通常是因为 MuJoCo 的接触点数量超过了默认限制（nconmax）。维护者已提交修复（commit 4302b38），建议拉取最新代码。如果问题仍然存在，可以尝试增加进程数（如设置 `--num_procs 8`），或者在代码中手动增加 `nconmax` 的值或移除该限制以增加 arena 内存分配。","https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fissues\u002F9",{"id":124,"question_zh":125,"answer_zh":126,"source_url":127},10909,"运行时提示找不到 'models\u002Fjvrc_mj_description\u002Fxml\u002Fscene.xml' 文件如何解决？","这通常是因为缺少子模块或路径配置错误。请确保你已经正确初始化并更新了 git 子模块。在项目根目录下运行以下命令来获取必要的模型描述文件：\n`git submodule update --init --recursive`\n如果仍然报错，请检查 `JVRC_DESCRIPTION_PATH` 变量指向的路径是否正确。","https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fissues\u002F10",{"id":129,"question_zh":130,"answer_zh":131,"source_url":132},10910,"机器人在下楼梯的最后一步会摔倒，或者无法正确上下楼梯怎么办？","这是一个已知问题，维护者已在 commit 7f28e03 中修复了下楼梯摔倒的问题。此外，如果机器人直接穿过楼梯而不是攀爬，可能是版本兼容性问题。建议尝试将 MuJoCo 版本降级至 2.2.0 或 3.2.2（避免使用过新的版本如 3.2.8，除非修改了相关代码），并确保拉取了最新的代码修复。如果自行训练效果不佳，请先验证仓库提供的预训练权重是否能正常工作。","https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fissues\u002F16",{"id":134,"question_zh":135,"answer_zh":136,"source_url":137},10911,"仓库中提供的预训练模型（.pt 文件）在哪里下载？","由于最近的代码变更，维护者已从主分支中移除了预训练模型。如果你需要使用预训练模型（例如用于 JVRC1 的爬楼梯模型），可以回退到特定的历史提交版本：\n`https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fcommit\u002F7c65a230e3102d55d9f5cc6789cd7f89046b1f94`\n在该版本中可以找到训练好的模型文件。否则，你需要根据文档自行训练模型。","https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fissues\u002F44",{"id":139,"question_zh":140,"answer_zh":141,"source_url":142},10912,"如何固定机器人的运动模式（如只让它上楼梯或只下楼梯），而不是随机生成？","环境默认会随机生成运动模式。若要固定模式，需要手动编辑 `tasks\u002Fstepping_task.py` 文件。找到设置 `self.mode` 的代码行（原代码可能根据随机性选择模式），将其硬编码为你想要的模式。例如，强制设置为向前行走模式：\n`self.mode = WalkModes.FORWARD`\n你可以根据需要替换为 `WalkModes.UP` 或 `WalkModes.DOWN` 等其他可用模式。","https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fissues\u002F32",{"id":144,"question_zh":145,"answer_zh":146,"source_url":142},10913,"如何监控机器人的实时速度？","可以通过访问 MuJoCo 数据对象中的根身体线性速度来获取机器人的速度。具体代码如下：\n`data.qvel[0]`\n这将返回机器人在 x 方向上的线性速度。你可以在调试脚本或训练循环中打印该值以进行监控。",{"id":148,"question_zh":149,"answer_zh":150,"source_url":127},10914,"训练日志中的 Return、Mean Eplen 和 Loss 各项指标代表什么？怎样的趋势是正常的？","- **Return (batch)**: 累积奖励，应该随着训练逐渐上升。\n- **Mean Eplen**: 平均回合长度，通常也应上升。\n- **Actor\u002FCritic\u002FMirror Loss**: 损失函数值，通常越低越好，但主要关注是否收敛。\n- **Mean Entropy**: 平均熵，应保持相对稳定。\n最关键的指标是 **Return** 和 **Eplen** 的上升趋势。详细的术语解释建议参考 Stable-Baselines3 的文档。",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},10915,"使用新版 MuJoCo（如 3.2.8）时遇到兼容性问题该怎么办？","维护者尚未全面测试 MuJoCo 3.2.8 及以上版本，推荐使用经过验证的版本（如 3.2.2 或 2.2.0）。如果必须使用新版本，可能需要修改部分代码以适应 API 变更。建议查阅 MuJoCo 的官方更新日志（changelog）来了解具体变化，或者暂时降级到稳定版本以避免环境模拟错误。","https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fissues\u002F41",[157,162],{"id":158,"version":159,"summary_zh":160,"released_at":161},53347,"v1.0.0","## 变更内容\n- 支持 Unitree H1 机器人\n- 为 PPO 算法支持 TensorBoard 日志记录\n- 支持学习过程中的探索噪声\n- 为环境提供配置 YAML 文件\n- 创建 `RobotBase` 类，支持：\n  - PD 控制器增益的随机化\n  - 添加“反电动势”效应\n  - “执行器网络”\n- 使用 `pyMJCF` 生成场景 XML 文件\n- 支持使用观测历史\n- 支持模仿预训练策略\n- `EvaluateEnv` 类\n  - 可通过 `python run_experiment.py eval --path \u003Cactor-pt 路径>` 评估任意训练好的策略\n  - 每个 episode 会自动渲染并录制\n\n… 以及更多\n\n### 待办事项\n在这些变更之后，`JVRCWalkEnv` 和 `JVRCStepEnv` 可能需要一些调优（以及 bug 修复？）。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Frohanpsingh\u002FLearningHumanoidWalking\u002Fcompare\u002Fv0.0.1...v1.0.0","2025-02-25T06:12:41",{"id":163,"version":164,"summary_zh":80,"released_at":165},53348,"v0.0.1","2025-02-19T05:28:36"]