-
Notifications
You must be signed in to change notification settings - Fork 0
Release 3 #44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release-2
Are you sure you want to change the base?
Release 3 #44
Conversation
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
…able segmentation
Change direction of arrow
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.
Added instructions for running object and table segmentation, including parameters and example commands.
Added instructions for running table height predictor and floor detection, along with results and methodology.
Predicts the Height of varying heights of Table
Added Action Server for Perception
Added instructions for launching perception and running action vision manager.
There was a problem hiding this 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 | |||
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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'
| from ultralytics import YOLO | ||
| from ultralytics.engine.results import Boxes | ||
| import torch | ||
| import cv2 |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| @@ -0,0 +1,56 @@ | |||
| import rclpy | |||
| from rclpy.node import Node | |||
| from sensor_msgs.msg import Image, PointCloud2, PointField | |||
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| from sensor_msgs.msg import Image, PointCloud2, PointField | ||
| from cv_bridge import CvBridge | ||
| import numpy as np | ||
| import struct |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| import struct | ||
| import sensor_msgs_py.point_cloud2 as pc2 | ||
| from transforms3d.quaternions import mat2quat | ||
| from tf2_ros import TransformBroadcaster |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| node = YoloDetectorNode() | ||
| try: | ||
| rclpy.spin(node) | ||
| except KeyboardInterrupt: |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| node = FloorDetectorNode() | ||
| try: | ||
| rclpy.spin(node) | ||
| except KeyboardInterrupt: |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| # 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: |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| node = TableHeightNode() | ||
| try: | ||
| rclpy.spin(node) | ||
| except KeyboardInterrupt: pass |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
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.
| if self.use_synthetic: | ||
| frame = self.synthetic_frame.copy() | ||
| # Add some noise or movement? | ||
| pass |
Copilot
AI
Dec 17, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unnecessary 'pass' statement.
No description provided.