Skip to main content
Ctrl+K

navground 0.7.0.dev documentation

Contents:

  • Introduction
  • Installation
    • PyPi
    • Github release
    • Docker
    • Building from source
    • Step-by-step Instructions
    • Setup a development environment
    • Troubleshooting
  • First Steps
  • Command Line Interface
  • A tour of navground
  • Packages
    • navground_core
    • navground_core_py
    • navground_sim
    • navground_sim_py
    • navground_examples
    • navground_examples_py
    • navground_examples_yaml
    • navground_demos
    • navground_minimal_plugin_cpp
    • navground_minimal_plugin_py
  • Tutorials
    • Designing an experiment
    • Running and analysing experiments (in memory)
    • Running and analysing experiments (HFD5)
    • Visualize a simulation
    • Load and playing back recorded experiments
    • Deadlocks and Collisions
    • Behavior Modulations
    • Sensors
    • World attributes
    • Scenarios generate worlds
  • Guides
    • How to extend navground
      • How to integrate a C++ component
      • How to integrate a Python component
      • Behaviors
      • Behavior groups
      • Behavior modulations
      • Kinematics
      • State Estimations
      • Tasks
      • Scenarios
    • How to parallelize the execution of an experiment
    • How to record custom data in experiments
    • How to build without the ROS build tools
    • How to validate code
  • Components
    • Behaviors
      • Dummy
      • Optimal Reciprocal Collision Avoidance (ORCA)
      • Hybrid Velocity Obstacle (HRVO)
      • Human-like (HL)
      • Social Force
    • Behavior Modulations
      • Limiting the acceleration
      • Limiting the twist
      • Motorized Wheels PID
      • Relaxation
    • Kinematics
      • Omni-directional
      • Ahead
      • Two-wheeled differential drive
      • Two-wheeled differential drive with limited torque
      • Four-wheeled omnidirectional drive
      • Bicycle
    • State Estimations
      • Geometric with limited range
      • Discs
      • Odometry
      • Lidar
      • Boundary
      • Local GridMap
      • Marker
    • Tasks
      • Direction
      • Waypoints
      • GoToPose
      • Path
    • Scenarios
      • Antipodal
      • Corridor
      • Cross
      • Cross Torus
  • Background Information
    • Two-wheeled kinematics
    • Accessors
    • Attributes vs Properties
  • Reference
    • Core
      • C++ API
        • Types
        • Geometry
        • Auto registration
        • Attributes
        • YAML
        • Kinematics
        • Target
        • Behaviors
        • Environment State
        • Computing collisions
        • Social margin
        • Behavior Modulations
        • Controller
        • Helpers
        • Build info
      • Python API
        • Geometry
        • Auto registration
        • Attributes
        • YAML
        • Kinematics
        • Target
        • Behaviors
        • Environment State
        • Computing collisions
        • Social margin
        • Behavior Modulations
        • Controller
        • Build info
      • YAML Schemas
        • Geometry
        • Registered components
        • Attributes
        • Kinematics
        • Social margin
        • Behavior Modulation
        • Environment State
        • Behavior
    • Simulation
      • C++ API
        • World
        • Agent
        • State estimations
        • Tasks
        • Sampling
        • Scenarios
        • Experiments
        • YAML
      • Python API
        • World
        • Agent
        • State estimations
        • Tasks
        • Sampling
        • Scenarios
        • Experiments
        • YAML
        • Plugins
        • Helpers
        • Visualization
      • YAML Schemas
        • Agent
        • Task
        • State estimation
        • World
        • Sampling
        • Scenario
        • Experiment
  • .rst

navground_sim

Contents

  • Dependencies
  • Libraries
    • navground_sim
  • Executables
    • info
      • Named Arguments
      • Example
    • echo
      • Positional Arguments
      • Named Arguments
      • Example
    • schema
      • Positional Arguments
      • Named Arguments
      • Example
    • plugins
      • Named Arguments
      • Example
    • sample
      • Positional Arguments
      • Named Arguments
      • Example (scenario)
      • Example (sampler)
    • run
      • Positional Arguments
      • Named Arguments
      • Example
    • navground
      • Example

navground_sim#

This package extend navigation playground with all you need to perform simulations and record data.

Dependencies#

  • navground_core the core library

  • GEOS for computational geometry

  • HighFive to write HDF5 files

Libraries#

navground_sim#

A C++ library to perform navigation simulations; see the API reference.

To use the library in a C++ CMake project:

  1. add the dependency in CMakeLists.txt

    find_package(navground_sim REQUIRED)
    # if using ament
    # ament_target_dependencies(<MYTARGET> navground_sim)
    # else
    target_link_libraries(<MYTARGET> PRIVATE navground_sim::navground_sim)
    
  2. include the appropriate headers in your code

    #include "navground/sim/world.h"
    

Executables#

info#

Lists registered components (behaviors, kinematics, behavior modulations, state estimations, tasks, and scenarios) implemented in C++.

