Outfeed objects from the workcell
Outfeeds are designated areas that define how objects are removed from the belief world. They are the analogs to spawners, designed to remove an object from the belief world once the process is complete. Objects should be removed from the belief world once they become irrelevant to the running solution. Here are examples of situations that might require outfeeds:
- An object leaves the workcell via a conveyor belt
- A neighboring robot picks an object from the workspace
- A bin of objects is removed based on a signal received by another service
- A human removes a part from the workspace after being prompted by an HMI
Outfeeds can be placed anywhere in the world; their defined bounds determine which contained objects are removed: If the position of an object is within the bounds of the outfeed, then it is removed both from the belief world and the simulated world.
Add outfeed service
First, ensure a solution is running on a physical workcell or simulator.
-
In the services tab, select Add a service
-
Select the Basic Object Outfeed from the dialog.
-
Assign an expressive name to the outfeed in the new dialog window, such as
outfeed. This service has no configuration.noteUpdate the service asset to the latest version if you see the deprecated
position_bounding_boxfield in the service configuration.
Configure your behavior tree to outfeed objects
Add a Remove Objects skill
In your behavior tree, add a node with the the remove_object skill from the
catalog. This is the point in your behavior tree where objects will be removed
from the belief world and the simulator. In the Inputs tab, select your
outfeed service as the parameter for the Remove_object constraint.
Configure the outfeed bounds
Outfeeds determine which objects to remove by identifying those that fall within
their defined bounds. These bounds are an axis-aligned bounding
box, centered at the origin and sized according to its extents.
The outfeed's coordinate frame is specified by the bounds_center parameter of
the remove_object skill. While this can be any frame or object in the scene,
it's typically parameterized by a dedicated outfeed_frame that the user defines.
As an example, if the bounds of the outfeed are defined by the default
(1, 1, 1), then this represents outfeed extents modeled by a 1m cube in the
outfeed's coordinate frame, which has a vertex at (-0.5, -0.5, -0.5) and
another at (0.5, 0.5, 0.5). Note, the bounds may be set to cover the entirety
of the workcell to effectively remove objects regardless of location.
Conversely, if any of the extents of the bounds are zero, then no object will be
removed. These properties can be used with
data flow to
dynamically change the behavior of the outfeed.
Configure the outfeed's target objects
Ths remove_object skill removes objects from the belief world based on a
search_prefix. Any object whose name begins with this prefix will be removed
if it falls within the bounds specified by the skill. The object need not be
fully-contained within the bounds, as only the object's origin is checked
against the outfeed volume.
This behavior is useful in coordination with a
spawner that may generate many objects
with a particular prefix. For example, if we generate three objects named
object_1, object_2, and object_3, we can eliminate all of these with the
outfeed by specifying the search_prefix to be simply "object". Note, if the
search_prefix is empty, then all objects within the bounds will be removed.