Implements parameterizable modules
In the development of robot morphologies, one may want to experiment not only with discrete modules, but also with some that can be changed continuously in shape and extension. This MR will introduce parameterizable bodies that can be plugged in the according modules s.t. they can be optimized continuously.
This MR:
- Introduces volumes for geometries
- Introduces parameterizable bodies (can be boxes, cylinders, spheres) with on-the-fly calculation of geometry, mass, inertia
- Introduces 4 modules (l and i shaped, with and without joint) that are made from parameterizable bodies and are therefore subject to change
- Makes these modules serializable and conforming to the existing pipeline
- Therefore allows optimization for robot morphologies with continuous modules
TODO:
-
Implement bodies with an arbitrary number of parameters, each one according to a specific dimension of the underlying geometry -
Implement and enforce parameter limits -
Implement modules that can contain more than one parametrized or fixed body with specific anchor points and resulting geometries -
Implement "freeze" methods to fix the parameters/transfer to standard class -
Make sure serializing a parameterized body/module works and "freezes" it, so deserializing yields a standard instance of the class -
Check all places where AtomicModule
is used as a type hint and check whether it can be generalized toModuleBase
-
Check all places where Body
is used as a type hint and check whether it can be generalized toBodyBase
-
Test the fresh implementation of volumes in geometries
Edited by Jonathan Külz