ur_driver.h
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 // Copyright 2019 FZI Forschungszentrum Informatik
5 // Created on behalf of Universal Robots A/S
6 //
7 // Licensed under the Apache License, Version 2.0 (the "License");
8 // you may not use this file except in compliance with the License.
9 // You may obtain a copy of the License at
10 //
11 // http://www.apache.org/licenses/LICENSE-2.0
12 //
13 // Unless required by applicable law or agreed to in writing, software
14 // distributed under the License is distributed on an "AS IS" BASIS,
15 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 // See the License for the specific language governing permissions and
17 // limitations under the License.
18 // -- END LICENSE BLOCK ------------------------------------------------
19 
20 //----------------------------------------------------------------------
27 //----------------------------------------------------------------------
28 #ifndef UR_CLIENT_LIBRARY_UR_UR_DRIVER_H_INCLUDED
29 #define UR_CLIENT_LIBRARY_UR_UR_DRIVER_H_INCLUDED
30 
31 #include <chrono>
32 #include <functional>
33 #include <memory>
34 
46 
47 namespace urcl
48 {
53 {
54  std::string robot_ip;
55  std::string script_file;
56  std::string output_recipe_file;
57  std::string input_recipe_file;
58 
65  std::function<void(bool)> handle_program_state;
67 
68  std::unique_ptr<ToolCommSetup> tool_comm_setup = nullptr;
69 
74  uint32_t reverse_port = 50001;
75 
79  uint32_t script_sender_port = 50002;
80 
84  uint32_t trajectory_port = 50003;
85 
92  uint32_t script_command_port = 50004;
93 
100  std::string reverse_ip = "";
101 
105  int servoj_gain = 2000;
106 
110  double servoj_lookahead_time = 0.03;
111 
118 
122  std::chrono::milliseconds socket_reconnection_timeout = std::chrono::seconds(10);
123 
130 
134  std::chrono::milliseconds rtde_initialization_timeout = std::chrono::seconds(5);
135 
136  bool non_blocking_read = false;
137 
138  // TODO: Remove on 2027-05
139  // The following parameters are considered deprecated and will be removed in May 2027.
141  std::string calibration_checksum = "";
143  double force_mode_damping = 0.025;
146 };
147 
155 class UrDriver
156 {
157 public:
168  explicit UrDriver(const UrDriverConfiguration& config)
169  {
170  init(config);
171  }
172 
217  // Called sigA in tests
218  [[deprecated("Initializing a UrDriver object with an argument list is deprecated. Please use UrDriver(const "
219  "UrDriverConfiguration& config) instead. This function will be removed in May 2027.")]]
220  UrDriver(const std::string& robot_ip, const std::string& script_file, const std::string& output_recipe_file,
221  const std::string& input_recipe_file, std::function<void(bool)> handle_program_state, bool headless_mode,
222  std::unique_ptr<ToolCommSetup> tool_comm_setup, const uint32_t reverse_port = 50001,
223  const uint32_t script_sender_port = 50002, int servoj_gain = 2000, double servoj_lookahead_time = 0.03,
224  bool non_blocking_read = false, const std::string& reverse_ip = "", const uint32_t trajectory_port = 50003,
225  const uint32_t script_command_port = 50004)
226  {
227  UrDriverConfiguration config;
228  config.robot_ip = robot_ip;
229  config.script_file = script_file;
230  config.output_recipe_file = output_recipe_file;
231  config.input_recipe_file = input_recipe_file;
232  config.handle_program_state = handle_program_state;
233  config.headless_mode = headless_mode;
234  config.tool_comm_setup = std::move(tool_comm_setup);
235  config.reverse_port = reverse_port;
236  config.script_sender_port = script_sender_port;
237  config.servoj_gain = servoj_gain;
238  config.servoj_lookahead_time = servoj_lookahead_time;
239  config.non_blocking_read = non_blocking_read;
240  config.reverse_ip = reverse_ip;
241  config.trajectory_port = trajectory_port;
242  config.script_command_port = script_command_port;
243  init(config);
244  }
245 
278  // Called sigB in tests
279  [[deprecated("Initializing a UrDriver object with an argument list is deprecated. Please use UrDriver(const "
280  "UrDriverConfiguration& config) instead. This function will be removed in May 2027.")]]
281  UrDriver(const std::string& robot_ip, const std::string& script_file, const std::string& output_recipe_file,
282  const std::string& input_recipe_file, std::function<void(bool)> handle_program_state, bool headless_mode,
283  std::unique_ptr<ToolCommSetup> tool_comm_setup, const uint32_t reverse_port,
284  const uint32_t script_sender_port, int servoj_gain, double servoj_lookahead_time, bool non_blocking_read,
285  const std::string& reverse_ip, const uint32_t trajectory_port, const uint32_t script_command_port,
286  double force_mode_damping, double force_mode_gain_scaling = 0.5)
287  {
288  UrDriverConfiguration config;
289  config.robot_ip = robot_ip;
290  config.script_file = script_file;
291  config.output_recipe_file = output_recipe_file;
292  config.input_recipe_file = input_recipe_file;
293  config.handle_program_state = handle_program_state;
294  config.headless_mode = headless_mode;
295  config.tool_comm_setup = std::move(tool_comm_setup);
296  config.reverse_port = reverse_port;
297  config.script_sender_port = script_sender_port;
298  config.servoj_gain = servoj_gain;
299  config.servoj_lookahead_time = servoj_lookahead_time;
300  config.non_blocking_read = non_blocking_read;
301  config.reverse_ip = reverse_ip;
302  config.trajectory_port = trajectory_port;
303  config.script_command_port = script_command_port;
304  config.force_mode_damping = force_mode_damping;
305  config.force_mode_gain_scaling = force_mode_gain_scaling;
306  init(config);
307  }
308 
342  // Called sigC in tests
343  [[deprecated("Initializing a UrDriver object with an argument list is deprecated. Please use UrDriver(const "
344  "UrDriverConfiguration& config) instead. This function will be removed in May 2027.")]]
345  UrDriver(const std::string& robot_ip, const std::string& script_file, const std::string& output_recipe_file,
346  const std::string& input_recipe_file, std::function<void(bool)> handle_program_state, bool headless_mode,
347  std::unique_ptr<ToolCommSetup> tool_comm_setup, const std::string& calibration_checksum,
348  const uint32_t reverse_port = 50001, const uint32_t script_sender_port = 50002, int servoj_gain = 2000,
349  double servoj_lookahead_time = 0.03, bool non_blocking_read = false, const std::string& reverse_ip = "",
350  const uint32_t trajectory_port = 50003, const uint32_t script_command_port = 50004,
351  double force_mode_damping = 0.025, double force_mode_gain_scaling = 0.5)
352  {
353  UrDriverConfiguration config;
354  config.robot_ip = robot_ip;
355  config.script_file = script_file;
356  config.output_recipe_file = output_recipe_file;
357  config.input_recipe_file = input_recipe_file;
358  config.handle_program_state = handle_program_state;
359  config.headless_mode = headless_mode;
360  config.calibration_checksum = calibration_checksum;
361  config.tool_comm_setup = std::move(tool_comm_setup);
362  config.reverse_port = reverse_port;
363  config.script_sender_port = script_sender_port;
364  config.servoj_gain = servoj_gain;
365  config.servoj_lookahead_time = servoj_lookahead_time;
366  config.non_blocking_read = non_blocking_read;
367  config.reverse_ip = reverse_ip;
368  config.trajectory_port = trajectory_port;
369  config.script_command_port = script_command_port;
370  config.force_mode_damping = force_mode_damping;
371  config.force_mode_gain_scaling = force_mode_gain_scaling;
372  init(config);
373  }
406  // Called sigD in tests
407  [[deprecated("Initializing a UrDriver object with an argument list is deprecated. Please use UrDriver(const "
408  "UrDriverConfiguration& config) instead. This function will be removed in May 2027.")]]
409  UrDriver(const std::string& robot_ip, const std::string& script_file, const std::string& output_recipe_file,
410  const std::string& input_recipe_file, std::function<void(bool)> handle_program_state, bool headless_mode,
411  const std::string& calibration_checksum = "", const uint32_t reverse_port = 50001,
412  const uint32_t script_sender_port = 50002, int servoj_gain = 2000, double servoj_lookahead_time = 0.03,
413  bool non_blocking_read = false, const std::string& reverse_ip = "", const uint32_t trajectory_port = 50003,
414  const uint32_t script_command_port = 50004, double force_mode_damping = 0.025,
415  double force_mode_gain_scaling = 0.5)
416  {
417  UrDriverConfiguration config;
418  config.robot_ip = robot_ip;
419  config.script_file = script_file;
420  config.output_recipe_file = output_recipe_file;
421  config.input_recipe_file = input_recipe_file;
422  config.handle_program_state = handle_program_state;
423  config.headless_mode = headless_mode;
424  config.calibration_checksum = calibration_checksum;
425  config.reverse_port = reverse_port;
426  config.script_sender_port = script_sender_port;
427  config.servoj_gain = servoj_gain;
428  config.servoj_lookahead_time = servoj_lookahead_time;
429  config.non_blocking_read = non_blocking_read;
430  config.reverse_ip = reverse_ip;
431  config.trajectory_port = trajectory_port;
432  config.script_command_port = script_command_port;
433  config.force_mode_damping = force_mode_damping;
434  config.force_mode_gain_scaling = force_mode_gain_scaling;
435  init(config);
436  }
437 
438  virtual ~UrDriver() = default;
439 
447  std::unique_ptr<rtde_interface::DataPackage> getDataPackage();
448 
449  uint32_t getControlFrequency() const
450  {
451  return rtde_client_->getTargetFrequency();
452  }
453 
467  bool writeJointCommand(const vector6d_t& values, const comm::ControlMode control_mode,
468  const RobotReceiveTimeout& robot_receive_timeout = RobotReceiveTimeout::millisec(20));
469 
480  bool writeTrajectoryPoint(const vector6d_t& positions, const bool cartesian, const float goal_time = 0.0,
481  const float blend_radius = 0.052);
482 
497  bool writeTrajectoryPoint(const vector6d_t& positions, float acceleration, float velocity, const bool cartesian,
498  const float goal_time = 0.0, const float blend_radius = 0.052);
499 
510  bool writeTrajectorySplinePoint(const vector6d_t& positions, const vector6d_t& velocities,
511  const vector6d_t& accelerations, const float goal_time = 0.0);
512 
522  bool writeTrajectorySplinePoint(const vector6d_t& positions, const vector6d_t& velocities,
523  const float goal_time = 0.0);
524 
533  bool writeTrajectorySplinePoint(const vector6d_t& positions, const float goal_time = 0.0);
534 
545  bool writeMotionPrimitive(const std::shared_ptr<control::MotionPrimitive> motion_instruction);
546 
558  bool
559  writeTrajectoryControlMessage(const control::TrajectoryControlMessage trajectory_action, const int point_number = 0,
560  const RobotReceiveTimeout& robot_receive_timeout = RobotReceiveTimeout::millisec(200));
561 
572  bool
574  const RobotReceiveTimeout& robot_receive_timeout = RobotReceiveTimeout::millisec(200));
575 
582  bool zeroFTSensor();
583 
594  bool setPayload(const float mass, const vector3d_t& cog);
595 
604  bool setToolVoltage(const ToolVoltage voltage);
605 
631  bool startForceMode(const vector6d_t& task_frame, const vector6uint32_t& selection_vector, const vector6d_t& wrench,
632  const unsigned int type, const vector6d_t& limits, double damping_factor);
633 
663  bool startForceMode(const vector6d_t& task_frame, const vector6uint32_t& selection_vector, const vector6d_t& wrench,
664  const unsigned int type, const vector6d_t& limits, double damping_factor,
665  double gain_scaling_factor);
666 
688  [[deprecated("Starting force mode without specifying the force mode damping factor and gain scale factor has been "
689  "deprecated. These values should be given with each function call.")]] bool
690  startForceMode(const vector6d_t& task_frame, const vector6uint32_t& selection_vector, const vector6d_t& wrench,
691  const unsigned int type, const vector6d_t& limits);
692 
698  bool endForceMode();
699 
707  bool startToolContact();
708 
715  bool endToolContact();
716 
729  bool writeKeepalive(const RobotReceiveTimeout& robot_receive_timeout = RobotReceiveTimeout::millisec(1000));
730 
737  void startRTDECommunication();
738 
745  bool stopControl();
746 
755  bool checkCalibration(const std::string& checksum);
756 
764  std::deque<urcl::primary_interface::ErrorCode> getErrorCodes();
765 
772 
782  bool sendScript(const std::string& program);
783 
791  bool sendRobotProgram();
792 
797  {
798  return robot_version_;
799  }
800 
806  std::vector<std::string> getRTDEOutputRecipe();
807 
813  [[deprecated("Set keepaliveCount is deprecated, instead set the robot receive timeout directly in the write "
814  "commands.")]] void
815  setKeepaliveCount(const uint32_t count);
816 
826  void registerTrajectoryDoneCallback(std::function<void(control::TrajectoryResult)> trajectory_done_cb)
827  {
828  trajectory_interface_->setTrajectoryEndCallback(trajectory_done_cb);
829  }
830 
839  void registerToolContactResultCallback(std::function<void(control::ToolContactResult)> tool_contact_result_cb)
840  {
841  script_command_interface_->setToolContactResultCallback(tool_contact_result_cb);
842  }
843 
859  void resetRTDEClient(const std::vector<std::string>& output_recipe, const std::vector<std::string>& input_recipe,
860  double target_frequency = 0.0, bool ignore_unavailable_outputs = false);
861 
876  void resetRTDEClient(const std::string& output_recipe_filename, const std::string& input_recipe_filename,
877  double target_frequency = 0.0, bool ignore_unavailable_outputs = false);
878 
883 
885  {
886  primary_client_->stop();
887  }
888 
889  void registerTrajectoryInterfaceDisconnectedCallback(std::function<void(const int)> fun)
890  {
891  trajectory_interface_->registerDisconnectionCallback(fun);
892  }
893 
894  static std::string readScriptFile(const std::string& filename);
895 
897  {
898  return reverse_interface_->isConnected();
899  }
900 
902  {
903  return trajectory_interface_->isConnected();
904  }
905 
906  std::shared_ptr<urcl::primary_interface::PrimaryClient> getPrimaryClient()
907  {
908  return primary_client_;
909  }
910 
911 private:
912  void init(const UrDriverConfiguration& config);
913 
914  void initRTDE();
915  void setupReverseInterface(const uint32_t reverse_port);
916 
918  std::unique_ptr<rtde_interface::RTDEClient> rtde_client_;
919  std::shared_ptr<urcl::primary_interface::PrimaryClient> primary_client_;
920  std::unique_ptr<control::ReverseInterface> reverse_interface_;
921  std::unique_ptr<control::TrajectoryPointInterface> trajectory_interface_;
922  std::unique_ptr<control::ScriptCommandInterface> script_command_interface_;
923  std::unique_ptr<control::ScriptSender> script_sender_;
924 
926  std::chrono::milliseconds socket_reconnection_timeout_ = std::chrono::milliseconds(10000);
927 
929  std::chrono::milliseconds rtde_initialization_timeout_ = std::chrono::milliseconds(10000);
930 
933 
934  uint32_t servoj_gain_;
936 
937  std::function<void(bool)> handle_program_state_;
938 
939  std::string robot_ip_;
941  std::string full_robot_program_;
942 
945 
947 };
948 } // namespace urcl
949 #endif // ifndef UR_CLIENT_LIBRARY_UR_UR_DRIVER_H_INCLUDED
urcl::UrDriver::getRTDEOutputRecipe
std::vector< std::string > getRTDEOutputRecipe()
Getter for the RTDE output recipe used in the RTDE client.
Definition: ur_driver.cpp:595
urcl::UrDriver::UrDriver
UrDriver(const std::string &robot_ip, const std::string &script_file, const std::string &output_recipe_file, const std::string &input_recipe_file, std::function< void(bool)> handle_program_state, bool headless_mode, std::unique_ptr< ToolCommSetup > tool_comm_setup, const std::string &calibration_checksum, const uint32_t reverse_port=50001, const uint32_t script_sender_port=50002, int servoj_gain=2000, double servoj_lookahead_time=0.03, bool non_blocking_read=false, const std::string &reverse_ip="", const uint32_t trajectory_port=50003, const uint32_t script_command_port=50004, double force_mode_damping=0.025, double force_mode_gain_scaling=0.5)
Constructs a new UrDriver object.
Definition: ur_driver.h:345
urcl::comm::ControlMode
ControlMode
Control modes as interpreted from the script runnning on the robot.
Definition: control_mode.h:42
script_command_interface.h
urcl::UrDriverConfiguration::output_recipe_file
std::string output_recipe_file
Filename where the output recipe is stored in.
Definition: ur_driver.h:56
urcl::rtde_interface::RTDEWriter
The RTDEWriter class offers an abstraction layer to send data to the robot via the RTDE interface....
Definition: rtde_writer.h:50
urcl::UrDriver::trajectory_interface_
std::unique_ptr< control::TrajectoryPointInterface > trajectory_interface_
Definition: ur_driver.h:921
urcl::UrDriverConfiguration::handle_program_state
std::function< void(bool)> handle_program_state
Function handle to a callback on program state changes.
Definition: ur_driver.h:65
urcl::UrDriver::resetRTDEClient
void resetRTDEClient(const std::vector< std::string > &output_recipe, const std::vector< std::string > &input_recipe, double target_frequency=0.0, bool ignore_unavailable_outputs=false)
Reset the RTDE client. As during initialization the driver will start RTDE communication with the max...
Definition: ur_driver.cpp:614
version_information.h
robot_receive_timeout.h
urcl::UrDriverConfiguration::input_recipe_file
std::string input_recipe_file
Filename where the input recipe is stored in.
Definition: ur_driver.h:57
urcl::UrDriver::startRTDECommunication
void startRTDECommunication()
Starts the RTDE communication.
Definition: ur_driver.cpp:536
urcl::UrDriver::UrDriver
UrDriver(const std::string &robot_ip, const std::string &script_file, const std::string &output_recipe_file, const std::string &input_recipe_file, std::function< void(bool)> handle_program_state, bool headless_mode, std::unique_ptr< ToolCommSetup > tool_comm_setup, const uint32_t reverse_port, const uint32_t script_sender_port, int servoj_gain, double servoj_lookahead_time, bool non_blocking_read, const std::string &reverse_ip, const uint32_t trajectory_port, const uint32_t script_command_port, double force_mode_damping, double force_mode_gain_scaling=0.5)
Constructs a new UrDriver object.
Definition: ur_driver.h:281
urcl::UrDriver::setPayload
bool setPayload(const float mass, const vector3d_t &cog)
Set the payload mass and center of gravity. Note: It requires the external control script to be runni...
Definition: ur_driver.cpp:282
urcl::control::TrajectoryResult
TrajectoryResult
Types for encoding trajectory execution result.
Definition: trajectory_point_interface.h:47
urcl::UrDriver::endForceMode
bool endForceMode()
Stop force mode and put the robot into normal operation mode.
Definition: ur_driver.cpp:471
urcl::UrDriver::get_packet_timeout_
int get_packet_timeout_
Definition: ur_driver.h:943
urcl::UrDriver::robot_ip_
std::string robot_ip_
Definition: ur_driver.h:939
urcl::UrDriverConfiguration::robot_ip
std::string robot_ip
IP-address under which the robot is reachable.
Definition: ur_driver.h:54
urcl::UrDriver::force_mode_gain_scale_factor_
double force_mode_gain_scale_factor_
Definition: ur_driver.h:931
urcl::UrDriverConfiguration
Structure for configuration parameters of a UrDriver object.
Definition: ur_driver.h:52
urcl::UrDriverConfiguration::trajectory_port
uint32_t trajectory_port
Port used for sending trajectory points to the robot in case of trajectory forwarding.
Definition: ur_driver.h:84
urcl::ToolVoltage
ToolVoltage
Possible values for the tool voltage.
Definition: tool_communication.h:41
trajectory_point_interface.h
urcl
Definition: bin_parser.h:36
urcl::UrDriver::stopControl
bool stopControl()
Sends a stop command to the socket interface which will signal the program running on the robot to no...
Definition: ur_driver.cpp:541
urcl::UrDriver::registerToolContactResultCallback
void registerToolContactResultCallback(std::function< void(control::ToolContactResult)> tool_contact_result_cb)
Register a callback for the robot-based tool contact execution completion.
Definition: ur_driver.h:839
urcl::UrDriver::getRTDEWriter
rtde_interface::RTDEWriter & getRTDEWriter()
Getter for the RTDE writer used to write to the robot's RTDE interface.
Definition: ur_driver.cpp:567
urcl::UrDriver::UrDriver
UrDriver(const std::string &robot_ip, const std::string &script_file, const std::string &output_recipe_file, const std::string &input_recipe_file, std::function< void(bool)> handle_program_state, bool headless_mode, const std::string &calibration_checksum="", const uint32_t reverse_port=50001, const uint32_t script_sender_port=50002, int servoj_gain=2000, double servoj_lookahead_time=0.03, bool non_blocking_read=false, const std::string &reverse_ip="", const uint32_t trajectory_port=50003, const uint32_t script_command_port=50004, double force_mode_damping=0.025, double force_mode_gain_scaling=0.5)
Constructs a new UrDriver object.
Definition: ur_driver.h:409
urcl::UrDriverConfiguration::tool_comm_setup
std::unique_ptr< ToolCommSetup > tool_comm_setup
Configuration for using the tool communication.
Definition: ur_driver.h:68
urcl::control::ToolContactResult
ToolContactResult
Types for encoding until tool contact execution result.
Definition: script_command_interface.h:42
urcl::UrDriverConfiguration::script_command_port
uint32_t script_command_port
Port used for forwarding script commands to the robot.
Definition: ur_driver.h:92
urcl::UrDriver::writeJointCommand
bool writeJointCommand(const vector6d_t &values, const comm::ControlMode control_mode, const RobotReceiveTimeout &robot_receive_timeout=RobotReceiveTimeout::millisec(20))
Writes a joint command together with a keepalive signal onto the socket being sent to the robot.
Definition: ur_driver.cpp:201
urcl::vector6d_t
std::array< double, 6 > vector6d_t
Definition: types.h:30
urcl::UrDriver::in_headless_mode_
bool in_headless_mode_
Definition: ur_driver.h:940
urcl::UrDriver::~UrDriver
virtual ~UrDriver()=default
urcl::UrDriver::setupReverseInterface
void setupReverseInterface(const uint32_t reverse_port)
Definition: ur_driver.cpp:640
urcl::UrDriver::setKeepaliveCount
void setKeepaliveCount(const uint32_t count)
Set the Keepalive count. This will set the number of allowed timeout reads on the robot.
Definition: ur_driver.cpp:600
tool_communication.h
urcl::UrDriverConfiguration::rtde_initialization_timeout
std::chrono::milliseconds rtde_initialization_timeout
Time in between initialization attempts of the RTDE interface.
Definition: ur_driver.h:134
urcl::UrDriver::socket_connection_attempts_
size_t socket_connection_attempts_
Definition: ur_driver.h:925
urcl::UrDriver::startForceMode
bool startForceMode(const vector6d_t &task_frame, const vector6uint32_t &selection_vector, const vector6d_t &wrench, const unsigned int type, const vector6d_t &limits, double damping_factor)
Start the robot to be controlled in force mode.
Definition: ur_driver.cpp:400
urcl::RobotReceiveTimeout::millisec
static RobotReceiveTimeout millisec(const unsigned int milliseconds=20)
Create a RobotReceiveTimeout object with a specific timeout given in milliseconds.
Definition: robot_receive_timeout.cpp:44
urcl::control::TrajectoryControlMessage
TrajectoryControlMessage
Control messages for forwarding and aborting trajectories.
Definition: reverse_interface.h:48
urcl::UrDriver::getDataPackage
std::unique_ptr< rtde_interface::DataPackage > getDataPackage()
Access function to receive the latest data package sent from the robot through RTDE interface.
Definition: ur_driver.cpp:191
urcl::vector6uint32_t
std::array< uint32_t, 6 > vector6uint32_t
Definition: types.h:32
urcl::UrDriver::writeTrajectoryPoint
bool writeTrajectoryPoint(const vector6d_t &positions, const bool cartesian, const float goal_time=0.0, const float blend_radius=0.052)
Writes a trajectory point onto the dedicated socket.
Definition: ur_driver.cpp:214
version_message.h
urcl::UrDriver::sendScript
bool sendScript(const std::string &program)
Sends a custom script program to the robot.
Definition: ur_driver.cpp:572
urcl::UrDriverConfiguration::reverse_port
uint32_t reverse_port
Port that will be opened by the driver to allow direct communication between the driver and the robot...
Definition: ur_driver.h:74
urcl::UrDriverConfiguration::servoj_gain
int servoj_gain
Proportional gain for arm joints following target position, range [100,2000].
Definition: ur_driver.h:105
urcl::UrDriver::servoj_lookahead_time_
double servoj_lookahead_time_
Definition: ur_driver.h:935
urcl::UrDriver::reverse_interface_
std::unique_ptr< control::ReverseInterface > reverse_interface_
Definition: ur_driver.h:920
urcl::VersionInformation
Struct containing a robot's version information.
Definition: version_information.h:42
urcl::UrDriver::socket_reconnection_timeout_
std::chrono::milliseconds socket_reconnection_timeout_
Definition: ur_driver.h:926
urcl::comm::INotifier
Parent class for notifiers.
Definition: pipeline.h:253
urcl::UrDriverConfiguration::calibration_checksum
std::string calibration_checksum
Definition: ur_driver.h:141
urcl::UrDriver::isTrajectoryInterfaceConnected
bool isTrajectoryInterfaceConnected() const
Definition: ur_driver.h:901
urcl::UrDriver::writeFreedriveControlMessage
bool writeFreedriveControlMessage(const control::FreedriveControlMessage freedrive_action, const RobotReceiveTimeout &robot_receive_timeout=RobotReceiveTimeout::millisec(200))
Writes a control message in freedrive mode.
Definition: ur_driver.cpp:248
urcl::UrDriver::notifier_
comm::INotifier notifier_
Definition: ur_driver.h:917
urcl::UrDriver::robot_version_
VersionInformation robot_version_
Definition: ur_driver.h:946
urcl::UrDriverConfiguration::reverse_ip
std::string reverse_ip
IP address that the reverse_port will get bound to.
Definition: ur_driver.h:100
urcl::UrDriver::UrDriver
UrDriver(const UrDriverConfiguration &config)
Constructs a new UrDriver object.
Definition: ur_driver.h:168
urcl::UrDriver::registerTrajectoryInterfaceDisconnectedCallback
void registerTrajectoryInterfaceDisconnectedCallback(std::function< void(const int)> fun)
Definition: ur_driver.h:889
urcl::UrDriver::stopPrimaryClientCommunication
void stopPrimaryClientCommunication()
Definition: ur_driver.h:884
urcl::UrDriverConfiguration::servoj_lookahead_time
double servoj_lookahead_time
Time [S], range [0.03,0.2] smoothens servoj calls with this lookahead time.
Definition: ur_driver.h:110
urcl::UrDriver::rtde_client_
std::unique_ptr< rtde_interface::RTDEClient > rtde_client_
Definition: ur_driver.h:918
urcl::UrDriver::writeTrajectorySplinePoint
bool writeTrajectorySplinePoint(const vector6d_t &positions, const vector6d_t &velocities, const vector6d_t &accelerations, const float goal_time=0.0)
Writes a trajectory spline point for quintic spline interpolation onto the dedicated socket.
Definition: ur_driver.cpp:220
urcl::UrDriver::initRTDE
void initRTDE()
Definition: ur_driver.cpp:631
urcl::UrDriver::writeKeepalive
bool writeKeepalive(const RobotReceiveTimeout &robot_receive_timeout=RobotReceiveTimeout::millisec(1000))
Write a keepalive signal only.
Definition: ur_driver.cpp:530
urcl::UrDriver::checkCalibration
bool checkCalibration(const std::string &checksum)
Checks if the kinematics information in the used model fits the actual robot.
Definition: ur_driver.cpp:562
rtde_writer.h
urcl::UrDriverConfiguration::rtde_initialization_attempts
size_t rtde_initialization_attempts
Number of attempts to initialize (given a successful socket connection) the RTDE interface.
Definition: ur_driver.h:129
urcl::UrDriverConfiguration::script_sender_port
uint32_t script_sender_port
The driver will offer an interface to receive the program's URScript on this port....
Definition: ur_driver.h:79
rtde_client.h
urcl::UrDriverConfiguration::non_blocking_read
bool non_blocking_read
Definition: ur_driver.h:136
urcl::UrDriver::handle_program_state_
std::function< void(bool)> handle_program_state_
Definition: ur_driver.h:937
urcl::UrDriver::getErrorCodes
std::deque< urcl::primary_interface::ErrorCode > getErrorCodes()
Retrieves previously raised error codes from PrimaryClient. After calling this, recorded errors will ...
Definition: ur_driver.cpp:652
urcl::UrDriver::script_sender_
std::unique_ptr< control::ScriptSender > script_sender_
Definition: ur_driver.h:923
urcl::UrDriverConfiguration::socket_reconnection_timeout
std::chrono::milliseconds socket_reconnection_timeout
Time in between connection attempts to sockets such as the primary or RTDE interface.
Definition: ur_driver.h:122
urcl::UrDriver::rtde_initialization_timeout_
std::chrono::milliseconds rtde_initialization_timeout_
Definition: ur_driver.h:929
urcl::UrDriver::script_command_interface_
std::unique_ptr< control::ScriptCommandInterface > script_command_interface_
Definition: ur_driver.h:922
urcl::UrDriver::UrDriver
UrDriver(const std::string &robot_ip, const std::string &script_file, const std::string &output_recipe_file, const std::string &input_recipe_file, std::function< void(bool)> handle_program_state, bool headless_mode, std::unique_ptr< ToolCommSetup > tool_comm_setup, const uint32_t reverse_port=50001, const uint32_t script_sender_port=50002, int servoj_gain=2000, double servoj_lookahead_time=0.03, bool non_blocking_read=false, const std::string &reverse_ip="", const uint32_t trajectory_port=50003, const uint32_t script_command_port=50004)
Constructs a new UrDriver object.
Definition: ur_driver.h:220
urcl::UrDriver::registerTrajectoryDoneCallback
void registerTrajectoryDoneCallback(std::function< void(control::TrajectoryResult)> trajectory_done_cb)
Register a callback for the robot-based trajectory execution completion.
Definition: ur_driver.h:826
urcl::UrDriver::non_blocking_read_
bool non_blocking_read_
Definition: ur_driver.h:944
reverse_interface.h
urcl::UrDriverConfiguration::socket_reconnect_attempts
size_t socket_reconnect_attempts
Number of attempts to reconnect to sockets such as the primary or RTDE interface.
Definition: ur_driver.h:117
urcl::UrDriver::full_robot_program_
std::string full_robot_program_
Definition: ur_driver.h:941
urcl::UrDriver::endToolContact
bool endToolContact()
This will stop the robot from looking for a tool contact, it will also enable sending move commands t...
Definition: ur_driver.cpp:507
urcl::UrDriver::getControlFrequency
uint32_t getControlFrequency() const
Definition: ur_driver.h:449
script_sender.h
urcl::UrDriver::zeroFTSensor
bool zeroFTSensor()
Zero the force torque sensor (only availbe on e-Series). Note: It requires the external control scrip...
Definition: ur_driver.cpp:254
urcl::UrDriver::getVersion
const VersionInformation & getVersion()
Returns version information about the currently connected robot.
Definition: ur_driver.h:796
urcl::UrDriver::startPrimaryClientCommunication
void startPrimaryClientCommunication()
Starts the primary client.
Definition: ur_driver.cpp:647
urcl::UrDriverConfiguration::headless_mode
bool headless_mode
Parameter to control if the driver should be started in headless mode.
Definition: ur_driver.h:66
urcl::UrDriverConfiguration::force_mode_damping
double force_mode_damping
Definition: ur_driver.h:143
urcl::vector3d_t
std::array< double, 3 > vector3d_t
Definition: types.h:29
urcl::UrDriver::getPrimaryClient
std::shared_ptr< urcl::primary_interface::PrimaryClient > getPrimaryClient()
Definition: ur_driver.h:906
urcl::UrDriver::isReverseInterfaceConnected
bool isReverseInterfaceConnected() const
Definition: ur_driver.h:896
urcl::UrDriver::servoj_gain_
uint32_t servoj_gain_
Definition: ur_driver.h:934
urcl::UrDriver::startToolContact
bool startToolContact()
This will make the robot look for tool contact in the tcp directions that the robot is currently movi...
Definition: ur_driver.cpp:484
urcl::UrDriver::readScriptFile
static std::string readScriptFile(const std::string &filename)
Definition: ur_driver.cpp:547
urcl::UrDriverConfiguration::force_mode_gain_scaling
double force_mode_gain_scaling
Definition: ur_driver.h:145
urcl::UrDriver::writeMotionPrimitive
bool writeMotionPrimitive(const std::shared_ptr< control::MotionPrimitive > motion_instruction)
Writes a motion command to the trajectory point interface.
Definition: ur_driver.cpp:243
urcl::UrDriver
This is the main class for interfacing the driver.
Definition: ur_driver.h:155
urcl::UrDriver::init
void init(const UrDriverConfiguration &config)
Definition: ur_driver.cpp:55
urcl::RobotReceiveTimeout
RobotReceiveTimeout class containing a timeout configuration.
Definition: robot_receive_timeout.h:47
primary_client.h
urcl::UrDriver::sendRobotProgram
bool sendRobotProgram()
Sends the external control program to the robot.
Definition: ur_driver.cpp:582
urcl::control::FreedriveControlMessage
FreedriveControlMessage
Control messages for starting and stopping freedrive mode.
Definition: reverse_interface.h:58
urcl::UrDriver::primary_client_
std::shared_ptr< urcl::primary_interface::PrimaryClient > primary_client_
Definition: ur_driver.h:919
urcl::UrDriver::rtde_initialization_attempts_
size_t rtde_initialization_attempts_
Definition: ur_driver.h:928
urcl::UrDriverConfiguration::script_file
std::string script_file
URScript file that should be sent to the robot.
Definition: ur_driver.h:55
urcl::UrDriver::setToolVoltage
bool setToolVoltage(const ToolVoltage voltage)
Set the tool voltage. Note: It requires the external control script to be running or the robot to be ...
Definition: ur_driver.cpp:301
urcl::UrDriver::writeTrajectoryControlMessage
bool writeTrajectoryControlMessage(const control::TrajectoryControlMessage trajectory_action, const int point_number=0, const RobotReceiveTimeout &robot_receive_timeout=RobotReceiveTimeout::millisec(200))
Writes a control message in trajectory forward mode.
Definition: ur_driver.cpp:237
urcl::UrDriver::force_mode_damping_factor_
double force_mode_damping_factor_
Definition: ur_driver.h:932


ur_client_library
Author(s): Thomas Timm Andersen, Simon Rasmussen, Felix Exner, Lea Steffen, Tristan Schnell
autogenerated on Mon May 26 2025 02:35:58