# robotics-numpy
[](https://badge.fury.io/py/robotics-numpy)
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://github.com/petercorke/robotics-toolbox-python)
A **lightweight, high-performance robotics library** inspired by Peter Corke's [robotics-toolbox-python](https://github.com/petercorke/robotics-toolbox-python), offering similar functionality with a strict **NumPy-only dependency**.
## Core Principles & Goals
* **Inspired by `robotics-toolbox-python`**: Mimics API, function usage, and overall approach for a familiar user experience.
* **NumPy-centric**: All core functionality relies solely on NumPy for minimal dependencies.
* **Simple**: Clean, intuitive API for easy learning.
Ideal for education, research, and applications where dependency management is critical.
## Quick Start
### Installation
```bash
# Core library (NumPy only)
pip install robotics-numpy
# With visualization support (requires Plotly)
pip install robotics-numpy[visualization]
```
### Basic Usage: Transformations
```python
import robotics_numpy as rn
import numpy as np
# Create transformations (mimicking robotics-toolbox API)
T1 = rn.SE3.Trans(1, 2, 3) # Translation
T2 = rn.SE3.RPY(0.1, 0.2, 0.3) # Rotation from RPY
T3 = T1 * T2 # Compose transformations
# Transform points
point = [0, 0, 0]
transformed_point = T3 * point
print(f"Transformed point: {transformed_point}")
```
### Basic Usage: Robot Kinematics (v0.2.0)
```python
import robotics_numpy as rn
import numpy as np
# Define a simple 2-DOF robot (similar to robotics-toolbox syntax)
robot = rn.models.DHRobot([
rn.models.RevoluteDH(d=0.1, a=0.2, alpha=0, qlim=[-np.pi, np.pi]),
rn.models.PrismaticDH(theta=0, a=0.1, alpha=0, qlim=[0, 0.5]),
])
# Forward kinematics
q = [np.pi / 4, 0.3]
pose = robot.fkine(q)
print(f"End-effector pose: {pose}")
# Jacobian
jacobian = robot.jacob0(q)
print(f"Jacobian:\n{jacobian}")
```
## Performance Comparison
This table benchmarks key operations, comparing `robotics-numpy` (NumPy-based) against `roboticstoolbox-python`.
```
================================================================================
Performance Comparison Table
================================================================================
| Feature | robotics-numpy | rtb | Difference (%) |
|---------------------|------------------------|------------------------|----------------|
| Forward Kinematics | 0.870 ms | 0.026 ms | +3189.61% |
| | 2.441 ms | 0.054 ms | +4432.86% |
| Jacobian | 1.997 ms | 0.074 ms | +2599.14% |
| | 5.520 ms | 0.158 ms | +3397.66% |
| Manipulability | 5.482 ms | 0.330 ms | +1559.99% |
================================================================================
```
## Contributing
We welcome contributions! Our focus is on:
* **Readability**: Clear algorithms over complex optimizations.
* **Testability**: Comprehensive unit and integration tests.
* **Documentation**: Well-documented code and examples.
```bash
# Development setup
git clone https://github.com/chaoyue/robotics-numpy
cd robotics-numpy
pip install -e .[dev] # Or use uv for dependency management
# Run tests
pytest
# Check code quality
ruff check .
mypy src/
```
## License
MIT License - see [LICENSE](LICENSE) for details.
## Acknowledgments
Inspired by Peter Corke's [Robotics Toolbox](https://github.com/petercorke/robotics-toolbox-python),
with a focus on minimal dependencies.
Raw data
{
"_id": null,
"home_page": null,
"name": "robotics-numpy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "dynamics, forward-kinematics, inverse-kinematics, kinematics, lightweight, motion-planning, numpy, robot-manipulator, robotics",
"author": null,
"author_email": "Chaoyue Fei <chaoyue.fei@vub.be>",
"download_url": "https://files.pythonhosted.org/packages/ce/88/896de841f593f77c18bf4b92788b2b13edc749d8fff95504f94e76a51565/robotics_numpy-0.1.0.tar.gz",
"platform": null,
"description": "# robotics-numpy\n\n[](https://badge.fury.io/py/robotics-numpy)\n[](https://opensource.org/licenses/MIT)\n[](https://www.python.org/downloads/)\n[](https://github.com/petercorke/robotics-toolbox-python)\n\nA **lightweight, high-performance robotics library** inspired by Peter Corke's [robotics-toolbox-python](https://github.com/petercorke/robotics-toolbox-python), offering similar functionality with a strict **NumPy-only dependency**.\n\n## Core Principles & Goals\n\n* **Inspired by `robotics-toolbox-python`**: Mimics API, function usage, and overall approach for a familiar user experience.\n* **NumPy-centric**: All core functionality relies solely on NumPy for minimal dependencies.\n* **Simple**: Clean, intuitive API for easy learning.\n\nIdeal for education, research, and applications where dependency management is critical.\n\n## Quick Start\n\n### Installation\n\n```bash\n# Core library (NumPy only)\npip install robotics-numpy\n\n# With visualization support (requires Plotly)\npip install robotics-numpy[visualization]\n```\n\n### Basic Usage: Transformations\n\n```python\nimport robotics_numpy as rn\nimport numpy as np\n\n# Create transformations (mimicking robotics-toolbox API)\nT1 = rn.SE3.Trans(1, 2, 3) # Translation\nT2 = rn.SE3.RPY(0.1, 0.2, 0.3) # Rotation from RPY\nT3 = T1 * T2 # Compose transformations\n\n# Transform points\npoint = [0, 0, 0]\ntransformed_point = T3 * point\nprint(f\"Transformed point: {transformed_point}\")\n```\n\n### Basic Usage: Robot Kinematics (v0.2.0)\n\n```python\nimport robotics_numpy as rn\nimport numpy as np\n\n# Define a simple 2-DOF robot (similar to robotics-toolbox syntax)\nrobot = rn.models.DHRobot([\n rn.models.RevoluteDH(d=0.1, a=0.2, alpha=0, qlim=[-np.pi, np.pi]),\n rn.models.PrismaticDH(theta=0, a=0.1, alpha=0, qlim=[0, 0.5]),\n])\n\n# Forward kinematics\nq = [np.pi / 4, 0.3]\npose = robot.fkine(q)\nprint(f\"End-effector pose: {pose}\")\n# Jacobian\njacobian = robot.jacob0(q)\nprint(f\"Jacobian:\\n{jacobian}\")\n```\n\n## Performance Comparison\n\nThis table benchmarks key operations, comparing `robotics-numpy` (NumPy-based) against `roboticstoolbox-python`.\n\n```\n================================================================================\nPerformance Comparison Table\n================================================================================\n| Feature | robotics-numpy | rtb | Difference (%) |\n|---------------------|------------------------|------------------------|----------------|\n| Forward Kinematics | 0.870 ms | 0.026 ms | +3189.61% |\n| | 2.441 ms | 0.054 ms | +4432.86% |\n| Jacobian | 1.997 ms | 0.074 ms | +2599.14% |\n| | 5.520 ms | 0.158 ms | +3397.66% |\n| Manipulability | 5.482 ms | 0.330 ms | +1559.99% |\n================================================================================\n```\n\n## Contributing\n\nWe welcome contributions! Our focus is on:\n* **Readability**: Clear algorithms over complex optimizations.\n* **Testability**: Comprehensive unit and integration tests.\n* **Documentation**: Well-documented code and examples.\n\n```bash\n# Development setup\ngit clone https://github.com/chaoyue/robotics-numpy\ncd robotics-numpy\npip install -e .[dev] # Or use uv for dependency management\n\n# Run tests\npytest\n\n# Check code quality\nruff check .\nmypy src/\n```\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Acknowledgments\n\nInspired by Peter Corke's [Robotics Toolbox](https://github.com/petercorke/robotics-toolbox-python),\nwith a focus on minimal dependencies.\n",
"bugtrack_url": null,
"license": null,
"summary": "A solely NumPy-dependent robotics Python package for basic kinematics, dynamics, and others.",
"version": "0.1.0",
"project_urls": null,
"split_keywords": [
"dynamics",
" forward-kinematics",
" inverse-kinematics",
" kinematics",
" lightweight",
" motion-planning",
" numpy",
" robot-manipulator",
" robotics"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1cf2091ceee3780b237534918f11d3030936440d59b7efe716a159d600d6bc20",
"md5": "c7b6294fe3a2f4965688a6ff165bfede",
"sha256": "bc5eadd444acd697cb746f76dd82050028ea9e682574a722841dd1bfbf9543bf"
},
"downloads": -1,
"filename": "robotics_numpy-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c7b6294fe3a2f4965688a6ff165bfede",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 42206,
"upload_time": "2025-07-14T14:57:28",
"upload_time_iso_8601": "2025-07-14T14:57:28.482320Z",
"url": "https://files.pythonhosted.org/packages/1c/f2/091ceee3780b237534918f11d3030936440d59b7efe716a159d600d6bc20/robotics_numpy-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ce88896de841f593f77c18bf4b92788b2b13edc749d8fff95504f94e76a51565",
"md5": "4ebe416da7abd2d2ccb53a08e8ce2509",
"sha256": "7f5ec401c2f906d568193149c175bb6ddc3836be104eb9cccfb0b1be65cd5da1"
},
"downloads": -1,
"filename": "robotics_numpy-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "4ebe416da7abd2d2ccb53a08e8ce2509",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 373692,
"upload_time": "2025-07-14T14:57:30",
"upload_time_iso_8601": "2025-07-14T14:57:30.287027Z",
"url": "https://files.pythonhosted.org/packages/ce/88/896de841f593f77c18bf4b92788b2b13edc749d8fff95504f94e76a51565/robotics_numpy-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-14 14:57:30",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "robotics-numpy"
}