6 #ifndef FLEXIV_RDK_ROBOT_HPP_
7 #define FLEXIV_RDK_ROBOT_HPP_
44 Robot(
const std::string& robot_sn,
45 const std::vector<std::string>& network_interface_whitelist = {});
157 const std::vector<std::string>
mu_log()
const;
239 [[deprecated(
"[Removing in v1.6] Use the other SetGlobalVariables() instead")]]
void
252 [[deprecated(
"[Removing in v1.6] Use the other global_variables() instead")]]
const std::vector<
275 unsigned int index,
bool continue_exec =
false,
bool block_until_started =
true);
294 const std::string& name,
bool continue_exec =
false,
bool block_until_started =
true);
392 const std::map<std::string, FlexivDataTypes>& input_params,
393 const std::map<std::string, FlexivDataTypes>& properties = {},
394 bool block_until_started =
true);
396 [[deprecated(
"[Removing in v1.6] Use the other ExecutePrimitive() instead")]]
void
397 ExecutePrimitive(
const std::string& pt_cmd,
bool block_until_started =
true);
409 [[deprecated(
"[Removing in v1.6] Use the other primitive_states() instead")]]
const std::vector<
430 bool enable_soft_limits =
true);
451 const std::vector<double>& velocities,
const std::vector<double>& accelerations);
479 const std::vector<double>& velocities,
const std::vector<double>& accelerations,
480 const std::vector<double>& max_vel,
const std::vector<double>& max_acc);
499 const std::vector<double>& Z_q = {0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7});
548 const std::array<double, kCartDoF>& wrench = {},
549 const std::array<double, kCartDoF>& velocity = {},
550 const std::array<double, kCartDoF>& acceleration = {});
593 const std::array<double, kCartDoF>& wrench = {},
double max_linear_vel = 0.5,
594 double max_angular_vel = 1.0,
double max_linear_acc = 2.0,
double max_angular_acc = 5.0);
616 const std::array<double, kCartDoF>& Z_x = {0.7, 0.7, 0.7, 0.7, 0.7, 0.7});
681 double angular_manipulability = 0.0,
double ref_positions_tracking = 0.5);
703 const std::array<double, kCartDoF / 2>& max_linear_vel = {1.0, 1.0, 1.0});
736 const std::array<double, kPoseSize>& T_in_root = {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0});
775 const std::vector<unsigned int>& port_idx,
const std::vector<bool>& values);
777 [[deprecated(
"[Removing in v1.6] Use SetDigitalOutputs() instead")]]
void WriteDigitalOutput(
778 const std::vector<unsigned int>& port_idx,
const std::vector<bool>& values);
789 "[Removing in v1.6] Use digital_inputs() instead")]]
const std::array<bool, kIOPorts>
794 std::unique_ptr<Impl> pimpl_;
Interface with the robot device(s).
Interface for file transfer with the robot. The robot must be put into IDLE mode when transferring fi...
Interface with the robot gripper.
Interface to access certain robot kinematics and dynamics data.
Main interface with the robot, containing several function categories and background services.
void ExecutePlan(unsigned int index, bool continue_exec=false, bool block_until_started=true)
[Blocking] Execute a plan by specifying its index.
void SetNullSpaceObjectives(double linear_manipulability=0.0, double angular_manipulability=0.0, double ref_positions_tracking=0.5)
[Blocking] Set weights of the three optimization objectives while computing the robot's null-space po...
void SetMaxContactWrench(const std::array< double, kCartDoF > &max_wrench)
[Blocking] Set maximum contact wrench for the motion control part of the Cartesian motion-force contr...
void SetDigitalOutputs(const std::vector< unsigned int > &port_idx, const std::vector< bool > &values)
[Blocking] Set one or more digital output ports, including 16 on the control box plus 2 inside the wr...
const RobotStates states() const
[Non-blocking] Current states data of the robot.
const std::vector< std::string > plan_list() const
[Blocking] Get a list of all available plans.
void SetJointImpedance(const std::vector< double > &K_q, const std::vector< double > &Z_q={0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7})
[Blocking] Set impedance properties of the robot's joint motion controller used in the joint impedanc...
bool recovery() const
[Non-blocking] Whether the robot is in recovery state.
void Brake(bool engage)
[Blocking] Force robot brakes to engage or release during normal operation. Restrictions apply,...
OperationalStatus operational_status() const
[Non-blocking] Current operational status of the robot.
void StepBreakpoint()
[Blocking] If breakpoint mode is enabled, step to the next breakpoint. The plan execution will contin...
bool stopped() const
[Non-blocking] Whether the robot has come to a complete stop.
void ExecutePrimitive(const std::string &primitive_name, const std::map< std::string, FlexivDataTypes > &input_params, const std::map< std::string, FlexivDataTypes > &properties={}, bool block_until_started=true)
[Blocking] Execute a primitive by specifying its name and parameters, which can be found in the Flexi...
const RobotInfo info() const
[Non-blocking] General information about the connected robot.
void SetGlobalVariables(const std::map< std::string, FlexivDataTypes > &global_vars)
[Blocking] Set values to global variables that already exist in the robot.
Mode mode() const
[Non-blocking] Current control mode of the robot.
bool operational(bool verbose=true) const
[Non-blocking] Whether the robot is ready to be operated, which requires the following conditions to ...
void StreamJointTorque(const std::vector< double > &torques, bool enable_gravity_comp=true, bool enable_soft_limits=true)
[Non-blocking] Continuously stream joint torque command to the robot.
void StreamCartesianMotionForce(const std::array< double, kPoseSize > &pose, const std::array< double, kCartDoF > &wrench={}, const std::array< double, kCartDoF > &velocity={}, const std::array< double, kCartDoF > &acceleration={})
[Non-blocking] Continuously stream Cartesian motion and/or force command for the robot to track using...
void SetVelocityScale(unsigned int velocity_scale)
[Blocking] Set overall velocity scale for robot motions during plan and primitive execution.
void SendJointPosition(const std::vector< double > &positions, const std::vector< double > &velocities, const std::vector< double > &accelerations, const std::vector< double > &max_vel, const std::vector< double > &max_acc)
[Non-blocking] Discretely send joint position, velocity, and acceleration command to the robot....
const std::vector< std::string > primitive_states(bool dummy)
Unused parameter [dummy] is needed for function overloading.
void SetForceControlFrame(CoordType root_coord, const std::array< double, kPoseSize > &T_in_root={0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0})
[Blocking] Set reference frame for force control while in the Cartesian motion-force control modes....
void Stop()
[Blocking] Stop the robot and transit robot mode to IDLE.
void PausePlan(bool pause)
[Blocking] Pause or resume the execution of the current plan.
Robot(const std::string &robot_sn, const std::vector< std::string > &network_interface_whitelist={})
[Blocking] Create an instance as the main robot control interface. RDK services will initialize and c...
const std::vector< std::string > global_variables(bool dummy)
Unused parameter [dummy] is needed for function overloading.
const std::vector< std::string > mu_log() const
[Non-blocking] Get multilingual log messages of the connected robot.
void SwitchMode(Mode mode)
[Blocking] Switch to a new control mode and wait until mode transition is finished.
std::map< std::string, FlexivDataTypes > global_variables() const
[Blocking] Existing global variables and their current values.
const std::array< bool, kIOPorts > digital_inputs()
[Non-blocking] Current reading of all digital input ports, including 16 on the control box plus 2 ins...
void SetCartesianImpedance(const std::array< double, kCartDoF > &K_x, const std::array< double, kCartDoF > &Z_x={0.7, 0.7, 0.7, 0.7, 0.7, 0.7})
[Blocking] Set impedance properties of the robot's Cartesian motion controller used in the Cartesian ...
bool reduced() const
[Non-blocking] Whether the robot is in reduced state.
bool connected() const
[Non-blocking] Whether the connection with the robot is established.
bool enabling_button_pressed() const
[Non-blocking] Whether the enabling button is pressed.
void SetForceControlAxis(const std::array< bool, kCartDoF > &enabled_axes, const std::array< double, kCartDoF/2 > &max_linear_vel={1.0, 1.0, 1.0})
[Blocking] Set Cartesian axes to enable force control while in the Cartesian motion-force control mod...
std::map< std::string, FlexivDataTypes > primitive_states() const
[Blocking] State parameters of the executing primitive and their current values.
void SetBreakpointMode(bool is_enabled)
[Blocking] Enable or disable the breakpoint mode during plan execution. When enabled,...
void ExecutePlan(const std::string &name, bool continue_exec=false, bool block_until_started=true)
[Blocking] Execute a plan by specifying its name.
void SendCartesianMotionForce(const std::array< double, kPoseSize > &pose, const std::array< double, kCartDoF > &wrench={}, double max_linear_vel=0.5, double max_angular_vel=1.0, double max_linear_acc=2.0, double max_angular_acc=5.0)
[Non-blocking] Discretely send Cartesian motion and/or force command for the robot to track using its...
const PlanInfo plan_info() const
[Blocking] Get detailed information about the currently executing plan. Contains information like pla...
void StreamJointPosition(const std::vector< double > &positions, const std::vector< double > &velocities, const std::vector< double > &accelerations)
[Non-blocking] Continuously stream joint position, velocity, and acceleration command to the robot....
void Enable()
[Blocking] Enable the robot, if E-stop is released and there's no fault, the robot will release brake...
bool fault() const
[Non-blocking] Whether the robot is in fault state.
void SetPassiveForceControl(bool is_enabled)
[Blocking] Enable or disable passive force control for the Cartesian motion-force control modes....
bool ClearFault(unsigned int timeout_sec=30)
[Blocking] Try to clear minor or critical fault of the robot without a power cycle.
bool estop_released() const
[Non-blocking] Whether the emergency stop is released.
bool busy() const
[Non-blocking] Whether the robot is currently executing a task. This includes any user commanded oper...
void RunAutoRecovery()
[Blocking] Run automatic recovery to bring joints that are outside the allowed position range back in...
void SetNullSpacePosture(const std::vector< double > &ref_positions)
[Blocking] Set reference joint positions for the null-space posture control module used in the Cartes...
Interface to online update and interact with the robot's work coordinates. All updates will take effe...
Header file containing various constant expressions, data structs, and enums.
CoordType
Type of commonly-used reference coordinates.
OperationalStatus
Operational status of the robot. Except for the first two, the other enumerators indicate the cause o...
Mode
Robot control modes. The robot needs to be switched into the correct control mode before the correspo...
Data structure containing information of the on-going primitive/plan.
General information about the connected robot.
Data structure containing the joint- and Cartesian-space robot states.