gavanderhoorn / dominh

Poor man's RPC interface to Fanuc robot controllers in Python
Apache License 2.0
44 stars 4 forks source link

R912 implementation state #6

Closed joao-pm-santos96 closed 3 years ago

joao-pm-santos96 commented 3 years ago

Hello @gavanderhoorn, in the commit https://github.com/gavanderhoorn/dominh/commit/c191ce91eab57dba939f1814184658f48b022013 you mention the R912 software option as an alternative for your library. Is there any development regarding this option that you can share?

I am studding the communication possibilities with the Fanuc controllers and if there is a new library or even ROS driver which is more supported by the manufacturer that would be preferable.

Thank you.

gavanderhoorn commented 3 years ago

R912 is not necessarily a replacement of this -- and just to be clear, dominh is really just a very simple implementation of some of the functionality of the PCDK, so it's hard to consider an official Fanuc option a replacement of a simple Python package.

R912 offers a more modern interface to Fanuc controllers: a simple JSON-over-TCP, sort-of RPC interface. Due to its inherent decoupling, this is usable with any language which supports sockets and text (or JSON).

So instead of having to use KCL through the controller's web server, you can now, for some functionality, use the R912 socket.

At the very least, for library and application writers dealing with JSON is much simpler than parsing custom, OEM-specific HTML pages or having to write Karel programs to retrieve certain information.

I am studding the communication possibilities with the Fanuc controllers and if there is a new library or even ROS driver which is more supported by the manufacturer that would be preferable.

Unfortunately I'm not aware of any development coming out of Fanuc that could help you.

I'd be very happy to have a Fanuc supported Python and C++ library which takes care of interfacing with a controller over R912, for three reasons:

  1. because other ppl then don't need to duplicate all that effort (to create one themselves)
  2. Fanuc gets direct control over the user experience of their customers with R912
  3. they can make sure it's done correctly, instead of passively seeing others get it wrong (or suboptimal)

But to my knowledge, such a library or perhaps even example code does not exist.

gavanderhoorn commented 3 years ago

Having written all of that, I'm going to close this issue, as it's not really an issue with dominh, but more a general question about interfacing with Fanuc controllers.

Feel free to keep commenting here of course.

joao-pm-santos96 commented 3 years ago

Yes, it would be very nice for a Fanuc built and released library. Since it does not seem feasible to wait for that, do you now of any public implementation already in development?

And, by the way, is there any possibility to use this option to send motion commands? If so, will the ROS driver ever embrace it?

Thank you for your time and answers!

gavanderhoorn commented 3 years ago

Yes, it would be very nice for a Fanuc built and released library. Since it does not seem feasible to wait for that,

Indeed. Unfortunately I would not wait for it either.

do you now of any public implementation already in development?

No, nothing public. I don't believe there is anything publicly available related to R912. Only things I can find is this thread and my mention(s) of it on various fora.

And, by the way, is there any possibility to use this option to send motion commands?

Yes, R912 specifically supports motion.

If so, will the ROS driver ever embrace it?

R912 essentially provides a drip-feed for TP programs. It could be interesting to use this for a driver, but don't expect anything reactive. That's just not what it is for.

I would recommend you ask your local Fanuc branch office for the documentation on R912. It should clear up a lot of your questions.

Just don't believe any claims that R912 > J519 when it comes to responsiveness of motion.

joao-pm-santos96 commented 3 years ago

R912 essentially provides a drip-feed for TP programs. It could be interesting to use this for a driver, but don't expect anything reactive. That's just not what it is for.

That's a very interesting point you are making there...

Just don't believe any claims that R912 > J519 when it comes to responsiveness of motion.

Well, there's another option I never heard about (excluding your repos in fanuc-stream-motion): J519.