This page describes how to launch and interface to the generic robot-interface nodes provided by the industrial_robot_client package. These nodes may be suitable to control "standard" robots that do not require robot-specific client-side code. For instructions on modifying these nodes to accommodate robot-specific needs, please see the industrial_robot_client page.


Before running the nodes, the user must first determine what position-control method is required by the robot-side server code. The ROS-Industrial specification gives several alternative methods of position control, depending on the application needs and robot capabilities. NOTE: The ROS-Industrial specification does allow for a low level streaming interface (sending individual points to the robot, different than the streaming interface below). This is not supported currently by the generic clients.

All supported methods work with the /joint_path_command and /joint_states topics, so should be compatible with standard ROS arm_navigation and MoveIt stacks.

Streaming Interface

The streaming interface sends trajectory commands to the robot on-the-fly. At the ROS level this is functionally equivalent to the download interface, some robot require points be streamed at the driver level:

roslaunch industrial_robot_client robot_interface_streaming.launch robot_ip:=<value>

Download Interface

The download interface sends the entire trajectory to the robot before executing any motion:

roslaunch industrial_robot_client robot_interface_download.launch robot_ip:=<value>


The generic robot-interface nodes look for key parameter values to control their behavior. Some of these parameters are set in the launch files. Others must be manually set by the end-user (or added to robot-specific launch files):

  • robot_ip_address -- IP address of the robot controller [required]

    • set in the launch files, based on the required robot_ip argument
  • controller_joint_names -- list of joint names for ROS trajectory topics [optional]

    • naming should match the robot's URDF file
    • ordering should match the order required by the robot-controller server
    • can be used for joint re-ordering

    • defaults to "joint_1, joint_2, ... joint_6" if not specified
  • robot_description -- URDF (XML) description of this robot [optional]

    • used to get maximum velocity limits for each joint, for velocity scaling
    • must match the values in the robot controller for correct velocity scaling
    • JointTrajectoryInterface defaults to a "safe" velocity if not specified


All industrial_robot_client generic launch files provide the same nodes and topics:


Provides feedback of robot position and status from the industrial robot controller.

Published Topics

joint_states (control_msgs/JointState)
  • Joint trajectory feedback messages.
feedback_states (control_msgs/FollowJointTrajectoryFeedback)
  • Joint trajectory feedback messages.
robot_status (industrial_msgs/RobotStatus)
  • Robot status messages.


robot_ip_address (string)
  • IP address of robot-controller


Sends joint trajectory messages to the industrial robot controller.

Subscribed Topics

joint_path_command (trajectory_msgs/JointTrajectory)
  • Joint trajectory command messages.


robot_ip_address (string)
  • IP address of robot-controller


Action interface for commanding robot motion.

Subscribed Topics

joint_trajectory_action/goal (control_msgs/FollowJointTrajectoryActionGoal)
  • The goal describes the trajectory for the robot to follow.
joint_trajectory_action/cancel (actionlib_msgs/GoalID)
  • A request to cancel a specific goal.
feedback_states (control_msgs/FollowJointTrajectoryFeedback)
  • Listens to the state of the controller.

Published Topics

joint_path_command (trajectory_msgs/JointTrajectory)
  • Sends joint trajectories to the controller.
joint_trajectory_action/feedback (control_msgs/FollowJointTrajectoryActionFeedback)
  • Feedback describing the progress the robot is making on following the trajectory.
joint_trajectory_action/status (actionlib_msgs/GoalStatusArray)
  • Provides status information on the goals that are sent to the action.
joint_trajectory_action/result (control_msgs/FollowJointTrajectoryActionResult)
  • Result of the commanded action

Wiki: industrial_robot_client/generic_implementation (last edited 2014-12-16 12:08:56 by GvdHoorn)