-
Notifications
You must be signed in to change notification settings - Fork 1
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
execute_trajectory(trajectory) function #150
Comments
agreed that it makes sense to offer a higher level trajectory execution method. Two notes on your implementation: Using the ServoJ commands however, we can only control the positions directly (the velocity and acc command inputs are currently unused in the UR scripting language). The velocities and accelerations are thus implicitly determined by the servoJ interpolation I believe. I'm not sure if 1) this is a problem for us? If you sample the positions at high frequency, you kind of enfore the high-level velocity profile I believe. 2) ifthere even is a way to overcome this. options: look at the RTDE docs to see if other functions could help or take a look at the official C++ drivers for the UR that came out of the ROS UR drivers (https://github.com/UniversalRobots/Universal_Robots_Client_Library/tree/master) second (minor). I would assert that the initial pose is close enough to the first waypoint, to avoid crazy accelerations. Optionally we could also iterate over the trajectory to validate it (max leading axis acceleration or something). |
linking some additional sources: UR-scripting reference : https://s3-eu-west-1.amazonaws.com/ur-support-site/234367/script_directory_PolyScope5.pdf#page=53.28 UR-rtde servoJ docs: https://sdurobotics.gitlab.io/ur_rtde/api/api.html?highlight=servoj#_CPPv4N7ur_rtde20RTDEControlInterface6servoJERKNSt6vectorIdEEddddd |
Just as a reference, for the cloth competition, I also wrote an |
An additional note for these trajectory execution functions is that they work with Drake The question then becomes, do we put these functions in Alternatively, it might be possible to use the discretized trajectory times from |
I hadn't noticed this. For me it makes more sense to discretize the trajectories and then update the servo with the nearest timestep (you can also interpolate it if needed, I think). This way it is independent of how the trajectory was created and if you sample the waypoints dense enough during discrezization, I don't think this causes issues? |
I've done it both ways (like VL with Drake trajectories) and discretized trajs and both work (if densely sampled). I think if we want to avoid drake as a dependency that using discretized trajs makes more sense than adding the dependency. I'll go over your suggestions later, thanks for the information! Might also push this to @m-decoster who also has his fair share of running trajs on the UR robots. |
Conclusion:
|
|
|
We've implemented a first sanity check for barista (
Note that these asserts should probably be exceptions instead. |
Describe the feature you'd like
It would be nice to bundle our experiences of executing trajectories (PathParameterizedTrajectory) on the real platform in a execute_trajectory because I have noticed we do not always run them straightforward as a
servo_to_joint_config()
on the real robot. See example below.Use cases
Anyone running a PathParameterizedTrajectory...
Possible implementation
From existing demo's we have:
The text was updated successfully, but these errors were encountered: