Scenic - Probabilitistic Scenario Generator

Using Scenic Probabilistic Language to generate randomized scenarios for operational development testing of simulators.
Explore the docs »

Report Bug · Request Feature

Table of contents

About the project

Scenic is a domain-specific probabilistic programming language for modeling the environments of cyber-physical systems like robots and autonomous cars. A Scenic program defines a distribution over scenes, configurations of physical objects and agents; sampling from this distribution yields concrete scenes which can be simulated to produce training or testing data. Scenic can also define (probabilistic) policies for dynamic agents, allowing modeling scenarios where agents take actions over time in response to the state of the world.

Tool flow using scene improvisation to train, test, and debug a cyber-physical system.

Generating Probabilistic Scenes

Links for reference:

Classes

Scenic provides a few important classes used for creating Scenic scenarios. This link contains a full list of specifiers. This table describes the properties for each of these classes.

Scenic Output

The “output” of a Scenic program is two fold, a scene describing a configuration of physical objects, and a policy defining how those objects behave over time.

Pipeline

graph TD
  create_assets[Create assets] --> setup_colliders[Setup colliders]
  setup_colliders -->|*.bytes| create_asset_bundles[Create asset bundles]
  create_asset_bundles -->|CSV| get_asset_information[Get asset information]
  get_asset_information -->|scenic.model| create_scenic_model[Create scenic model]
  create_scenic_model -->|*.scenic| create_scenic_scene[Create scenic scene]
  create_scenic_scene -->|*.json| generate_scenes[Generate scenic scenes]
  generate_scenes -->|JSON|generate_obstacle_config[Generate obstacle configuration]
  generate_obstacle_config--> unity[Spawner script in Unity]

Results

demo-scenario

References