-
Notifications
You must be signed in to change notification settings - Fork 152
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
Add support for external axes on the ABB driver #150
Add support for external axes on the ABB driver #150
Conversation
* Motion server now takes into account all 4 additional joints present in the message and assigned them to `eax_a`, `eax_b`, `eax_c` and `eax_d`. * Status server sends all connected external axes. Non-connected are zero filled.
Thanks for the PR, much appreciated 👍 🎉 Quick question: is there a conversion from |
@gavanderhoorn you're totally right, one sec... |
abb_driver/rapid/ROS_motion.mod
Outdated
@@ -54,6 +54,7 @@ PROC main() | |||
IF (trajectory_size > 0) THEN | |||
FOR current_index FROM 1 TO trajectory_size DO | |||
target.robax := trajectory{current_index}.joint_pos; | |||
target.extax := trajectory{current_index}.extax_pos; | |||
|
|||
skip_move := (current_index = 1) AND is_near(target.robax, 0.1); |
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.
Would this also not need to check the pose(s) of the external axes? Otherwise we could run the risk of skipping points that satisfy is_near(..)
for the robot itself, but not for the ext axes.
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.
Fixed it on 3b1d413
Fixed unit conversion on 289fc4b |
@gavanderhoorn thanks for checking this! hope it's better now 😉 |
@gonzalocasas: thanks for iterating. You wrote you've tested this on your hw. Did you only look at the |
Both. I was sending trajectories using this little roslibpy library that we released recently so I was testing the full loop. |
Using metres now, I hope? :) |
Yes, indeed. 😉 |
@gonzalocasas: my apologies for letting this slip. I'll confirm this implementation tomorrow in RobotStudio and merge afterwards. |
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.
This seems to work as described.
Tested in RobotStudio with an IRB-1600 on a track.
Thanks again for contributing this @gonzalocasas 👍 much appreciated. Could I ask you to add a Features section (after the Overview section) to wiki/abb_driver describing this new support? I'll add other things we might want to list (such as basic 6 axis robot support, agnostic of actual robot model configured, etc). |
One thing I forgot to ask/mention: this PR assumes that external axes are all linear units. Afaik, that is not necessarily true. I'm not sure how to determine at runtime whether an axis is a linear unit or a rotational one, but that would seem to be required here. |
@gavanderhoorn thx for adding that. I thought I edited already, but I think I left the tab open in preview, silly me. Anyway, I added one bit to that. And maybe a triviality, but instead of saying |
@gonzalocasas wrote:
Yes, that may be too limited a description. I just wanted to add a statement about what is at least definitely supported. If you can verify support for 4-axis robots (and I actually expect that to work right away), please update that bullet point.
Thanks. I've changed the text around a bit more again. Mostly order of things. |
Squashed commits: * Add support for external axes on the ABB driver * Motion server now takes into account all 4 additional joints present in the message and assigned them to `eax_a`, `eax_b`, `eax_c` and `eax_d`. * Status server sends all connected external axes. Non-connected are zero filled. * Convert to and from ROS and ABB units (meters and millimeters respectively) * Include eax in `is_near` check
As discussed on https://github.com/ros-industrial/abb/issues/135, here's a proposal for integrated external axes support on the ABB driver. I tested on IRB4600 real hardware on a linear track.
eax_a
,eax_b
,eax_c
andeax_d
.I explicitly did not change tabs to spaces in places where it would have been logical to do so (e.g.
ROS_common.sys
) to avoid merge conflicts with #145