-
Notifications
You must be signed in to change notification settings - Fork 32
Technical description
Revolve contains:
- classes for creating specifications of body parts
- classes to build robot bodies and neural networks
- world manager class that interacts with gazebo simulator (revolve.gazebo.manage.WorldManager> class)
- classes for crossover and mutator operations
- utility functions (converter, logger)
WorldManager communicates with gazebo using protobuf messages.
example (pausing the world):
manager = pygazebo.connect(address) publisher = manager.advertise('/gazebo/default/world_control', 'gazebo.msgs.WorldControl') publisher.wait_for_listener() msg = pygazebo.msg.world_control_pb2.WorldControl() msg.pause = True publisher.publish(msg)
Tol-Revolve extends revolve for triangle-of-life experiments.
Tol-revolve contains:
- World class extending revolve.gazebo.manage.WorldManager
- Builder functions that use revolve.build.sdf.RobotBuilder to create an sdf object representing a robot.
- logging functions
- specifications of body parts
Of course you would like your robot to also have a brain. Revolve also ships with a specification for a simple neural network, with its interface based on a robot body if desired.
Revolve also comes with a number of Gazebo plugins to power the defined components in simulation. The RobotController
C++ class is a solid basis for controlling a robot in a simple manner, providing default implementations of
motor controllers and sensor readers with an interface over the body parts' inputs and outputs.
The most complete, but opinionated part of Revolve is Angle, which is a framework that allows specification, generation
and evolution of robots that fit within the defined body space and have a neural network as a brain. See the information
in the revolve.angle
folder for details.
I am writing revolve, as well as the related library sdfbuilder as part of my Master's thesis research. The actual code that is going to be running my experiments is currently being constructed in my Triangle of Life repository. This repo also serves as the currently only and therefore best way to see Revolve in action. All of this is still very much a work in progress, though I do have large parts of Revolve and ToL working at this point.
To use Revolve, you need Gazebo. Since some common scenarios (mostly involving deleting models) cause
some very serious bugs in Gazebo, currently a patched version of Gazebo is required (and will have to
be compiled from source, unfortunately). To get this version, clone the Gazebo fork from
https://bitbucket.org/ElteHupkes/gazebo and checkout the gazebo6-revolve
branch. Follow the steps
found at this page to
install Gazebo from source.
Given a working Gazebo installation, Revolve can be compiled using cmake followed by make also. The easiest way
to use the Python libraries right now is by using pip install -e /path/to/revolve
. I'll update these instructions
with more details as soon as I find the time.
For more information about the Triangle of Life concept visit http://evosphere.eu/.
_________________
/ Premature \
| optimization |
| is the root of |
| all evil. |
| |
\ -- D.E. Knuth /
-----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||