Settings and Configuration
This page describes SMART’s configuration options and settings.
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
A typical configuration file (output.argos) contains:
<?xml version="1.0" ?>
<argos-configuration>
<!-- Framework settings -->
<framework>
<experiment length="1000" ticks_per_second="10" random_seed="42" />
</framework>
<!-- Controllers -->
<controllers>
<footbot_smart_controller id="fsc" library="...">
<actuators>
<differential_steering implementation="default" />
</actuators>
<sensors>
<positioning implementation="default" />
</sensors>
<params server_port="8182" />
</footbot_smart_controller>
</controllers>
<!-- Arena -->
<arena size="32, 32, 1" center="16,16,0">
<!-- Robots added dynamically -->
</arena>
<!-- Physics engines -->
<physics_engines>
<dynamics2d id="dyn2d" />
</physics_engines>
<!-- Media -->
<media />
<!-- Visualization -->
<visualization>
<qt-opengl>
<camera>
<placement idx="0" position="16,16,20"
look_at="16,16,0" lens_focal_length="20" />
</camera>
</qt-opengl>
</visualization>
</argos-configuration>
Key Settings
Experiment Parameters
<experiment length="1000"
ticks_per_second="10"
random_seed="42" />
length- Simulation duration (timesteps)ticks_per_second- Update frequency (Hz)random_seed- For reproducibility
Robot Parameters
Configure robot physical properties:
<footbot_smart_controller>
<params
robot_radius="0.2"
max_velocity="0.5"
server_port="8182"
coordination_threshold="0.5" />
</footbot_smart_controller>
robot_radius- Robot size in metersmax_velocity- Maximum speed (m/s)server_port- RPC communication portcoordination_threshold- Distance for coordination
Arena Settings
<arena size="32, 32, 1" center="16,16,0">
<floor id="floor" source="loop_functions" pixels_per_meter="50" />
<box id="wall_north" size="32,0.1,0.5" movable="false">
<body position="16,32,0" orientation="0,0,0" />
</box>
<!-- More walls... -->
</arena>
size- Arena dimensions (x, y, z) in meterscenter- Arena center pointpixels_per_meter- Visualization resolution
Physics Engine
<physics_engines>
<dynamics2d id="dyn2d">
<friction>
<footbot friction="0.7" />
</friction>
</dynamics2d>
</physics_engines>
friction- Surface friction coefficient
Python API Configuration
Set configuration via Python API:
from smart_client import SMARTClient
client = SMARTClient()
# Configure simulation
client.set_config({
'robot_radius': 0.2,
'max_velocity': 0.5,
'time_limit': 1000,
'ticks_per_second': 10,
'collision_threshold': 0.1,
'coordination_enabled': True,
'visualization': False # Headless mode
})
Command Line Configuration
Pass configuration via command-line arguments:
python run_sim.py \
--map_name=map.map \
--scen_name=scenario.scen \
--num_agents=50 \
--robot_radius=0.2 \
--max_velocity=0.5 \
--time_limit=1000 \
--port_num=8182
Advanced Settings
Action Dependency Graph
Configure the ADG execution monitor:
client.set_adg_config({
'edge_delay_threshold': 0.1, # Delay detection threshold
'collision_prediction': True, # Predict collisions
'replanning_enabled': False, # Enable online replanning
'priority_scheme': 'fifo' # Agent priority: fifo, random, custom
})
Logging and Output
Control output verbosity and logging:
client.set_logging({
'level': 'INFO', # DEBUG, INFO, WARN, ERROR
'output_dir': './results', # Output directory
'log_trajectories': True, # Log actual trajectories
'log_delays': True, # Log delay events
'log_collisions': True # Log collision events
})
Performance Tuning
For large-scale experiments:
# Optimize for speed
client.set_config({
'visualization': False, # Disable rendering
'ticks_per_second': 100, # Increase update rate
'physics_accuracy': 'low', # Use simplified physics
'collision_checking': 'approximate' # Faster collision detection
})
For high-fidelity simulation:
# Optimize for accuracy
client.set_config({
'ticks_per_second': 50, # Higher time resolution
'physics_accuracy': 'high', # Detailed physics
'collision_checking': 'exact', # Precise collision detection
'sensor_noise': 0.01 # Add sensor noise
})
Environment Variables
Set via shell:
export SMART_CONFIG_FILE=custom_config.argos
export SMART_SERVER_PORT=8182
export SMART_LOG_LEVEL=DEBUG
python run_sim.py ...
Configuration Profiles
Create reusable configuration profiles:
config/fast_batch.json:
{
"visualization": false,
"ticks_per_second": 100,
"time_limit": 500,
"log_level": "WARN"
}
config/accurate_sim.json:
{
"visualization": true,
"ticks_per_second": 50,
"physics_accuracy": "high",
"sensor_noise": 0.01,
"log_level": "INFO"
}
Load a profile:
import json
with open('config/fast_batch.json') as f:
config = json.load(f)
client.set_config(config)
Next Steps
Usage Guide - Using SMART
Architecture - System architecture
Core APIs - Python API reference