Skip to main content

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.

  1. In the services tab, select Add a service

  2. Select the Basic Object Outfeed from the dialog.

  3. Assign an expressive name to the outfeed in the new dialog window, such as outfeed. This service has no configuration.

    note

    Update the service asset to the latest version if you see the deprecated position_bounding_box field 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.