usage: info [-h] [--no-plugins] [-v] [--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

-v, --version

show program’s version number and exit

--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 (float)
    max_angular_acceleration: 0 (float)
    policy_path:  (str)
    shared: false (bool)
    use_acceleration_action: false (bool)
Dummy
    environment:  (str)
HL
    aperture: 3.14159 (float)
...

echo#

Load and then print a YAML representation of an object (behavior, kinematic, behavior modulation, state estimation, task, scenarios, agent, world, experiment, sampler).

usage: echo [-h] [--no-plugins] [-v] [--chdir] [--type {bool,int,float,str,vector,[bool],[int],[float],[str],[vector]}] kind YAML

Positional Arguments#

kind

The kind of object to load: behavior, modulation, kinematics, state_estimation, task, scenario, world, agent, experiment, sampler

YAML

YAML string, or path to a YAML file, describing an experiment

Named Arguments#

--no-plugins

Do not load plugins

-v, --version

show program’s version number and exit

--chdir

Whether to change working directory to the directory containing the file. Useful when the config contains relative paths.

--type

Possible choices: bool, int, float, str, vector, [bool], [int], [float], [str], [vector]

The sampled type

Example#

$ echo scenario "{type: Corridor, agent_margin: 0.25, width: 2}"

type: Corridor
add_safety_to_agent_margin: true
agent_margin: 0.25
length: 10
width: 2
obstacles:
  []

schema#

Print JSON-Schema of YAML-convertible navground sim classes.

usage: schema [-h] [--no-plugins] [-v] [--register] [--type TYPE]
              [{kinematics,scenario,agent,core,experiment,sim,world,behavior_modulation,behavior,task,state_estimation}]

Positional Arguments#

kind

Possible choices: kinematics, scenario, agent, core, experiment, sim, world, behavior_modulation, behavior, task, state_estimation

The target type of the scheme

Named Arguments#

--no-plugins

Do not load plugins

-v, --version

show program’s version number and exit

--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 sim

$id: http://navground/sim
$schema: https://json-schema.org/draft/2020-12/schema
$defs:
  vector2:
    type: array
    items:
      type: number
    minItems: 2
    maxItems: 2
    $id: http://navground/vector2
    $schema: https://json-schema.org/draft/2020-12/schema
  line_segment:
    type: array
    items:
      $ref: vector2
    minItems: 2
    maxItems: 2
    $id: http://navground/line_segment
    $schema: https://json-schema.org/draft/2020-12/schema
  disc:
...

plugins#

Load and list plugins.

usage: plugins [-h] [-v] [--dependencies]

Named Arguments#

-v, --version

show program’s version number and exit

--dependencies

Display dependencies of C++ plugins

Example#

$ plugins

navground_demos
---------------
Scenarios: ThymioDemo

navground_examples
------------------
Behaviors: Idle
Scenarios: Empty

sample#

Samples a world from a scenario containing components implemented in C++, or from a sampler.

usage: sample [-h] [--no-plugins] [-v] [--seed SEED] [--type TYPE] [--number NUMBER] [--chdir] YAML

Positional Arguments#

YAML

YAML string, or path to a YAML file, describing an experiment or a sampler

Named Arguments#

--no-plugins

Do not load plugins

Default: False

-v, --version

show program’s version number and exit

--seed

The random seed

Default: 0

--type

The sampled value

Default: ''

--number

The number of samples

Default: 1

--chdir

Whether to change working directory to the directory containing the file. Useful when the config contains relative paths.

Default: False

Example (scenario)#

$ sample "{type: Antipodal, groups: [{number: 2}]}"

Sampled world
=============

obstacles:
  []
walls:
  []
agents:
  - behavior:
      optimal_speed: 0
      optimal_angular_speed: 0
      rotation_tau: 0.5
      safety_margin: 0
      horizon: 5
      path_look_ahead: 1
      path_tau: 0.5
      radius: 0
      heading: velocity
      social_margin:
        modulation:
...

Example (sampler)#

$ sample "{sampler: uniform, from: 0, to: 10}" --type int --number 5

Sampled int
===========

0: 5
1: 0
2: 3
3: 3
4: 7

run#

Run an experiment limited to components implemented in C++.

usage: run [-h] [--no-plugins] [-v] [--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

-v, --version

show program’s version number and exit

--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 ...
Experiment done
Duration: 0.0362629 s
Saved to: "/tmp/experiment_1622124573627242003_2025-06-07_16-32-21/data.h5"

Note

Although individual runs execute in a single thread, we can speed up experiments consisting of multiple runs by parallelizing them. Check out the related guide to know more.

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 <command> [arguments]

instead of

$ install/lib/navground_sim/<command> [arguments]

Example#

$ navground run --help
Usage: run [--help] [--version] [--tqdm] [--run_index VAR] [--runs VAR] [--threads VAR] [--processes VAR] [--save_directory VAR] [--chdir] YAML

Runs an experiment.

Positional arguments:
  YAML              YAML string, or path to a YAML file, describing an experiment 

Optional arguments:
  -h, --help        shows help message and exits 
  -v, --version     prints version information and exits 
  --tqdm            Display tqdm bar 
  --run_index       Will overwrite the experiment own run_index if positive. [nargs=0..1] [default: -1]
  --runs            Will overwrite the experiment own runs if positive. [nargs=0..1] [default: -1]
  --threads         Number of threads [nargs=0..1] [default: 1]
  --processes       Number of processes [only supported by Python] [nargs=0..1] [default: 1]
  --save_directory  Where to save the experiment. If not specified, it reads the value from the configuration 
  --chdir           Whether to change working directory to the directory containing the file. Useful when the config contains relative paths
...

previous

navground_core_py

next

navground_sim_py

Contents
  • Dependencies
  • Libraries
    • navground_sim
  • Executables
    • info
      • Named Arguments
      • Example
    • echo
      • Positional Arguments
      • Named Arguments
      • Example
    • schema
      • Positional Arguments
      • Named Arguments
      • Example
    • plugins
      • Named Arguments
      • Example
    • sample
      • Positional Arguments
      • Named Arguments
      • Example (scenario)
      • Example (sampler)
    • run
      • Positional Arguments
      • Named Arguments
      • Example
    • navground
      • Example

By Jérôme Guzzi, IDSIA

© Copyright 2023, Jérôme Guzzi, IDSIA.