I have a scene setup in Isaac Sim 4.0 which has a robotic arm that uses a SurfaceGripper.
I want to output the state of the surface gripper (open or closed) in ROS2 similar to how JointStates are output in ROS2.
Based on what I understand I can add elements to the action graph so that on Simulation Playback Tick I read the state of gripper and send it to ROS2 output.
What are other alternative solutions?
I thought of creating a joint the mimics the state of the surface gripper by querying surface gripper state and applying it to join articulation controller and this allows me to leverage the native ROS2 JointStates node, but that seems like a hack and I don’t think I could have joints on non-rigid bodies that are only for visualization
To query the Surface Gripper instance in your current scene, you can refer to the documentation for the Surface_Gripper class. This includes methods such as is_closed(), which checks if the gripper is currently closed. You can find more details in Surface_gripper [omni.isaac.surface_gripper] — isaac_sim 4.1.0-rc.7 documentation.
Ok, I will take another look at using this SurfaceGripper class with my existing solution.
I was initially concerned about having two owners or initializers of the gripper prims and their control.
SurfaceGripper ActionGraph Node
SurfaceGripper Python Class
I thought since the action graph solution is already working for me, if I attempted to also setup using the python class it might cause redundant initialization which could possibly decrease performance for conflict with existing operations a subtlety break something, so I didn’t invest time.
I do think your suggestion is the correct solution though I will mark it.
Thanks!