-
Notifications
You must be signed in to change notification settings - Fork 74
Feature/joint wrench msgs #221
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: master
Are you sure you want to change the base?
Conversation
- [REF] Modified old organization of the message to introduce only two message definitions: JointWrenchTrajectory and JointWrenchTrajectoryPoint - [REF] Adjust CMakeLists.txt to adapt to the new changes
…oryPoint messages
…to feature/joint_wrench_msgs
…intWrenchTrajectory.action
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.
Thanks the addition. I have some minor comments
int32 OLD_HEADER_TIMESTAMP = -3 | ||
int32 PATH_TOLERANCE_VIOLATED = -4 | ||
int32 GOAL_TOLERANCE_VIOLATED = -5 | ||
int32 TRAJECTORY_ABORTED = -6 |
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.
please add a description to TRAJECTORY_ABORTED (this is new compared to FollowTrajectory action)
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.
Should we also add PREEMPTED or it doesn't make sense?
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.
I added TRAJECTORY_ABORTED
as a general message to cover most (if not all) possible reasons a trajectory might be aborted. The idea is that the specific reason can go in the error_string
field.
Does that sound reasonable to you?
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.
Aborted is when the goal is aborted by the controller itself right?
Is preempted somehow handled in ROS 2 actions?. I'm not sure about it. If it is handled. All good
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.
Aborted is when the goal is aborted by the controller itself right?
Yes, TRAJECTORY_ABORTED
indicates that the trajectory was aborted by the controller.
Regarding preemption in ROS 2 actions: from what I’ve seen, existing action messages don’t explicitly handle preemption using an error code. This is the first message to introduce an error code like TRAJECTORY_ABORTED
as a general indicator of an aborted trajectory. That said, new controllers can choose to use this error code if other codes don’t suit their case.
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.
Ok 👍
Co-authored-by: Christoph Fröhlich <christophfroehlich@users.noreply.github.com>
…sistent formatting. Co-authored-by: Christoph Fröhlich <christophfroehlich@users.noreply.github.com>
@christophfroehlich I implemented all the requested changes. |
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.
LGTM
string wrench_frame | ||
geometry_msgs/Wrench wrench |
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.
Can we use the WrenchStamped here instead?
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.
string wrench_frame | |
geometry_msgs/Wrench wrench | |
geometry_msgs/WrenchStamped wrench |
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.
If we use WrenchStamped
here instead of Wrench
+ wrench_frame
, the message would end up with two headers, each containing its own timestamp (one inside the JointTrajectoryPoint
and another inside the WrenchStamped
field). Generally, I’d expect users of this message to assume that the wrench and the JointTrajectoryPoint
are synchronized, meaning they share the same timestamp.
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.
I agree with you, but I'm not sure about separating it as a wrench_frame_id
. It should belong within the same context in my opinion. I understand your point on using stamped, but I'm not convinced with the current variable naming and usage.
Any other proposals? Or thoughts? @my-rice @christophfroehlich
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.
I understand your point, but would be happy with the current approach as well.
To avoid duplicate header, we could add another layer with a WrenchFramed
message?
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.
Introducing a new message like WrenchFramed
could be a valid solution to keep the information together and avoid duplicating headers.
Let me know if this will be on the agenda for the Wednesday PMC meeting.
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.
Yes!
Let's discuss in the PMC Meeting
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.
Ok, I wrote an item in the 'New Business' section of the agenda. Feel free to revise it or move it to a different section.
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.
WrenchFramed
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.
@saikishor as we discussed in yesterday’s PMC meeting, the proposed solution is to introduce the WrenchFramed
message. This would allow us to encapsulate both the wrench_frame_id
and the wrench itself in a structured layer.
I have two questions about this:
-
Should I introduce the
WrenchFramed
message as part of this PR, or submit it in a separate one? -
Should
WrenchFramed
be added to thecontrol_msgs
package or another one?
int32 OLD_HEADER_TIMESTAMP = -3 | ||
int32 PATH_TOLERANCE_VIOLATED = -4 | ||
int32 GOAL_TOLERANCE_VIOLATED = -5 | ||
int32 TRAJECTORY_ABORTED = -6 |
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.
Should we also add PREEMPTED or it doesn't make sense?
Hey @saikishor, have you had a chance to review the updates on this PR? |
Hey @my-rice |
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.
I left some comments. Please take a look
@saikishor No worries at all. Thanks for getting back to me.
I believe I have responded to all of your comments on the PR. |
This PR introduces joint trajectory messages with task space wrench as described in issue #284. In particular, the following message definitions are added:
JointWrenchTrajectory.msg
JointWrenchTrajectoryPoint.msg
In addition to these messages, the corresponding action definition,
FollowJointWrenchTrajectory.action
, has also been created.To avoid repeating code, I reused
trajectory_msgs/JointTrajectoryPoint
where possible. I am not completely sure if this was the best approach, so I am open to feedback on that.