Hi Christina,
Brain-body evolution with HyperNEAT was never implemented in RoboGen, but a form of it was implemented in Jelisavcic, Milan, et al. "Lamarckian Evolution of Simulated Modular Robots." Frontiers in Robotics and AI 6 (2019): 9.
I would start by looking at their techniques to see if it fits your needs, otherwise it will take some additional software engineering to get working. It should be possible (in various ways), but there definitely are some challenges to this. It has been some years since I have thought about this, but here is what currently comes to mind:
First, the question is do you want to use HyperNEAT (or more appropriately CPPN-NEAT) for evolving the body plans? Or will you continue to use the current direct encoding of body plans, which basically does Genetic Programming on the body tree? Sticking with the direct encoding for the body plans is potentially simpler as it avoids some of the complexities of how body plans should be encoded with CPPNs. However, if you do try to pursue evolving the morphologies with CPPN-NEAT I would suggest looking at some of my earlier work that does this with other types of morphologies:
- Auerbach, Joshua E., and Josh C. Bongard. "Dynamic resolution in the co-evolution of morphology and control." Artificial Life XII: Proceedings of the Twelfth International Conference on the Synthesis and Simulation of Living Systems. No. CONF. MIT Press, 2010.
- Auerbach, Joshua E., and Josh C. Bongard. "Evolving complete robots with CPPN-NEAT: the utility of recurrent connections." Proceedings of the 13th annual conference on Genetic and evolutionary computation. 2011.
The techniques used in those works should be transferable to RoboGen with some tweaks, and I think are much closer to something that would be straightforward to get working in RoboGen than the Trimesh/Marching Cubes approach I took in later work or the Voxel based robots used by Cheney et al. The growing procedure from a root node would be a natural fit for RoboGen, but I will say, as a warning, that this sort of technique has been shown to produce outputs that may not be the best at capturing the patterns present in the underlying CPPNs.
If you evolve the brains and bodies with HyperNEAT, you would either have a single population of CPPNs that encoded both, or you could have separate populations encoding brains and bodies (real co-evolution). If you are evolving the body plans directly you may also find a co-evolutionary approach might work well, otherwise you face the complexities of how replication and selection should happen when you have part of the genome encoded by a CPPN and part directly. Since RoboGen just allows MultiNEAT to handle the population when using HyperNEAT, avoiding these complexities was the main reason this was not included in RoboGen to begin with. Another alternative that may be worth pursuing is to use a form of HyperNEAT - light. Basically using a CPPN encoding for the brains, but omitting crossover and NEAT's speciation mechanism and just managing mutating CPPNs yourself.
I hope this is somewhat helpful. There may be other alternatives in the recent literature that I am unaware of, so I would recommend doing some more background research there (looking for papers that cite the ones I mention might be helpful for finding these). I'd be interested to see what you come up with, and feel free to write back with any more specific questions.
Best,
Josh