# Pythonic Motion Planning (pymp)
[![PyPI version](https://badge.fury.io/py/motion-planning.svg)](https://badge.fury.io/py/motion-planning)
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Jiayuan-Gu/pymp/blob/main/example.ipynb)
> [Motion planning](https://en.wikipedia.org/wiki/Motion_planning) is a computational problem to find a sequence of valid configurations that moves the object from the source to destination.
This library is designed for robotic applications, especially sampling-based algorithms for high-dimension configuration spaces(e.g., robot arm).
- pythonic: easy to debug, customize and extend
- standalone collision checker ([hpp-fcl](https://github.com/humanoid-path-planner/hpp-fcl)): without relying on any physical simulator (e.g., mujoco, pybullet, sapien) to check collision
- out-of-box: common motion planning algorithms (e.g., RRT-Connect) are implemented for robotic manipulation
## Installation
### Dependencies
This library (*pymp*) depends on *[pinocchio](https://github.com/stack-of-tasks/pinocchio)* to handle URDF and robot kinematics, *[hpp-fcl](https://github.com/humanoid-path-planner/hpp-fcl)* to check collision, *[toppra](https://github.com/hungpham2511/toppra)* to do time parameterization.
### Install pymp
From pip:
```bash
pip install motion-planning
```
From source:
```bash
git clone https://github.com/Jiayuan-Gu/pymp.git
pip install -e .
```
From Github directly:
```bash
pip install --upgrade git+https://github.com/Jiayuan-Gu/pymp.git
```
## Usage
See [example.py](example.py) for basic usage. Note that `pymp` depends on SRDF associated with URDF to remove self-collision.
### Logging
The logging level can be specified by the environment variable `PYMP_LOG`.
```bash
# Set the logging level to DEBUG for pymp
export PYMP_LOG=DEBUG
```
### Base pose
`pymp` supports specifying the pose of the base link during the initialization of the planner. We support many formats of pose (e.g., \[x, y, z\] for position, \[w, i, j, k\] for quaternion, \[x, y, z, w, i, j, k\] for SE(3), or a 4x4 rigid transformation matrix)
```python
from pymp import Planner
planner = Planner(
...
base_pose=[0, 0, 0],
)
```
Raw data
{
"_id": null,
"home_page": "https://github.com/Jiayuan-Gu/pymp",
"name": "motion-planning",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "robotics motion-planning",
"author": "Jiayuan Gu",
"author_email": "jigu@ucsd.edu",
"download_url": "https://files.pythonhosted.org/packages/d1/cb/7adabb3d98a83befadce87e5c4576ec88fbc38d148ed0a2c65ad34b123e3/motion-planning-0.1.4.tar.gz",
"platform": null,
"description": "# Pythonic Motion Planning (pymp)\n\n[![PyPI version](https://badge.fury.io/py/motion-planning.svg)](https://badge.fury.io/py/motion-planning)\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Jiayuan-Gu/pymp/blob/main/example.ipynb)\n\n> [Motion planning](https://en.wikipedia.org/wiki/Motion_planning) is a computational problem to find a sequence of valid configurations that moves the object from the source to destination.\n\nThis library is designed for robotic applications, especially sampling-based algorithms for high-dimension configuration spaces(e.g., robot arm).\n\n- pythonic: easy to debug, customize and extend\n- standalone collision checker ([hpp-fcl](https://github.com/humanoid-path-planner/hpp-fcl)): without relying on any physical simulator (e.g., mujoco, pybullet, sapien) to check collision\n- out-of-box: common motion planning algorithms (e.g., RRT-Connect) are implemented for robotic manipulation\n\n## Installation\n\n### Dependencies\n\nThis library (*pymp*) depends on *[pinocchio](https://github.com/stack-of-tasks/pinocchio)* to handle URDF and robot kinematics, *[hpp-fcl](https://github.com/humanoid-path-planner/hpp-fcl)* to check collision, *[toppra](https://github.com/hungpham2511/toppra)* to do time parameterization.\n\n### Install pymp\n\nFrom pip:\n\n```bash\npip install motion-planning\n```\n\nFrom source:\n\n```bash\ngit clone https://github.com/Jiayuan-Gu/pymp.git\npip install -e .\n```\n\nFrom Github directly:\n\n```bash\npip install --upgrade git+https://github.com/Jiayuan-Gu/pymp.git\n```\n\n## Usage\n\nSee [example.py](example.py) for basic usage. Note that `pymp` depends on SRDF associated with URDF to remove self-collision.\n\n### Logging\n\nThe logging level can be specified by the environment variable `PYMP_LOG`.\n\n```bash\n# Set the logging level to DEBUG for pymp\nexport PYMP_LOG=DEBUG\n```\n\n### Base pose\n\n`pymp` supports specifying the pose of the base link during the initialization of the planner. We support many formats of pose (e.g., \\[x, y, z\\] for position, \\[w, i, j, k\\] for quaternion, \\[x, y, z, w, i, j, k\\] for SE(3), or a 4x4 rigid transformation matrix)\n\n```python\nfrom pymp import Planner\n\nplanner = Planner(\n ...\n base_pose=[0, 0, 0],\n)\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "A pythonic motion planning library",
"version": "0.1.4",
"split_keywords": [
"robotics",
"motion-planning"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c760f720a4a885c64ba2174ac8fea875fe948b47b04b9ec99c501d07a669f126",
"md5": "7c177975570ad852d47d7666432db6a3",
"sha256": "d904c640c6156a1764f5dea4adde0a7045b93d728af91eac7d97f2bea3e3abab"
},
"downloads": -1,
"filename": "motion_planning-0.1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "7c177975570ad852d47d7666432db6a3",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 19369,
"upload_time": "2023-01-13T09:38:35",
"upload_time_iso_8601": "2023-01-13T09:38:35.846561Z",
"url": "https://files.pythonhosted.org/packages/c7/60/f720a4a885c64ba2174ac8fea875fe948b47b04b9ec99c501d07a669f126/motion_planning-0.1.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d1cb7adabb3d98a83befadce87e5c4576ec88fbc38d148ed0a2c65ad34b123e3",
"md5": "a5fad773b5f430c3230930a6c2346081",
"sha256": "94a667dc6f8ff83bc4faf0531477c66185e85f46fbe26b65c45f1f220c4cf826"
},
"downloads": -1,
"filename": "motion-planning-0.1.4.tar.gz",
"has_sig": false,
"md5_digest": "a5fad773b5f430c3230930a6c2346081",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 16011,
"upload_time": "2023-01-13T09:38:37",
"upload_time_iso_8601": "2023-01-13T09:38:37.402253Z",
"url": "https://files.pythonhosted.org/packages/d1/cb/7adabb3d98a83befadce87e5c4576ec88fbc38d148ed0a2c65ad34b123e3/motion-planning-0.1.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-13 09:38:37",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "Jiayuan-Gu",
"github_project": "pymp",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "motion-planning"
}