compas-dev / compas-dev/compas_fab
[Feature] pychoreo - compas_fab integration
- Dominant language
- Python
- Stars
- 137
- Forks
- 47
- PR merge metrics
- No merged PRs in 30d
Description
This summer, I'm working with the Gramazio & Kohler research group on integrating the sequence and motion planning engine Choreo to the `compas_fab` infrastructure. We will be focusing on [pychoreo ](https://github.com/yijiangh/pychoreo)[1], which is a python implementation of the[ original choreo framework based on ROS](https://github.com/yijiangh/choreo) [2].
Below I'm laying out the things we're planning to do. Each one of these bullet points will probably have its own issue entry later, but for now, I'm just trying to list them here.
## High-level overview:
The integration will involve the following components:
- [ ] a general data structure to model assembly (discrete collection of discrete geometric units). The data structure will be able to embed connectivity, structural modeling, robotic assembly information.
- [ ] exposing the sequence and cartesian planner to `compas_fab` on the client side
- [ ] replacing existing transition planner with the moveit! planners through the `compas_fab` interface
## Implemetation details (adding more as we move forward):
The interface module `plugins_choreo.py` will reside in `compas_fab.backends.ros` module since we will rely on the moveit! stack for transition planning. `import pybullet` and `import pychoreo` will happen inside this class.
The `ChoreoPlanner` class will derive from the `PlannerPlugin`, and it will provide four functions, two of which are new functionalities for the `client` class:
- inverse_kinematics_async
- forward_kinematics_async
- plan_cartesian_motions_async 🆕
- plan_assembly_sequence_async 🆕
## Future work
I'm still thinking about how to give users the flexibility on specifying the planning skeleton [3], but I will stick to `pick-move-place-move` for now.
## References
[1] https://github.com/yijiangh/pychoreo
[2] https://github.com/yijiangh/choreo
[3] I will elaborate on what does this mean later in the documentation.
Contributor guide
Assessment
This issue has not been assessed yet.