Skip to content

Conversation

@vamsikalagaturu
Copy link

No description provided.

Mohsin-Ali-Mirza and others added 30 commits November 3, 2025 14:28
Removed RGBD and color/depth enabling options from launch command.
Updated input mode handling and point cloud topic subscriptions. Improved empty spot finding logic and added error handling for plane segmentation.
Implemented a scoring system which would favour spots far from the objects, but also close to the center of the table
Make sure the placed object would fit into the table
Updated README to focus on table segmentation and removed sections related to object detection and pose estimation.
Removed unused console scripts for OpenCV nodes.
Added instructions for running object segmentation and updated table segmentation command.
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This is a major "Release 3" that adds significant new functionality to the perception and robotics system, including table height prediction, table segmentation for object placement, action server infrastructure, and tool detection capabilities.

Key Changes

  • New table_height_predictor package: Implements table height estimation using YOLO-World and SAM models with RANSAC-based floor detection
  • Enhanced perception capabilities: Adds table segmentation, object segmentation with sphere approximation, and action-based vision pipeline management
  • Action server infrastructure: Introduces custom ROS 2 action interfaces and vision manager for coordinated perception tasks
  • Tool detection training: Includes training scripts and demo code for YOLOv8 model fine-tuning
  • Documentation: Adds comprehensive feature readmes for new capabilities

Reviewed changes

Copilot reviewed 49 out of 128 changed files in this pull request and generated 25 comments.

Show a summary per file
File Description
src/table_height_predictor/table_height_predictor/table_height_node.py Implements table height estimation using YOLO-World, SAM, and RANSAC for floor detection
src/table_height_predictor/table_height_predictor/floor_detector_node.py Provides floor plane segmentation from point clouds using Open3D RANSAC
src/perception/perception/table_segmentation.py Finds empty spots on tables for object placement using plane segmentation and collision checking
src/perception/perception/segment_object.py Segments objects and approximates them as spheres for collision avoidance
src/perception/perception/action_yolo_object_detection.py YOLO detection node with lifecycle management via service toggle
src/perception/perception/action_pose_pca.py Pose estimation node with PCA-based orientation and lifecycle management
src/perception/perception/action_vision_manager.py Action server that coordinates YOLO and pose estimation nodes with temporal averaging
src/my_robot_interfaces/action/RunVision.action Custom action definition for vision pipeline execution
src/perception/setup.py Updates console script entry points for new perception nodes
Feature_Readme/*.md Documentation for table height, table segmentation, action server, and tool detection features

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -0,0 +1,22 @@
### Running Table Height
```code
ros2 run table_height_predictor table_heigt
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

Typo in command: 'table_heigt' should be 'table_height'

Copilot uses AI. Check for mistakes.
from ultralytics import YOLO
from ultralytics.engine.results import Boxes
import torch
import cv2
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

Import of 'cv2' is not used.

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,56 @@
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Image, PointCloud2, PointField
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

Import of 'PointField' is not used.

Copilot uses AI. Check for mistakes.
from sensor_msgs.msg import Image, PointCloud2, PointField
from cv_bridge import CvBridge
import numpy as np
import struct
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

Import of 'struct' is not used.

Copilot uses AI. Check for mistakes.
import struct
import sensor_msgs_py.point_cloud2 as pc2
from transforms3d.quaternions import mat2quat
from tf2_ros import TransformBroadcaster
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

Import of 'TransformBroadcaster' is not used.

Copilot uses AI. Check for mistakes.
node = YoloDetectorNode()
try:
rclpy.spin(node)
except KeyboardInterrupt:
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
node = FloorDetectorNode()
try:
rclpy.spin(node)
except KeyboardInterrupt:
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
# Sanity Check: Floor must be visibly lower (higher Y value) than table
if floor_y_at_table < t_y + 0.1:
floor_y_at_table = None # Invalid, floor appeared above table
except:
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
node = TableHeightNode()
try:
rclpy.spin(node)
except KeyboardInterrupt: pass
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

'except' clause does nothing but pass and there is no explanatory comment.

Copilot uses AI. Check for mistakes.
if self.use_synthetic:
frame = self.synthetic_frame.copy()
# Add some noise or movement?
pass
Copy link

Copilot AI Dec 17, 2025

Choose a reason for hiding this comment

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

Unnecessary 'pass' statement.

Copilot uses AI. Check for mistakes.
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
@Robots4Sustainability Robots4Sustainability deleted a comment from Copilot AI Dec 17, 2025
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.

4 participants