[software] 添加16DOF早期训练仿真与Sim2Real闭环
This commit is contained in:
@@ -0,0 +1,200 @@
|
||||
import os
|
||||
import sys
|
||||
|
||||
import sphinx_book_theme
|
||||
|
||||
sys.path.insert(0, os.path.abspath("../src"))
|
||||
sys.path.insert(0, os.path.abspath("../src/mjlab"))
|
||||
|
||||
|
||||
project = "mjlab"
|
||||
copyright = "2025, The mjlab Developers"
|
||||
author = "The mjlab Developers"
|
||||
|
||||
extensions = [
|
||||
"sphinx.ext.autodoc",
|
||||
"sphinx.ext.autosummary",
|
||||
"autodocsumm",
|
||||
"myst_parser",
|
||||
"sphinx.ext.napoleon",
|
||||
"sphinxemoji.sphinxemoji",
|
||||
"sphinx.ext.intersphinx",
|
||||
"sphinx.ext.mathjax",
|
||||
"sphinx.ext.todo",
|
||||
"sphinx.ext.viewcode",
|
||||
"sphinxcontrib.bibtex",
|
||||
"sphinxcontrib.icon",
|
||||
"sphinx_copybutton",
|
||||
"sphinx_design",
|
||||
"sphinx_tabs.tabs",
|
||||
"sphinx_multiversion",
|
||||
"sphinx.ext.extlinks",
|
||||
]
|
||||
|
||||
extlinks = {
|
||||
"issue": (
|
||||
"https://github.com/mujocolab/mjlab/issues/%s",
|
||||
"#%s",
|
||||
),
|
||||
}
|
||||
|
||||
mathjax3_config = {
|
||||
"tex": {
|
||||
"inlineMath": [["\\(", "\\)"]],
|
||||
"displayMath": [["\\[", "\\]"]],
|
||||
},
|
||||
}
|
||||
|
||||
panels_add_bootstrap_css = False
|
||||
panels_add_fontawesome_css = True
|
||||
|
||||
source_suffix = {
|
||||
".rst": "restructuredtext",
|
||||
".md": "markdown",
|
||||
}
|
||||
|
||||
nitpick_ignore = [
|
||||
("py:obj", "slice(None)"),
|
||||
]
|
||||
|
||||
nitpick_ignore_regex = [
|
||||
(r"py:.*", r"pxr.*"),
|
||||
(r"py:.*", r"trimesh.*"),
|
||||
]
|
||||
|
||||
# emoji style
|
||||
sphinxemoji_style = "twemoji"
|
||||
autodoc_typehints = "signature"
|
||||
autoclass_content = "class"
|
||||
autodoc_class_signature = "separated"
|
||||
autodoc_member_order = "bysource"
|
||||
autodoc_inherit_docstrings = True
|
||||
bibtex_bibfiles = ["source/_static/refs.bib"]
|
||||
autosummary_generate = True
|
||||
autosummary_generate_overwrite = False
|
||||
autodoc_default_options = {
|
||||
"member-order": "bysource",
|
||||
}
|
||||
intersphinx_mapping = {
|
||||
"python": ("https://docs.python.org/3", None),
|
||||
}
|
||||
|
||||
exclude_patterns = [
|
||||
"_build",
|
||||
"_redirect",
|
||||
"_templates",
|
||||
"Thumbs.db",
|
||||
".DS_Store",
|
||||
"README.md",
|
||||
"licenses/*",
|
||||
]
|
||||
|
||||
autodoc_mock_imports = [
|
||||
"matplotlib",
|
||||
"scipy",
|
||||
"carb",
|
||||
"warp",
|
||||
"pxr",
|
||||
"h5py",
|
||||
"hid",
|
||||
"prettytable",
|
||||
"tqdm",
|
||||
"tensordict",
|
||||
"trimesh",
|
||||
"toml",
|
||||
"mjviser",
|
||||
"mujoco_warp",
|
||||
"gymnasium",
|
||||
"rsl_rl",
|
||||
"viser",
|
||||
"wandb",
|
||||
"torchvision",
|
||||
]
|
||||
|
||||
suppress_warnings = [
|
||||
"ref.python",
|
||||
"docutils",
|
||||
]
|
||||
|
||||
language = "en"
|
||||
|
||||
html_title = "mjlab Documentation"
|
||||
html_theme_path = [sphinx_book_theme.get_html_theme_path()]
|
||||
html_theme = "sphinx_book_theme"
|
||||
html_favicon = "source/_static/favicon.ico"
|
||||
html_show_copyright = True
|
||||
html_show_sphinx = False
|
||||
html_last_updated_fmt = ""
|
||||
|
||||
html_static_path = ["source/_static"]
|
||||
html_css_files = ["css/custom.css"]
|
||||
|
||||
html_theme_options = {
|
||||
"path_to_docs": "docs/",
|
||||
"collapse_navigation": True,
|
||||
"repository_url": "https://github.com/mujocolab/mjlab",
|
||||
"use_repository_button": True,
|
||||
"use_issues_button": True,
|
||||
"use_edit_page_button": True,
|
||||
"show_toc_level": 2,
|
||||
"use_sidenotes": True,
|
||||
"logo": {
|
||||
"text": "mjlab Documentation",
|
||||
},
|
||||
"icon_links": [
|
||||
{
|
||||
"name": "Benchmarks",
|
||||
"url": "https://mujocolab.github.io/mjlab/nightly/",
|
||||
"icon": "fa-solid fa-chart-line",
|
||||
"type": "fontawesome",
|
||||
},
|
||||
],
|
||||
"icon_links_label": "Quick Links",
|
||||
}
|
||||
|
||||
templates_path = [
|
||||
"_templates",
|
||||
]
|
||||
|
||||
smv_remote_whitelist = r"^.*$"
|
||||
smv_branch_whitelist = os.getenv("SMV_BRANCH_WHITELIST", r"^(main|devel)$")
|
||||
smv_tag_whitelist = os.getenv("SMV_TAG_WHITELIST", r"^v[1-9]\d*\.\d+\.\d+$")
|
||||
|
||||
html_sidebars = {
|
||||
"**": [
|
||||
"navbar-logo.html",
|
||||
"search-field.html",
|
||||
"versioning.html",
|
||||
"sbt-sidebar-nav.html",
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
def skip_member(app, what, name, obj, skip, options):
|
||||
exclusions = ["from_dict", "to_dict", "replace", "copy", "validate", "__post_init__"]
|
||||
if name in exclusions:
|
||||
return True
|
||||
return None
|
||||
|
||||
|
||||
def process_signature(app, what, name, obj, options, signature, return_annotation):
|
||||
"""Suppress the ugly __init__ signature for dataclass Cfg classes."""
|
||||
if what == "class" and "exclude-members" in options:
|
||||
if "__init__" in options["exclude-members"]:
|
||||
return ("", None)
|
||||
return None
|
||||
|
||||
|
||||
def process_docstring(app, what, name, obj, options, lines):
|
||||
"""Strip auto-generated dataclass docstrings (e.g. 'ClassName(*, ...)')."""
|
||||
import dataclasses
|
||||
|
||||
if what == "class" and dataclasses.is_dataclass(obj):
|
||||
if lines and lines[0].startswith(f"{obj.__name__}("):
|
||||
lines.clear()
|
||||
|
||||
|
||||
def setup(app):
|
||||
app.connect("autodoc-skip-member", skip_member)
|
||||
app.connect("autodoc-process-signature", process_signature)
|
||||
app.connect("autodoc-process-docstring", process_docstring)
|
||||
Reference in New Issue
Block a user