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

Interesting question indeed.

As for my own experience (academia): within ROS-Industrial we have a somewhat different setup:

image description

The driver part of ROS-Industrial (which lives in the ROS-I Controller layer in the above diagram) provides abstracted access to the sensors and actuators that the controller supports. On a hardware level this means that we use the facilities of the industrial controller built by the manufacturer, which provides us the blocks Power and Motor/Encoders in your diagram.

The industrial controller runs a manufacturer specific program (most of the times in their proprietary language). The ROS side (the drivers) communicates with those programs using a simple TCP/UDP based protocol (simple_message). ROS-Industrial provided nodes (industrial_robot_client) implement the necessary interfaces (FollowJointTrajectoryAction, JointState, etc) needed for higher level ROS capabilities (eg MoveIt) to close the loop.

There are some drivers within ROS-Industrial though that are implemented on top of ros_control: the universal_robot C-API driver being one of them.

As for communication: many industrial controllers provide Ethernet connectivity, which is most often used. Some older controllers only support serial connections, but those aren't used in any released packages.

Interesting question indeed.

As for my own experience (academia): within ROS-Industrial we have a somewhat different setup:

image description

The driver part of ROS-Industrial (which lives in the ROS-I Controller layer in the above diagram) provides abstracted access to the sensors and actuators that the controller supports. On a hardware level this means that we use the facilities of the industrial controller built by the manufacturer, which provides us the blocks PowerMotor Controller/Power and Motor/Encoders in your diagram.

The industrial controller runs a manufacturer specific program (most of the times in their proprietary language). The ROS side (the drivers) communicates with those programs using a simple TCP/UDP based protocol (simple_message). ROS-Industrial provided nodes (industrial_robot_client) implement the necessary interfaces (FollowJointTrajectoryAction, JointState, etc) needed for higher level ROS capabilities (eg MoveIt) to close the loop.

There are some drivers within ROS-Industrial though that are implemented on top of ros_control: the universal_robot C-API driver being one of them.

As for communication: many industrial controllers provide Ethernet connectivity, which is most often used. Some older controllers only support serial connections, but those aren't used in any released packages.