- Overview
- Setup
- Usage
- Scene Validation
- Additional Documentation
- Troubleshooting
- Acknowledgements
- Apache 2 Open Source License
The ILE ("Interactive Learning Environment") Scene Generator is used to generate training scenes for MCS Eval 5 and beyond. The intent of the ILE is to allow teams to train on concepts core to common sense reasoning, like physics, occlusion, navigation, localization, agency, and more. Test scenes will be comprised of combinations of these concepts, and the simulation environment (or the "world") is the same for both training (via the ILE) and testing. Please note the ILE does not rely on the hypercube designs that the MSC evaluation team uses to generate its test scenes.
The ILE runs using a YAML config file to set scene options. To see all config file properties, please review the ILE_API.md documentation.
Please note that we consider our "passive" tasks to be a subset of our "interactive" tasks. Therefore the Interactive Learning Environment is also built to support generating training scenes for passive tasks as well.
The ILE outputs JSON files in the MCS scene format to be run with the machine_common_sense python library and corresponding Unity build.
If you wish to request a new feature or report a bug, please post on the MCS Slack tagging @ta2devs
, or this GitHub repository's Issues page.
Please use Python 3.8+
From this folder, create a virtual environment and activate it.
python3 -m venv --prompt scene_gen venv
source venv/bin/activate
python -m pip install --upgrade pip setuptools wheel
python -m pip install -r requirements.txt
You may need to install testresources
:
sudo apt install python3-testresources
pre-commit install
To see all of the scene generator's options:
python ile.py --help
Common arguments:
-c <config>
(optional): ILE YAML config file-n <number>
(optional): Number of output scene files to generate-p <prefix>
(optional): Filename prefix of all output scene files
Example:
python ile.py -c ile_config.yaml -n 10 -p scene
Changelog:
- Added novel objects for Eval 7.
Changelog:
- Addressed various issues with "hooked" and "isosceles" tools:
- Added information to the ILE_API about the "isosceles" tools (hooked tools with two equal sides).
- Fixed bugs with generating hooked and isosceles tools using the
shortcut_target_lava_tool
config option, causing them to start positioned colliding with the target object (soccer ball). - Fixed
tool_offset_backward_from_lava
so that it works correctly with hooked and isosceles tools. - Updated
ile_configs/tools.yaml
with more comments.
- Added the
size
property to theholes
andlava
config options for generating contiguous holes and/or pools of lava composed of multiple 1x1 areas.- Updated
ile_configs/navigation_2d.yaml
to use the newsize
property. - Added
ile_configs/tool_with_more_lava.yaml
to demonstrate adding extra pools of lava in a scene that has theshortcut_lava_target_tool
config option enabled.
- Updated
- Changed
tool_rotation
(in theshortcut_lava_target_tool
config option) to default to a random rotation ([0, 45, 90, 135, 180, 225, 270, 315]
) rather than0
. - Updated the
check_valid_path
config option to alternatively accept a string object label to use rather than the "target" object label (which continues to be the default). Furthermore,check_valid_path
can now validate paths to multiple objects in the scene if necessary. - Updated the
performer_starts_near
global config option and thedistance_between_performer_and_tool
property (in theshortcut_target_lava_tool
config option) to support varying min/max ranges that will adjust based on the room's dimensions. See the ILE_API for details.
Changelog:
- Updated
ile_configs/interactive_knowledgeable_agents.yaml
to depict both of the simulation-controlled agents rotating 180 degrees at the start of each scene
Changelog:
- Added
ile_configs/interactive_knowledgeable_agents.yaml
- Added the
knowledgeable_agent_pair
option to generate a pair of knowledgeable and non-knowledgeable agents. - Added the
placers_with_decoy
option to generate a pair of placers, one of which being a decoy. - Added the
structural_notched_occluders
option to generate notched occluders (like in the Knowledgeable Agents task). - Added the
empty_placer
option to configure placers which don't hold, pick up, and/or move anything else. - Added the
surrounded_by_lava
andsurrounding_lava_size
options, previously only available for interactable objects, for configuring tools surrounded by lava. - Added the
surrounding_safe_zone
option for configuring safe zones around tools and interactable objects which are surrounded by lava. - Added the
wall_height
option for configuring triple door occluders. - Agents configured to point at an object now correctly rotate to face that object before starting to point.
- Agents configured to point at an object positioned underneath them now point at a downward angle.
- Agents configured to point at an object which is moved by a placer now point at that object's new position.
- Doors may now have knobs on the right side and open to the left.
Changelog:
- Added ILE example configs for Eval 7 tasks:
ile_configs/interactive_hidden_set_rotation.yaml
ile_configs/interactive_multi_tool_use.yaml
- Added "isosceles" tools for tool tasks: similar to "hooked" tools, which have one side of exactly length 3, and one side of variable length, "isosceles" tools have two sides of equal length.
- Added
adjacent_corner
keyword forkeyword_location
options to position an object in the corner of the room. - Added
align_with
option in ToolConfig to position a tool in alignment with another object. - Added
labels
option to AgentConfig and KeywordObjectsConfig to set custom labels on those entities. - Added
materials
option in ToolConfig to set tool color/texture. By default, this is randomized among all available tool materials (currently: grey, brown, green, or pink). - Added
no_projectile
option in StructuralDropperConfig and StructuralThrowerConfig to generate droppers/throwers without projectiles. - Added
projectile_dimensions
option in StructuralDropperConfig and StructuralThrowerConfig to generate random projectiles with specific dimensions. - Added
surrounded_by_lava
andsurrounding_lava_size
options in InteractableObjectConfig and ToolConfig to automatically surround an object with lava. - Added new open-topped container objects (like trash bins and lidless crates) for Spatial Reorientation and other scenes.
- Updated
ile_configs/interactive_arithmetic.yaml
andile_configs/interactive_number_comparison.yaml
to have occluders that come down at the start of the scene. See the comments in these files for more information, including instructions on how to remove them if desired. - Updated
ile_configs/interactive_spatial_reference.yaml
to correctly "freeze" the performer agent until everything else in the scene stops moving. - Updated
ile_configs/interactive_collision.yaml
andile_configs/interactive_trajectory.yaml
to generate rooms of varying depths. - Updated
ile_configs/interactive_imitation.yaml
to rotate containers similarly to the eval scenes. - Updated
ile_configs/interactive_moving_target_prediction.yaml
to useshortcut_start_on_platform
. - Updated
ile_configs/interactive_spatial_reorientation.yaml
to have the correct starting Z position for the performer agent, as well as the correct black "blocking walls" on top of the platform. - Bug fix: Doors should always be different colors from their surrounding walls (including door occluder sections).
- Bug fix: Lids can now be placed on top of containers after they have been rotated.
- Bug fix: Rotations are allowed to be floats.
- Bug fix: Turntable (rotating_cog) material should default to GreyWoodMCS.
Changelog:
- Added
ile_configs/interactive_collision.yaml
andile_configs/interactive_trajectory.yaml
to generate training data for the Interactive Collision and Interactive Trajectory tasks. - Fixed a bug with open-topped buckets/containers accidentally falling over in some scenes.
- Fixed a bug with placers sometimes releasing an object too far above the ground (or platform), unintentionally causing the object to bounce.
- Fixed minor bugs in Seeing Leads to Knowing ILE scenes: ensure the placers exit your viewport before the agent begins moving toward a container; ensure the containers all have the same rotation.
- Fixed the width of the "blocking wall" used in some ILE scenes.
- Implemented a two-door-occluder (
shortcut_double_door_choice
) for the interactive collision and trajectory tasks. - Implemented the
adjacent_to_wall
config property forstructural_platforms
to always position them next to a room wall. Updated the "ramps" example config file to use this option. - Implemented the
freeze_while_moving
config option to "freeze" the performer agent until one or more specified objects are completely finished moving (like placers and turntables). Updated the Arithmetic, Set Rotation, and Shell Game example config files to use this option. - Implemented the
long_with_two_ramps
config property forstructural_platforms
to generate a platform bisecting the room. Updated the "ramps" example config file to use this option. - Implemented support for "broken" and "inaccessible" as the
tool_type
of theshortcut_lava_target_tool
config option. Added new shortcut sub-properties to control the position of the tool. - Randomly colored walls will no longer be assigned the same colors used for placers (cyan/magenta).
Changelog:
- Added
ile_confgs/interactive_arithmetic.yaml
for generating training data for the Arithmetic (Addition/Subtraction) task. Added theforced_choice_multi_retrieval_target
andmove_down_only
config properties to support these scenes. - Added
ile_confgs/passive_seeing_leads_to_knowing.yaml
for generating training data for the Seeing Leads to Knowing task. Added theshortcut_seeing_leads_to_knowing
config property to support these scenes. - Added the
end_rotation_after
config property for turntables, to set the total amount of degrees they should rotate rather than the number of steps. Updatedile_configs/interactive_set_rotation.yaml
. - Added the
occluder_gap
andoccluder_gap_viewport
config properties to set a specific distance (or range) between multiple occluders and/or the edge of the viewport in passive physics scenes. Updatedile_configs/passive_physics_fall_down.yaml
andile_configs/passive_physics_move_across.yaml
. - Added the
separate_lid_after
config property for containers with separate lids to "place" their lids after one or more other objects stop moving/rotating. - Added the
sidesteps
config property, primarily for generating training data for the Set Rotation task, which forces the performer agent to use Move and Rotate actions to circumnavigate a specific object. - Added many new config properties for placers, including:
activate_after
andactivate_on_start_or_after
, to activate them after one or more other objects stop moving/rotating;existing_object_required
, to prevent the ILE from generating a new object for a placer to hold;randomize_once
, to use the same randomized options for more than one placer;retain_position
, to prevent the ILE from moving an object when it is given to a new placer. - Fixed the mass of containers-with-separate-lids so they will not fall over.
- Fixed the size of chests in imitation scenes, and made sure the soccer ball was visible up near the ceiling before the correct sequence of actions was performed.
- Reduced the default maximum X/Z room size to 25, including for the holes, lava, ramps, and tools example configs, corresponding to a similar reduction in the upcoming evaluation dataset.
- Updated
ile_configs/interactive_shell_game.yaml
so sometimes two containers are moved, and sometimes the container(s) are moved before the target and lids are "placed" in/on the containers.
Changelog:
- Implemented asymmetric (a.k.a. "hooked" or "L-shape") tool shapes, and added the "tool_type" config option for the shortcut_lava_target_tool property to configure the type of tool.
- Implemented containers with separate lids that are placed onto them (shape="separate_container").
- Implemented devices that look like our "placers" but pick up or drag objects rather than placing them (see the "placers" property). Also added the "placed_object_above" config option for placers.
- Implemented new options for the shortcut_bisecting_platform property, including "is_short", "is_thin", and "other_platforms".
- Implemented "pointing" config option for agents.
- Added the restrict_open_objects property for generating Set Rotation and Shell Game scenes.
- Added the shortcut_imitation_task property for generating Imitation scenes.
- Added the shortcut_tool_choice property for generating Tool Choice scenes.
- Added the turntables_agent_non_agent_config property for generating Spatial Reference scenes.
- Fixed using min/max for
distance
inperformer_starts_near
. - Revised the "adjacent" keyword_location to work in global coordinates (using the new "adjacent_distance" property), rather than based on the position of the performer agent.
- Updated the "placers" ILE config file to include examples of "placers" picking up objects.
- Added new example ILE config files:
- Basic usage and core common sense concepts:
agent_pointing_at_hidden_target
container_with_separate_lid
- New evaluation tasks:
interactive_imitation
interactive_set_rotation
interactive_shell_game
interactive_spatial_reference
interactive_tool_choice
- Basic usage and core common sense concepts:
Changelog:
- Major changes to how all passive physics scenes are made, so they fully align with the evaluation data:
- Replaced the
passive_physics_floor: true
config option withpassive_physics_scene: true
, which automatically assigns theroom_dimensions
,performer_start_position
, and other properties for the scene. Please see the ILE API for more information. - Added the
passive_physics_setup
config property for thestructural_throwers
option, which sets the thrower's position and rotation to values used in our passive physics evaluation scenes. Possible choices include"roll_angled"
,"roll_straight"
, and"toss_straight"
. - Added the
passive_physics_throw_force: true
andpassive_physics_collision_force: true
config properties for thestructural_throwers
option, which sets the thrower'sthrow_force
to a value used in our passive physics evaluation scenes. We recommend against directly configuringthrow_force
for all passive physics scenes moving forward. - Added the
stop_position
confg property for thestructural_throwers
option, which sets the thrower'sthrow_force
based on movement data we have recorded for use in our passive physics evaluation scenes. Possible choices include setting specificx
andz
values, settingoffscreen: true
, or settingbehind
with an object label to make the thrown object come to a stop behind a specific object (an occluder). - Updated all of the passive physics ILE example config files, and added
passive_physics_move_behind.yaml
. - Internally, the ILE Scene Generator now sets the
"intuitive_physics": true
tag in all passive physics JSON scene files, which instructs our Unity environment to automatically configure the room to preset specificiations. This tag is used in all of our passive physics evaluation scenes.
- Replaced the
- Updated
goal
so that"multi retrieval"
(used in number comparison and arithmetic tasks) and"passive"
(used in seeing-leads-to-knowing tasks) are valid options for thecategory
. Also addedtargets
as a validgoal
property for Multi-Retrieval goals. Please see our Python API for more information on goals. - Added the
performer_starts_near
config option to ensure the performer agent always starts a specific distance away from a specific object (including containers, occluders, platforms, ramps, the target, etc.). - Added the
structural_turntables
config option to generate scenes containing rotating turntables (a.k.a. cogs). - Added the
position_relative_to_start
config property for theon_center
keyword_location
to position objects on top of turntables and other furniture. - Added the
adjacent_performer
keyword_location
to position objects adjacent to the performer agent. - Added the
along_wall
keyword_location
to position objects adjacent to a specific exterior room wall. - Added the
empty_placer
config property to theplacers
option to generate scenes containing empty placers (that do not hold any objects). - Added the
end_height_relative_object_label
config property to theplacers
option so placers can dynamically adjust their drop height based on another object's height. Updated the passive physics gravity support example ILE config file to use this property so it more closely aligns with the corresponding evaluation task. - Added the
distance_between_performer_and_tool
config property to theshortcut_lava_target_tool
option for setting a specific distance between the performer agent's starting position and the tool. - Added the
left_lava_width
andright_lava_width
config properties to theshortcut_lava_target_tool
option. - Added the
has_long_blocking_wall
config property to theshortcut_bisecting_platform
option. - Added the
num_targets_minus
config property for generating a number of interactable objects based on the number of targets (especially useful for Multi-Retrieval tasks). - Added the
side_wall_opposite_colors
andwall_material
config options for setting textures on exterior room walls. - Added the
trapezoidal_room
config option for generating scenes in trapezoidal rooms. - Added the
labels
,position
, androtation
config properties to thekeyword_objects
option. - Added the
look_at_center
config property to theteleports
option. - Improved error messages.
- Fixed minor bugs with placers.
- Added new example ILE config files:
- Basic usage and core common sense concepts:
multiple_targets
starts_near_object
turntable
- New evaluation tasks:
holes_with_agent
interactive_number_comparison
interactive_spatial_reorientation
lava_with_agent
ramps_with_agent
- Basic usage and core common sense concepts:
Changelog:
- Updated passive physics example YAML configs:
- Added the
passive_physics_floor: true
config option to lower the friction of the floor to the same amount that's used in the passive physics evaluation scenes. - Removed the second platform and second "placed" object from
passive_physics_gravity_support.yaml
to better align with the evaluation task. - Updated the room dimensions to depict deeper rooms used in Evaluation 5.
- Tweaked some
last_step
amounts to better align with the evaluation tasks.
- Added the
- Added the
rotate_cylinders
config option to automatically rotate cylindrical objects onto their rolling sides in thepassive_physics_collisions
example config. - Added the
opposite_x
andopposite_z
keyword locations and made use ofopposite_x
in theinteractive_agent_identification
example config to bring it in closer alignment with the setup for the corresponding evaluation task. - Updated the
passive_physics_collisions
example config to demonstrate how the static object can be positioned properly if you remove the occluder from the scene. - Fixed a bug with cylinders being made too thin in some scenes.
Changelog:
- Changed throwers to use "impulse" force mode by default; this is our recommended configuration moving forward. Please update your old thrower configurations (in your YAML files) to either use the
impulse: false
setting or adjust thethrow_force
setting (a good rule-of-thumb is to divide all of your non-impulse forces by 100). All of the example configs in this repository (the YAML files inile_configs/
) have been updated appropriately. For more information on force modes, please seeForceMode.Force
andForceMode.Impulse
in this documentation. - Created new example YAML configs for the agent identification and moving target prediction tasks.
- Added
movement
config option underspecific_agents
to set a specific or random movement (either walking or running) path for an simulation-controlled agent. - Added
auto_last_step
config option to setlast_step
relative to each scene's room dimensions. - Added
circles
config option to force the performer agent to rotate in a complete clockwise circle (by using only RotateRight actions) at specific action steps. - Added
performer_look_at
config option to make the performer agent start in a scene looking at a specific object. - Added
dimensions
config option for all interactable objects that can be used instead ofscale
to set an object's size. - Added
throw_force_multiplier
config option understructural_throwers
to set throw forces relative to each scene's room dimensions. - Added
has_blocking_wall
config option undershortcut_bisecting_platform
. - Added
auto_adjust_platforms
config option understructural_platforms
. - Fixed a bug where objects on top of containers held by placers (like the soccer ball in scenes generated with the interactive_support_relations.yaml config file) would fall and bounce rather than descending smoothly.
- Fixed a bug where holes and lava would be randomly positioned underneath other objects.
- Fixed a bug where scenes with manually-configured room dimensions and a random performer start position may cause the performer agent to start outside the room.
- Improved ILE startup time.
- Updated
shortcut_lava_room
config option to make use of thepartitionFloor
property recently introduced in MCS version 0.5.4. - Updated
ile_configs/collisions.yaml
so the performer agent always faces the target.
Changelog:
- Updated documentation and example configs, including: added new example configs corresponding to most new evaluation tasks; updated comments in existing example configs; restructured tables for example configs in the README; fixed bugs in the passive physics example configs to correctly drop objects behind occluders
- Added config options for generating agents in interactive scenes, either holding or not holding the retrieval target object (soccer ball)
- Updated the check_valid_path config option so it will now consider possible paths up and down ramps and across attached platforms
- Updated shapes allowed with droppers, placers, and throwers to include primitive types like triangles
- Added new containers for the support relations task
- Added config options to position objects relative to other objects
- Added a config option to randomize the target’s position via shortcut_lava_target_tool
- Added a config option to create a platform extension via shortcut_triple_door_choice
- Added an interactable object config option to generate objects with the same shape and size as another object
- Added a moving occluder config option to have the occluder move up again before last_step
- Added a placer config option to set its deactivation step
- Replaced the “rotation” thrower config option (for up/down rotation) with separate “rotation_y” and “rotation_z” config options to set both up/down and left/right rotation
- Improved error messages for delayed actions
- Fixed a bug where throwers with height 0 were incorrectly positioned inside the floor
- Fixed a bug where passive scenes were missing the goal’s “category” property
- Removed the shortcut_ramp_to_platform config option because it's redundant with recently-added platform options. To replace this in your configs, please use the following:
structural_platforms:
num: 1
attached_ramps: 1
Changelog:
- Added
check_valid_path
to generate scenes with a valid path between the performer agent's starting position and the retrieval target's position. Considers holes, lava, and all heavy objects in the scene. Does not currently consider ascending or descending ramps. - Added
identical_to
as a configurable property for interactable objects to make them identical to another random object in the scene with regard to shape, scale, and material (color/texture). - Added many new options for
structural_platforms
, including:lips
to add lips around the perimeter of the platform;attached_ramps
to add ramps attached to the platform;platform_underneath
andplatform_underneath_attached_ramps
to generate two-level platforms. - Added
open_topped_containers
as a possiblekeyword
option forkeyword_objects
. Thein
option forkeyword_location
now works for open-topped containers. - Added
shortcut_lava_room
to generate scenes with lava on both the left and right sides. - Added
shortcut_start_on_platform
to generate scenes with the performer agent starting on a specifically-labeled, randomly-positioned platform. - Added
shortcut_triple_door_choice
to generate "door occluders" like they will appear during the evaluation. - Added tool shapes and new options to configure tools, including:
tools
, for tools on their own;shortcut_lava_target_tool
, to generate a tool, an island completely surrounded by lava, and a retrieval target positioned on the island. - Created many new example config files and updated this README to map the evaluation tasks with useful configs.
- Generating a door now causes walls to be generated around the door.
- Fixed a bug with objects held by placers being set to the wrong height.
- Updated the max room dimensions to be 100 by 100.
Other Notes:
- Generated scenes should be run with MCS release version 0.5.5 or later.
- Areas of lava in scenes generated by ILE release 1.0 will not work correctly. If you wish to use old lava scenes, in their JSON files, please replace
floorTextures
withlava
, and update the property's format as described in our schema.
- Areas of lava do not yet impose a negative reward. We plan to implement this feature for a future release.
- All
soccer_ball
objects are restricted in scale to only values between 1 and 3 (inclusive). Invalidsoccer_ball
scale configurations will be ignored. The default scale for allsoccer_ball
objects isMinMaxFloat(min=1.0, max=3.0)
.
We've made some example ILE YAML configuration files to get you started.
List of example ILE configuration files for basic use cases:
- auto_generated_null_template.yaml Template config file containing all available options set to null (fall back to defaults). Automatically generated from source code documentation.
- door_occluder.yaml Generates scenes with an occluding wall containing three doors, a tall platform bisecting the room, and a randomly positioned soccer ball retrieval target.
- empty_room.yaml Generates scenes with no objects by overriding the default random generation behavior.
- forced_choice.yaml Generates scenes with the performer agent positioned on top of a tall platform bisecting the room and a randomly positioned soccer ball retrieval target.
- last_step.yaml Generates scenes with an action/step limit ("last step") scaled relative to the room's random dimensions.
- multiple_targets.yaml Generates scenes with four soccer ball multi retrieval targets.
- specific_object.yaml Generates scenes with a consistently sized and colored blue toy car object.
- starts_frozen.yaml Generates scenes in which the performer agent begins frozen for the first 5 to 100 steps.
- starts_look_rotate_only.yaml Generates scenes in which the performer agent begins able to only use the Look and Rotate actions for the first 5 to 100 steps.
- starts_near_object.yaml Generates scenes in which the performer agent begins at a specific distance from an object (either a ramp, a random container, or a soccer ball retrieval target).
- target_soccer_ball.yaml Generates scenes with a soccer ball retrieval target.
- two_kidnappings.yaml Generates scenes in which the performer agent is kidnapped on steps 501 and 550.
See the list of the Core Domains in our MCS BAA Table doc.
MCS Core Domains | Example Config Files |
---|---|
P1, P6, P7 | navigation_2d.yaml, navigation_3d.yaml |
P2, P3 | room_of_many_colors.yaml |
P4 | container_with_separate_lid.yaml, containment.yaml, occlusion_by_furniture.yaml, occlusion_by_structure.yaml |
O2 | collisions.yaml, throwers.yaml |
O3 | collisions.yaml, droppers.yaml, placers.yaml |
O4 | occlusion_by_furniture.yaml, occlusion_by_structure.yaml |
O6 | droppers.yaml, placers.yaml |
O8 | throwers.yaml |
A5 | agent_holds_target.yaml,agent_pointing_at_hidden_target.yaml |
P5 | turntable.yaml |
List of example ILE configuration files helpful for learning core common sense concepts:
- agent_holds_target.yaml Generates scenes with one interactive simulation-controlled agent holding the soccer ball retrieval target.
- agent_pointing_at_hidden_target.yaml Generates scenes with one interactive simulation-controlled agent pointing at a closed container in which the soccer ball retrieval target is hidden.
- container_with_separate_lid.yaml Generates scenes with a cuboid container which has a separate lid that is attached to the container by a placer.
- collisions.yaml Generates scenes with a randomly positioned soccer ball retrieval target and a rolled ball that may or may not collide with it.
- containment.yaml Generates scenes with many closed containers and a soccer ball retrieval target hidden inside one of the containers.
- droppers.yaml Generates scenes with many droppers and a soccer ball retrieval target held by one such device.
- navigation_2d.yaml Generates scenes with holes, walls, and lava as well as a randomly positioned soccer ball retrieval target.
- navigation_3d.yaml Generates scenes with holes, walls, lava, and platforms with ramps, as well as a randomly positioned soccer ball retrieval target.
- occlusion_by_furniture.yaml Generates scenes with many large objects and a soccer ball retrieval target either hidden behind an object or visible in front of an object.
- occlusion_by_structure.yaml Generates scenes with many large structures and a soccer ball retrieval target either hidden behind a structure or visible in front of a structure.
- placers.yaml Generates scenes with many placers (some placers will be empty, and some placers will instead pick up objects) and a soccer ball retrieval target held by one such device.
- room_of_many_colors.yaml Generates scenes with randomly colored outer room walls and areas of floor, as well as a soccer ball retrieval target.
- throwers.yaml Generates scenes with many throwers and a soccer ball retrieval target held by one such device.
- turntable.yaml Generates scenes with a turntable (cog), a container, and a soccer ball retrieval target; sometimes the soccer ball and/or the container are on top of the turntable; sometimes the soccer ball is hidden inside of the container; the turntable rotates either 90, 180, 270, or 360 degrees.
See the list of the Core Domains in our MCS BAA Table doc.
Eval 3.X Tasks:
Eval 3.X Task | MCS Core Domains | Example Config Files |
---|---|---|
Containers (Interactive) | P1, P4 | containment.yaml |
Gravity Support (Passive) | O6, P1 | passive_physics_gravity_support.yaml |
Obstacles (Interactive) | P1 | occlusion_by_furniture.yaml |
Occluders (Interactive) | O1, P1, P4 | occlusion_by_furniture.yaml |
Passive Object Permanence | O1, O4 | passive_physics_fall_down.yaml, passive_physics_move_across.yaml, passive_physics_move_behind.yaml |
Shape Constancy (Passive) | O1, O4 | passive_physics_fall_down.yaml |
Spatio-Temporal Continuity (Passive) | O1, O4 | passive_physics_move_across.yaml |
Eval 4 Tasks:
Eval 4 Task | MCS Core Domains | Example Config Files |
---|---|---|
Collisions (Passive) | O1, O2, O3 | passive_physics_collisions.yaml |
Interactive Object Permanence | O4 | interactive_object_permanence.yaml |
Eval 5 Tasks:
Eval 5 Task | MCS Core Domains | Example Config Files |
---|---|---|
Agent Identification (Interactive) | A5 | interactive_agent_identification.yaml |
Moving Target Prediction (Interactive) | O8 | interactive_moving_target_prediction.yaml |
Navigation: Holes (Interactive) | P7 | holes.yaml, holes_with_agent.yaml |
Navigation: Lava (Interactive) | P7 | lava.yaml lava_with_agent.yaml |
Navigation: Ramps (Interactive) | P6 | ramps.yaml ramps_with_agent.yaml |
Solidity (Interactive) | O3 | interactive_solidity.yaml |
Spatial Elimination (Interactive) | P4 | interactive_spatial_elimination.yaml |
Support Relations (Interactive) | O6 | interactive_support_relations.yaml |
Tool Use (Interactive) | O5 | tools.yaml, tool_with_more_lava.yaml |
List of example ILE configuration files for generating scenes similar to specific evaluation tasks:
- holes.yaml Generates scenes with many holes and a randomly positioned soccer ball retrieval target.
- holes_with_agent.yaml Generates scenes with many holes and a randomly positioned agent holding a soccer ball retrieval target.
- interactive_agent_identification.yaml Generates scenes similar to the interactive agent indentification eval tasks: start on a platform bisecting the room; an agent on one side of the platform; a static object on the other side of the room; must walk up to the agent and request for it to produce the target.
- interactive_moving_target_prediction.yaml Generates scenes similar to the interactive moving target prediction eval tasks: start on a platform; lava extending across both sides of the room; must first rotate in a 360 degree circle; then a thrower rolls a soccer ball from one end of the room toward the other; must predict the speed and trajectory of the soccer ball in order to intercept it efficiently.
- interactive_object_permanence.yaml Generates scenes similar to the interactive object permanence eval tasks: start on a platform bisecting the room; an L-occluder on each side; and a thrower that tosses the soccer ball into the room.
- interactive_solidity.yaml Generates scenes similar to the interactive solidity eval tasks: start on a platform bisecting the room; a placer holding the soccer ball descends from the ceiling; a door occluder descends from the ceiling; the placer releases the soccer ball so it falls somewhere behind the door occluder.
- interactive_spatial_elimination.yaml Generates scenes similar to the interactive spatial elimination eval tasks: start on a platform bisecting the room; an occlusing wall on each side; and a soccer ball either in front of or behind an occluding wall.
- interactive_support_relations.yaml Generates scenes similar to the interactive support relations eval tasks: start on a platform bisecting the room; placers holding a container with the soccer ball descend from the ceiling; a door occluder descends from the ceiling; the placers release the container so it and the soccer ball land either fully, partially, or not on the platform.
- lava.yaml Generates scenes with many pools of lava and a randomly positioned soccer ball retrieval target.
- lava_with_agent.yaml Generates scenes with many pools of lava and a randomly positioned agent with a soccer ball retrieval target.
- passive_physics_collisions.yaml Generates scenes similar to passive physics collisions eval tasks: same view; similarly sized and positioned moving-and-rotating occluders; multiple objects, possibly colliding; only able to use Pass actions.
- passive_physics_gravity_support.yaml Generates scenes similar to passive physics gravity support eval tasks: same view; one similarly sized and positioned platform; one placer lowering an object into the scene, possibly above the platform, and then releasing it; only able to use Pass actions.
- passive_physics_fall_down.yaml Generates scenes similar to passive physics eval tasks with objects falling down: same view; similarly sized and positioned moving-and-rotating occluders; multiple objects falling into the scene; only able to use Pass actions.
- passive_physics_move_across.yaml Generates scenes similar to passive physics eval tasks with objects moving across: same view; similarly sized and positioned moving-and-rotating occluders; multiple objects moving across the scene; only able to use Pass actions.
- passive_physics_move_behind.yaml Generates scenes similar to passive physics eval tasks with objects moving and stopping behind occluders: same view; similarly sized and positioned moving-and-rotating occluder; one object moving across the scene; only able to use Pass actions.
- ramps.yaml Generates scenes with ramps leading up to platforms and a soccer ball retrieval target either on top of the platform or on the floor adjacent to the platform.
- ramps_with_agent.yaml Generates scenes with ramps leading up to platforms and an agent with a soccer ball retrieval target.
- tools.yaml Generates scenes with a large moveable block tool and a soccer ball retrieval target completely surrounded by lava.
- tool_with_more_lava.yaml Generates scenes with a large moveable block tool and a soccer ball retrieval target completely surrounded by lava, along with extra pools of lava that may obstruct your path to the tool.
Eval 6 Tasks:
Eval 6 Task | MCS Core Domains | Example Config Files |
---|---|---|
Arithmetic (Interactive) | O7 | interactive_arithmetic.yaml |
Collisions (Interactive) | O2 | interactive_collision.yaml |
Imitation (Interactive) | A7 | interactive_imitation.yaml |
Navigation: Holes (Interactive) | P7 | New variations with agents; see the Eval 5 Tasks above |
Navigation: Lava (Interactive) | P7 | New variations with agents; see the Eval 5 Tasks above |
Navigation: Ramps (Interactive) | P6 | New variations with agents; see the Eval 5 Tasks above |
Number Comparison (Interactive) | O7 | interactive_number_comparison.yaml |
Seeing Leads to Knowing (Passive) | A6 | passive_seeing_leads_to_knowing.yaml |
Set Rotation (Interactive) | P5 | interactive_set_rotation.yaml |
Shell Game (Interactive) | P5 | interactive_shell_game.yaml |
Spatial Reference (Interactive) | A7 | interactive_spatial_reference.yaml |
Spatial Reorientation (Interactive) | P2, P3 | interactive_spatial_reorientation.yaml |
Trajectory (Interactive) | O2 | interactive_trajectory.yaml |
Tool Choice (Interactive) | O5 | interactive_tool_choice.yaml |
Tool Use (Interactive) | O5 | New variations with asymmetric (hooked) tools; see the Eval 5 Tasks above |
List of example ILE configuration files for generating scenes similar to specific evaluation tasks:
- interactive_arithmetic.yaml Generates scenes similar to the interactive arithmetic (addition/subtraction) eval tasks: start on a platform bisecting the room; zero or more soccer balls are positioned on each side of the room; one or more soccer balls are either added to, or removed from, the same side of the room; pick up all of the soccer balls on the side of the room containing the most soccer balls; sometimes occluders descend to obstrct your view of the final number of soccer balls.
- interactive_collision.yaml Generates scenes similar to the interactive collision eval tasks: start on a platform, with lava bisecting the room; a thrower rolls a green ball that may or may not collide with a soccer ball; a two-door-occluder descends from the ceiling to obstruct your view of the collision/trajectory; you can only open one door and must determine which side of the room contains the soccer ball.
- interactive_imitation.yaml Generates scenes similar to the interactive imitation eval tasks. See the config file for details.
- interactive_number_comparison.yaml Generates scenes similar to the interactive number comparison eval tasks: start on a platform bisecting the room; one or more soccer ball multi-retrieval targets on one side; fewer soccer balls on the other side.
- interactive_set_rotation.yaml Generates scenes similar to the interactive set rotation eval tasks: start in a room with one or more identical containers positioned on top of a turntable (giant cog); a soccer ball retrieval target is placed inside a container; lids are placed on all containers; the turntable rotates between 90 and 360 degrees (alternatively, the performer agent is forced to move around the turntable between 90 and 360 degrees).
- interactive_shell_game.yaml Generates scenes similar to the interactive shell game eval tasks: start in a room with one or more identical containers; a soccer ball retrieval target is placed inside a container; lids are placed on all containers; a placer drags the target's container to a new location.
- interactive_spatial_reference.yaml Generates scenes similar to the interactive spatial reference eval tasks: start on a platform bisecting the room; identical closed containers on both sides; an agent walks and points at the container hiding the soccer ball retrieval target; a turntable (giant cog) rotates a non-agent object so it "points" at a container, which may be the same container, or the opposite container.
- interactive_spatial_reorientation.yaml Generates scenes similar to the interactive spatial reorientation eval tasks: start on a platform bisecting the room; identical bins on either side of the room; a placer drops a soccer ball retrieval target into one bin; the performer agent is kidnapped and sometimes teleported to the other side of the room; sometimes one room wall is a different color, and/or the room is trapezoidal.
- interactive_trajectory.yaml Generates scenes similar to the interactive trajectory eval tasks: start on a platform, with lava bisecting the room; a thrower rolls the soccer ball; a two-door-occluder descends from the ceiling to obstruct your view of the full trajectory; you can only open one door and must determine which side of the room contains the soccer ball.
- interactive_tool_choice.yaml Generates scenes similar to the interactive tool choice eval tasks: start on a platform bisecting the room; soccer balls surrounded by lava on both sides; one side has a useful tool, but the other side does not have a tool, or has a tool that is too small to use.
- passive_seeing_leads_to_knowing.yaml Generates scenes similar to the passive seeing leads to knowing eval tasks. See the config file for details.
Eval 7 Tasks:
Eval 7 Task | MCS Core Domains | Example Config Files |
---|---|---|
Hidden Set Rotation (Interactive) | O1, O4, P5 | interactive_hidden_set_rotation.yaml |
Knowledgeable Agents (Interactive) | TODO | interactive_knowledgeable_agents.yaml |
Multi-Tool-Use (Interactive) | O5 | interactive_multi_tool_use.yaml |
- interactive_hidden_set_rotation.yaml Generates scenes similar to the interactive hidden set rotation eval tasks: start in a room with one or more identical containers positioned on top of a turntable (giant cog); a soccer ball retrieval target is placed inside a container; lids are placed on all containers; a giant "tube occluder" occludes the turntable and containers while the turntable rotates between 90 and 360 degrees (alternatively, the performer agent is forced to move around the turntable between 90 and 360 degrees).
- interactive_knowledgeable_agents.yaml Generates scenes similar to the interactive knowledgeable agents eval tasks: start in a room with platforms, two containers, two agents, and a soccer ball retrieval target; one agent is looking at the containers (knowledgeable), and the other is not (non-knowledgeable); an occluder comes down, and then two placers come down, moving the soccer ball into one of the two containers; the knowledgeable agent points at the container holding the soccer ball, and the non-knowledgeable agents points at a random container.
- interactive_multi_tool_use.yaml Generates scenes similar to the interactive multi tool use eval tasks: a soccer ball retrieval target starts in a corner of the room and surrounded by lava; a hooked tool starts in the middle of the room and surrounded by lava; a rectangular tool starts somewhere in the room; you must first use the rectangular tool to push the hooked tool out from the lava, then use the hooked tool to pull the soccer ball out from the lava.
In the MCS
repository, in the scripts
folder, use one of the following scripts to run all of the new scenes, depending on if you're running an interactive or passive (intuitive physics, agents, etc.) hypercube.
- run_interactive_scenes.py to load each scene (JSON file) starting with a given prefix and rotate in a circle.
- run_passive_scenes.py to load each scene (JSON file) starting with a given prefix and pass until the scene is finished.
python run_interactive_scenes.py <mcs_unity_app> <file_path_prefix>
python run_passive_scenes.py <mcs_unity_app> <file_path_prefix>
(Please see the scripts README for more information.)
If you're validating scenes that you just made, and they're all in this folder, then the <file_path_prefix>
will be <mcs-scene-generator>/<prefix>
, where <prefix>
is the filename prefix that you used to run the scene generator.
This material is based upon work supported by the Defense Advanced Research Projects Agency (DARPA) and Naval Information Warfare Center, Pacific (NIWC Pacific) under Contract No. N6600119C4030. Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the DARPA or NIWC Pacific.
Code in this repository is made available by CACI (formerly Next Century Corporation) under the Apache 2 Open Source License. You may freely download, use, and modify, in whole or in part, the source code or release packages. Any restrictions or attribution requirements are spelled out in the license file. For more information about the Apache license, please visit the The Apache Software Foundation’s License FAQ.
Copyright 2022 CACI