[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-PKU-Alignment--safety-gymnasium":3,"tool-PKU-Alignment--safety-gymnasium":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159636,2,"2026-04-17T23:33:34",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":66,"readme_en":67,"readme_zh":68,"quickstart_zh":69,"use_case_zh":70,"hero_image_url":71,"owner_login":72,"owner_name":72,"owner_avatar_url":73,"owner_bio":74,"owner_company":75,"owner_location":75,"owner_email":76,"owner_twitter":75,"owner_website":75,"owner_url":77,"languages":78,"stars":95,"forks":96,"last_commit_at":97,"license":98,"difficulty_score":32,"env_os":99,"env_gpu":100,"env_ram":99,"env_deps":101,"category_tags":108,"github_topics":109,"view_count":32,"oss_zip_url":75,"oss_zip_packed_at":75,"status":17,"created_at":118,"updated_at":119,"faqs":120,"releases":121},8770,"PKU-Alignment\u002Fsafety-gymnasium","safety-gymnasium","NeurIPS 2023: Safety-Gymnasium: A Unified Safe Reinforcement Learning Benchmark","Safety-Gymnasium 是一个专为安全强化学习（SafeRL）打造的高可扩展性开源基准库，曾入选 NeurIPS 2023。在传统的强化学习中，智能体往往只追求奖励最大化而忽视潜在风险，Safety-Gymnasium 正是为了解决这一痛点而生。它提供了一套标准化的测试环境和统一的评价体系，让研究人员能够在一个受控且包含明确约束条件的场景中，系统地评估算法如何在完成任务的同时确保安全性。\n\n这款工具特别适合从事强化学习算法研究的研究人员、需要验证安全策略的开发者，以及对 AI 安全性感兴趣的高校师生。其核心亮点在于高度兼容的标准 API 接口，能够无缝对接现有的强化学习框架，并原生支持约束信息的传递。此外，Safety-Gymnasium 拥有优雅的代码架构和精心设计的多样化环境，不仅支持用户轻松自定义场景，还具备极强的可扩展性。无论是用于复现经典论文、对比不同安全算法的性能，还是探索全新的安全控制思路，Safety-Gymnasium 都能提供一个严谨、高效且开放的实验平台，助力推动安全人工智能技术的发展。","\u003Cdiv align=\"center\">\n\u003Ch1>\n  Safety-Gymnasium\n\u003C\u002Fh1>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n  \u003Ca>![Python 3.8+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.8%2B-brightgreen.svg)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fsafety-gymnasium\">![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fsafety-gymnasium?logo=pypi)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fsafety-gymnasium.readthedocs.io\">![Documentation Status](https:\u002F\u002Fimg.shields.io\u002Freadthedocs\u002Fsafety-gymnasium?logo=readthedocs)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsafety-gymnasium\">![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_35bc032a0d3a.png)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fstargazers\">![GitHub Repo Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FPKU-Alignment\u002Fsafety-gymnasium?color=brightgreen&logo=github)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fblob\u002FHEAD\u002FLICENSE\">![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FPKU-Alignment\u002Fsafety-gymnasium?label=license&logo=data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmZmZmZmIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi43NSAyLjc1YS43NS43NSAwIDAwLTEuNSAwVjQuNUg5LjI3NmExLjc1IDEuNzUgMCAwMC0uOTg1LjMwM0w2LjU5NiA1Ljk1N0EuMjUuMjUgMCAwMTYuNDU1IDZIMi4zNTNhLjc1Ljc1IDAgMTAwIDEuNUgzLjkzTC41NjMgMTUuMThhLjc2Mi43NjIgMCAwMC4yMS44OGMuMDguMDY0LjE2MS4xMjUuMzA5LjIyMS4xODYuMTIxLjQ1Mi4yNzguNzkyLjQzMy42OC4zMTEgMS42NjIuNjIgMi44NzYuNjJhNi45MTkgNi45MTkgMCAwMDIuODc2LS42MmMuMzQtLjE1NS42MDYtLjMxMi43OTItLjQzMy4xNS0uMDk3LjIzLS4xNTguMzEtLjIyM2EuNzUuNzUgMCAwMC4yMDktLjg3OEw1LjU2OSA3LjVoLjg4NmMuMzUxIDAgLjY5NC0uMTA2Ljk4NC0uMzAzbDEuNjk2LTEuMTU0QS4yNS4yNSAwIDAxOS4yNzUgNmgxLjk3NXYxNC41SDYuNzYzYS43NS43NSAwIDAwMCAxLjVoMTAuNDc0YS43NS43NSAwIDAwMC0xLjVIMTIuNzVWNmgxLjk3NGMuMDUgMCAuMS4wMTUuMTQuMDQzbDEuNjk3IDEuMTU0Yy4yOS4xOTcuNjMzLjMwMy45ODQuMzAzaC44ODZsLTMuMzY4IDcuNjhhLjc1Ljc1IDAgMDAuMjMuODk2Yy4wMTIuMDA5IDAgMCAuMDAyIDBhMy4xNTQgMy4xNTQgMCAwMC4zMS4yMDZjLjE4NS4xMTIuNDUuMjU2Ljc5LjRhNy4zNDMgNy4zNDMgMCAwMDIuODU1LjU2OCA3LjM0MyA3LjM0MyAwIDAwMi44NTYtLjU2OWMuMzM4LS4xNDMuNjA0LS4yODcuNzktLjM5OWEzLjUgMy41IDAgMDAuMzEtLjIwNi43NS43NSAwIDAwLjIzLS44OTZMMjAuMDcgNy41aDEuNTc4YS43NS43NSAwIDAwMC0xLjVoLTQuMTAyYS4yNS4yNSAwIDAxLS4xNC0uMDQzbC0xLjY5Ny0xLjE1NGExLjc1IDEuNzUgMCAwMC0uOTg0LS4zMDNIMTIuNzVWMi43NXpNMi4xOTMgMTUuMTk4YTUuNDE4IDUuNDE4IDAgMDAyLjU1Ny42MzUgNS40MTggNS40MTggMCAwMDIuNTU3LS42MzVMNC43NSA5LjM2OGwtMi41NTcgNS44M3ptMTQuNTEtLjAyNGMuMDgyLjA0LjE3NC4wODMuMjc1LjEyNi41My4yMjMgMS4zMDUuNDUgMi4yNzIuNDVhNS44NDYgNS44NDYgMCAwMDIuNTQ3LS41NzZMMTkuMjUgOS4zNjdsLTIuNTQ3IDUuODA3eiI+PC9wYXRoPjwvc3ZnPgo=)\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\n\u003Cp align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium#why-safety-gymnasium\">Why Safety-Gymnasium?\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fwww.safety-gymnasium.com\">Documentation\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium#installation\">Install guide\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium#customize-your-environments\">Customization\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fsites.google.com\u002Fview\u002Fsafety-gymnasium\">Video\u003C\u002Fa>\n\u003C\u002Fp>\n\nSafety-Gymnasium is a highly scalable and customizable Safe Reinforcement Learning (SafeRL) library.\nIt aims to deliver a good view of benchmarking SafeRL algorithms and a standardized set of environments.\nWe provide a set of standard APIs which are compatible with information on constraints.\nUsers can explore new insights via an elegant code framework and well-designed environments.\n\n## Citing Safety-Gymnasium\n\nIf you find Safety-Gymnasium useful, please cite it in your publications.\n\n```bibtex\n@inproceedings{ji2023safety,\n  title={Safety Gymnasium: A Unified Safe Reinforcement Learning Benchmark},\n  author={Jiaming Ji and Borong Zhang and Jiayi Zhou and Xuehai Pan and Weidong Huang and Ruiyang Sun and Yiran Geng and Yifan Zhong and Josef Dai and Yaodong Yang},\n  booktitle={Thirty-seventh Conference on Neural Information Processing Systems Datasets and Benchmarks Track},\n  year={2023},\n  url={https:\u002F\u002Fopenreview.net\u002Fforum?id=WZmlxIuIGR}\n}\n```\n\n--------------------------------------------------------------------------------\n\n# Note for v1.1.0 and v1.2.0❗️❗️❗️\n\nWe have updated the environments for both the Safe Vision series and the Safe Isaac Gym series. However, due to **package size constraints**, we have not yet uploaded versions **v1.1.0** and **v1.2.0** to PyPI. As a result, users are required to manually download and install. We currently recommend using GitHub's **Download zip** feature to obtain our package and access the latest environments. In the future, we plan to deploy resources separately to a cloud service to accommodate PyPI. Stay tuned for further updates.\n\n**Python 3.11 is not supported for now, due to the incompatibility of pygame.**\n```bash\nconda create -n example python=3.8\nconda activate example\nwget https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Farchive\u002Frefs\u002Fheads\u002Fmain.zip\nunzip main.zip\ncd safety-gymnasium-main\npip install -e .\n```\n\n## Why Safety-Gymnasium?\n\nHere we provide a table for comparison of **Safety-Gymnasium** and existing SafeRL Environments libraries.\n\n|                                                                                   SafeRL\u003Cbr\u002F>Envs                                                                                   |            Engine             | Vectorized\u003Cbr\u002F> Environments | New Gym API\u003Csup>**(3)**\u003C\u002Fsup> |    Vision Input     |\n| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------: | :--------------------------: | :---------------------------: | :-----------------: |\n|            [Safety-Gym](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsafety-gym)\u003Cbr\u002F>![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fopenai\u002Fsafety-gym?label=last%20update)            | `mujoco-py`\u003Csup>**(1)**\u003C\u002Fsup> |              ❌               |               ❌               | minimally supported |\n| [safe-control-gym](https:\u002F\u002Fgithub.com\u002FutiasDSL\u002Fsafe-control-gym)\u003Cbr\u002F>![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FutiasDSL\u002Fsafe-control-gym?label=last%20update) |           PyBullet            |              ❌               |               ❌               |          ❌          |\n|                                                                       Velocity-Constraints\u003Csup>**(2)**\u003C\u002Fsup>                                                                        |              N\u002FA              |              ❌               |               ❌               |          ❌          | ❌ |\n|    [mujoco-circle](https:\u002F\u002Fgithub.com\u002Fymzhang01\u002Fmujoco-circle)\u003Cbr\u002F>![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fymzhang01\u002Fmujoco-circle?label=last%20update)     |            PyTorch            |              ❌               |               ❌               |          ❌          | ❌ |\n|                                  Safety-Gymnasium\u003Cbr\u002F>![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FPKU-Alignment\u002Fsafety-gymnasium)                                  |       **MuJoCo 2.3.0+**       |              ✅               |               ✅               |          ✅          |\n\n\u003Csup>(1): Maintenance (expect bug fixes and minor updates); the last commit is 19 Nov 2021. Safety-Gym depends on `mujoco-py` 2.0.2.7, which was updated on Oct 12, 2019.\u003C\u002Fsup>\u003Cbr\u002F>\n\u003Csup>(2): There is no official library for speed-related environments, and its associated cost constraints are constructed from info. But the task is widely used in the study of SafeRL, and we encapsulate it in Safety-Gymnasium.\u003C\u002Fsup>\u003Cbr\u002F>\n\u003Csup>(3): In the gym 0.26.0 release update, a new API of interaction was redefined.\u003C\u002Fsup>\n\n--------------------------------------------------------------------------------\n\n## Environments\n\nWe designed a variety of safety-enhanced learning tasks and integrated the contributions from the RL community: `safety-velocity`, `safety-run`, `safety-circle`, `safety-goal`, `safety-button`, etc.\nWe introduce a unified safety-enhanced learning benchmark environment library called `Safety-Gymnasium.`\n\nFurther, to facilitate the progress of community research, we redesigned [Safety-Gym](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsafety-gym) and removed the dependency on `mujoco-py`.\nWe built it on top of [MuJoCo](https:\u002F\u002Fgithub.com\u002Fdeepmind\u002Fmujoco) and fixed some bugs, more specific bug reports can refer to [Safety-Gym's BUG Report](https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fblob\u002Fmain\u002Fsafety_gym_bug_report.md).\n\nHere is a list of all the environments we support for now:\n\n\u003Ctable border=\"1\">\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>Category\u003C\u002Fth>\n      \u003Cth>Task\u003C\u002Fth>\n      \u003Cth>Agent\u003C\u002Fth>\n      \u003Cth>Example\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd rowspan=\"4\">Safe Navigation\u003C\u002Ftd>\n      \u003Ctd>Button[012]\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">Point, Car, Doggo, Racecar, Ant\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">SafetyPointGoal1-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Goal[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Push[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Circle[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Safe Velocity\u003C\u002Ftd>\n      \u003Ctd>Velocity\u003C\u002Ftd>\n      \u003Ctd>HalfCheetah, Hopper, Swimmer, Walker2d, Ant, Humanoid\u003C\u002Ftd>\n      \u003Ctd>SafetyAntVelocity-v1\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd rowspan=\"7\">Safe Vision\u003C\u002Ftd>\n      \u003Ctd>BuildingButton[012]\u003C\u002Ftd>\n      \u003Ctd rowspan=\"7\">Point, Car, Doggo, Racecar, Ant\u003C\u002Ftd>\n      \u003Ctd rowspan=\"7\">SafetyFormulaOne1-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>BuildingGoal[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>BuildingPush[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FadingEasy[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FadingHard[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Race[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FormulaOne[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd rowspan=\"8\">Safe Multi-Agent\u003C\u002Ftd>\n      \u003Ctd>MultiGoal[012]\u003C\u002Ftd>\n      \u003Ctd>Multi-Point, Multi-Ant\u003C\u002Ftd>\n      \u003Ctd>SafetyAntMultiGoal1-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Multi-Agent Velocity\u003C\u002Ftd>\n      \u003Ctd>6x1HalfCheetah, 2x3HalfCheetah, 3x1Hopper, 2x1Swimmer, 2x3Walker2d, 2x4Ant, 4x2Ant, 9|8Humanoid\u003C\u002Ftd>\n      \u003Ctd>Safety2x4AntVelocity-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FreightFrankaCloseDrawer(Multi-Agent)\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFranka\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFrankaCloseDrawer(Multi-Agent)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FreightFrankaPickAndPlace(Multi-Agent)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeFinger(Multi-Agent)\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHands\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHandCatchOver2UnderarmSafeJoint(Multi-Agent)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeJoint(Multi-Agent)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeFinger(Multi-Agent)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeJoint(Multi-Agent)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd rowspan=\"6\">Safe Isaac Gym\u003C\u002Ftd>\n      \u003Ctd>FreightFrankaCloseDrawer\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFranka\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFrankaCloseDrawer\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FreightFrankaPickAndPlace\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeFinger\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHands\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHandCatchOver2UnderarmSafeJoint\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeJoint\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeFinger\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeJoint\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\nHere are some screenshots of the **Safe Navigation** tasks.\n\n#### Agents\n\n\u003Ctable class=\"docutils align-default\">\n  \u003Ctbody>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_e08659939217.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_e08659939217.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">Point\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fcar.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_b77508ca2ac2.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_b77508ca2ac2.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">Car\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fracecar.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_51c3801cf6b5.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_51c3801cf6b5.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">Racecar\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fdoggo.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_0de8bd31909b.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_0de8bd31909b.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">Doggo\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fant.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1f6f14201624.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1f6f14201624.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">Ant\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n#### Tasks\n\n\u003Ctable class=\"docutils align-default\">\n  \u003Ctbody>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_9cbb20b1140a.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_9cbb20b1140a.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Goal0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_58348f1a9e0a.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_58348f1a9e0a.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Goal1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_073c5e69db08.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_073c5e69db08.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Goal2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-even\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_38edf8aa2d9a.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_38edf8aa2d9a.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Button0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\".\u002Fbutton#button1\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4b2d0764cf26.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4b2d0764cf26.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Button1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\".\u002Fbutton#button2\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_dd1a768049a6.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_dd1a768049a6.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Button2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_44a3c0997615.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_44a3c0997615.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Push0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1c4b2c6aa0b7.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1c4b2c6aa0b7.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Push1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26f8d8de91a5.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26f8d8de91a5.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Push2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-even\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_06e85d401cb7.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_06e85d401cb7.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Circle0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_cb2613bb6d53.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_cb2613bb6d53.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Circle1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\".\u002Fcircle#circle2\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f9bbf338ba76.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f9bbf338ba76.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Circle2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### Vision-based Safe RL\n\nVision-based SafeRL lacks realistic scenarios.\nAlthough the original `Safety-Gym` could minimally support visual input, the scenarios were too similar.\nTo facilitate the validation of visual-based SafeRL algorithms, we have developed a set of realistic vision-based SafeRL tasks, which are currently being validated on the baseline.\n\nFor the appetizer, the images are as follows:\n\n\u003Ctable class=\"docutils align-default\">\n  \u003Ctbody>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f5a9b8dbace4.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f5a9b8dbace4.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Race0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f66f8781c6ff.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f66f8781c6ff.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Race1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4d230dbde6c5.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4d230dbde6c5.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Race2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26df4668e038.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26df4668e038.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">FormulaOne0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_c655551159d6.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_c655551159d6.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">FormulaOne1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_a576162cc10d.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_a576162cc10d.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">FormulaOne2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### Environment Usage\n\n**Notes:** We support explicitly expressing the `cost` based on [**Gymnasium APIs**](https:\u002F\u002Fgithub.com\u002FFarama-Foundation\u002FGymnasium).\nThe `step` method returns 6 items `(next_obervation, reward, cost, terminated, truncated, info)` with an extra `cost` field.\n\n```python\nimport safety_gymnasium\n\nenv_id = 'SafetyPointGoal1-v0'\nenv = safety_gymnasium.make(env_id)\n\nobs, info = env.reset()\nwhile True:\n    act = env.action_space.sample()\n    obs, reward, cost, terminated, truncated, info = env.step(act)\n    if terminated or truncated:\n        break\n    env.render()\n```\n\nWe also provide two convenience wrappers for converting the Safety-Gymnasium environment to the standard Gymnasium API and vice versa.\n\n```python\n# Safety-Gymnasium API: step returns (next_obervation, reward, cost, terminated, truncated, info)\n# Gymnasium API:        step returns (next_obervation, reward, terminated, truncated, info) and cost is in the `info` dict associated with a str key `'cost'`\n\nsafety_gymnasium_env = safety_gymnasium.make(env_id)\ngymnasium_env = safety_gymnasium.wrappers.SafetyGymnasium2Gymnasium(safety_gymnasium_env)\n\nsafety_gymnasium_env = safety_gymnasium.wrappers.Gymnasium2SafetyGymnasium(gymnasium_env)\n```\n\nUsers can apply Gymnasium wrappers easily with:\n\n```python\nimport gymnasium\nimport safety_gymnasium\n\ndef make_safe_env(env_id):\n    safe_env = safety_gymnasium.make(env_id)\n    env = safety_gymnasium.wrappers.SafetyGymnasium2Gymnasium(safe_env)\n    env = gymnasium.wrappers.SomeWrapper1(env)\n    env = gymnasium.wrappers.SomeWrapper2(env, argname1=arg1, argname2=arg2)\n    ...\n    env = gymnasium.wrappers.SomeWrapperN(env)\n    safe_env = safety_gymnasium.wrappers.Gymnasium2SafetyGymnasium(env)\n    return safe_env\n```\n\nor\n\n```python\nimport functools\n\nimport gymnasium\nimport safety_gymnasium\n\ndef make_safe_env(env_id):\n    return safety_gymnasium.wrappers.with_gymnasium_wrappers(\n        safety_gymnasium.make(env_id),\n        gymnasium.wrappers.SomeWrapper1,\n        functools.partial(gymnasium.wrappers.SomeWrapper2, argname1=arg1, argname2=arg2),\n        ...,\n        gymnasium.wrappers.SomeWrapperN,\n    )\n```\n\nIn addition, for all Safety-Gymnasium environments, we also provide corresponding Gymnasium environments with a suffix `Gymnasium` in the environment id. For example:\n\n```python\nimport gymnasium\nimport safety_gymnasium\n\nsafety_gymnasium.make('SafetyPointGoal1-v0')    # step returns (next_obervation, reward, cost, terminated, truncated, info)\ngymnasium.make('SafetyPointGoal1Gymnasium-v0')  # step returns (next_obervation, reward, terminated, truncated, info)\n```\n\n--------------------------------------------------------------------------------\n\n## Installation\n\n### Install from PyPI\n\n```bash\npip install safety-gymnasium\n```\n\n### Install from source\n\n```bash\nconda create -n \u003Cenvname> python=3.8\nconda activate \u003Cenvname>\n\ngit clone https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium.git\ncd safety-gymnasium\npip install -e .\n```\n\n### Important Notes\n\nIf you failed to render on your server, you can try:\n\n```bash\necho \"export MUJOCO_GL=osmesa\" >> ~\u002F.bashrc\nsource ~\u002F.bashrc\napt-get install libosmesa6-dev\napt-get install python3-opengl\n```\n\n--------------------------------------------------------------------------------\n\n## Debug with your keyboard\n\nFor simple agents, we offer the capability to control the robot's movement via the keyboard, facilitating debugging. Simply append a **Debug** suffix to the task name, such as `SafetyCarGoal2Debug-v0`, and utilize the keys `I`, `K`, `J`, and `L` to guide the robot's movement.\n\nFor more intricate agents, you can also craft custom control logic based on specific peripherals. To achieve this, implement the `debug` method from the `BaseAgent` for the designated agent.\n\n\n\n## Customize your environments\n\nWe construct a highly expandable framework of code so that you can easily comprehend it and design your environments to facilitate your research with no more than 100 lines of code on average.\n\nFor details, please refer to our [documentation](https:\u002F\u002Fwww.safety-gymnasium.com\u002Fen\u002Flatest\u002Fcomponents_of_environments\u002Ftasks\u002Ftask_example.html).\nHere is a minimal example:\n\n```python\n# import the objects you want to use\n# or you can define specific objects by yourself, just make sure obeying our specification\nfrom safety_gymnasium.assets.geoms import Apples\nfrom safety_gymnasium.bases import BaseTask\n\n# inherit the basetask\nclass MytaskLevel0(BaseTask):\n    def __init__(self, config):\n        super().__init__(config=config)\n        # define some properties\n        self.num_steps = 500\n        self.agent.placements = [(-0.8, -0.8, 0.8, 0.8)]\n        self.agent.keepout = 0\n        self.lidar_conf.max_dist = 6\n        # add objects into environments\n        self.add_geoms(Apples(num=2, size=0.3))\n\n    def calculate_reward(self):\n        # implement your reward function\n        # Note: cost calculation is based on objects, so it's automatic\n        reward = 1\n        return reward\n\n    def specific_reset(self):\n        # depending on your task\n\n    def specific_step(self):\n        # depending on your task\n\n    def update_world(self):\n        # depending on your task\n\n    @property\n    def goal_achieved(self):\n        # depending on your task\n```\n\n\n## License\n\nSafety-Gymnasium is released under Apache License 2.0.\n","\u003Cdiv align=\"center\">\n\u003Ch1>\n  安全体操馆\n\u003C\u002Fh1>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n  \u003Ca>![Python 3.8+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.8%2B-brightgreen.svg)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fsafety-gymnasium\">![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fsafety-gymnasium?logo=pypi)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fsafety-gymnasium.readthedocs.io\">![Documentation Status](https:\u002F\u002Fimg.shields.io\u002Freadthedocs\u002Fsafety-gymnasium?logo=readthedocs)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsafety-gymnasium\">![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_35bc032a0d3a.png)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fstargazers\">![GitHub Repo Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FPKU-Alignment\u002Fsafety-gymnasium?color=brightgreen&logo=github)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fblob\u002FHEAD\u002FLICENSE\">![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FPKU-Alignment\u002Fsafety-gymnasium?label=license&logo=data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmZmZmZmIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi43NSAyLjc1YS43NS43NSAwIDAwLTEuNSAwVjQuNUg5LjI3NmExLjc1IDEuNzUgMCAwMC0uOTg1LjMwM0w2LjU5NiA1Ljk1N7EuMjUuMjUgMCAwMTYuNDU1IDZIMi4zNTNhLjc1Ljc1IDAgMTAwIDEuNUHzLjkzTC41NjMgMTUuMThhLjc2Mi43NjIgMCAwMC4yMS44OGMuMDguMDY0LjE2MS4xMjUuMzA9LjIy1eu1ODYuMTIxLjQ5Mi4yNuguj792LjQz3e6OC4zMTEgMS42NjIuNjIgMi44N76uNj2a6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t6i9t......\u003Cdiv align=\"center\">\n\u003Ch1>\n  Safety-Gymnasium\n\u003C\u002Fh1>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n  \u003Ca>![Python 3.8+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.8%2B-brightgreen.svg)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fsafety-gymnasium\">![PyPI](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fsafety-gymnasium?logo=pypi)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fsafety-gymnasium.readthedocs.io\">![Documentation Status](https:\u002F\u002Fimg.shields.io\u002Freadthedocs\u002Fsafety-gymnasium?logo=readthedocs)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpepy.tech\u002Fproject\u002Fsafety-gymnasium\">![Downloads](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_35bc032a0d3a.png)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fstargazers\">![GitHub Repo Stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FPKU-Alignment\u002Fsafety-gymnasium?color=brightgreen&logo=github)\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fblob\u002FHEAD\u002FLICENSE\">![License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002FPKU-Alignment\u002Fsafety-gymnasium?label=license&logo=data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiBmaWxsPSIjZmZmZmZmIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMi43NSAyLjc1YS43NS43NSAwIDAwLTEuNSAwVjQuNUg5LjI3NmExLjc1IDEuNzUgMCAwMC0uOTg1LjMwM0w2LjU5NiA1Ljk1N7EuMjUuMjUgMCAwMTYuNDU1IDZIMi4zNTNhLjc1Ljc1IDAgMTAwIDEuNUHzLjkzTC41NjMgMTUuMThhLjc2Mi43NjIgMCAwMC4yMS44OGMuMDguODU0LjE2MS4xMjUuMzA9LjIy1eu1ODYuMTIxLjQ5Mi4yNugtujY9LjQz3Lj6OCuMzMTEgMS42NjIuNjIgMi44N7YuNj2a6i9gLS9uOS4tujY9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i9Lj62a6i......\n\n## 为什么选择 Safety-Gymnasium？\n\n在这里，我们提供一张表格，用于比较 **Safety-Gymnasium** 和现有的 SafeRL 环境库。\n\n|                                                                                   SafeRL\u003Cbr\u002F>Envs                                                                                   |            引擎             | 向量化\u003Cbr\u002F>环境 | 新 Gym API\u003Csup>**(3)**\u003C\u002Fsup> |    视觉输入     |\n| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------: | :--------------------------: | :---------------------------: | :-----------------: |\n|            [Safety-Gym](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsafety-gym)\u003Cbr\u002F>![GitHub 最后一次提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fopenai\u002Fsafety-gym?label=last%20update)            | `mujoco-py`\u003Csup>**(1)**\u003C\u002Fsup> |              ❌               |               ❌               | 极少支持 |\n| [safe-control-gym](https:\u002F\u002Fgithub.com\u002FutiasDSL\u002Fsafe-control-gym)\u003Cbr\u002F>![GitHub 最后一次提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FutiasDSL\u002Fsafe-control-gym?label=last%20update) |           PyBullet            |              ❌               |               ❌               |          ❌          |\n|                                                                       速度约束\u003Csup>**(2)**\u003C\u002Fsup>                                                                        |              N\u002FA              |              ❌               |               ❌               |          ❌          | ❌ |\n|    [mujoco-circle](https:\u002F\u002Fgithub.com\u002Fymzhang01\u002Fmujoco-circle)\u003Cbr\u002F>![GitHub 最后一次提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fymzhang01\u002Fmujoco-circle?label=last%20update)     |            PyTorch            |              ❌               |               ❌               |          ❌          | ❌ |\n|                                  Safety-Gymnasium\u003Cbr\u002F>![GitHub 最后一次提交](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002FPKU-Alignment\u002Fsafety-gymnasium)                                  |       **MuJoCo 2.3.0+**       |              ✅               |               ✅               |          ✅          |\n\n\u003Csup>(1): 维护状态（仅限于错误修复和小更新）；最后一次提交是在 2021 年 11 月 19 日。Safety-Gym 依赖于 `mujoco-py` 2.0.2.7，该版本于 2019 年 10 月 12 日更新。\u003C\u002Fsup>\u003Cbr\u002F>\n\u003Csup>(2): 目前没有官方的速度相关环境库，其相关的成本约束是根据现有信息构建的。然而，这一任务在 SafeRL 的研究中被广泛使用，因此我们在 Safety-Gymnasium 中将其封装起来。\u003C\u002Fsup>\u003Cbr\u002F>\n\u003Csup>(3): 在 gym 0.26.0 版本的更新中，重新定义了新的交互 API。\u003C\u002Fsup>\n\n--------------------------------------------------------------------------------\n\n## 环境\n\n我们设计了多种增强安全性的学习任务，并整合了强化学习社区的贡献：`safety-velocity`、`safety-run`、`safety-circle`、`safety-goal`、`safety-button` 等。我们推出了一套统一的安全增强型学习基准环境库，名为 `Safety-Gymnasium`。\n\n此外，为了促进社区研究的发展，我们对 [Safety-Gym](https:\u002F\u002Fgithub.com\u002Fopenai\u002Fsafety-gym) 进行了重新设计，并去除了对 `mujoco-py` 的依赖。我们基于 [MuJoCo](https:\u002F\u002Fgithub.com\u002Fdeepmind\u002Fmujoco) 构建了它，并修复了一些 bug。更详细的 bug 报告可以参考 [Safety-Gym 的 BUG 报告](https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Fblob\u002Fmain\u002Fsafety_gym_bug_report.md)。\n\n以下是我们目前支持的所有环境列表：\n\n\u003Ctable border=\"1\">\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>类别\u003C\u002Fth>\n      \u003Cth>任务\u003C\u002Fth>\n      \u003Cth>智能体\u003C\u002Fth>\n      \u003Cth>示例\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd rowspan=\"4\">安全导航\u003C\u002Ftd>\n      \u003Ctd>Button[012]\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">Point, Car, Doggo, Racecar, Ant\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">SafetyPointGoal1-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Goal[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Push[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Circle[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>安全速度\u003C\u002Ftd>\n      \u003Ctd>Velocity\u003C\u002Ftd>\n      \u003Ctd>HalfCheetah, Hopper, Swimmer, Walker2d, Ant, Humanoid\u003C\u002Ftd>\n      \u003Ctd>SafetyAntVelocity-v1\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd rowspan=\"7\">安全视觉\u003C\u002Ftd>\n      \u003Ctd>BuildingButton[012]\u003C\u002Ftd>\n      \u003Ctd rowspan=\"7\">Point, Car, Doggo, Racecar, Ant\u003C\u002Ftd>\n      \u003Ctd rowspan=\"7\">SafetyFormulaOne1-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>BuildingGoal[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>BuildingPush[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FadingEasy[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FadingHard[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>Race[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FormulaOne[012]\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd rowspan=\"8\">安全多智能体\u003C\u002Ftd>\n      \u003Ctd>MultiGoal[012]\u003C\u002Ftd>\n      \u003Ctd>Multi-Point, Multi-Ant\u003C\u002Ftd>\n      \u003Ctd>SafetyAntMultiGoal1-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>多智能体速度\u003C\u002Ftd>\n      \u003Ctd>6x1HalfCheetah, 2x3HalfCheetah, 3x1Hopper, 2x1Swimmer, 2x3Walker2d, 2x4Ant, 4x2Ant, 9|8Humanoid\u003C\u002Ftd>\n      \u003Ctd>Safety2x4AntVelocity-v0\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FreightFrankaCloseDrawer(多智能体)\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFranka\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFrankaCloseDrawer(多智能体)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FreightFrankaPickAndPlace(多智能体)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeFinger(多智能体)\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHands\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHandCatchOver2UnderarmSafeJoint(多智能体)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeJoint(多智能体)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeFinger(多智能体)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeJoint(多智能体)\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd rowspan=\"6\">安全 Isaac Gym\u003C\u002Ftd>\n      \u003Ctd>FreightFrankaCloseDrawer\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFranka\u003C\u002Ftd>\n      \u003Ctd rowspan=\"2\">FreightFrankaCloseDrawer\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>FreightFrankaPickAndPlace\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeFinger\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHands\u003C\u002Ftd>\n      \u003Ctd rowspan=\"4\">ShadowHandCatchOver2UnderarmSafeJoint\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandCatchOver2UnderarmSafeJoint\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeFinger\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>ShadowHandOverSafeJoint\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n以下是一些 **安全导航** 任务的截图。\n\n#### 智能体\n\n\u003Ctable class=\"docutils align-default\">\n  \u003Ctbody>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_e08659939217.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_e08659939217.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">点\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fcar.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_b77508ca2ac2.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_b77508ca2ac2.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">汽车\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fracecar.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_51c3801cf6b5.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_51c3801cf6b5.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">赛车\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fdoggo.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_0de8bd31909b.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_0de8bd31909b.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">小狗\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\"agents\u002Fant.html\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1f6f14201624.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1f6f14201624.jpeg\"\n              style=\"width: 130px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"doc\">蚂蚁\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n#### 任务\n\n\u003Ctable class=\"docutils align-default\">\n  \u003Ctbody>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_9cbb20b1140a.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_9cbb20b1140a.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">目标0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_58348f1a9e0a.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_58348f1a9e0a.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">目标1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_073c5e69db08.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_073c5e69db08.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">目标2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-even\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_38edf8aa2d9a.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_38edf8aa2d9a.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">按钮0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\".\u002Fbutton#button1\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4b2d0764cf26.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4b2d0764cf26.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">按钮1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\".\u002Fbutton#button2\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_dd1a768049a6.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_dd1a768049a6.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">按钮2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_44a3c0997615.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_44a3c0997615.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">推动0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1c4b2c6aa0b7.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_1c4b2c6aa0b7.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">推动1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26f8d8de91a5.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26f8d8de91a5.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">推动2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-even\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_06e85d401cb7.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_06e85d401cb7.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">圆圈0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_cb2613bb6d53.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_cb2613bb6d53.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">圆圈1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\" href=\".\u002Fcircle#circle2\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f9bbf338ba76.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f9bbf338ba76.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">圆圈2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 基于视觉的安全强化学习\n\n基于视觉的安全强化学习缺乏真实的场景。尽管最初的 `Safety-Gym` 能够勉强支持视觉输入，但其场景过于相似。为了便于验证基于视觉的安全强化学习算法，我们开发了一组真实的基于视觉的安全强化学习任务，目前这些任务正在基准测试中进行验证。\n\n作为开胃菜，以下是相关图片：\n\n\u003Ctable class=\"docutils align-default\">\n  \u003Ctbody>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f5a9b8dbace4.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f5a9b8dbace4.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Race0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f66f8781c6ff.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_f66f8781c6ff.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Race1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4d230dbde6c5.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_4d230dbde6c5.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">Race2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr class=\"row-odd\">\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26df4668e038.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_26df4668e038.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">FormulaOne0\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_c655551159d6.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_c655551159d6.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">FormulaOne1\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n      \u003Ctd>\n        \u003Cfigure class=\"align-default\">\n          \u003Ca class=\"reference external image-reference\">\u003Cimg\n              alt=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_a576162cc10d.jpeg\"\n              src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_readme_a576162cc10d.jpeg\" style=\"width: 230px;\">\u003C\u002Fa>\n        \u003C\u002Ffigure>\n        \u003Cp class=\"centered\">\n          \u003Cstrong>\u003Ca class=\"reference internal\">\u003Cspan class=\"std std-ref\">FormulaOne2\u003C\u002Fspan>\u003C\u002Fa>\u003C\u002Fstrong>\n        \u003C\u002Fp>\n      \u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 环境使用\n\n**注：** 我们支持基于 [**Gymnasium API**](https:\u002F\u002Fgithub.com\u002FFarama-Foundation\u002FGymnasium) 显式地表达 `cost`。`step` 方法会返回 6 个值 `(next_obervation, reward, cost, terminated, truncated, info)`，其中多了一个 `cost` 字段。\n\n```python\nimport safety_gymnasium\n\nenv_id = 'SafetyPointGoal1-v0'\nenv = safety_gymnasium.make(env_id)\n\nobs, info = env.reset()\nwhile True:\n    act = env.action_space.sample()\n    obs, reward, cost, terminated, truncated, info = env.step(act)\n    if terminated or truncated:\n        break\n    env.render()\n```\n\n我们还提供了两个便捷的包装器，用于在 Safety-Gymnasium 环境与标准 Gymnasium API 之间进行转换。\n\n```python\n# Safety-Gymnasium API：step 返回 (next_obervation, reward, cost, terminated, truncated, info)\n# Gymnasium API：       step 返回 (next_obervation, reward, terminated, truncated, info)，而 cost 则包含在与字符串键 `'cost'` 关联的 `info` 字典中。\n\nsafety_gymnasium_env = safety_gymnasium.make(env_id)\ngymnasium_env = safety_gymnasium.wrappers.SafetyGymnasium2Gymnasium(safety_gymnasium_env)\n\nsafety_gymnasium_env = safety_gymnasium.wrappers.Gymnasium2SafetyGymnasium(gymnasium_env)\n```\n\n用户可以轻松地应用 Gymnasium 包装器，如下所示：\n\n```python\nimport gymnasium\nimport safety_gymnasium\n\ndef make_safe_env(env_id):\n    safe_env = safety_gymnasium.make(env_id)\n    env = safety_gymnasium.wrappers.SafetyGymnasium2Gymnasium(safe_env)\n    env = gymnasium.wrappers.SomeWrapper1(env)\n    env = gymnasium.wrappers.SomeWrapper2(env, argname1=arg1, argname2=arg2)\n    ...\n    env = gymnasium.wrappers.SomeWrapperN(env)\n    safe_env = safety_gymnasium.wrappers.Gymnasium2SafetyGymnasium(env)\n    return safe_env\n```\n\n或者：\n\n```python\nimport functools\n\nimport gymnasium\nimport safety_gymnasium\n\ndef make_safe_env(env_id):\n    return safety_gymnasium.wrappers.with_gymnasium_wrappers(\n        safety_gymnasium.make(env_id),\n        gymnasium.wrappers.SomeWrapper1,\n        functools.partial(gymnasium.wrappers.SomeWrapper2, argname1=arg1, argname2=arg2),\n        ...,\n        gymnasium.wrappers.SomeWrapperN,\n    )\n```\n\n此外，对于所有 Safety-Gymnasium 环境，我们还提供了对应的 Gymnasium 环境，其环境 ID 中带有后缀 `Gymnasium`。例如：\n\n```python\nimport gymnasium\nimport safety_gymnasium\n\nsafety_gymnasium.make('SafetyPointGoal1-v0')    # step 返回 (next_obervation, reward, cost, terminated, truncated, info)\ngymnasium.make('SafetyPointGoal1Gymnasium-v0')  # step 返回 (next_obervation, reward, terminated, truncated, info)\n```\n\n--------------------------------------------------------------------------------\n\n## 安装\n\n### 从 PyPI 安装\n\n```bash\npip install safety-gymnasium\n```\n\n### 从源码安装\n\n```bash\nconda create -n \u003Cenvname> python=3.8\nconda activate \u003Cenvname>\n\ngit clone https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium.git\ncd safety-gymnasium\npip install -e .\n```\n\n### 重要提示\n\n如果您在服务器上无法成功渲染，可以尝试以下步骤：\n\n```bash\necho \"export MUJOCO_GL=osmesa\" >> ~\u002F.bashrc\nsource ~\u002F.bashrc\napt-get install libosmesa6-dev\napt-get install python3-opengl\n```\n\n--------------------------------------------------------------------------------\n\n## 使用键盘进行调试\n\n对于简单的智能体，我们提供了通过键盘控制机器人运动的功能，以方便调试。只需在任务名称后添加 **Debug** 后缀，例如 `SafetyCarGoal2Debug-v0`，然后使用 `I`、`K`、`J` 和 `L` 键来引导机器人的移动。\n\n对于更复杂的智能体，您还可以根据特定的输入设备编写自定义的控制逻辑。为此，只需为指定的智能体实现 `BaseAgent` 中的 `debug` 方法即可。\n\n\n\n## 自定义您的环境\n\n我们构建了一个高度可扩展的代码框架，便于您理解和掌握，并且平均只需不到 100 行代码即可设计出适合您研究的环境。\n\n有关详细信息，请参阅我们的[文档](https:\u002F\u002Fwww.safety-gymnasium.com\u002Fen\u002Flatest\u002Fcomponents_of_environments\u002Ftasks\u002Ftask_example.html)。以下是一个最小示例：\n\n```python\n# 导入您想要使用的对象\n# 或者您也可以自行定义特定的对象，只要符合我们的规范即可\nfrom safety_gymnasium.assets.geoms import Apples\nfrom safety_gymnasium.bases import BaseTask\n\n# 继承 BaseTask 类\nclass MytaskLevel0(BaseTask):\n    def __init__(self, config):\n        super().__init__(config=config)\n        # 定义一些属性\n        self.num_steps = 500\n        self.agent.placements = [(-0.8, -0.8, 0.8, 0.8)]\n        self.agent.keepout = 0\n        self.lidar_conf.max_dist = 6\n        # 将对象添加到环境中\n        self.add_geoms(Apples(num=2, size=0.3))\n\n    def calculate_reward(self):\n        # 实现您的奖励函数\n        # 注意：成本计算是基于对象的，因此会自动完成\n        reward = 1\n        return reward\n\n    def specific_reset(self):\n        # 根据您的任务需求\n\n    def specific_step(self):\n        # 根据您的任务需求\n\n    def update_world(self):\n        # 根据您的任务需求\n\n    @property\n    def goal_achieved(self):\n        # 根据您的任务需求\n```\n\n\n## 许可证\n\nSafety-Gymnasium 采用 Apache License 2.0 许可证发布。","# Safety-Gymnasium 快速上手指南\n\nSafety-Gymnasium 是一个高可扩展、可定制的安全强化学习（SafeRL）库，旨在提供标准化的基准测试环境和统一的 API 接口。它基于 MuJoCo 2.3.0+ 构建，支持向量化环境、新版 Gym API 以及视觉输入。\n\n## 环境准备\n\n在开始之前，请确保满足以下系统要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 支持可能受限，建议优先使用 Linux)\n*   **Python 版本**: **3.8, 3.9, 或 3.10**\n    *   ⚠️ **注意**: 目前**不支持 Python 3.11**，因为 `pygame` 依赖项存在兼容性问题。\n*   **前置依赖**:\n    *   `conda` (推荐用于环境管理)\n    *   `git`, `wget`, `unzip` (用于下载源码)\n\n## 安装步骤\n\n由于 v1.1.0 和 v1.2.0 版本包含较大的资源文件（如 Safe Vision 和 Safe Isaac Gym 系列），受限于 PyPI 包大小限制，尚未上传至 PyPI。**强烈建议通过 GitHub 源码手动安装**以获取最新完整功能。\n\n### 1. 创建并激活虚拟环境\n建议使用 conda 创建独立的 Python 环境（以 Python 3.8 为例）：\n\n```bash\nconda create -n safety-gym python=3.8\nconda activate safety-gym\n```\n\n### 2. 下载源码\n从 GitHub 下载最新代码包：\n\n```bash\nwget https:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Farchive\u002Frefs\u002Fheads\u002Fmain.zip\nunzip main.zip\ncd safety-gymnasium-main\n```\n\n> 💡 **国内加速提示**: 如果 `wget` 下载速度慢，可使用国内镜像加速链接：\n> ```bash\n> wget https:\u002F\u002Fghproxy.com\u002Fhttps:\u002F\u002Fgithub.com\u002FPKU-Alignment\u002Fsafety-gymnasium\u002Farchive\u002Frefs\u002Fheads\u002Fmain.zip\n> ```\n\n### 3. 安装依赖\n在源码目录下执行安装命令：\n\n```bash\npip install -e .\n```\n\n*注：如果在国内安装依赖较慢，可临时指定清华源：*\n```bash\npip install -e . -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 基本使用\n\n安装完成后，即可像使用标准 Gym 一样加载安全强化学习环境。Safety-Gymnasium 的核心特性是返回的信息中包含约束代价（cost）。\n\n### 最简单的使用示例\n\n以下代码演示了如何创建一个环境、重置状态并运行一步交互：\n\n```python\nimport safety_gymnasium as sg\n\n# 1. 创建环境\n# 示例：安全导航任务，智能体为 Point，任务为 Goal1\nenv = sg.make(\"SafetyPointGoal1-v0\")\n\n# 2. 重置环境\nobs, info = env.reset()\n\n# 3. 运行一步\naction = env.action_space.sample()  # 随机采样动作\nnext_obs, reward, terminated, truncated, info = env.step(action)\n\n# 4. 获取关键安全指标\n# cost: 当前步的约束代价 (例如碰撞惩罚)\n# cost_rate: 累积代价率 (部分环境支持)\ncurrent_cost = info.get('cost', 0)\n\nprint(f\"Observation shape: {next_obs.shape}\")\nprint(f\"Reward: {reward}, Cost: {current_cost}\")\nprint(f\"Done: {terminated or truncated}\")\n\n# 5. 关闭环境\nenv.close()\n```\n\n### 可用环境列表\n你可以通过以下代码查看支持的所有环境名称：\n\n```python\nimport safety_gymnasium as sg\n\n# 打印所有注册的环境 ID\nfor env_id in sorted(sg.envs.registry.keys()):\n    if env_id.startswith(\"Safety\"):\n        print(env_id)\n```\n\n常见环境前缀说明：\n*   `SafetyPoint...`: 点状智能体导航\n*   `SafetyAnt...`: 蚂蚁机器人导航或速度控制\n*   `Safety...Velocity`: 速度约束任务 (如 HalfCheetah, Hopper)\n*   `Safety...Vision`: 基于视觉输入的任务","某自动驾驶初创公司的算法团队正在研发一款能在复杂城市路况中自主导航的配送机器人，核心挑战是如何让机器人在追求效率的同时，严格避免碰撞行人或闯入禁行区。\n\n### 没有 safety-gymnasium 时\n- **环境构建重复造轮子**：团队需手动编写带有约束条件的仿真环境代码，耗费数周时间且难以保证物理逻辑的准确性。\n- **算法评估标准混乱**：缺乏统一的基准测试集，不同安全强化学习算法的性能对比依赖自定义指标，导致结果无法复现且缺乏公信力。\n- **约束处理接口不一**：现有的通用强化学习库不支持原生的“成本约束”信号，工程师必须魔改底层代码才能传递违规惩罚信息，极易引入 Bug。\n- **扩展性差**：一旦需要增加新的危险场景（如雨雪天气或突发障碍物），修改现有环境的成本极高，严重拖慢迭代节奏。\n\n### 使用 safety-gymnasium 后\n- **开箱即用的标准环境**：直接调用 safety-gymnasium 预置的高保真安全导航场景，将环境搭建时间从数周缩短至几小时，且物理交互经过严格验证。\n- **权威统一的评测基准**：利用其标准化的 Benchmark 套件，团队能公平地对比 PPO-Lagrangian 等不同算法的安全性与回报率，快速锁定最优方案。\n- **原生支持约束接口**：借助其兼容约束信息的标准 API，算法可直接接收“碰撞成本”反馈，无需修改底层框架即可实现安全策略训练。\n- **灵活的场景定制**：通过其优雅的代码架构，开发人员轻松添加了“湿滑路面”等新变量，快速验证算法在极端条件下的鲁棒性。\n\nsafety-gymnasium 通过提供统一、可扩展的安全强化学习基准，让研发团队从繁琐的环境工程中解放出来，专注于提升算法在真实世界中的安全决策能力。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FPKU-Alignment_safety-gymnasium_e0865993.jpg","PKU-Alignment","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FPKU-Alignment_a9b98610.png","Loves Sharing and Open-Source, Making AI Safer.",null,"yaodong.yang@outlook.com","https:\u002F\u002Fgithub.com\u002FPKU-Alignment",[79,83,87,91],{"name":80,"color":81,"percentage":82},"Python","#3572A5",98.1,{"name":84,"color":85,"percentage":86},"HTML","#e34c26",1.2,{"name":88,"color":89,"percentage":90},"Makefile","#427819",0.7,{"name":92,"color":93,"percentage":94},"Batchfile","#C1F12E",0,556,79,"2026-04-17T06:33:22","Apache-2.0","未说明","部分环境（如 Safe Isaac Gym 系列、Safe Vision 系列）可能需要 GPU 支持，具体型号和显存未说明；基础 MuJoCo 环境通常仅需 CPU",{"notes":102,"python":103,"dependencies":104},"1. 不支持 Python 3.11，原因是 pygame 兼容性问题。2. v1.1.0 和 v1.2.0 版本因包大小限制未在 PyPI 发布，需从 GitHub 手动下载源码安装。3. 该库基于 MuJoCo 2.3.0+ 构建，已移除对旧版 mujoco-py 的依赖。4. 包含多种安全强化学习环境（如安全导航、安全速度、安全视觉、多智能体及 Isaac Gym 系列）。","3.8+, \u003C3.11 (不支持 Python 3.11)",[105,106,107],"mujoco>=2.3.0","gymnasium","pygame",[14],[110,111,112,113,114,115,116,117],"constraint-satisfaction-problem","reinforcement-learning","safe-reinforcement-learning","safe-reinforcement-learning-environments","safety-critical","safety-critical-systems","constraint-rl","safe-policy-optimization","2026-03-27T02:49:30.150509","2026-04-18T09:19:13.913069",[],[122,127,132,137,142,147,152,157,162,167,172,177],{"id":123,"version":124,"summary_zh":125,"released_at":126},315257,"v1.2.0","1. 功能（Safe Isaac Gym）：在 PR #71 中将异构的 FreightFranka 机器人作为新智能体上传。 2. 功能（多智能体）：在 PR #70 中更新多智能体环境，以支持多个智能体之间的交互。","2023-08-22T15:13:28",{"id":128,"version":129,"summary_zh":130,"released_at":131},315258,"v1.1.0","1. 在 PR #69 中更新了 building 和 formula_one 任务。 2. 我们引入了更为真实的环境设置，并在 PR #69 中对 Goal、Push 和 Button 任务的实际应用价值进行了全面阐述，强调了这些任务对于现实场景的代表性。 3. 我们推出了 FormulaOne 赛车环境。该环境灵感源自真实的 F1 赛道，具有复杂的视觉信息、高度贴近现实的场景以及极具挑战性的任务，在 PR #69 中进行了介绍。","2023-08-22T15:11:19",{"id":133,"version":134,"summary_zh":135,"released_at":136},315259,"v1.0.0","1. 功能（环境）：在 PR #65 中更新安全的 Isaac Gym 环境  \n2. 功能（视觉环境）：在 PR #61 中上传安全的视觉环境  \n3. 功能（多智能体安全）：在 PR #59 中将多智能体安全环境合并到主分支","2023-07-21T07:20:59",{"id":138,"version":139,"summary_zh":140,"released_at":141},315260,"v0.4.1","1. 特性：在 PR #57 中支持环境包装器","2023-07-12T15:25:28",{"id":143,"version":144,"summary_zh":145,"released_at":146},315261,"v0.4.0","1. 功能（代理）：在 PR #51 中支持 Doggo 代理  \n2. 维护（基准测试）：在 PR #48 中上传各环境的基准测试结果","2023-05-10T14:27:42",{"id":148,"version":149,"summary_zh":150,"released_at":151},315262,"v0.3.0","1. 测试：在 PR #16 中启用 CI 中的测试  \n2. 杂项：pre-commit 自动更新  \n3. 样式：在代码中优先使用 utf-8 而不是 UTF-8  \n4. 功能：在 PR #46 中添加 Gymnasium 转换封装器  \n5. 杂项：在 PR #45 中添加测试配置并更新 Makefile  \n6. 杂项：在 PR #44 中更新许可证头  \n7. 样式：修复 README 中的语法，并在 pyproject.toml 中规范化字符串  \n8. 依赖（gymnasium）：在 PR #41 中将 gymnasium 版本更新至 0.28.1  \n9. 杂项（pre-commit）：[pre-commit.ci] 自动更新，见 PR #36  \n10. 杂项：在 PR #38 中更新指向 OmniSafeAI 组织的链接","2023-05-10T13:31:48",{"id":153,"version":154,"summary_zh":155,"released_at":156},315263,"v0.2.0","1. feat(SafeVelocity): 在 PR #37 中将安全速度任务更新至 v1","2023-04-05T10:18:28",{"id":158,"version":159,"summary_zh":160,"released_at":161},315264,"v0.1.3","1. 修复：修复 PR #32 中默认随机种子在 Windows 系统下出现的错误。","2023-03-26T14:30:33",{"id":163,"version":164,"summary_zh":165,"released_at":166},315265,"v0.1.2","1. 功能：在 PR [#26](https:\u002F\u002Fgithub.com\u002FPKU-MARL\u002Fsafety-gymnasium\u002Fpull\u002F26) 中支持 `rgb_array_list` 和 `depth_array_list` 模式进行渲染。  \n2. 修复：修复 PR [#28](https:\u002F\u002Fgithub.com\u002FPKU-MARL\u002Fsafety-gymnasium\u002Fpull\u002F28) 中视觉观测的 bug。  \n3. 构建（vision_env）：在 PR [#29](https:\u002F\u002Fgithub.com\u002FPKU-MARL\u002Fsafety-gymnasium\u002Fpull\u002F29) 中更新视觉环境的默认分辨率。","2023-03-14T16:23:54",{"id":168,"version":169,"summary_zh":170,"released_at":171},315266,"v0.1.1","1. 修复：修复 origin 中 AutoresetWrapper 没有 cost 的问题（#23）。\r\n2. 修复：修复指南针观测空间中的 bug（#17）。\r\n3. 新特性：启用更多 flake8 检查（#24）。","2023-03-01T16:17:28",{"id":173,"version":174,"summary_zh":175,"released_at":176},315267,"v0.1.0","The first stable release of Safety-Gymnasium.","2023-02-15T12:28:50",{"id":178,"version":179,"summary_zh":180,"released_at":181},315268,"v0.1.0b0","The first beta release of Safety Gymnasium.\r\nFirst PyPI beta release. 🎉","2023-02-08T14:32:28"]