# Robot Kinematics Library
A comprehensive, production-ready robotics kinematics library for Python that provides forward and inverse kinematics, Jacobian calculations, and advanced robotics analysis tools with URDF and PyBullet integration.
**Author:** Sherin Joseph Roy
**Email:** sherin.joseph2217@gmail.com
**Repository:** https://github.com/Sherin-SEF-AI/robot-kinematics
## Features
- **Forward Kinematics**: DH parameters, URDF parsing, multiple robot configurations
- **Inverse Kinematics**: Numerical, analytical, and hybrid solvers
- **Jacobian Analysis**: Geometric and analytical Jacobians, singularity detection
- **Robot Types**: UR5, Panda, SCARA, Delta, KUKA KR5, Stewart platform, mobile manipulators
- **Advanced Features**: Workspace analysis, singularity avoidance, performance optimization
- **Integration**: URDF import/export, PyBullet visualization and animation
- **High Performance**: JIT compilation, caching, vectorized operations
## Installation
### Basic Installation
```bash
pip install robot-kinematics
```
### With Visualization Support
```bash
pip install robot-kinematics[visualization]
```
### Full Installation (All Dependencies)
```bash
pip install robot-kinematics[full]
```
## Quick Start
```python
import numpy as np
from robot_kinematics.robots.serial import UR5Manipulator, KUKAKR5Manipulator
from robot_kinematics.inverse.numerical import NumericalIK
from robot_kinematics.core.transforms import Transform
# Create a UR5 robot
ur5 = UR5Manipulator()
print(f"Robot: {ur5.config['name']}")
print(f"Number of joints: {ur5.n_joints}")
# Forward kinematics
joint_config = np.array([0, 0, 0, 0, 0, 0]) # Home position
pose = ur5.forward_kinematics(joint_config)
print(f"End-effector position: {pose.position}")
# Inverse kinematics
target_pose = Transform(position=np.array([0.4, 0.0, 0.5]))
ik_solver = NumericalIK(robot=ur5, method="damped_least_squares")
solution, success, error = ik_solver.solve(target_pose, joint_config)
if success:
print(f"IK solution: {solution}")
print(f"Error: {error}")
# Create KUKA KR5 robot
kuka = KUKAKR5Manipulator()
print(f"KUKA KR5 robot: {kuka.config['name']}")
```
## URDF Integration
```python
from robot_kinematics.integration.urdf_utils import load_robot_from_urdf
from robot_kinematics.robots.serial import SerialManipulator
# Load robot from URDF file
config = load_robot_from_urdf("robot.urdf")
robot = SerialManipulator(config)
```
## PyBullet Visualization
```python
from robot_kinematics.integration.pybullet_utils import connect_gui, create_kuka_kr5_pybullet, animate_trajectory
# Connect to PyBullet GUI
connect_gui()
# Load robot model
robot_id = create_kuka_kr5_pybullet()
# Animate trajectory
joint_trajectory = [q1, q2, q3, ...] # List of joint configurations
animate_trajectory(robot_id, joint_trajectory, dt=0.05)
```
## Documentation
For detailed documentation, examples, and API reference, visit our [documentation](https://robotkinematics.readthedocs.io/).
## Supported Robot Types
- **Serial Manipulators**: UR5, Panda, SCARA, Delta, KUKA KR5
- **Parallel Robots**: Stewart platform, Delta parallel
- **Mobile Manipulators**: Dual-arm systems, mobile bases
## Performance Features
- **JIT Compilation**: Using Numba for accelerated computations
- **Caching**: Thread-safe caching for repeated calculations
- **Vectorization**: Optimized NumPy operations
- **Memory Management**: Efficient memory usage for large-scale operations
## Examples
Check the `examples/` directory for comprehensive examples:
- `basic_usage.py` - Basic kinematics operations
- `simple_advanced_example.py` - Trajectory planning and analysis
- `pybullet_kuka_kr5_demo.py` - PyBullet visualization demo
- `urdf_import_export_demo.py` - URDF integration demo
## Testing
Run the test suite:
```bash
pytest tests/
```
## Contributing
We welcome contributions! Please see our [contributing guidelines](CONTRIBUTING.md) for details.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Citation
If you use this library in your research, please cite:
```bibtex
@software{robot_kinematics,
title={Robot Kinematics Library},
author={Sherin Joseph Roy},
year={2024},
url={https://github.com/Sherin-SEF-AI/robot-kinematics}
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Sherin-SEF-AI/robo-kinematics",
"name": "robot-kinematics",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "robotics, kinematics, forward-kinematics, inverse-kinematics, jacobian, urdf, pybullet",
"author": "Sherin Joseph Roy",
"author_email": "sherin.joseph2217@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/ae/62/0cb2d34f64dced48f9ba8cf33bd4209b100e8e1e19ce2a9a290a4ac72e8e/robot_kinematics-1.1.0.tar.gz",
"platform": null,
"description": "# Robot Kinematics Library\n\nA comprehensive, production-ready robotics kinematics library for Python that provides forward and inverse kinematics, Jacobian calculations, and advanced robotics analysis tools with URDF and PyBullet integration.\n\n**Author:** Sherin Joseph Roy \n**Email:** sherin.joseph2217@gmail.com \n**Repository:** https://github.com/Sherin-SEF-AI/robot-kinematics\n\n## Features\n\n- **Forward Kinematics**: DH parameters, URDF parsing, multiple robot configurations\n- **Inverse Kinematics**: Numerical, analytical, and hybrid solvers\n- **Jacobian Analysis**: Geometric and analytical Jacobians, singularity detection\n- **Robot Types**: UR5, Panda, SCARA, Delta, KUKA KR5, Stewart platform, mobile manipulators\n- **Advanced Features**: Workspace analysis, singularity avoidance, performance optimization\n- **Integration**: URDF import/export, PyBullet visualization and animation\n- **High Performance**: JIT compilation, caching, vectorized operations\n\n## Installation\n\n### Basic Installation\n```bash\npip install robot-kinematics\n```\n\n### With Visualization Support\n```bash\npip install robot-kinematics[visualization]\n```\n\n### Full Installation (All Dependencies)\n```bash\npip install robot-kinematics[full]\n```\n\n## Quick Start\n\n```python\nimport numpy as np\nfrom robot_kinematics.robots.serial import UR5Manipulator, KUKAKR5Manipulator\nfrom robot_kinematics.inverse.numerical import NumericalIK\nfrom robot_kinematics.core.transforms import Transform\n\n# Create a UR5 robot\nur5 = UR5Manipulator()\nprint(f\"Robot: {ur5.config['name']}\")\nprint(f\"Number of joints: {ur5.n_joints}\")\n\n# Forward kinematics\njoint_config = np.array([0, 0, 0, 0, 0, 0]) # Home position\npose = ur5.forward_kinematics(joint_config)\nprint(f\"End-effector position: {pose.position}\")\n\n# Inverse kinematics\ntarget_pose = Transform(position=np.array([0.4, 0.0, 0.5]))\nik_solver = NumericalIK(robot=ur5, method=\"damped_least_squares\")\nsolution, success, error = ik_solver.solve(target_pose, joint_config)\n\nif success:\n print(f\"IK solution: {solution}\")\n print(f\"Error: {error}\")\n\n# Create KUKA KR5 robot\nkuka = KUKAKR5Manipulator()\nprint(f\"KUKA KR5 robot: {kuka.config['name']}\")\n```\n\n## URDF Integration\n\n```python\nfrom robot_kinematics.integration.urdf_utils import load_robot_from_urdf\nfrom robot_kinematics.robots.serial import SerialManipulator\n\n# Load robot from URDF file\nconfig = load_robot_from_urdf(\"robot.urdf\")\nrobot = SerialManipulator(config)\n```\n\n## PyBullet Visualization\n\n```python\nfrom robot_kinematics.integration.pybullet_utils import connect_gui, create_kuka_kr5_pybullet, animate_trajectory\n\n# Connect to PyBullet GUI\nconnect_gui()\n\n# Load robot model\nrobot_id = create_kuka_kr5_pybullet()\n\n# Animate trajectory\njoint_trajectory = [q1, q2, q3, ...] # List of joint configurations\nanimate_trajectory(robot_id, joint_trajectory, dt=0.05)\n```\n\n## Documentation\n\nFor detailed documentation, examples, and API reference, visit our [documentation](https://robotkinematics.readthedocs.io/).\n\n## Supported Robot Types\n\n- **Serial Manipulators**: UR5, Panda, SCARA, Delta, KUKA KR5\n- **Parallel Robots**: Stewart platform, Delta parallel\n- **Mobile Manipulators**: Dual-arm systems, mobile bases\n\n## Performance Features\n\n- **JIT Compilation**: Using Numba for accelerated computations\n- **Caching**: Thread-safe caching for repeated calculations\n- **Vectorization**: Optimized NumPy operations\n- **Memory Management**: Efficient memory usage for large-scale operations\n\n## Examples\n\nCheck the `examples/` directory for comprehensive examples:\n- `basic_usage.py` - Basic kinematics operations\n- `simple_advanced_example.py` - Trajectory planning and analysis\n- `pybullet_kuka_kr5_demo.py` - PyBullet visualization demo\n- `urdf_import_export_demo.py` - URDF integration demo\n\n## Testing\n\nRun the test suite:\n\n```bash\npytest tests/\n```\n\n## Contributing\n\nWe welcome contributions! Please see our [contributing guidelines](CONTRIBUTING.md) for details.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Citation\n\nIf you use this library in your research, please cite:\n\n```bibtex\n@software{robot_kinematics,\n title={Robot Kinematics Library},\n author={Sherin Joseph Roy},\n year={2024},\n url={https://github.com/Sherin-SEF-AI/robot-kinematics}\n}\n``` \n",
"bugtrack_url": null,
"license": null,
"summary": "A comprehensive robotics kinematics library with URDF and PyBullet integration",
"version": "1.1.0",
"project_urls": {
"Bug Reports": "https://github.com/Sherin-SEF-AI/robo-kinematics/issues",
"Documentation": "https://robotkinematics.readthedocs.io/",
"Homepage": "https://github.com/Sherin-SEF-AI/robo-kinematics",
"Source": "https://github.com/Sherin-SEF-AI/robo-kinematics"
},
"split_keywords": [
"robotics",
" kinematics",
" forward-kinematics",
" inverse-kinematics",
" jacobian",
" urdf",
" pybullet"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "a2e6a0af5385d0c8cbaf7552095f390215830bcb7ead6e134db960441c358cc5",
"md5": "f1b355e473c42247716fb4951d3ff61c",
"sha256": "ab926cfc9452e67be0015e969489e2ec5493921a03cd644784edac68fffac074"
},
"downloads": -1,
"filename": "robot_kinematics-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f1b355e473c42247716fb4951d3ff61c",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 58531,
"upload_time": "2025-07-17T15:39:21",
"upload_time_iso_8601": "2025-07-17T15:39:21.655488Z",
"url": "https://files.pythonhosted.org/packages/a2/e6/a0af5385d0c8cbaf7552095f390215830bcb7ead6e134db960441c358cc5/robot_kinematics-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ae620cb2d34f64dced48f9ba8cf33bd4209b100e8e1e19ce2a9a290a4ac72e8e",
"md5": "1866f904c6e277d893c764f3c8f0910f",
"sha256": "c6b28e984b0ce9a1fb5d9d7527d23a45b50977942ad025a725edfcd3e1e25cad"
},
"downloads": -1,
"filename": "robot_kinematics-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "1866f904c6e277d893c764f3c8f0910f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 59688,
"upload_time": "2025-07-17T15:39:24",
"upload_time_iso_8601": "2025-07-17T15:39:24.029794Z",
"url": "https://files.pythonhosted.org/packages/ae/62/0cb2d34f64dced48f9ba8cf33bd4209b100e8e1e19ce2a9a290a4ac72e8e/robot_kinematics-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 15:39:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Sherin-SEF-AI",
"github_project": "robo-kinematics",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "numpy",
"specs": [
[
">=",
"1.21.0"
]
]
},
{
"name": "scipy",
"specs": [
[
">=",
"1.7.0"
]
]
},
{
"name": "matplotlib",
"specs": [
[
">=",
"3.5.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"6.0.0"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
">=",
"2.12.0"
]
]
},
{
"name": "numba",
"specs": [
[
">=",
"0.56.0"
]
]
},
{
"name": "lxml",
"specs": [
[
">=",
"4.6.0"
]
]
},
{
"name": "xmltodict",
"specs": [
[
">=",
"0.12.0"
]
]
},
{
"name": "pybullet",
"specs": []
}
],
"lcname": "robot-kinematics"
}