buzz_argos

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
buzz_argos [2018/03/18 23:19] – [Debugging Buzz Programs] rootbuzz_argos [2018/03/18 23:34] (current) – [Debugging Buzz Programs] root
Line 11: Line 11:
 Compile and install Buzz following the instructions reported in the [[https://github.com/MISTLab/Buzz|GitHub page]]. Make sure to compile Buzz **after** having installed ARGoS, so the compilation scripts will also compile the ARGoS integration code. Compile and install Buzz following the instructions reported in the [[https://github.com/MISTLab/Buzz|GitHub page]]. Make sure to compile Buzz **after** having installed ARGoS, so the compilation scripts will also compile the ARGoS integration code.
  
-==== ARGoS + Buzz: Basic information ====+==== Library Configuration ====
  
 The Buzz integration library for ARGoS is composed of two elements: The Buzz integration library for ARGoS is composed of two elements:
Line 17: Line 17:
   - A set of ARGoS controllers. At the moment, available controllers include one for the [[http://www.swarmanoid.org/swarmanoid_hardware.php.html|foot-bot]], one for the Khepera IV robot (both wheeled robots), and one for the [[http://pleiades.ca|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''.   - A set of ARGoS controllers. At the moment, available controllers include one for the [[http://www.swarmanoid.org/swarmanoid_hardware.php.html|foot-bot]], one for the Khepera IV robot (both wheeled robots), and one for the [[http://pleiades.ca|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''.
  
-  - 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 [[#writing_debug_information|write debugging information on top of each robot]].+  - A special definition of ARGoS' QtOpenGL user functions, which allow Buzz scripts to draw in the OpenGL visualization of ARGoS.
  
 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: 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:
Line 27: Line 27:
 If you installed Buzz without specifying a custom installation prefix (e.g., using only ''cmake -DCMAKE%%_%%BUILD%%_%%TYPE=Release ../src; make; make install''), you don't need to set ''ARGOS%%_%%PLUGIN%%_%%PATH''. If you installed Buzz without specifying a custom installation prefix (e.g., using only ''cmake -DCMAKE%%_%%BUILD%%_%%TYPE=Release ../src; make; make install''), you don't need to set ''ARGOS%%_%%PLUGIN%%_%%PATH''.
  
-=== Defining an ARGoS experiment file ===+==== Defining an ARGoS experiment file ====
  
 To use ARGoS and Buzz together, define your ''.argos'' experiment file as usual. To use ARGoS and Buzz together, define your ''.argos'' experiment file as usual.
Line 34: Line 34:
  
 <code xml> <code xml>
 +<!-- 
 +     For a full example of an ARGoS configuration file, refer to
 +
 +     https://github.com/ilpincy/argos3-examples/blob/master/experiments/diffusion_1.argos
 +     
 +     and the other examples at
 +     
 +     https://github.com/ilpincy/argos3-examples/blob/master/experiments/
 +-->
 +
 +...
 +
 <controllers> <controllers>
  
Line 99: Line 111:
    </spiri>    </spiri>
 </arena> </arena>
 +
 +...
  
 </code> </code>
  
-To activate drawing, use ''buzz_qt'' to indicate that you want to use the Buzz QtOpenGL user functions:+Always make sure the parameters ''arena/<robot>/rab%%_%%data%%_%%size'' are set to relatively large values, such as 100 bytes as reported in the above examples. 
 + 
 +If you want ARGoS to start with a Buzz script already loaded, you can specify that in the ''<params />'' tag of the robot controller. The above example for the foot-bot, for example, becomes:
  
 <code xml> <code xml>
 +  ...
 +
 +  <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>
 +    
 +    <!-- This loads the specified files at startup -->
 +    <params bytecode_file="myscript.bo" debug_file="myscript.bdb" />
 +    
 +  </buzz_controller_footbot>
 +  
 +  ...
 +  
 +</code>
 +
 +To activate the Buzz editor and support debugging, use ''buzz_qt'' to indicate that you want to use the Buzz QtOpenGL user functions:
 +
 +<code xml>
 +<!-- For a full example of an ARGoS configuration file, refer to
 +     https://github.com/ilpincy/argos3-examples/blob/master/experiments/diffusion_1.argos
 +-->
 +
 <visualization> <visualization>
   <qt-opengl>   <qt-opengl>
Line 117: Line 161:
 $ argos3 -c myexperiment.argos $ argos3 -c myexperiment.argos
 </code> </code>
- 
-Make sure the parameters ''arena/<robot>/rab%%_%%msg%%_%%size'' are set to relatively large values, such as 100 bytes as reported in the above examples. 
  
 ==== Debugging Buzz Programs ==== ==== Debugging Buzz Programs ====
Line 132: Line 174:
 == Writing Text on Top of a Robot == == Writing Text on Top of a Robot ==
  
-== Drawing the Trajectory of a Robot ==+  * ''debug.print(message)'' 
 +    * prints a message on top of the robot, after the robot id 
 +    * ''message'' can be combination of text and variables, such as ''"", x, " cm"''
  
-You can draw the trajectory of the robot as it moves.+== Drawing the Trajectory of a Robot ==
  
   * ''debug.trajectory.enable(maxpoints,r,g,b)''   * ''debug.trajectory.enable(maxpoints,r,g,b)''
     * enable trajectory tracking setting how many points should be stored and the drawing color     * enable trajectory tracking setting how many points should be stored and the drawing color
 +    * ''(r,g,b)'' is the drawing color of the trajectory (0-255 for each value)
   * ''debug.trajectory.enable(maxpoints)''   * ''debug.trajectory.enable(maxpoints)''
     * enable trajectory tracking setting how many points should be stored     * enable trajectory tracking setting how many points should be stored
   * ''debug.trajectory.enable(r,g,b)''   * ''debug.trajectory.enable(r,g,b)''
     * enable trajectory tracking keeping maxpoints' last value and setting the drawing color     * enable trajectory tracking keeping maxpoints' last value and setting the drawing color
 +    * ''(r,g,b)'' is the drawing color of the trajectory (0-255 for each value)
   * ''debug.trajectory.enable()''   * ''debug.trajectory.enable()''
     * enable trajectory tracking keeping maxpoints' last value (default is 30)     * enable trajectory tracking keeping maxpoints' last value (default is 30)
   * ''debug.trajectory.disable()''   * ''debug.trajectory.disable()''
     * disable trajectory tracking     * disable trajectory tracking
-  * debug.trajectory.clear()+  * ''debug.trajectory.clear()''
     * delete all the trajectory points     * delete all the trajectory points
  
Line 154: Line 200:
     * draw a ray from the reference point of the robot to ''(x,y,z)''.     * draw a ray from the reference point of the robot to ''(x,y,z)''.
     * ''(x,y,z)'' is expressed wrt the robot reference frame     * ''(x,y,z)'' is expressed wrt the robot reference frame
 +    * ''(r,g,b)'' is the color of the vector (0-255 for each value)
   * ''debug.rays.add(r,g,b, x0,y0,z0, x1,y1,z1)''   * ''debug.rays.add(r,g,b, x0,y0,z0, x1,y1,z1)''
     * draw a ray from ''(x0,y0,z0)'' to ''(x1,y1,z1)''     * draw a ray from ''(x0,y0,z0)'' to ''(x1,y1,z1)''
     * ''(x0,y0,z0)'' and ''(x1,y1,z1)'' are expressed wrt the robot reference frame     * ''(x0,y0,z0)'' and ''(x1,y1,z1)'' are expressed wrt the robot reference frame
 +    * ''(r,g,b)'' is the color of the vector (0-255 for each value) 
 +  * ''debug.rays.clear()'' 
 +    * delete all the rays
  • buzz_argos.1521415191.txt.gz
  • Last modified: 2018/03/18 23:19
  • by root