Skip to content
Open
Show file tree
Hide file tree
Changes from all 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 shape_msgs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ find_package(geometry_msgs REQUIRED)
find_package(rosidl_default_generators REQUIRED)

set(msg_files
"msg/Bounds.msg"
"msg/Mesh.msg"
"msg/MeshTriangle.msg"
"msg/Plane.msg"
Expand Down
25 changes: 25 additions & 0 deletions shape_msgs/msg/Bounds.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Bounds which are useful in several contexts, e.g. to avoid spawning with other object overlap,
# or parking in a spot that is too small.
# Certain goals or points might be valid for a small object, but not suitable for a large one,
# or a differently shaped one.
# Bounds can be also checked to ensure certain scenario conditions are met.
# For entities, these limits are relative to entity's canonical link transform, following ROS rep-103 convention.

# As bounds are optional in most interfaces, TYPE_EMPTY signifies empty bounds, to be understood as "unbounded".
# Otherwise, the fields are expected to define a valid volume.
# For spawning with a named pose, you should check whether the entity simulation model fits within the bounds
# before calling SpawnEntity, to avoid overlaps and unstable behavior.

# bounds type
uint8 TYPE_EMPTY = 0 # No bounds. The points vector will be empty.
uint8 TYPE_BOX = 1 # Axis-aligned bounding box, points field should have two values,
Copy link
Contributor

Choose a reason for hiding this comment

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

What frame is the axis aligned bounding box aligned to?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's an entirely reasonable question, and looking back, there is no frame specification anywhere. @adamdbrw was there a conversation about this in ros-simulation/simulation_interfaces#1

Choose a reason for hiding this comment

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

It is specified:
For entities, these limits are relative to entity's canonical link transform, following ROS rep-103 convention.

# which are upper right and lower left corners of the box.
uint8 TYPE_CONVEX_HULL = 2 # Points define a convex hull (at least 3 non-collinear points).
uint8 TYPE_SPHERE = 3 # A sphere with center and radius. First element of points vector is the center.
# The x field of the second point of the vector is the radius (y and z are ignored).


uint8 type
geometry_msgs/Vector3[] points # Points defining the bounded area. Check type field to determine semantics.
# Valid sizes are zero (no bounds), 2 (sphere or box, depending on type field),
# and 3 or more (convex hull).