Skip to content
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

Added IO Gripper Control and Configuration Messages, Services, and Actions #164

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 6 commits
Commits
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
4 changes: 4 additions & 0 deletions control_msgs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ set(msg_files
msg/SingleDOFStateStamped.msg
msg/SteeringControllerStatus.msg
msg/SpeedScalingFactor.msg
msg/IOGripperSensor.msg
)

set(action_files
Expand All @@ -48,11 +49,14 @@ set(action_files
action/JointTrajectory.action
action/PointHead.action
action/SingleJointPosition.action
action/Gripper.action
action/SetGripperConfig.action
)

set(srv_files
srv/QueryCalibrationState.srv
srv/QueryTrajectoryState.srv
srv/SetConfig.srv
)

rosidl_generate_interfaces(${PROJECT_NAME}
Expand Down
6 changes: 6 additions & 0 deletions control_msgs/action/Gripper.action
Copy link
Member

Choose a reason for hiding this comment

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

This custom Gripper action maybe should be renamed to IOGripperCommand.

@bmagyar the reason to have a separate action here is that this kind of gripper has only open/close states, and nothing can be controlled much. Usually, those are the pneumatic ones so some cylinders are moving somehow, but we can not control intermediate states, i.e., "positions".

Looking at the existing Actions and having, e.g., JointState as input to the action (as done in ParallelGripperAction could be possible, but confusing and inconvenient. Possibly as a secondary interface, but as of now I don't see the usability of it, as we would command something implicitly that we cannot control.

Copy link
Author

Choose a reason for hiding this comment

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

Thanks for the suggestion. I have updated the interface names.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
bool open
Copy link
Member

Choose a reason for hiding this comment

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

What if you want to control the percentage of the closure?

Copy link
Author

Choose a reason for hiding this comment

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

That's a good idea. I will update it.

Copy link
Member

@destogl destogl Jan 2, 2025

Choose a reason for hiding this comment

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

@saikishor in this case you cannot control the percentage of the closure. As there are IOs controlled behind it and usually pneumatic gripper that might have different states, but those are then different IOs, in most cases those have only 2 states, open and close and not a chance to detect anything in between.

What here might be interesting, that we have different states besides open and close as we have 2 closed states and then we can set the target state of the gripper - bit this smells a lot to the configuration, so I am not sure if we should go this way, but rather we should keep only two states that we can command: open and close.

---
bool success
string message
---
uint8 state
6 changes: 6 additions & 0 deletions control_msgs/action/SetGripperConfig.action
Copy link
Member

@destogl destogl Jan 2, 2025

Choose a reason for hiding this comment

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

@bmagyar
There is no similar Action as of now. The IO Gripper might be quite complex, to have different configurations that are independent of open/close functionality. For example, configuration to grasp narrower and wider objects. In this case, the configuration has to be set before the grasping (and planning) as the collision model of the gripper changes by moving a degree of freedom through configuration.

Independently of configuration, the open/close stays the same, i.e., moving some other joints, but overall kinematics changes depending on the gripper configuration.

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
string config_name
---
bool result
string status
---
uint8 state
1 change: 1 addition & 0 deletions control_msgs/msg/IOGripperSensor.msg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
bool state
4 changes: 4 additions & 0 deletions control_msgs/srv/SetConfig.srv
Copy link
Member

Choose a reason for hiding this comment

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

same comment as for the action.

Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
string config_name
Copy link
Member

Choose a reason for hiding this comment

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

How do you configure just based on string?. I think It is missing some documentation

Copy link
Member

Choose a reason for hiding this comment

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

@sachinkum0009 please add in general documentation about all fields in the message. Add those as comments at the begin of the message.

Copy link
Author

Choose a reason for hiding this comment

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

general documentation about all fields in the message added.

---
bool result
string status
Loading