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.
Summary
Addresses #224
The PR introduces impact detection in the place action (based on force measurements), which contributes to a more intelligent execution of the action. As suggested in the issue description, the robot first goes to a designated pose and then moves its arm down until it detects impact with the placing surface, at which point the object is released. Only force measurements along the z-axis of the base are taken into account for impact detection.
Tests to verify the functionality
I did some tests with the HSR as a proof of concept. Due to the built-in safety features of the HSR, the impact that the arm makes with the surface has to be quite small, so the arm was only allowed to move down at the default low speed. Impacts were detected successfully for objects with different weights, which suggests that the procedure is general and transferable across objects.
A video showing the functionality in action can be found on the b-it-bots channel.
TODOs before merging
Test with objects grasped in a top-down fashion. In the initial tests, the z-axis of the sensor coincided with the z-axis of the base, so I didn't have to worry about transforming the measurements, but this might be necessary when the sensor axes are rotatedAfter thinking about this for a while, I think it would be better to address this point with a separate PR; placing after a top-down grasp is a new feature that will require its own testspickup_action
) that will allow a release action - just as before - to be performed as well (for instance, impact-based placing is not suitable for drawers or containers) - This has been resolved by adding a new Boolean field to the goal (release_on_impact
), which can be used to control whether to detect impact on placing