<> == Documentation == Alica is a framework for modelling and controlling the behaviour of multiple robots. The stack consists of: * An Eclipse based graphical UI for designing behaviour, the [[Planmodeller]]. * An execution layer running on each individual robot, the [[AlicaEngine]], written in C# and running under mono. * A simple graphical monitoring tool, the [[AlicaClient]]. * An example and tutorial package, [[alica_turtle]], which interacts with [[turtlesim]]. Alica is a completely distributed framework featuring: * Hierarchies of finite-state machines, * Parallel execution of multiple state-machines per robot, * Task allocation based on utility functions, which weigh different options against each other, * Non-linear continuous constraint satisfaction and optimisation problems can be used to concisely formulate complex spatial interactions. * An anytime solver for these problems which is able to coordinate solutions within the team and utilises the distributed computing power of the team for solving. For communication between the robots we suggest a multi-master solution to avoid central components. The [[udp_proxy_generator]] constitutes a simple solution. Alica is used and actively developed by the [[http://www.robocup.org/|RoboCup]] MSL team [[http://carpenoctem.das-lab.net|Carpe Noctem]]. A comprehensive publication will be available soon. == Setup == === Environment Variable === Alica assumes the following environment variables to be set: * ES_ROOT defines the root directory for all needed files. It could, for instance, point to your ros workspace. It should at least hold the subdirectories {{{etc}}} for configuration files according to [[Castor]] and a library folder, e.g., {{{lib}}}, which is part of the MONO_PATH. * MONO_PATH should include the library path within ES_ROOT (see [[roscs]]). * ROBOT can optionally be set to define the local name of a robot. If it is not set, the system's hostname is used. === Configuration Files === The runtime uses two configuration files. Examples can be found in AlicaEngine/configuration. These are meant to be placed in ES_ROOT/etc. * Alica.conf holds runtime parameters, such as communication frequency, solving time for the anytime solver, etc. * Globals.conf defines the possible team composition, as well as a preferred role composition. == Usage == A tutorial package will be available soon. Since Alica is a domain independent framework, it does not make any assumptions about your system or your representation of the environment. In order to employ Alica run robots in a concrete scenario the following components need to be developed: * Plans -- These are containers for team behaviours, and are designed using the [[Planmodeller]] * Roles -- These are used to map robots onto tasks within plans. Also designed within the [[Planmodeller]] * Behaviours -- These are atomic action programs, such as DriveTo(x) or GrabCup. Each behaviour inherits from BasicBehaviour. More on this can be found in the tutorial. * Expressions -- Expressions are code fragments that guard transitions, enable plans or constraint variables. The Planmodeller generates corresponding code skeleton, which must be filled with content. * A Worldmodel. While this is optional, it is typically a good idea to define a globally accessible representation of the environment. * A main program that instantiates an AlicaEngine. == Report a Bug == <> ##i.e.<> ## AUTOGENERATED DON'T DELETE ## CategoryStack