navground_sim_py#
This package provides Python bindings to the simulation library and utilities to display the simulation.
Dependencies#
navground_core_py the core python package
navground_sim the simulation library
Python packages#
navground.sim#
A Python package to perform navigation simulations; see the API reference.
To use the package
add the install path to
PYTHONPATH
import the packge
from navground import sim
Executables#
info#
Lists registered components (behaviors, kinematics, state estimations, tasks, and scenarios) implemented in C++ or Python.
usage: info [-h] [--no-plugins] [--build] [--properties] [--description] [--behaviors [BEHAVIORS]] [--kinematics [KINEMATICS]]
[--modulations [MODULATIONS]] [--state_estimations [STATE ESTIMATIONS]] [--tasks [TASKS]] [--scenarios [SCENARIOS]]
Named Arguments#
- --no-plugins
Do not load plugins
- --build
Include build infos
- --properties
Include properties
- --description
Include property descriptions
- --behaviors
selects behaviors
- --kinematics
selects kinematics
- --modulations
selects modulations
- --state_estimations
selects state estimations
- --tasks
selects tasks
- --scenarios
selects scenarios
Example#
$ info --properties
Installed components
====================
Behaviors
---------
CppPolicy
flat: False (bool)
include_angular_speed: False (bool)
include_target_direction: False (bool)
include_target_distance: False (bool)
include_target_speed: False (bool)
include_velocity: False (bool)
max_acceleration: 10.0 (float)
max_angular_acceleration: 0.0 (float)
policy_path: (str)
shared: False (bool)
use_acceleration_action: False (bool)
Dummy
environment: (str)
HL
aperture: 3.1415927410125732 (float)
...
echo#
Load and then print a YAML representation of an object (behavior, kinematic, behavior modulation, state estimation, task, scenarios, agent, world, experiment). It is equivalent to the C++ version but with additional components implemented in Python.
usage: echo [-h] [--no-plugins] [--chdir] kind YAML
Positional Arguments#
- kind
The kind of object to load: behavior, modulation, kinematics, state_estimation, task, scenario, world, agent, experiment
- YAML
YAML string, or path to a YAML file, describing an experiment
Named Arguments#
- --no-plugins
Do not load plugins
- --chdir
Whether to change working directory to the directory containing the file. Useful when the config contains relative paths.
Example#
$ echo task "{type: Path, points: [[1, 2], [3, 4]]}"
type: Path
points:
-
- 1
- 2
-
- 3
- 4
tolerance: 1
schema#
Print JSON-Schema of YAML-convertible navground sim classes. It is equivalent to the C++ version but with additional components implemented in Python.
usage: schema [-h] [--no-plugins] [--register] [--type TYPE]
[{agent,behavior_modulation,behavior,core,task,world,experiment,state_estimation,kinematics,sim,scenario}]
Positional Arguments#
- kind
Possible choices: agent, behavior_modulation, behavior, core, task, world, experiment, state_estimation, kinematics, sim, scenario
The target type of the scheme
Named Arguments#
- --no-plugins
Do not load plugins
- --register
Whether to generate the register schema instead of the base class schema
- --type
If provided, generates the schema for the sub-class registered under this name
Example#
$ schema task
$id: http://navground/task
$ref: task_register
$schema: https://json-schema.org/draft/2020-12/schema
properties:
type:
type: string
type: object
unevaluatedProperties: false
validate#
Validates a YAML representation of an object (behavior, kinematic, behavior modulation, state estimation, task, scenarios, agent, world, experiment) against the schema generated by schema using python-jsonschema.
usage: validate [-h] [--no-plugins] {behavior,behavior_modulation,kinematics,state_estimation,task,agent,world,scenario,experiment} YAML
Positional Arguments#
- kind
Possible choices: behavior, behavior_modulation, kinematics, state_estimation, task, agent, world, scenario, experiment
The kind of object to validate
- YAML
YAML string, or path to a YAML file, describing an experiment
Named Arguments#
- --no-plugins
Do not load plugins
Example#
$ validate task "{type: UnknownTask}"
{'type': 'UnknownTask'} is not valid under any of the given schemas
Failed validating 'anyOf' in schema:
{'$schema': 'https://json-schema.org/draft/2020-12/schema',
'$id': 'http://navground/task_register',
'anyOf': [{'properties': {'type': {'const': 'Direction'},
'direction': {'$ref': 'vector2',
'default': [1, 0],
'description': 'direction'}}},
{'properties': {'type': {'const': 'Path'},
'points': {'default': [],
'description': 'points',
'items': {'$ref': 'vector2'},
'minItems': 2,
'type': 'array'},
'tolerance': {'default': 1,
'description': 'tolerance',
'minimum': 0,
'type': 'number'}}},
{'properties': {'type': {'const': 'Waypoints'},
...
plugins#
Load and list plugins.
usage: plugins [-h] [--dependencies]
Named Arguments#
- --dependencies
Display dependencies of C++ plugins
Example#
$ plugins
navground_examples_py
---------------------
Behaviors: PyIdle [Python]
navground_demos
---------------
Scenarios: PyThymioDemo [Python], ThymioDemo [C++]
navground_examples
------------------
Behaviors: Idle [C++]
Scenarios: Empty [C++]
sample#
Samples a world from a scenario with components implemented in C++ or Python.
usage: sample [-h] [--no-plugins] [--chdir] YAML
Positional Arguments#
- YAML
YAML string, or path to a YAML file, describing an experiment
Named Arguments#
- --no-plugins
Do not load plugins
Default:
False
- --chdir
Whether to change working directory to the directory containing the file. Useful when the config contains relative paths.
Default:
False
Example#
$ sample "{type: Antipodal, groups: [{number: 2}]}"
type: Antipodal
orientation_noise: 0
position_noise: 0
radius: 1
shuffle: 0
tolerance: 0.100000001
obstacles:
[]
groups:
- behavior:
type: ""
number: 2
------------------------------
obstacles:
[]
walls:
[]
agents:
- behavior:
optimal_speed: 0
...
run#
Run an experiment using a Python interpreter. It may be slightly slower than the C++ implementation, but has access to components implemented in Python.
usage: run [-h] [--no-plugins] [--tqdm] [--run_index RUN_INDEX] [--runs RUNS] [--threads THREADS] [--processes PROCESSES]
[--save_directory SAVE_DIRECTORY] [--save_single_hdf5] [--use_multiprocess] [--chdir]
YAML
Positional Arguments#
- YAML
YAML string, or path to a YAML file, describing an experiment
Named Arguments#
- --no-plugins
Do not load plugins
Default:
False
- --tqdm
Display tqdm bar
Default:
False
- --run_index
Will overwrite the experiment own run_index if positive.
Default:
-1
- --runs
Will overwrite the experiment own runs if positive.
Default:
-1
- --threads
Number of threads
Default:
1
- --processes
Number of processes
Default:
1
- --save_directory
Where to save the experiment. If not specified, it reads the value from the configuration
- --save_single_hdf5
Whether to store a single HDF5 file when using multiple processes
Default:
False
- --use_multiprocess
Whether to use the multiprocess package instead of multiprocessings
Default:
False
- --chdir
Whether to change working directory to the directory containing the file. Useful when the config contains relative paths.
Default:
False
If the experiment is recording data, it will create a directory named <experiment_name>_<experiment_hash>_<datestamp>
with
an HDF5 file data.h5` with data recorded during the experiment,
a YAML file experiment.yaml with the configuration of the experiment.
Example#
$ run "{save_directory: "/tmp", scenario: {type: Antipodal, groups: [{number: 20}]}}"
Performing experiment using Python ...
Experiment done
Duration: 0.026 s
Saved to: /tmp/experiment_7081522542856016128_2025-01-09_14-51-22/data.h5
Note
Although individual runs run in a single thread, we can speed up experiments consisting of multiple runs by parallelizing them. Check out the related guide to know more.
run_rt#
Run an experiment using Python in real time. You can visualize the world in a browser view.
usage: run_rt [-h] [--no-plugins] [--factor FACTOR] [--no-ui] [--seed SEED] [--port PORT] [--width WIDTH] [--no-browser] [--ui-fps UI_FPS]
[--background-color BACKGROUND_COLOR] [--area MIN_X MIN_Y MAX_X MAX_Y] [--display-shape] [--display-deadlocks]
[--display-collisions] [--html HTML]
YAML
Positional Arguments#
- YAML
YAML string, or path to a YAML file, describing an experiment
Named Arguments#
- --no-plugins
Do not load plugins
Default:
False
- --factor
Real-time factor (set to 1.0 to run in real-time, set to higher to run faster or to lower to run slower then real-time)
Default:
1.0
- --no-ui
Do not use a view
Default:
False
- --seed
The random seed of the simulation. If negative, it will be picked randomly
Default:
-1
- --port
The websocket port
Default:
8000
- --width
Size of the view in pixels
Default:
500
- --no-browser
Do not open a browser view
Default:
False
- --ui-fps
Maximal update rate of the view
Default:
25.0
- --background-color
View background color
Default:
'lightgray'
- --area
Minimal area rendered in the view
- --display-shape
Display effective agent shape
Default:
False
- --display-deadlocks
Color deadlocked agent in blue
Default:
False
- --display-collisions
Color deadlocked agent in red
Default:
False
- --html
Where to save the HTML file. Leave empty to use a temporary directory
Default:
''
Example#
$ run_rt experiment.yaml --factor 5.0
record video#
Record a video from an experiment.
usage: record_video [-h] [--no-plugins] [--seed SEED] [--factor FACTOR] [--width WIDTH] [--fps FPS] [--background-color BACKGROUND_COLOR]
[--area MIN_X MIN_Y MAX_X MAX_Y] [--relative_margin RELATIVE_MARGIN] [--display-shape] [--follow FOLLOW] [--grid GRID]
[--chdir]
input output
Positional Arguments#
- input
YAML string, or path to a YAML file describing an experiment, or a path to HDF5 file of a recorded experiment
- output
Path where to save the video
Named Arguments#
- --no-plugins
Do not load plugins
Default:
False
- --seed
The random seed of the simulation. If negative, it will be picked randomly
Default:
-1
- --factor
Real-time factor (set to 1.0 to run in real-time, set to higher to run faster or to lower to run slower then real-time)
Default:
1.0
- --width
Size of the video in pixels
Default:
640
- --fps
Video fps
Default:
24
- --background-color
View background color
Default:
'lightgray'
- --area
Minimal area rendered in the view
- --relative_margin
A relative margin to add around the area
Default:
0.05
- --display-shape
Display effective agent shape
Default:
False
- --follow
The index of the agent to follow
Default:
-1
- --grid
The size of the grid
Default:
0
- --chdir
Whether to change working directory to the directory containing the file. Useful when the config contains relative paths.
Default:
False
Example#
$ record_video experiment.yaml video.mp4 --factor 5.0
replay#
Replays an experiment in real-time. You can visualize the world in a browser view, similarly to run_rt but for recorded experiment, or create a video from it.
usage: replay [-h] [--factor FACTOR] [--no-ui] [--record_video RECORD_VIDEO] [--no-browser] [--ui-fps UI_FPS] [--seed SEED]
[--background-color BACKGROUND_COLOR] [--html HTML]
path
Positional Arguments#
- path
The path an HDF5 file that store an experiment
Named Arguments#
- --factor
Real-time factor (set to 1.0 to run in real-time, set to higher to run faster or to lower to run slower then real-time)
Default:
1.0
- --no-ui
Do not use a view
Default:
False
- --record_video
The path to a folder where to save videos instead of replaying in an UI. If left empty, it will not create videos.
Default:
''
- --no-browser
Do not open a browser view
Default:
False
- --ui-fps
Maximal update rate of the view
Default:
25.0
- --seed
The seed of the run to replay. If negative or not specified, will replay all runs
Default:
-1
- --background-color
View background color
Default:
'lightgray'
- --html
Where to save the HTML file. Leave empty to use a temporary directory
Default:
''
Example#
$ replay ./experiment_3784746994027959661_2023-07-07_16-13-36/data.h5 --factor 10
navground_py#
Like navground, a command that contains all other commands of this package as sub-commands, installed in the binary directory. Using it, you can run
$ naground_py <command> [arguments]
instead of
$ install/lib/navground_sim_py/<command> [arguments]
You can also execute this command directly from Python
$ python -m navground.sim [sub-command] [arguments]
Example#
$ navground_py run --help
usage: navground_py run [-h] [--no-plugins] [--tqdm] [--run_index RUN_INDEX]
[--runs RUNS] [--threads THREADS]
[--processes PROCESSES]
[--save_directory SAVE_DIRECTORY] [--save_single_hdf5]
[--use_multiprocess] [--chdir]
YAML
Runs an experiment using the Python interpreter
positional arguments:
YAML YAML string, or path to a YAML file, describing an
experiment
options:
-h, --help show this help message and exit
--no-plugins Do not load plugins
--tqdm Display tqdm bar
--run_index RUN_INDEX
Will overwrite the experiment own run_index if
positive.
...