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 [1], which is a python implementation of the original choreo framework based on ROS [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.