ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

I was wondering if there's a way to get the current cartesian pose of the robot from the controller. Is this already provided by the fanuc_driver

No, there is currently no support for retrieving the Cartesian pose from the controller in fanuc_driver.

This has been done before though, albeit not in the publicly available version.

can I make slight modifications to the package to achieve this?

"Slight modifications" would depend on your perspective :)

At a high-level, you'd have to:

  1. add a new message type and data structure to simple_message (something like a Cartesian pose)
  2. update industrial_robot_client to make use of that new message and convert it to a TF broadcast of the base->tool0_controller transform (TF would most likely make the most sense)
  3. update the Karel code to:
    1. support that message type
    2. create and send that message periodically

Definitely possible, but a bit of work.

If you want to do this, I would recommend doing it for fanuc_driver_exp instead of regular fanuc_driver. The code is structured better which would probably make it easier to add additional messages.

PS: I'm working on a ROS wrapper which will publish the state output broadcast by the R891 option. This would allow for very high update rates (up to several hundred Hz compared to the 125 Hz max of Karel) and would decouple this from fanuc_driver and fanuc_driver_exp. No ETA for that though.

However, since this is a real robot [..], the values don't perfectly match what I see on the teach pendant.

How are you calculating FK? Do you use TF?

And could you quantify how much of a difference you see between rosrun tf2_tools echo.py base tool0 and what the TP tells you?

I was wondering if there's a way to get the current cartesian pose of the robot from the controller. Is this already provided by the fanuc_driver

No, there is currently no support for retrieving the Cartesian pose from the controller in fanuc_driver.

This has been done before though, albeit not in the publicly available version.

can I make slight modifications to the package to achieve this?

"Slight modifications" would depend on your perspective :)

At a high-level, you'd have to:

  1. add a new message type and data structure to simple_message (something like a Cartesian pose)
  2. update industrial_robot_client to make use of that new message and convert it to a TF broadcast of the base->tool0_controller transform (TF would most likely make the most sense)
  3. update the Karel code to:
    1. support that message type
    2. create and send that message periodically

Definitely possible, but a bit of work.

If you want to do this, I would recommend doing it for fanuc_driver_exp instead of regular fanuc_driver. The code is structured better which would probably make it easier to add additional messages.

PS: I'm working on a ROS wrapper which will publish the state output broadcast by the R891 option. This would allow for very high update rates (up to several hundred Hz compared to the 125 Hz max of Karel) and would decouple this from fanuc_driver and fanuc_driver_exp. No ETA for that though.