Skip to content
Merged
Changes from 1 commit
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
7e4bb27
Install cuda.
Jelmerdw Jun 10, 2025
c539978
Make script executable.
Jelmerdw Jun 10, 2025
3ef8214
Rename.
Jelmerdw Jun 10, 2025
c612513
Clone graspnet-baseline repo in docker.
Jelmerdw Jun 10, 2025
e59a709
Switch to our graspnet fork.
Jelmerdw Jun 10, 2025
464a5df
Fix dependencies.
Jelmerdw Jun 12, 2025
077eba4
Merge branch 'main' into 204-graspnet
Jelmerdw Jun 16, 2025
dd7e494
Update dependencies.
Jelmerdw Jun 17, 2025
486c586
Add demo.
Jelmerdw Jun 23, 2025
4ff80ab
Merge branch 'main' into 204-graspnet
Jelmerdw Jun 30, 2025
216330a
Create ros node.
Jelmerdw Jun 30, 2025
99828b3
Remove demo.
Jelmerdw Jun 30, 2025
aed89d2
Fix ty.
Jelmerdw Jun 30, 2025
e740307
Update dependencies to fix deprecated sklearn.
Jelmerdw Jul 1, 2025
c6d32e8
Add ros2-numpy to uv.
Jelmerdw Jul 1, 2025
22ff861
Use base frame instead of world frame.
Jelmerdw Jul 1, 2025
1f39847
Place rviz marker on generated grasp pose.
Jelmerdw Jul 1, 2025
b066a91
Set fr3_hand_tcp asp end-effector link.
Jelmerdw Jul 7, 2025
cf5b16d
Add scipy-stubs to uv.
Jelmerdw Jul 7, 2025
aeea6f5
Use graspnet pose as goal_pose.
Jelmerdw Jul 7, 2025
423e600
Merge remote-tracking branch origin/main into 204-graspnet
MaxWaterhout Sep 19, 2025
0b379c9
remove cuda from container
MaxWaterhout Sep 19, 2025
a7ed304
WIP
MaxWaterhout Sep 19, 2025
643fd6e
Remove rcdt_grasping package and update moveit_manager to change fram…
MaxWaterhout Sep 19, 2025
871ccdd
Refactor dependencies: move graspnet-related packages to a separate g…
MaxWaterhout Sep 19, 2025
f5a35e4
Refactor code structure for improved readability and maintainability
MaxWaterhout Sep 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Place rviz marker on generated grasp pose.
Signed-off-by: Jelmer de Wolde <[email protected]>
  • Loading branch information
Jelmerdw committed Jul 1, 2025
commit 1f39847d5927716b483d41e5883acf791bf9c9d8
37 changes: 36 additions & 1 deletion ros2_ws/src/rcdt_grasping/src_py/generate_grasp.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,14 @@
import numpy as np
import open3d as o3d
import rclpy
import ros2_numpy as rnp
import torch
from graspnetAPI import GraspGroup
from geometry_msgs.msg import Pose
from graspnetAPI import Grasp, GraspGroup
from graspnetpy_models.graspnet import GraspNet, pred_decode
from graspnetpy_utils import data_utils
from open3d.visualization.draw import draw
from rcdt_messages.srv import AddMarker
from rcdt_utilities.cv_utils import ros_image_to_cv2_image
from rcdt_utilities.launch_utils import spin_node
from rclpy.node import Node
Expand Down Expand Up @@ -75,6 +78,9 @@ def __init__(self) -> None:
super().__init__("grasp")
self.init_net()
self.create_service(Trigger, "/grasp/generate", self.callback)
self.marker_client = self.create_client(
AddMarker, "/franka/moveit_manager/add_marker"
)

self.color = Message(topic="/franka/realsense/color/image_raw", msg_type=Image)
self.depth = Message(
Expand Down Expand Up @@ -215,15 +221,44 @@ def callback(
Returns:
Trigger.Response: The response indicating success or failure of the grasp generation.
"""
# Get ROS messages:
if not self.get_messages():
response.success = False
response.message = "Failed to retrieve messages."
return response

# Define cloud and grasps:
end_points, cloud = self.process_data()
grasps = self.get_grasps(end_points)
grasps.nms()
grasps.sort_by_score()
grasp: Grasp = grasps[0]

# Define rotation matrix and rotate to match ROS orienation:
rotation_matrix = np.array(grasp.rotation_matrix).reshape(3, 3)
adapted_rotation_matrix = rotation_matrix @ np.array(
[[1, 0, 0], [0, 0, 1], [0, -1, 0]]
)

# Create transformation matrix:
transformation_matrix = np.identity(4)
transformation_matrix[:3, :3] = adapted_rotation_matrix
transformation_matrix[:3, 3] = grasp.translation
transformation_matrix[3, :] = [0, 0, 0, 1]

# Add marker to the Rviz:
add_marker = AddMarker.Request()
add_marker.marker_pose.header.frame_id = (
"franka/realsense/camera_color_optical_frame"
)
add_marker.marker_pose.pose = rnp.msgify(Pose, transformation_matrix)
self.get_logger().info(f"Pose: {add_marker.marker_pose.pose}")
self.marker_client.call_async(add_marker)

# Visualize grasps in Open3D:
self.visualize_grasps(grasps, cloud)

# Return response:
response.success = True
response.message = "Grasps generated and visualized successfully."
return response
Expand Down
Loading