Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New feature implementation
Implemented feature
This PR adds a simulation plugin for simulating carts / trolleys that can be attached and towed around by a robot.
Implementation description
The plugin uses the dispenser / ingestor workflow but is slightly different from the normal dispenser usecase.
Specifically, a cart has to be able to be both "dispensed" (i.e. picked up from the robot) and "ingested" (dropped off). Hence it behaves as both a dispenser and ingestor.
The implementation itself uses
DetachableJoint
components to attach the robot to the cart when a dispenser request is received, to detach it when an ingestor request is received. It also published dispenser and ingestor states / responses to integrate with the rest of the RMF stack.A few implementation caveats:
attachable_cart
model positioning to make sure the robot is in a feasible position. For example for an item that is towed, the model should be just behind the navgraph waypoint, for an item that the robot picks up from the bottom they should sit on top of each other.At the moment the plugin is only implemented for
gz
.