ros-industrial / staubli_val3_driver

ROS-Industrial (simple message) driver for Stäubli CS8 and CS9 robot controllers (VAL 3 application)
Apache License 2.0
26 stars 21 forks source link

Improve quality of motion by interpolating incoming trajectories @ 4ms #21

Open gavanderhoorn opened 4 years ago

gavanderhoorn commented 4 years ago

This is already a TODO in the driver:

https://github.com/ros-industrial/staubli_val3_driver/blob/17fd14a7b07e17e9c081ab2b033a2f94031f1332/staubli_val3_driver/val3/ros_server/motionControl.pgx#L43-L44

The current implementation essentially forwards the incoming ROS trajectory 1-to-1 without any interpolation or post/preprocessing.

I'm wondering whether interpolation on the controller -- with a known velocity and acceleration curve -- could allow us to avoid situations such as #2 and https://github.com/ros-industrial/staubli_experimental/issues/25.

motoman_driver does something similar here. While it potentially does not execute the exact same motion as the trajectory prescribes, it does make sure the trajectory timing/velocity/acceleration profiles fit with what works well with the robot.

gavanderhoorn commented 4 years ago

@marshallpowell97: would this be something you would deem as worth it? It would be a bit of an investment to implement this on the controller I guess.

It would not help make the driver interface any more dynamic (as requested in #20), but it may help with increasing (perceived) motion quality.

Note that this sort of functionality wouldn't even be ROS-specific: any interface used to transmit sparse trajectories to a Staubli controller could/would benefit from this.