Performances and change from industrial_robot_client to ros2_control #55
Replies: 1 comment 3 replies
-
Thanks for starting a new thread. I would suggest to read #32, as that is probably the kind of functionality you're looking for. Summarising: The main challenge would be to provide the internal motion pipeline of the CS9 controller with sufficient data at the right times. How that data gets to the controller is really not that important, and As to where you'd have to make changes: it's been too long for me to be able to pin-point specific lines, but conceptually, you'd have to provide a network interface to the queue the motion control task uses to temporarily store traj pts in. Then you'd probably have to change the task type of the motion task to be synchronised with the CS9's internal (motion) interpolation clock. I've forgotten how to do that exactly again in VAL3. And you'd also obviously want to output (joint) state information in the opposite direction, probably at the same rate. With all that in place, and a very minimal queue of traj pts on the CS9 side (in the VAL3 program), you'd essentially have a network interface to the internal motion controller of the CS9. And as I wrote: whether you do this with
I hope it's now clear this is not really the dilemma you imply it is.
again, this is not something you can really say.
I would not immediately recommend using
The CS9 evaluates your VAL3 code at 250 Hz -- or more specifically: specific 'threads' or 'tasks' are executed at 250 Hz (the synchronised motion tasks fi). Using As long as whatever communication layer you use is able to ship new data to the controller within 4 ms, you should be able to reach that 250 Hz. But that doesn't mean your control bw will be 250 Hz. There's filtering and queuing internal to the CS9 as well which will influence that. I wouldn't have any nrs for you, as I've not worked on this for a very long time. In #32 some additional comments around performance and possible communication methods have been posted. You may find those informative as well. There's also #36 which contributes a velocity control interface by using custom |
Beta Was this translation helpful? Give feedback.
-
This is a repost from this thread :
I am just starting working with a Staubli TX2-90, with a CS9 controller. I am more used to universal robots and as such, I'd like to use this with ros2_control instead of industrial_robot_client too.
If I get this right, this means both:
I guess UR hardware interface could serve as a reference at some point.
@gavanderhoorn , do you have any insights as to what would be required on the VAL3 driver side ? Even some vague TODOs would help me figuring out a plan.
I might have the wrong idea that using ros2_control instead of industrial_robot_client would enhance the performance and allow a more deterministic (and higher rate) control loop. Is it true ? At some point I'll need to control my arm with a haptic device, and I'm afraid the rate won't be enough for it to work properply.
I saw in start.pgx that right now:
Are the limitations here due to UDP, or can these values be set higher ? If they are, I guess ros2_control won't change that.
In your opinion, is it worth the work or should I rather use the industrial_robot_client as is, with a ROS1 - ROS2 bridge ?
Sorry, when I originally posted I thought I'd have some time to work on this. I should finally be able to tackle it in a couple of weeks. I'd really like to integrate this driver with ROS2, especially as the robot control is part of a wider project where ROS2 is the primary communication protocol.
Though I am very unfamiliar with VAL3. In his issue, @maxdgaa told me he rewrote his own VAL3 driver, what changes would that imply ?
Thanks for your help.
Beta Was this translation helpful? Give feedback.
All reactions