ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Interesting question indeed.
As for my own experience (academia): within ROS-Industrial we have a somewhat different setup:
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.
2 | No.2 Revision |
Interesting question indeed.
As for my own experience (academia): within ROS-Industrial we have a somewhat different setup:
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.