navground_core_py#
This package provides Python bindings to the core library.
Dependencies#
navground_core the C++ library
Python >= 3.7 the Python runtime
pybind11 for binding the C++ library
This fork of pybind11_mkdoc to extract Python docstrings from the C++ code
NumPy pybind11 exposes Eigen objects using numpy
PyYAML to exchange (YAML) schemas between C++ and python
Python packages#
navground.core#
A Python package with navigation algorithms, controllers, and kinematics, see the API reference.
To use the package
add the install path to
PYTHONPATH
import the package
from navground import core
Libraries#
navground_core_py#
A C++ headers-only library with utilities for Python bindings for internal use.
Executables#
info#
Lists registered components (behaviors, kinematics, and behavior modulations). It is equivalent to the C++ version but with additional components implemented in Python.
usage: info [-h] [--no-plugins] [--build] [--properties] [--description] [--behaviors [BEHAVIORS]] [--kinematics [KINEMATICS]]
[--modulations [MODULATIONS]]
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
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, or behavior modulation). 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
- 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 behavior "{type: PyDummy}"
type: PyDummy
dummy: true
tired: false
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:
type: constant
default: 0
schema#
Print JSON-Schema of YAML-convertible navground core classes. It is equivalent to the C++ version but with additional components implemented in Python.
usage: schema [-h] [--no-plugins] [--register] [--type TYPE] [{behavior,behavior_modulation,core,kinematics}]
Positional Arguments#
- kind
Possible choices: behavior, behavior_modulation, core, kinematics
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 core
$defs:
behavior:
$id: http://navground/behavior
$ref: behavior_register
$schema: https://json-schema.org/draft/2020-12/schema
properties:
heading:
enum:
- target_point
- target_angle
- target_angular_speed
- velocity
- idle
horizon:
minimum: 0
type: number
kinematics:
$ref: kinematics
modulations:
items:
...
validate#
Validates a YAML representation of an object (behavior, kinematic, or behavior modulation) against the schema generated by schema using python-jsonschema.
usage: validate [-h] [--no-plugins] {behavior,behavior_modulation,kinematics} YAML
Positional Arguments#
- kind
Possible choices: behavior, behavior_modulation, kinematics
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#
Catching a typo like “whel_axis” instead of wheel_axis:
$ validate kinematics "{type: 2WDiff, whel_axis: 1.0}"
Unevaluated properties are not allowed ('whel_axis' was unexpected)
Failed validating 'unevaluatedProperties' in schema:
{'type': 'object',
'unevaluatedProperties': False,
'properties': {'type': {'type': 'string'},
'max_speed': {'type': 'number'},
'max_angular_speed': {'type': 'number'}},
'$id': 'http://navground/kinematics',
'$schema': 'https://json-schema.org/draft/2020-12/schema',
'$ref': 'kinematics_register'}
On instance:
{'type': '2WDiff', 'whel_axis': 1.0}
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_examples
------------------
Behaviors: Idle [C++]
navground.core#
Instead of
$ install/lib/navground_core_py/<command> [arguments]
you can call the subcommand (info
) from Python, like
$ python -m navground.core [sub-command] [arguments]