ARGoS + Buzz quick start

Installing ARGoS

ARGoS is a fast multi-robot simulator that can interoperate with Buzz.

To install ARGoS, go to http://www.argos-sim.info/core.php and install a binary package. To get started with ARGoS, refer to the examples.

Installing Buzz

Compile and install Buzz following the instructions reported in the GitHub page. Make sure to compile Buzz after having installed ARGoS, so the compilation scripts will also compile the ARGoS integration code.

ARGoS + Buzz

Integration: Basic information

The Buzz integration library for ARGoS is composed of two elements:

  1. A set of ARGoS controllers. At the moment, available controllers include one for the foot-bot (a wheeled robot) and one for the Spiri (a commercial quad-rotor). More can be added easily by subclassing CBuzzController, defined in $PREFIX/include/buzz/argos/buzz_controller.h. $PREFIX depends on your system and is usually /usr or /usr/local.
  2. A special definition of ARGoS' QtOpenGL user functions, which allow Buzz scripts to draw in the OpenGL visualization of ARGoS. With these, a developer can write debugging information on top of each robot.

To have ARGoS find the Buzz integration library in case you installed it in a non-default location, set the environment variable ARGOS_PLUGIN_PATH. This variable is a :-separated list of directories in which ARGoS looks for libraries before launching an experiment. For instance:

$ export ARGOS_PLUGIN_PATH=/opt/lib/buzz

If you installed Buzz without specifying a custom installation prefix (e.g., using only cmake ../src; make; make install), you don't need to set ARGOS_PLUGIN_PATH.

Defining an ARGoS experiment file

To use ARGoS and Buzz together, define your .argos experiment file as usual.

However, instead of a custom controller, in the <controllers> section use <buzz_controller_footbot> or <buzz_controller_spiri> (or both!), depending on the robots you intend to use. For example, if you want to use both controllers, write something similar to this:

<controllers>
 
  <buzz_controller_footbot id="bcf">
    <actuators>
      <differential_steering implementation="default" />
      <leds                  implementation="default" medium="leds" />
      <range_and_bearing implementation="default" />
    </actuators>
    <sensors>
      <range_and_bearing implementation="medium" medium="rab" show_rays="true" noise_std_dev="0" />
    </sensors>
    <params bytecode_file="myscript.bo" debug_file="myscript.bdb" />
  </buzz_controller_footbot>
 
  <buzz_controller_spiri id="bcs">
    <actuators>
      <quadrotor_position implementation="default" />
      <range_and_bearing  implementation="default" />
    </actuators>
    <sensors>
      <range_and_bearing implementation="medium" medium="rab" show_rays="false" />
      <positioning       implementation="default" />
    </sensors>
    <params bytecode_file="myscript.bo" debug_file="myscript.bdb" />
  </buzz_controller_spiri>
 
</controllers>
 
...
 
<arena ...>
 
   <foot-bot id="fb0" rab_data_size="100">
      ...
      <controller config="bcf" />
    </foot-bot>
 
   <spiri id="fb0" rab_data_size="100">
      ...
      <controller config="bcs" />
    </spiri>
</arena>

To activate drawing, use buzz_qt to indicate that you want to use the Buzz QtOpenGL user functions:

<visualization>
  <qt-opengl>
    <user_functions label="buzz_qt" />
  </qt-opengl>
</visualization>

You can launch ARGoS as usual, with the command:

$ argos3 -c myexperiment.argos

Make sure the paths of the Buzz files (e.g., myscript.bo and myscript.bdb in the above example) are set correctly.

Writing debug information

The Buzz integration library offers a command, called debug(), that allows the developer to write text on top of a robot as shown in this example:

x = 10
debug("The value of x is ", x)

This will print The value of x is 10 on top of each robot that executes that command.