YAML Schemas
PyRoboSim worlds can be created using the Python API, but can also loaded from YAML files.
Specifically, each world draws from a set of location and object metadata files.
Worlds themselves can be created programmatically, or defined using world YAML files.
For the programmatic approach, you can create a world as follows either using set_metadata or add_metadata.
from pyrobosim.core import Robot, World
world = World()
# locations and objects can accept either a single file path or a list of file paths.
world.add_metadata(
locations=[
"/path/to/location_data1.yaml",
"/path/to/location_data2.yaml"
],
objects=[
"/path/to/object_data1.yaml",
"/path/to/object_data2.yaml"
]
)
# Then, you can add the other entities
world.add_robot(...)
world.add_room(...)
world.add_hallway(...)
world.add_location(...)
world.add_object(...)
For the YAML approach, you can directly point to the location and object metadata in the world YAML file itself.
metadata:
locations: /path/to/location_data.yaml
objects: /path/to/object_data.yaml
Then, the world can be loaded from file as follows.
from pyrobosim.core import WorldYamlLoader
world = WorldYamlLoader().from_file("/path/to/world_file.yaml")
Refer to the following sections for more details on the schemas.