navground_core#
This package contains the core implementation of the navigation playground.
Dependencies#
- Eigen3 >= 3.3 for linear algebra 
- yaml-cpp for reading and writing YAML snippets 
- arparse for CLI 
Libraries#
navground_core#
A C++ library with navigation algorithms, controllers, and kinematics, see the API reference.
To use the library in a C++ CMake project:
- add the dependency in - CMakeLists.txt- find_package(navground_core REQUIRED) # if using ament # ament_target_dependencies((<MYTARGET> navground_core) # else target_link_libraries(<MYTARGET> PRIVATE navground_core::navground_core) 
- include the appropriate headers in your code - #include "navground/core/behavior.h" 
Executables#
info#
Lists registered components (behaviors, kinematics, and behavior modulations) implemented in C++.
usage: info [-h] [--no-plugins] [-v] [--build] [--properties] [--description] [--behaviors [BEHAVIORS]] [--kinematics [KINEMATICS]]
            [--modulations [MODULATIONS]]
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 
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, or behavior modulation).
usage: echo [-h] [--no-plugins] [-v] [--chdir] kind YAML
Positional Arguments#
- kind
- The kind of object to load: behavior, modulation, kinematics 
- 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. 
Example#
$ echo kinematics "{type: 2WDiff}"
type: 2WDiff
max_backward_speed: 0
max_forward_speed: .inf
wheel_axis: 1
max_speed: .inf
max_angular_speed: .inf
schema#
Print JSON-Schema of YAML-convertible navground core classes.
usage: schema [-h] [--no-plugins] [-v] [--register] [--type TYPE] [{kinematics,core,behavior_modulation,behavior}]
Positional Arguments#
- kind
- Possible choices: kinematics, core, behavior_modulation, behavior - 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 core
$id: http://navground/core
$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_examples
------------------
Behaviors: Idle [C++]