Menu

Overview

Tomassino Ferrauto Gianluca Stefano Nolfi
Prev: Home Up: Home Next: Design Principles

Table of contents

Introduction

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.

Features Overview

FARSA combines in a single framework the following features:

  • it is open-source, so it can be freely modified, used and extended by the research community;
  • it is constituted by a series of integrated libraries that allow to easily design the different components of an embodied model (i.e. the agents' body and sensory-motor system, the agents' control systems, and the ecological niche in which the agents operate) and that allow to simulate accurately and efficiently the interactions between the agent and the environment;
  • it comes with a rich graphical interface that facilitates the visualization and analysis of the elements forming the embodied model and of the behavioral and cognitive processes originating from the agent/environment interactions;
  • it is based on a highly modular software architecture that enables a progressive expansion of the tool features and simplifies the implementation of new experiments and of new software components;
  • it is multi-platform, i.e. it can be compiled and used on Linux, Windows, and Mac OS X operating systems;
  • it comes with a set of exemplificative experiments and with a synthetic but comprehensive documentation that should enable users to quickly master the tool usage.

The tool is constituted by a series of integrated software libraries providing the following features:

The Robots/Environment Simulator

It is a library that allows to simulate the robot/s and the environment in which it/they operate. The library supports both individual robot simulation and collective experiments in which several robots are placed in the same environment. The physical and dynamical aspects of the robots and of the robots/environment interactions can be simulated accurately by using a 3D dynamics physics simulator or by using a faster but simplified kinematic engine. Currently, FARSA supports the following robotic platforms: the Khepera, the e-Puck, the marXbot and the iCub. These robots have been designed by assembling a series of building blocks (physical elements, sensors, and motorized joints) that users can re-use to implement alternative, not yet supported, robots.

The Sensor and Motor Library

It includes a library of ready-to-use sensors and motors. In some cases, sensors and motors include software routines that pre-elaborate sensory or motor information (e.g. to reduce its dimensionality) and/or integrate different kinds of sensory-motor information. The state of the robot’s sensors and motors, as well as the state of selected variables of the robot’s control system, can be graphically visualized while the robot interacts with the environment.

The Controller Library

It enables the user to design, modify and visualize the robot's control system. Currently FARSA includes two libraries that support the design of neuro-controllers. Evonet is an easy-to-use library that enables users to graphically design, modify and visualize the neural network. NNFW is an alternative object-oriented library that provides a larger variety of topologies and neuron types.

The Adaptation Library

It enable the user to subject a robot or a population of robots to an adapting process (i.e. to a evolutionary and/or learning process). The adaptation libraries that are currently available support the use of evolutionary algorithms (including steady state, truncation selection, and Pareto-front algorithms), supervised learning algorithms (i.e. back-propagation), and unsupervised learning algorithm (i.e. Hebbian learning).

Requirements for using FARSA

As stated before, FARSA is a collection of software libraries. As such, there are some tools and concepts whose knowledge is required (or at least strongly suggested) to use it effectively:

  • C++. This is the language used for developing FARSA plugins, so its knowledge is required if you want to write your own experiments. This also comprises the knowledge of a C++ development environment and some general understanding of Object-Oriented Programming principles;
  • CMake. This is the tool that is used both when compiling FARSA itself (if you decide to install from sources) and when creating your own plugins;
  • Qt. The Qt framework is used extensively throughout FARSA. A basic knowledge of at least the core classes it strongly suggested.

Related

Manual: DesignPrinciples
Manual: Home

Discussion

Anonymous
Anonymous

Add attachments
Cancel





MongoDB Logo MongoDB