Mobility
config type that controls the motion of a robot. The Mobility
config type goes through many iterations—parameters
are added or deprecated (creating new config schemas for the config type) and given different
values (creating new config instances for the config type).
The Mobility
config type is not a particular instantiation of parameters or a particular specification of constraints. Instead, it is the parameters responsible for configuring the motion of a robot at any point in an application’s lifecycle.
hardware
tag type could be used to group devices based on their hardware:
Raspberry Pi 4 Model B
NVIDIA Jetson Orin Nano
NVIDIA Jetson Orin AGX
environment
tag type could group devices based on their stage of development:
Dev
QA
Beta
Stable
accelerometer
tag type could define a tag for each accelerometer:
Accelerometer 1
Accelerometer 2
Accelerometer 3
Accelerometer 4
hardware
tag type.
For example, say robots powered by the NVIDIA Jetson Orin Nano
can support the
jump
and spin
features but not the backflip
feature. This information can be
stored as metadata for the NVIDIA Jetson Orin Nano
tag.
robot_id
metadata we
showed above.
hardware
tag type may
have the following metadata schema to specify the features (jump, spin, backflip)
supported by a given hardware.
hardware
tag type can only store metadata that adheres to the
hardware
metadata schema.
Metadata schemas look eerily similar to config schemas but serve a different purpose.
A metadata schema does not describe or enforce any constraints on the config instances
that are deployed to devices. Metadata schemas only describe what constitutes valid
metadata, effectively structuring the metadata stored for devices and tags.
hardware
override example.
supports_jump
, supports_spin
, and
supports_backflip
fields in the metadata schema for the hardware
tag type.
Overrides are completely named and defined by you. An override does not need to specify
all the fields in a config schema, only a subset of the config schema fields. However,
it cannot specify fields not present in the config schema.
Overrides can only be evaluated given a particular tag. For instance, the
features.jump
, features.spin
, and features.backflip
fields in the hardware
override reference the supports_jump
, supports_spin
, and supports_backflip
fields
in the metadata schema for the hardware
tag type.
Given the NVIDIA Jetson Orin Nano
tag, the hardware override would use
features.jump: true
features.spin: true
features.backflip: false
NVIDIA Jetson Orin Nano
tag has
supports_jump: true
supports_spin: true
supports_backflip: false
features.spin
from false
to true
.
Overrides are hierarchically evaluated to determine the config instance for a particular device. The device’s tags determine the specific values referenced by overrides.