Contents
Overview
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.
Usage
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>
Parameters
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
Nodes
All industrial_robot_client generic launch files provide the same nodes and topics:
robot_state
Provides feedback of robot position and status from the industrial robot controller.Published Topics
joint_states (control_msgs/JointState)- Joint trajectory feedback messages.
- Joint trajectory feedback messages.
- Robot status messages.
Parameters
robot_ip_address (string)- IP address of robot-controller
motion_*_interface
Sends joint trajectory messages to the industrial robot controller.Subscribed Topics
joint_path_command (trajectory_msgs/JointTrajectory)- Joint trajectory command messages.
Parameters
robot_ip_address (string)- IP address of robot-controller
joint_trajectory_action
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.
- A request to cancel a specific goal.
- Listens to the state of the controller.
Published Topics
joint_path_command (trajectory_msgs/JointTrajectory)- Sends joint trajectories to the controller.
- Feedback describing the progress the robot is making on following the trajectory.
- Provides status information on the goals that are sent to the action.
- Result of the commanded action