Skip to content

rm pick plane - #974

Merged
Fernando94654 merged 3 commits into
mainfrom
rm-plane
May 21, 2026
Merged

rm pick plane#974
Fernando94654 merged 3 commits into
mainfrom
rm-plane

Conversation

@Fernando94654

@Fernando94654 Fernando94654 commented May 15, 2026

Copy link
Copy Markdown
Contributor

Removed plane collision; the octomap is enough. Also reduced padding_offset to maintain octomap voxels around the objects.

WhatsApp.Video.2026-05-15.at.12.41.49.PM.mp4

@Fernando94654
Fernando94654 requested a review from a team as a code owner May 15, 2026 18:39
max_range: 1.5
point_subsample: 1
padding_offset: 0.1
padding_offset: 0.02

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add a short comment justifying this value? Going from 0.1 to 0.02 is a 5× reduction and without context someone is going to "fix" it back later.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

Comment on lines 56 to 57
rclcpp::Client<frida_interfaces::srv::RemovePlane>::SharedPtr
remove_plane_client;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RemovePlane cleanup is half-done here. The calls were removed from the pick flow, but:

  • The remove_plane_client member declaration and create_client / wait_for_service(30s) are still in place.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The remove_plane_client is still actively used in the place workflow via place_service_callback. The cleanup only removed it from the pick workflow. In the place flow, the plane is not added to MoveIt's planning scene as a collision object, the extracted plane cloud is passed directly to the heatmap service to compute the optimal placement point on the table surface, so the self-filtering concern doesn't apply here.

Comment on lines 66 to 68
this->remove_plane_client =
this->create_client<frida_interfaces::srv::RemovePlane>(
REMOVE_PLANE_SERVICE);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

this->add_pick_primitives_client->wait_for_service(
std::chrono::seconds(30));
RCLCPP_INFO(this->get_logger(), "Service add_pick_primitives ready");
this->remove_plane_client->wait_for_service(std::chrono::seconds(30));

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

.

sensor_msgs::msg::PointCloud2::SharedPtr cloud) {

auto req_extract_table =
std::make_shared<frida_interfaces::srv::RemovePlane::Request>();

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is still a live RemovePlane call inside place_service

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the goal of this PR is to deprecate the RemovePlane service, please finish removing it here too. If not, that is fine but note that the constructor will block the node for 30 s on startup whenever the RemovePlane service isn't running.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Heads-up: check_feasibility was acting as a cheap belt-and-suspenders against grasps falling below the table. With it gone, the entire safety net is MoveIt + the octomap. If for any reason the octomap doesn't contain the table at the moment of planning (occlusion, late TF, dropped frames, sensor restart), we no longer have a fallback that rejects the grasp.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would it be worth keeping a minimal floor-guard based on base_link.z (or a fixed world-z threshold), independent of the plane primitive? It would cost almost nothing and cover the failure mode where the octomap is momentarily empty.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This verification is not necessary because the octomap already detects collision objects, and both MoveIt and GPD reject collision grasps.

self.get_logger().info(f"Plane object found: {obj.id}")
self.plane = obj

def attach_pick_object(self):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Previously this method dropped any collision object that sat below the detected plane (if self.plane is not None and self.object_in_plane(obj, self.plane)). With the plane gone, ghost objects from perception that show up below the table will now stay in the planning scene and could end up attached to the EEF.
Can you confirm that the perception side no longer produces those false positives? If it still does, we'll need an equivalent filter (e.g., absolute z threshold) before this is safe to merge.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These false positives are no longer a problem

@Fernando94654 Fernando94654 changed the title rm plane rm pick plane May 21, 2026

@JLDominguezM JLDominguezM left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Fernando94654
Fernando94654 merged commit 838e1c2 into main May 21, 2026
6 checks passed
biweep863 pushed a commit that referenced this pull request May 22, 2026
* rm plane

* add comment

* add padding scale
CamilaTite26 pushed a commit that referenced this pull request May 23, 2026
* rm plane

* add comment

* add padding scale
CamilaTite26 pushed a commit that referenced this pull request May 23, 2026
* rm plane

* add comment

* add padding scale
@Fernando94654
Fernando94654 deleted the rm-plane branch May 26, 2026 19:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants