gavanderhoorn / fanuc_driver_exp

An alternative - experimental - Fanuc robot driver for ROS-Industrial
Apache License 2.0
29 stars 17 forks source link

Documentation on how to improve the driver #18

Closed cemcetin closed 5 years ago

cemcetin commented 5 years ago

As far as I can tell from the read me file, whenever a position point is streamed to the fanuc controller, it interpolates the path between the points and adjusts this path according to the CNT function. This is a hard limit from the controller side making it impossible to follow a trajectory exactly. Since the look-ahead functionality cannot be used with the current driver, streaming dense trajectories to overcome this results in significantly slower performance. In light of all this, what is possible to improve the driver? Can the look ahead functionality be implemented with what is available?

I am just looking for guidance on what can be accomplished with what methods when it comes to executing the trajectories properly (with the requested velocity and time stamps). Any input would be appreciated.

gavanderhoorn commented 5 years ago

I've done quite a few experiments and I believe the CNT vs accuracy is a fundamental limitation of the way the controller works (or at least when using TP programs to control motion).

Controller look-ahead is not going to change that. What it would improve would be motion smoothness, but only if sufficiently high CNT values are used. Dense programs could then be considered (to "force" the motion along a trajectory), but even look-ahead will not be able to keep that smooth (because of the accel/decel ramps).

There is a PTH modifier for short motions, which may be looked into, but I'm not too hopeful.

A completely different approach would be to implement a "downloading driver" and then generate a TP program on the controller that would execute the complete trajectory as a single program: look-ahead would work, no streaming delays, but the same limitations wrt CNT vs accuracy as the current driver.

And something else again would be to generate a TP program based on the trajectory completely external to the controller (ie: on your PC, using something like InstitutMaupertuis/fanuc_post_processor) and then uploading that. It would no longer be streaming (so long trajectories will take a long time before the controller is finished parsing your program), but it would avoid streaming delays again (but doesn't do anything about the CNT vs accuracy problem).


I have one other technique I believe could improve performance, but I don't want to / can't discuss that here right now.

gavanderhoorn commented 5 years ago

Closing as this is not an issue with the package in this repository, but more of a question.

gavanderhoorn commented 5 years ago

Finally: using Karel and/or TP programs to control a Fanuc robot externally is deprecated, if not by Fanuc then at least for me personally.

Fanuc has a software option available that finally allows proper external (and streaming based) control, and I'm working on making a ROS compatible driver for that at the moment.