Settings and Configuration

This page describes the configuration that the current public SMART repository actually generates and uses.

Configuration Files

SMART uses ARGoS XML configuration files. These are automatically generated by run_sim.py, but can be customized for advanced usage.

Default Configuration

The generated configuration file contains:

<?xml version="1.0" ?>
<argos-configuration>
  <framework>
    <system threads="32" />
    <experiment length="0" ticks_per_second="10" random_seed="124" />
  </framework>
  <controllers>
    <footbot_diffusion_controller
      id="fdc"
      library="build/client/controllers/footbot_diffusion/libfootbot_diffusion">
      <actuators>
        <differential_steering implementation="default" />
      </actuators>
      <sensors>
        <footbot_proximity implementation="default" show_rays="true" />
        <positioning implementation="default" />
      </sensors>
      <params
        alpha="7.5"
        omega="1.57"
        velocity="2.0"
        acceleration="0.5"
        portNumber="8182"
        outputDir="metaData8182/" />
    </footbot_diffusion_controller>
  </controllers>
  <arena size="32,32,1" center="-15.5,-15.5,0">
    <!-- Boxes and robots generated from the map and scenario -->
  </arena>
  <physics_engines>
    <dynamics2d id="dyn2d" />
  </physics_engines>
  <media />
  <visualization>
    <qt-opengl>
      <camera>
        <placements>
          <placement
            index="0"
            position="-15.5,-15.5,32"
            look_at="-15.5,-15.5,0"
            up="1,0,0"
            lens_focal_length="20" />
        </placements>
      </camera>
    </qt-opengl>
  </visualization>
</argos-configuration>

Key Settings

Experiment Parameters

<experiment length="0"
            ticks_per_second="10"
            random_seed="124" />
  • length - ARGoS experiment length; the generated config uses 0

  • ticks_per_second - update frequency (Hz)

  • random_seed - seed embedded in the generated XML

Robot Parameters

The current generator writes controller parameters like:

<params
  alpha="7.5"
  omega="1.57"
  velocity="2.0"
  acceleration="0.5"
  portNumber="8182"
  outputDir="metaData8182/" />
  • alpha - controller angle range parameter

  • omega - angular velocity parameter

  • velocity - wheel velocity parameter

  • acceleration - linear acceleration parameter

  • portNumber - RPC port shared with ADG_server

  • outputDir - metadata directory used by the controller

Arena Settings

<arena size="32,32,1" center="-15.5,-15.5,0">
  <box id="box_10_0" size="0.9,0.9,0.1" movable="false">
    <body position="0,-10,0" orientation="0,0,0" />
  </box>
  <foot-bot id="fb_5_16">
    <body position="-16,-5,0" orientation="0,0,0" />
    <controller config="fdc" />
  </foot-bot>
</arena>
  • size - arena dimensions (x, y, z) in meters

  • center - arena center point

  • obstacle boxes are generated from obstacle cells in the .map

  • robot start poses are generated from the .scen

Physics Engine

<physics_engines>
  <dynamics2d id="dyn2d" />
</physics_engines>

The public generator creates a single dynamics2d engine. This page intentionally stays close to the XML that the repo actually writes.

Command Line Configuration

The current public run_sim.py exposes these configuration-related arguments:

python run_sim.py \
    --map_name=map.map \
    --scen_name=scenario.scen \
    --num_agents=50 \
    --headless=True \
    --argos_config_name=custom.argos \
    --stats_name=custom_stats.csv \
    --port_num=8182

If you rerun SMART with the same --argos_config_name, the helper script will overwrite that XML file.

Editing the Generated XML

If you need a different seed, camera placement, or controller parameter, the current public workflow is:

  1. run run_sim.py once to generate the .argos file,

  2. edit that XML file directly,

  3. launch ARGoS yourself with argos3 -c your_config.argos.

Keep these values aligned if you edit the file manually:

  • the controller library path

  • the portNumber parameter

  • whether visualization is enabled or set to none

What Is Not Exposed as a Public Setting

The current public repo does not expose documented command-line or Python-level settings for:

  • robot_radius

  • physics_accuracy

  • collision_threshold

  • JSON config profiles

  • a public set_config() style API

Next Steps