Framework for Autonomous Robotics Simulation and Analysis


FARSA is a collection of integrated open-source object-oriented C++ libraries that allow to experiment with autonomous robots. It allow to simulate different robotic platforms (the iCub humanoid and the khepera, e-puck, and marxbot wheeled robots), design the sensory-motor system of the robot/s, design the environment in which the robot/s operate, design the robot neural controller, and adapt the free parameters of the robot. It is a cross-platform framework that works on Linux, Windows and Mac on both 32bit and 64bit systems.

FARSA is well documented, easy to use and comes with a series of exemplificative experiments that allow users to quickly gain a comprehension of the tool and a base for running a large spectrum of new experiments that can be ran simply by changing the tool parameters. The modification of aspects that are not parametric (e.g. the initial position or posture of the robot/s, the definition of a new evaluation function, or the definition of a new sensor or motor not included in the library) is also relative easy since it confined to a single and compact portion of the source code (the experiment class) and well explained in the documentation.

The robot/environment simulator

Worldsim library simulate rigid-body dynamics into a 3D world with realistic physics effects. The forces generated by the motors, by the physical interaction between objects, and by gravity are simulated accurately by using the Newton Game Dynamics engine or alternatively by using a faster but simplified kinematic engine. It is also included a 3D rendering of the simulated world based on libQGLViewer. The library support multiple robot simulation (e.g. two interacting iCub robot or several interacting wheeled robots).

The library allow to experiment with the following robotic platforms:

And include low-level classes that can be used to simulate any other robotic platform.

Sensors and Motors

Experiments library includes a list of classes for simulating various robots sensors and actuators.

In the case of the iCub robot, the available Sensors include proprioceptors that measure the current angular position of the robots' joints, tactile sensors, and vision sensors among others. In the case of wheeled robot, the library include infrared, ground, force, vision, and communication sensors among others. In some cases sensors include software routines that pre-elaborate the sensorial information.

The Motors classes control the motorized joints of a robot. Alternative motors vary with respect to the joint or the set of joints controlled and the way they are moved (by position, by velocity, etc). Moreover, some motors include low-level control routines that elaborate motor information (e.g. in the case of motors encoding desired angular position of the joints that determine the applied torque by combining the actual sensed and the desired angular position).

Furthermore, as in all aspect of FARSA, it is possible to create new Sensors and Motors either starting from scratch that extending the functionality of available ones.

Neural Network Controller

Evonet enables the user to design, modify and visualize graphically the architecture of the robot's neural controller as well as the property of the neurons and of the connection weights.

Users willing to use other formalisms (e.g. behaviour-based controller or fuzzy controller) should interface their own library with the available sensors and motors classes.

Adaptive Process

The adaptive process is the algorithm that can be used to adapt the characteristic of the robot (e.g. the connection weights and biases of the robot's neural controller) to a given task/environment.

The adaptive library currently include an evolutionary algorithm (Evoga) and a back-propagation algorithm (coming soon). The evolutionary algorithms are parallelized at the level of the individual evaluation and can therefore run significantly faster in multi-core machines and computer clusters.

Users willing to use other methods/algorithms operating on a neural network should interface their own library with the neural network controller library.

Hardware Compatibility

By being based on an advanced physics engine for real-time simulation of rigid bodies, FARSA allow to carry on realistic simulations.

In the case of iCub simulations, the porting of the simulation results in hardware is facilitated by the compatibility with YARP.