-
Notifications
You must be signed in to change notification settings - Fork 337
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
ur_modern_driver refactor #120
ur_modern_driver refactor #120
Conversation
Added platform, CB version and connection setup questions to issue template based on G.A. vd. Hoorn's response to #23
We are actively using the refactored branch and have exercised the following functionality without any issue:
+1 for merging these changes. |
As an update: as part of the repository maintenance activities that will be initiated next month (September), this PR will be merged into this repository. If anyone has any serious objections to this, now would be the time to make them heard. We will not request additional changes from the submitter (@Zagitta), so enhancements or small fixups will be done after the initial merge. |
Adds Low Bandwith Trajectory Follower implementation
Run io serivce operations as secondary urscripts
Finally got this merged. 🎆 Thanks @Zagitta for all the work and thanks to the many reviewers and users of this PR for their feedback. 👍 As I've written in earlier comments and on other PRs: there have been various reasons for why some PRs have been open for a rather long time and I do apologise for that. Even though it may seem that way, this is not indicative of disinterest in the feature or fix. |
Thank you so much for your time and commitment @gavanderhoorn ! |
OMG! This is such an amazing milestone! Thanks so much, @Zagitta & @gavanderhoorn! |
This is awesome, thanks! 👍 |
I'm just noticing, the /joint_speed topic is gone from this refactored version. I very much liked that topic for streaming poses to the robot in real time. Would it be difficult to re-enable /joint_speed? I know /ur_script can also handle streaming in real time, but it's not compatible with other robots. |
I never used the |
@miguelprada: provided those "other robots" also have a @AndyZe: the omission of the Something like this. |
@miguelprada A ros_control question for you. (Maybe we can move the discussion to email or answers.ros.org? I can't do google groups). Is there a fundamental reason why I can't stream JointTrajectory messages to the default ros_control type, velocity_controllers/JointTrajectoryController? I attempted this earlier today, and got the following error:
I can understand why some points were skipped, and I can overcome that issue easily. But I don't understand the error related to "no trajectory defined at current time." I would like to avoid switching back and forth between different ros_control types because I need to plan trajectories as well as stream commands. (And setting up a new control type has been hard.) |
@AndyZe: I'm not @miguelprada, but: the That interface is not meant for streaming velocities, and that is why you get that error (the action server sees a trajectory coming in with no values for the |
I don't see a way around this: |
@gavanderhoorn beat me to it 😉 I believe you are probably trying to send joint trajectories following the pattern that the previous That's irrespective of which underlying joint interface is used by the controller to track your trajectory, e.g. in You can use |
Alright, thanks guys. Actually my |
I never tried to imply that the How are you exactly filling your trajectory message? In particular, how are you timestamping the message and each of the points (i.e. the |
@AndyZe @miguelprada: could we create a new issue for discussing the velocity streaming approaches with this driver? I welcome the discussion, but let's not have it in the comment section of an already merged PR. |
Hello Thomas, here's the final code for the complete refactor as we've previously discussed.
During the 11/7 ROS Industrial meeting I asked about their preferred way to handle the code adoption and they greatly preferred if the changes could be merge into this repository to avoid having to redirect people elsewhere and cause more confusion than the old
ur_driver
already provides.If you don't have time to handle the merging and issues that'll most likely crop up when people start using the new code you can add me as maintainer to the repository and I will do my best to handle it over the next month or two until the adoption ROS Industrial procedure has completed.
To get everyone else up to speed here's a rundown of everything that has happened in this rewrite:
/ur_driver/robot_enable
that must be called on startup before the driver will accept commands. It must also be called if the robot ever enters a protective or emergency stop mode to ensure controllers acknowledge the stop mode.Besides the general list of changes above the driver now has a more sensible software design in the form of 2 producer/consumer work queues called pipelines, one for real time messages and one for the rest.
Each pipeline consists of a producer that received data from the robot, parses it and dumps the parsed messages into the queue which a consumer then picks up and runs through the various sub-consumers that publishes the messages.
The code has so far only been tested on a live UR5 v1.8, but has been developed against URSim v3.3.4 and should therefore work but it remains to be seen.
Last but not least I believe most of the blockers for #18 to happen have been resolved, the primary thing lacking now is better documentation but I'll try to get that done after my thesis defense.
Best regards, Simon R.