diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..c92dffc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,23 @@ +--- +name: Bug Report +about: Report issues encountered during runtime +title: "[Bug] Brief description of the problem" +labels: bug +assignees: '' +--- +### Description +Clear and concise description of the issue. +### Reproduction Steps +1. Run command: `...` +2. Trigger operation: ... +3. Error observed: +``` +Paste full error log here +``` +### Environment Information +- Operating System: [e.g. Ubuntu 22.04 / macOS 13 / Windows 11] +- Python Version: [e.g. 3.11] +- RMP Version: [e.g. 0.8.0] +- Installation Method: [Source install / pip install] +### Additional Information +Attach related screenshots, motion files, or robot models if applicable. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..39ba59e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,13 @@ +--- +name: Feature Request +about: Suggest new features or improve existing ones +title: "[Feature] Brief description of the feature" +labels: enhancement +assignees: '' +--- +### Feature Description +Clear and concise description of the desired feature. +### Use Case +Explain the use case for this feature and why it is needed. +### Implementation Suggestions +If you have ideas for implementation, describe them here for reference. diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md new file mode 100644 index 0000000..28a1883 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.md @@ -0,0 +1,14 @@ +--- +name: Question +about: Ask usage questions or seek clarification +title: "[Question] Brief description of your question" +labels: question +assignees: '' +--- +### Question Description +Clear and concise description of your question. +### What you have tried +- [ ] Checked README documentation +- [ ] Checked usage guides under docs directory +- [ ] Searched existing issues and found no related content +- [ ] Attempted troubleshooting on your own diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..c8f6698 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,22 @@ +### Description +Clear and concise description of the changes in this PR: +1. What does this change do? +2. Why is this change needed? +3. Link related issues (if any): Fixes # +--- +### Type of Change +Please check the applicable options: +- [ ] 🐛 Bug fix (non-breaking change that fixes an issue) +- [ ] ✨ New feature (non-breaking change that adds functionality) +- [ ] 📝 Documentation update (only changes to documentation) +- [ ] 🔨 Refactoring (code change that does not affect functionality) +- [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Other (describe below): +--- +### Checklist +All items must be completed before PR review: +- [ ] I have run `make check` locally and all checks pass +- [ ] I have added/updated tests that prove my fix is effective or my feature works +- [ ] I have updated relevant documentation (README, docs, etc.) to reflect my changes +- [ ] My changes generate no new warnings +- [ ] I have checked that my code follows the project's style guidelines diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..f3ff31f --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,92 @@ +# Contributor Covenant Code of Conduct +## Our Pledge +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. +## Our Standards +Examples of behavior that contributes to a positive environment for our +community include: +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community +Examples of unacceptable behavior include: +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting +## Enforcement Responsibilities +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. +## Scope +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. +## Enforcement +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders at [opensource@bitroboticslab.com](mailto:opensource@bitroboticslab.com). +All complaints will be reviewed and investigated promptly and fairly. +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. +## Enforcement Guidelines +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: +### 1. Correction +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. +### 2. Warning +**Community Impact**: A violation through a single incident or series +of actions. +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. +### 3. Temporary Ban +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. +### 4. Permanent Ban +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. +**Consequence**: A permanent ban from any sort of public interaction within +the community. +## Attribution +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). +[homepage]: https://www.contributor-covenant.org +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index af89889..31960a9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,46 +1,51 @@ -# CONTRIBUTING.md - -Thanks for contributing to `robot-motion-player`. - -## Source of truth - -Before implementing changes, align with: -- `docs/requirements.md` -- `docs/design.md` -- `docs/summary.md` -- `AGENTS.md` - -## Local workflow - -1. Install development dependencies: - - `make install-dev` -2. Run checks while iterating: - - `make lint` - - `make test-quick` -3. Run full validation before opening a PR: - - `make check` - -## Required checks for PRs - -- Minimum: `make lint` -- Expected for functional changes: `make test` -- For release-related changes: `make release-check` -- Optional local hygiene: `make precommit` - -## Changelog discipline - -- Add user-visible changes under `## [Unreleased]` in `CHANGELOG.md`. -- Use Keep a Changelog sections (`Added`, `Changed`, `Fixed`). -- Keep entries concise, behavior-oriented, and scoped to the same PR. - -## Release-sensitive change rules - -If your change touches release/version surfaces: -- Follow `RELEASING.md`. -- Keep version markers synchronized by role: - - `pyproject.toml` release version `X.Y.Z` - - `motion_player/__init__.py` fallback `X.Y.Z.dev0` - - `motion_player/cli/main.py` fallback `X.Y.Z.dev0` -- Add/update `docs/releases/vX.Y.Z.md` for the target release. - -Avoid bundling unrelated refactors into release/version patches. +# Contributing Guidelines +We welcome all contributions to Robot Motion Player! This document outlines the process and standards for contributing. +## 📋 Prerequisites +1. Python 3.9+ +2. Conda (recommended for Pinocchio installation) +3. All development dependencies installed: `pip install -e ".[all,dev]" && pre-commit install` +## 🚀 Development Workflow +1. **Fork the repository** and clone your fork locally +2. **Create a new branch** for your feature/bugfix: + - Feature branches: `feature/your-feature-name` + - Bugfix branches: `fix/your-bugfix-name` + - Documentation branches: `docs/your-doc-name` +3. **Make your changes** following the code standards below +4. **✅ MANDATORY: Run full local checks using official make commands BEFORE submitting PR** + We strictly enforce using Makefile commands for consistency across all environments, DO NOT run lint/test manually: + ```bash + make check # Run all required checks in one go (lint + full test suite) + # Or run separately if you need to debug: + make lint # Run all pre-commit formatting & static analysis checks + make test # Run full unit test suite + ``` + *All checks must pass before PR submission. CI runs exactly the same Makefile commands, so if it passes locally it will pass CI.* +5. **Commit your changes** with clear and descriptive commit messages following [Conventional Commits](https://www.conventionalcommits.org/) standard: + - `feat: add X feature` + - `fix: resolve Y bug` + - `docs: update Z documentation` + - `refactor: refactor A module` +6. **Submit a Pull Request** to the `main` branch +## 📝 PR Requirements +All PRs must meet the following criteria to be merged: +1. **CI Checks Pass**: All 9 CI checks must be green (lint, unit tests on all platforms) +2. **Description Clear**: PR description must clearly explain what the change does, why it is needed, and link to related issues if applicable +3. **Tests Added**: For new features or bugfixes, add corresponding unit tests to prevent regression +4. **Documentation Updated**: If the change affects user-facing functionality, update README and related documentation +5. **No Breaking Changes**: If your change introduces breaking changes, clearly mark it in the PR description and discuss with maintainers first +## 🎯 Code Standards +- Follow Python PEP 8 standards (enforced by Ruff) +- Keep code modular and well-commented +- Write type hints for all public functions and methods +- Keep functions small and focused (single responsibility principle) +## 🐛 Reporting Issues +When submitting issues: +1. Use the appropriate issue template (Bug Report / Feature Request / Question) +2. Provide all required information (environment details, reproduction steps, error logs) +3. For bug reports, include a minimal reproducible example if possible +## 💬 Community +If you have questions or need help: +- Open a [Discussion](https://github.com/bitroboticslab/robot-motion-player/discussions) +- Join our community chat (coming soon) +## 📄 License +By contributing to this project, you agree that your contributions will be licensed under the Apache 2.0 License. diff --git a/README.md b/README.md index 4da57db..7f2248c 100644 --- a/README.md +++ b/README.md @@ -3,12 +3,16 @@ # Robot Motion Player - **Visualize • Tune • Validate Robot Motion Data** + **Visualise • Tune • Validate Robot Motion Data** + [![CI Status][ci-badge]][ci-url] [![License][license-badge]](LICENSE) [![Python][python-badge]](https://www.python.org/) + [![GitHub Stars][star-badge]][star-url] + [![GitHub Forks][fork-badge]][fork-url] + [![Contributors][contrib-badge]][contrib-url] - [English](README.md) | [中文](docs/QUICKSTART_zh.md) + [English](README.md) | [中文](README_zh.md) --- @@ -72,21 +76,25 @@ Robot Motion Player is a standalone, cross-platform Python tool for visualizing, --- -## Installation - -### Quick Install (Coming soon) - -For most users, install via `pip`: +## 📦 Installation +> PyPI packages are pending approval, source installation is recommended for now: +### User Installation (Direct Usage) ```bash -# Core + MuJoCo -pip install robot-motion-player[mujoco] - -# With GUI support -pip install robot-motion-player[mujoco,gui] +git clone https://github.com/bitroboticslab/robot-motion-player.git +cd robot-motion-player +pip install ".[all]" +``` -# Full features (including IK) -pip install robot-motion-player[all] +### Developer Installation (For Contributors) +```bash +git clone https://github.com/bitroboticslab/robot-motion-player.git +cd robot-motion-player +conda create -n rmp python=3.11 -y +conda activate rmp +conda install -c conda-forge pinocchio +pip install -e ".[all,dev]" +pre-commit install ``` ### From Scripts (Linux, macOS, Windows) @@ -119,6 +127,12 @@ pip install -e ".[all]" ``` ## Quick Start +### 🚀 2-Line Quick Run +```bash +git clone https://github.com/bitroboticslab/robot-motion-player.git && cd robot-motion-player +pip install ".[all]" && motion_player gui --motion example/standard_dataset/run1_subject5_standard.pkl --robot example/robots/booster_t1/T1_23dof.xml +``` + ### Try with Example Data @@ -148,7 +162,7 @@ motion_player metrics \ ## Documentation - 📖 [Quick Start Guide](docs/QUICKSTART_en.md) -- 📖 [快速上手](docs/QUICKSTART_zh.md) +- 📖 [Chinese Quick Start Guide](docs/QUICKSTART_zh.md) - 📖 [IK Usage Guide](docs/IK_USAGE.md) --- @@ -165,6 +179,18 @@ Robot Motion Player is designed to integrate with: --- +## ❓ Frequently Asked Questions +### Q1: Installation fails with Pinocchio related errors? +A: We recommend using Conda to install Pinocchio first: `conda install -c conda-forge pinocchio` before running `pip install`. For Windows users, this avoids compilation errors entirely. +### Q2: Runtime error "file not found" for motion/robot files? +A: Make sure you are running the command from the root of the cloned repository, or use absolute paths for the `--motion` and `--robot` parameters. +### Q3: GUI fails to start or shows black screen? +A: Ensure you have OpenGL 3.3+ support. For headless servers, use `xvfb-run` to run GUI commands in virtual display: `xvfb-run motion_player gui ...` +### Q4: Video/GIF export fails? +A: Install required system dependency: `ffmpeg` (required for video export). GIF export uses built-in PIL library and has no extra system dependencies. +### Q5: Chinese path errors on Windows? +A: Move the repository to a path without Chinese characters, or upgrade your Python version to 3.11+. + ## Citing If you use Robot Motion Player in your research, please cite: @@ -200,5 +226,13 @@ Built upon the shoulders of: - [GMR](https://github.com/YanjieZe/GMR) — Motion retargeting +[ci-badge]: https://github.com/bitroboticslab/robot-motion-player/actions/workflows/ci.yml/badge.svg +[ci-url]: https://github.com/bitroboticslab/robot-motion-player/actions/workflows/ci.yml +[star-badge]: https://img.shields.io/github/stars/bitroboticslab/robot-motion-player +[star-url]: https://github.com/bitroboticslab/robot-motion-player/stargazers +[fork-badge]: https://img.shields.io/github/forks/bitroboticslab/robot-motion-player +[fork-url]: https://github.com/bitroboticslab/robot-motion-player/network/members +[contrib-badge]: https://img.shields.io/github/contributors/bitroboticslab/robot-motion-player +[contrib-url]: https://github.com/bitroboticslab/robot-motion-player/graphs/contributors [license-badge]: https://img.shields.io/badge/License-Apache%202.0-blue.svg [python-badge]: https://img.shields.io/badge/Python-3.9%2B-blue diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 0000000..26e6200 --- /dev/null +++ b/README_zh.md @@ -0,0 +1,222 @@ +
+ + + # 机器人运动播放器 + + **可视化 • 调试 • 验证机器人运动数据** + + [![CI Status][ci-badge]][ci-url] + [![License][license-badge]](LICENSE) + [![Python][python-badge]](https://www.python.org/) + [![GitHub Stars][star-badge]][star-url] + [![GitHub Forks][fork-badge]][fork-url] + [![Contributors][contrib-badge]][contrib-url] + + [English](README.md) | [中文](README_zh.md) +
+ +--- + +## 概述 +Robot Motion Player是一款独立、跨平台的Python工具,用于机器人运动数据集的可视化、编辑和质量评估,支持AMP格式数据和全身轨迹优化结果。 + +**核心能力:** +- 🎬 **播放**:优先基于MuJoCo的实时运动回放 +- 🎚️ **IK调试**:6D末端执行器位姿调整 +- 📊 **指标计算**:对齐AMP标准的质量评估 +- ✏️ **编辑**:关键帧安全的轨迹编辑 +- 🔄 **格式转换**:URDF/XML格式互相转换 +- 📤 **导出**:GIF/视频输出 + +**使用场景:** +- AMP locomotion学习流水线(GMR → rsl-rl-ex → 训练) +- 轨迹优化可视化和调试 +- 昂贵GPU训练前的运动数据质量控制 +- 机器人运动算法开发 + +--- + +## 功能演示 + + + + + + + + + + + + + + + + + +
播放 + 控制IK调试
指标报告GUI工作台
+ +--- + +## 功能列表 +| 模块 | 功能 | 状态 | +|--------|----------|--------| +| 📽️ **播放** | 实时回放、键盘控制、帧标记 | ✅ | +| 🎚️ **IK调试** | 6D目标位姿、单位感知控制、基于雅可比计算 | ✅ | +| 📊 **指标计算** | AMP质量项、GMR损失对齐、JSON/CSV导出 | ✅ | +| ✏️ **编辑** | 帧/片段编辑、撤销/重做、跨帧传播 | ✅ | +| 🔄 **格式转换** | URDF↔XML、MuJoCo格式支持 | ✅ | +| 📤 **导出** | GIF、MP4、帧序列 | ✅ | +| 🖥️ **GUI** | 全功能工作台(播放/调试/指标/审计) | ✅ | + +--- + +## 📦 安装方式 +> PyPI版本正在审核上线中,当前推荐使用源码安装: + +### 用户安装(直接使用) +```bash +git clone https://github.com/bitroboticslab/robot-motion-player.git +cd robot-motion-player +pip install ".[all]" +``` + +### 开发者安装(参与贡献) +```bash +git clone https://github.com/bitroboticslab/robot-motion-player.git +cd robot-motion-player +conda create -n rmp python=3.11 -y +conda activate rmp +conda install -c conda-forge pinocchio +pip install -e ".[all,dev]" +pre-commit install +``` + +### 脚本安装(Linux、macOS、Windows) +为了更顺畅的安装体验,提供了平台专用安装脚本: +```bash +# Linux +chmod +x scripts/setup_linux.sh +bash scripts/setup_linux.sh + +# macOS +chmod +x scripts/setup_mac.sh +bash scripts/setup_mac.sh + +# Windows +scripts\setup_windows.bat +``` + +### 手动源码安装(全平台通用) +```bash +git clone https://github.com/bitroboticslab/robot-motion-player.git +cd robot-motion-player +conda create -n rmp python=3.11 -y +conda activate rmp +# Windows用户推荐安装conda版pinocchio避免编译 +conda install -c conda-forge pinocchio +pip install -e ".[all]" +``` + +--- + +## ⚡ 快速开始 +### 🚀 2 行命令极速体验 +```bash +git clone https://github.com/bitroboticslab/robot-motion-player.git && cd robot-motion-player +pip install ".[all]" && motion_player gui --motion example/standard_dataset/run1_subject5_standard.pkl --robot example/robots/booster_t1/T1_23dof.xml +``` + +### 使用示例数据体验 +```bash +# 克隆仓库 +git clone https://github.com/bitroboticslab/robot-motion-player.git +cd robot-motion-player + +# 基础播放 +motion_player play \ + --motion example/standard_dataset/run1_subject5_standard.pkl \ + --robot example/robots/booster_t1/T1_23dof.xml + +# GUI模式 +motion_player gui \ + --motion example/standard_dataset/run1_subject5_standard.pkl \ + --robot example/robots/booster_t1/T1_23dof.xml + +# 生成质量报告 +motion_player metrics \ + --motion example/standard_dataset/run1_subject5_standard.pkl \ + --output report.json +``` + +--- + +## 📖 文档 +- [快速上手指南](docs/QUICKSTART_zh.md) +- [IK使用指南](docs/IK_USAGE.md) + +- 📚 [详细中文快速上手指南](docs/QUICKSTART_zh.md) +--- + +## 生态集成 +Robot Motion Player设计支持与以下项目集成: +| 项目 | 作用 | +|---------|------| +| [GMR](https://github.com/YanjieZe/GMR) | 人体到机器人运动重定向 | +| [rsl-rl-ex](https://github.com/Mr-tooth/rsl-rl-ex) | AMP数据集构建和训练 | +| [Pinocchio](https://github.com/stack-of-tasks/pinocchio) | IK后端(可选) | + +--- + +## ❓ 常见问题解答 +### Q1: 安装时出现 Pinocchio 相关错误? +A: 推荐先使用 Conda 安装 Pinocchio:`conda install -c conda-forge pinocchio`,再执行 `pip install`。Windows 用户使用这种方式可以完全避免编译错误。 +### Q2: 运行时提示找不到动作/机器人文件? +A: 请确保你在克隆的仓库根目录下运行命令,或者为 `--motion` 和 `--robot` 参数使用绝对路径。 +### Q3: GUI 启动失败或显示黑屏? +A: 确保你的系统支持 OpenGL 3.3+。无桌面的服务器环境可以使用 `xvfb-run` 在虚拟显示器中运行 GUI 命令:`xvfb-run motion_player gui ...` +### Q4: 导出视频/GIF失败? +A: 安装必要系统依赖:导出视频需要 `ffmpeg`,GIF导出使用内置PIL库,不需要额外系统依赖。 +### Q5: Windows 环境下中文路径报错? +A: 将仓库移动到不包含中文的路径下,或者升级 Python 版本到 3.11+。 + +## 引用 +如果您在研究中使用了Robot Motion Player,请引用: +```bibtex +@software{rmp2026, + author = {Lai, Junhang and contributors}, + title = {Robot Motion Player: A Visualiser and Editor for Robot Motion Data}, + howpublished = {https://github.com/bitroboticslab/robot-motion-player}, + year = {2026} +} +``` + +--- + +## 贡献 +欢迎贡献代码!请查看贡献指南即将上线,欢迎提交Issue交流了解贡献指南。 + +--- + +## 许可 +本项目采用Apache 2.0许可,详情见[LICENSE](LICENSE)文件。 + +--- + +## 致谢 +本项目基于以下优秀开源项目构建: +- [Pinocchio](https://github.com/stack-of-tasks/pinocchio) — 刚体动力学计算 +- [MuJoCo](https://github.com/google-deepmind/mujoco) — 物理仿真 +- [GMR](https://github.com/YanjieZe/GMR) — 运动重定向 + + +[ci-badge]: https://github.com/bitroboticslab/robot-motion-player/actions/workflows/ci.yml/badge.svg +[ci-url]: https://github.com/bitroboticslab/robot-motion-player/actions/workflows/ci.yml +[star-badge]: https://img.shields.io/github/stars/bitroboticslab/robot-motion-player +[star-url]: https://github.com/bitroboticslab/robot-motion-player/stargazers +[fork-badge]: https://img.shields.io/github/forks/bitroboticslab/robot-motion-player +[fork-url]: https://github.com/bitroboticslab/robot-motion-player/network/members +[contrib-badge]: https://img.shields.io/github/contributors/bitroboticslab/robot-motion-player +[contrib-url]: https://github.com/bitroboticslab/robot-motion-player/graphs/contributors +[license-badge]: https://img.shields.io/badge/License-Apache%202.0-blue.svg +[python-badge]: https://img.shields.io/badge/Python-3.9%2B-blue diff --git a/pyproject.toml b/pyproject.toml index a878fd2..89fb0cc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,9 +66,9 @@ dev = [ ] [project.urls] -Homepage = "https://github.com/Mr-tooth/robot-motion-player" -Issues = "https://github.com/Mr-tooth/robot-motion-player/issues" -Documentation = "https://github.com/Mr-tooth/robot-motion-player/blob/main/docs/design.md" +Homepage = "https://github.com/bitroboticslab/robot-motion-player" +Issues = "https://github.com/bitroboticslab/robot-motion-player/issues" +Documentation = "https://github.com/bitroboticslab/robot-motion-player/blob/main/README.md" [project.scripts] motion_player = "motion_player.cli.main:main" diff --git a/tests/test_docs_version_state.py b/tests/test_docs_version_state.py index 451e36c..39150ba 100644 --- a/tests/test_docs_version_state.py +++ b/tests/test_docs_version_state.py @@ -49,7 +49,7 @@ def test_readme_references_oss_docs_only() -> None: readme = Path("README.md").read_text(encoding="utf-8") assert "[English](README.md)" in readme - assert "[中文](docs/QUICKSTART_zh.md)" in readme + assert "[中文](README_zh.md)" in readme assert "docs/QUICKSTART_en.md" in readme assert "docs/IK_USAGE.md" in readme assert "README_CN.md" not in readme