The Robot Compiler (RoCo) is a robotics codesign and fabrication environment to help the general public create their own robots. The above image shows an assortment of programmatically-generated and parameterized polygons connected to each other (left), the script used to generate the polygons (upper right), and the persistent data which represents the polygons inside the software (lower right below the script).

The motivation for connecting polygons derives from the fact that many robot geometries may be represented as multiple 3D shapes composed together. As such, we are interested in connecting polygons together, as it is a prerequisite step to composing 3D shapes together. We have implemented functionality that allows users to connect polygons and programmatically generate shapes, such as the one in the image above. One limitation of the current implementation is that a polygon cannot connect to a second polygon if the second polygon is already connected to a third polygon. This limitation arises from quirks of how the Blender API updates internal data and can be dealt with through object states which persist beyond the runtime of a single Python script; the basics of this functionality have been implemented, but not fully integrated.

Alternatively, we may generate this geometry using polyhedrons as our primitives (instead of polygons) and compose them using boolean operations. A naive implementation of this would not work because the resulting mesh topology would include internal geometry, double vertices, and other degenerate geometry, which would interfere with the fabrication phase. Although Blender supports methods to address these issues, we would still have problems parameterizing the geometry after the boolean operations have been applied. It may be possible, however, to simply defer applying the boolean operations until the fabrication phase.

Next Post Previous Post