From 39b4d230498b2581688cf69b8e0f558dfe6cc1a5 Mon Sep 17 00:00:00 2001 From: Felix Mauch Date: Mon, 30 Sep 2019 17:50:03 +0200 Subject: [PATCH] Added doc for headless_mode attribute --- ur_rtde_driver/README.md | 7 ++-- ur_rtde_driver/doc/ROS_INTERFACE.md | 41 +++++++++++++++++++ ur_rtde_driver/launch/ur10_bringup.launch | 2 +- ur_rtde_driver/launch/ur10e_bringup.launch | 3 +- ur_rtde_driver/launch/ur3_bringup.launch | 2 +- ur_rtde_driver/launch/ur3e_bringup.launch | 2 +- ur_rtde_driver/launch/ur5_bringup.launch | 2 +- ur_rtde_driver/launch/ur5e_bringup.launch | 2 +- ur_rtde_driver/launch/ur_common.launch | 2 +- ur_rtde_driver/launch/ur_control.launch | 2 +- ur_rtde_driver/src/ros/hardware_interface.cpp | 5 +++ 11 files changed, 57 insertions(+), 13 deletions(-) diff --git a/ur_rtde_driver/README.md b/ur_rtde_driver/README.md index 5c45fb5..0c4e92a 100644 --- a/ur_rtde_driver/README.md +++ b/ur_rtde_driver/README.md @@ -40,10 +40,9 @@ on details. **Note to e-Series users:** The robot won't accept script code from a remote source unless the robot is put into *remote_control-mode*. However, if put into *remote_control-mode*, the program containing the -**External Control** program node can't be started from the panel. In the future, this will be -supported in the *headless* mode which doesn't require a panel being connected. Until that, a -possible workaround is to use a third party dashboard client (e.g. [ur_dash](https://github.com/gocarter/ur_dash)) -to start the program through the dashboard server. +**External Control** program node can't be started from the panel. If this behavior is required, +please use the headless mode that does not require having a program running on the teach pendant. +Note: The current headless mode doesn't offer the full functionality of the teach pendant. For using the **tool communication interface** on e-Series robots, a `socat` script is prepared to forward the robot's tool communication interface to a local device on the ROS PC. See [the tool diff --git a/ur_rtde_driver/doc/ROS_INTERFACE.md b/ur_rtde_driver/doc/ROS_INTERFACE.md index 2ea4175..bf0bcc8 100644 --- a/ur_rtde_driver/doc/ROS_INTERFACE.md +++ b/ur_rtde_driver/doc/ROS_INTERFACE.md @@ -20,6 +20,10 @@ Standalone launchfile to startup a ur3e. This requires a robot reachable via a n Debug flag that will get passed on to ur_common.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" (default: "$(find ur_e_description)/config/ur3e_default.yaml") Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -97,6 +101,10 @@ Standalone launchfile to startup a ur10 robot. This requires a robot reachable v Debug flag that will get passed on to ur_common.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" (default: "$(find ur_description)/config/ur10_default.yaml") Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -138,6 +146,10 @@ Robot bringup launchfile without the robot description. Include this, if you wan If set to true, will start the driver inside gdb + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. Pass the same config file that is passed to the robot_description. @@ -223,6 +235,10 @@ Launchfile that starts a robot description with robot_state publisher and the dr Debug flag that will get passed on to ur_control.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -300,6 +316,10 @@ Standalone launchfile to startup a ur5 robot. This requires a robot reachable vi Debug flag that will get passed on to ur_common.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" (default: "$(find ur_description)/config/ur5_default.yaml") Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -341,6 +361,10 @@ Standalone launchfile to startup a ur5e robot. This requires a robot reachable v Debug flag that will get passed on to ur_common.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" (default: "$(find ur_e_description)/config/ur5e_default.yaml") Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -418,6 +442,10 @@ Standalone launchfile to startup a ur5 robot. This requires a robot reachable vi Debug flag that will get passed on to ur_common.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" (default: "$(find ur_description)/config/ur3_default.yaml") Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -459,6 +487,10 @@ Standalone launchfile to startup a ur10e robot. This requires a robot reachable Debug flag that will get passed on to ur_common.launch + * "**headless_mode**" (default: "false") + + Automatically send URScript to robot to execute. On e-Series this does require the robot to be in 'remote-control' mode. With this, the URCap is not needed on the robot. + * "**kinematics_config**" (default: "$(find ur_e_description)/config/ur10e_default.yaml") Kinematics config file used for calibration correction. This will be used to verify the robot's calibration is matching the robot_description. @@ -529,6 +561,11 @@ This is the actual driver node containing the ROS-Control stack. Interfaces docu Calling this service will make the "External Control" program node on the UR-Program return. + * "**resend_robot_program**" ([std_srvs/Trigger](http://docs.ros.org/api/std_srvs/html/srv/Trigger.html)) + + When in headless mode, this sends the URScript program to the robot for execution. Use this + after the program has been interrupted, e.g. by a protective- or EM-stop. + * "**set_io**" (ur_msgs/SetIO) Service to set any of the robot's IOs @@ -542,6 +579,10 @@ This is the actual driver node containing the ROS-Control stack. Interfaces docu Names of the joints. Usually, this is given in the controller config file. + * "**headless_mode**" + + Start robot in headless mode. This does not require the 'External Control' URCap to be running on the robot, but this will send the URScript to the robot directly. On e-Series robots this requires the robot to run in 'remote-control' mode. + * "**input_recipe_file**" Path to the file containing the recipe used for requesting RTDE inputs. This is a required parameter. diff --git a/ur_rtde_driver/launch/ur10_bringup.launch b/ur_rtde_driver/launch/ur10_bringup.launch index 46888a2..ec2f656 100644 --- a/ur_rtde_driver/launch/ur10_bringup.launch +++ b/ur_rtde_driver/launch/ur10_bringup.launch @@ -9,7 +9,7 @@ - + diff --git a/ur_rtde_driver/launch/ur10e_bringup.launch b/ur_rtde_driver/launch/ur10e_bringup.launch index 07376b0..6b7eb78 100644 --- a/ur_rtde_driver/launch/ur10e_bringup.launch +++ b/ur_rtde_driver/launch/ur10e_bringup.launch @@ -19,8 +19,7 @@ - - + diff --git a/ur_rtde_driver/launch/ur3_bringup.launch b/ur_rtde_driver/launch/ur3_bringup.launch index 7453427..0af8a92 100644 --- a/ur_rtde_driver/launch/ur3_bringup.launch +++ b/ur_rtde_driver/launch/ur3_bringup.launch @@ -9,7 +9,7 @@ - + diff --git a/ur_rtde_driver/launch/ur3e_bringup.launch b/ur_rtde_driver/launch/ur3e_bringup.launch index fcf4ff0..061064c 100644 --- a/ur_rtde_driver/launch/ur3e_bringup.launch +++ b/ur_rtde_driver/launch/ur3e_bringup.launch @@ -18,7 +18,7 @@ - + diff --git a/ur_rtde_driver/launch/ur5_bringup.launch b/ur_rtde_driver/launch/ur5_bringup.launch index 841d6a5..f06ef46 100644 --- a/ur_rtde_driver/launch/ur5_bringup.launch +++ b/ur_rtde_driver/launch/ur5_bringup.launch @@ -9,7 +9,7 @@ - + diff --git a/ur_rtde_driver/launch/ur5e_bringup.launch b/ur_rtde_driver/launch/ur5e_bringup.launch index 3223fcd..84b8a88 100644 --- a/ur_rtde_driver/launch/ur5e_bringup.launch +++ b/ur_rtde_driver/launch/ur5e_bringup.launch @@ -18,7 +18,7 @@ - + diff --git a/ur_rtde_driver/launch/ur_common.launch b/ur_rtde_driver/launch/ur_common.launch index 5997b86..fe028ff 100644 --- a/ur_rtde_driver/launch/ur_common.launch +++ b/ur_rtde_driver/launch/ur_common.launch @@ -18,7 +18,7 @@ - + diff --git a/ur_rtde_driver/launch/ur_control.launch b/ur_rtde_driver/launch/ur_control.launch index 408ecbc..5881287 100644 --- a/ur_rtde_driver/launch/ur_control.launch +++ b/ur_rtde_driver/launch/ur_control.launch @@ -24,7 +24,7 @@ - + diff --git a/ur_rtde_driver/src/ros/hardware_interface.cpp b/ur_rtde_driver/src/ros/hardware_interface.cpp index de5f787..ba166d3 100644 --- a/ur_rtde_driver/src/ros/hardware_interface.cpp +++ b/ur_rtde_driver/src/ros/hardware_interface.cpp @@ -90,6 +90,9 @@ bool HardwareInterface ::init(ros::NodeHandle& root_nh, ros::NodeHandle& robot_h } bool headless_mode; + // Start robot in headless mode. This does not require the 'External Control' URCap to be running + // on the robot, but this will send the URScript to the robot directly. On e-Series robots this + // requires the robot to run in 'remote-control' mode. if (!robot_hw_nh.getParam("headless_mode", headless_mode)) { ROS_ERROR_STREAM("Required parameter " << robot_hw_nh.resolveName("headless_mode") << " not given."); @@ -296,6 +299,8 @@ bool HardwareInterface ::init(ros::NodeHandle& root_nh, ros::NodeHandle& robot_h if (headless_mode) { + // When in headless mode, this sends the URScript program to the robot for execution. Use this + // after the program has been interrupted, e.g. by a protective- or EM-stop. resend_robot_program_srv_ = robot_hw_nh.advertiseService("resend_robot_program", &HardwareInterface::resendRobotProgram, this); }