Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ set(msg_files
)

set(srv_files
"srv/BatchSpawnEntities.srv"
"srv/DeleteEntity.srv"
"srv/GetAvailableWorlds.srv"
"srv/GetCurrentWorld.srv"
Expand Down
2 changes: 2 additions & 0 deletions msg/SimulatorFeatures.msg
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ uint8 WORLD_UNLOADING = 43 # Supports UnloadWorld interface
uint8 WORLD_INFO_GETTING = 44 # Supports GetCurrentWorld interface
uint8 AVAILABLE_WORLDS = 45 # Supports GetAvailableWorlds interface

uint8 SPAWNING_BATCH = 50 # Support batch spawning (SpawnEntities)

uint16[] features # A list of simulation features as specified by the list above.

# A list of additional supported formats for spawning, which might be empty. Values may include
Expand Down
42 changes: 42 additions & 0 deletions srv/BatchSpawnEntities.srv
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Spawn entities (a robot, other object) by name or URI in a batch.
# Support for this interface is indicated through the SPAWNING_BATCH value in GetSimulationFeatures.

string names[] # A list of names given to every entity
# If string is empty, a name field in the uri file or resource_string will be used,
# if supported and not empty (e.g. "name" field in SDFormat, URDF).
# If the name is still empty or not unique (as determined by the simulator),
# the service returns a generated name in the entity_name response field if the
# allow_renaming field is set to true. Otherwise, the service call fails and an
# error is returned.
bool allow_renaming[] # Determines whether the spawning succeeds with a non-unique name.
# If it is set to true, the user should always check entity_name response field
# and use it for any further interactions. Number of elements have to match Number
# of elements in names.

Resource entity_resources[] # List of resources such as SDFormat, URDF, USD or MJCF file, a native prefab, etc.
# Valid URIs can be determined by calling GetSpawnables first.
# Check simulator format support via the spawn_formats field in GetSimulatorFeatures.
# Using resource_string is supported if GetSimulatorFeatures includes
# the SPAWNING_RESOURCE_STRING feature. Number of elements have to match Number
# of elements in names.

string entity_namespaces[] # Spawn entities with theirs interfaces under those namespaces. Number of elements have to match Number
# of elements in names.
geometry_msgs/PoseStamped initial_poses[] # Array of initial poses for every enttiy.
# The header contains a reference frame, which defaults to global "world" frame.
# This frame must be known to the simulator, e.g. of an object spawned earlier.
# The timestamp field in the header is ignored. Number of elements have to match Number
# of elements in names.

---

# Additional result.result_code values for this service. Check result.error_message for further details.

uint8 BATCH_SPAWN_MISMATCH = 110 # There is a mismatch in number of elements in names, allow_renaming, entity_resources,
# entity_namespaces, initial_poses.
uint8 BATCH_SPAWN_FAILED = 120 # There was at least one failed spawn request. Check individual results in results.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should these error codes start from a larger number (e.g. 150 or 200) so that there's more room for error codes in

# Additional result.result_code values for this service. Check result.error_message for further details.
uint8 NAME_NOT_UNIQUE = 101 # Given name is already taken by entity and allow_renaming is false.
uint8 NAME_INVALID = 102 # Given name is invalid in the simulator (e.g. does not meet naming
# requirements such as allowed characters). This is also returned if name is
# empty and allow_renaming is false.
uint8 UNSUPPORTED_FORMAT = 103 # Format for uri or resource string is unsupported. Check supported formats
# through GetSimulatorFeatures service, in spawn_formats field.
uint8 NO_RESOURCE = 104 # Both uri and resource string are empty.
uint8 NAMESPACE_INVALID = 105 # Namespace does not meet namespace naming standards.
uint8 RESOURCE_PARSE_ERROR = 106 # Resource file or string failed to parse.
uint8 MISSING_ASSETS = 107 # At least one of resource assets (such as meshes) was not found.
uint8 UNSUPPORTED_ASSETS = 108 # At least one of resource assets (such as meshes) is not supported.
uint8 INVALID_POSE = 109 # initial_pose is invalid, such as when the quaternion is invalid or position
to expand? Also, any reason why the two error codes are incremented by 10?


Result result # If all spawning request succeeded it will give RESULT_OK or BATCH_SPAWN_FAILED
Result results[] # Individual spawn request results. Supported return codes are in SpanwEntity.srv.
string entity_names[] # List of names of spawned entities, guaranteed to be unique in the simulation.
# If allow_renaming is true, it may differ from the request name field.