The servo_node would allow the robot to move right up till the point of collision, which would sometimes result in real-world collisions due to mismatches between the planning scene and real world or due to the servo node not being able to stop in time.
As the robot moves closer to the Octomap, the Octomap's default self-filtering starts thinking the colliding voxels are part of the robot arm and removes them from the Octomap.
This PR addresses that in two ways:
Start decelerating servo at 1cm from collision.
Remove the scaling and padding offset on the Octomap, so that it only removes voxels that directly overlap with the robot, not in an expanded radius around the robot. (Note: this means that the camera calibration needs to be good, to prevent detected robot voxels from appearing as collisions.)
As of ada_feeding#135 and PRL's fork of moveit2 (branch:
amaln/main
), we were facing two issues with theservo_node
respecting the Octomap:This PR addresses that in two ways: