# Dealing with robot as obstacle in octomap

My goal is to be able to point a camera (eye-on-base style) to the pick&place scene and extract the table, and regions where placing is happening (to avoid coding the scene statically via moveit::CollisionObjects). Those seem to be feasible via PointCloud Library.

I'm however having issues with the robot being seen in the octomap as an obstacle to itself: either the calibration isn't perfect (I used easy_handeye while waiting for the moveit assistant integrated one) or the camera isn't too precise. I tried enhancing the octomap resolution thinking maybe the extra voxels would become small enought to be included in the robot arm: it's either not helping (the octomap still contains some extra voxels which impede arm movement) or blocking the system completely (too much load on the cpu).

I'm thinking I'd like to:

• map the pick&place station with the robot in motion, and, after a set amount of time, keep only the obstacles which never moved; this would leave me with a fixed occupancy map to load, and I could leave the eye-on-base camera to just detect people passing by and trying to get hurt via e.g. a CNN;
• mount an eye-on-hand camera and do something similar to the very first part of this video;
• extract the robot from the poincloud (seems the most unfeasible option);

I cannot find other ways to deal with this. In the meanwhile I'm investigating rtabmap regarding the first bullet point (even though it seems more suited for mobile robots, I think it could work) and waiting on a component manufacturing process in regards to the second bullet point.

Is there someone from the community that has a lead on how it's been previously done?

edit retag close merge delete

For rtabmap, you could only use rtabmap node by setting odom_frame_id parameter to "base_link" (base frame of your robot) with RGBD/AngularUpdate and RGBD/LinearUpdate parameters set to 0 to make it add new data even if the robot doesn't move. You can also set Kp/MaxFeatures to -1 to disable loop closure detection. Make sure TF between the camera and the base is correctly updated.