7 #ifndef FLEXIV_RDK_DATA_HPP_
8 #define FLEXIV_RDK_DATA_HPP_
18 namespace flexiv::rdk {
50 = {{ProductModel::UNKNOWN,
"UNKNOWN"}, {ProductModel::Enlight_L,
"Enlight-L"},
51 {ProductModel::Enlight_LL,
"Enlight-LL"}, {ProductModel::MICO_Core,
"MICO-Core"},
52 {ProductModel::MICO_Plus,
"MICO-Plus"}, {ProductModel::MICO_Ultra,
"MICO-Ultra"}};
72 {JointGroup::UNKNOWN,
"UNKNOWN"},
73 {JointGroup::ALL,
"ALL"},
74 {JointGroup::ARMS,
"ARMS"},
75 {JointGroup::ARM_1,
"ARM_1"},
76 {JointGroup::ARM_2,
"ARM_2"},
77 {JointGroup::EXT_AXIS,
"EXT_AXIS"},
103 {OperationalStatus::UNKNOWN,
"Unknown status"},
104 {OperationalStatus::READY,
"Ready"},
105 {OperationalStatus::BOOTING,
"System booting"},
106 {OperationalStatus::ESTOP_NOT_RELEASED,
"E-Stop not released"},
107 {OperationalStatus::NOT_SERVO_ON,
"Not servo on"},
108 {OperationalStatus::RELEASING_BRAKE,
"Releasing brakes"},
109 {OperationalStatus::MINOR_FAULT,
"Minor fault occurred"},
110 {OperationalStatus::CRITICAL_FAULT,
"Critical fault occurred"},
111 {OperationalStatus::IN_REDUCED_STATE,
"In reduced state"},
112 {OperationalStatus::IN_RECOVERY_STATE,
"In recovery state"},
113 {OperationalStatus::IN_MANUAL_MODE,
"In Manual mode"},
114 {OperationalStatus::IN_AUTO_MODE,
"In regular Auto mode"},
161 std::chrono::time_point<std::chrono::system_clock>
timestamp;
190 std::map<JointGroup, size_t>
DoF = {};
197 std::map<JointGroup, std::array<double, kCartDoF>>
K_x_nom = {};
202 std::map<JointGroup, std::vector<double>>
K_q_nom = {};
206 std::map<JointGroup, std::vector<double>>
q_min = {};
210 std::map<JointGroup, std::vector<double>>
q_max = {};
214 std::map<JointGroup, std::vector<double>>
dq_max = {};
218 std::map<JointGroup, std::vector<double>>
tau_max = {};
236 std::vector<double>
q = {};
253 std::vector<double>
dq = {};
267 std::vector<double>
tau = {};
367 std::vector<double>
q_d = {};
457 JPos(
const std::array<double, kSerialJointDoF>&
q_m,
458 const std::array<double, kMaxExtAxes>&
q_e = {})
465 std::array<double, kSerialJointDoF>
q_m = {};
470 std::array<double, kMaxExtAxes>
q_e = {};
497 const std::array<double, kCartDoF / 2>&
orientation,
498 const std::array<std::string, 2>&
ref_frame,
499 const std::array<double, kSerialJointDoF>&
ref_q_m = {},
500 const std::array<double, kMaxExtAxes>&
ref_q_e = {})
528 std::array<double, kSerialJointDoF>
ref_q_m = {};
554 std::vector<int>, std::vector<double>, std::vector<std::string>, std::vector<rdk::JPos>,
555 std::vector<rdk::Coord>>;
666 const std::vector<double>&
ddq_d)
674 std::vector<double>
q_d = {};
697 const std::vector<double>&
dq_max,
const std::vector<double>&
ddq_max)
706 std::vector<double>
q_d = {};
734 const std::array<double, kCartDoF>&
wrench_d = {},
735 const std::array<double, kCartDoF>&
twist_d = {},
736 const std::array<double, kCartDoF>&
acc_d = {})
747 std::array<double, kPoseSize>
pose_d = {};
768 std::array<double, kCartDoF>
acc_d = {};
783 const std::array<double, kCartDoF>&
wrench_d = {},
799 std::array<double, kPoseSize>
pose_d = {};
const std::map< JointGroup, std::string > kJointGroupNames
CoordType
Type of commonly-used reference coordinates.
@ WORLD
World frame (fixed).
@ TCP
TCP frame (move with the robot's end effector).
JointGroup
All possible joint groups of the robot.
@ ARM_1
The 1st single arm in a dual-arm robot or the only arm in a single-arm robot.
@ ARM_2
The 2nd single arm in a dual-arm robot, not applicable to single-arm robots.
@ ALL
The full system, including all actuated joints.
@ EXT_AXIS
External axis(es) for workspace extension.
@ ARMS
The dual arms as a whole, only applicable to dual-arm robots.
std::ostream & operator<<(std::ostream &ostream, const RobotEvent &robot_event)
Operator overloading to out stream all members of RobotEvent in JSON format.
constexpr size_t kMaxExtAxes
constexpr size_t kPoseSize
constexpr size_t kSerialJointDoF
constexpr size_t kCartDoF
SyncMotionMode
Modes for synchronous motions.
@ ARM1_TCP
Sync with arm1 tcp.
@ ARM2_TCP
sync with arm2 tcp
@ POSITIONER
sync with positioner
@ DISABLE
Don't sync with any target.
const std::map< ProductModel, std::string > kProductModelNames
OperationalStatus
All possible operational statuses of the robot. Except for the first two, the other enumerators indic...
@ IN_RECOVERY_STATE
In recovery state, see recovery().
@ ESTOP_NOT_RELEASED
E-Stop is not released.
@ READY
Ready to be operated.
@ IN_MANUAL_MODE
In Manual mode, need to switch to Auto (Remote) mode.
@ IN_AUTO_MODE
In regular Auto mode, need to switch to Auto (Remote) mode.
@ CRITICAL_FAULT
Critical fault occurred, call ClearFault() to try clearing it.
@ RELEASING_BRAKE
Brake release in progress, please wait.
@ IN_REDUCED_STATE
In reduced state, see reduced().
@ MINOR_FAULT
Minor fault occurred, call ClearFault() to try clearing it.
@ NOT_SERVO_ON
Not servo on, call ServoOn() to send the signal.
@ BOOTING
System still booting, please wait.
const std::map< OperationalStatus, std::string > kOpStatusNames
constexpr size_t kIOPorts
std::variant< int, double, std::string, rdk::JPos, rdk::Coord, std::vector< int >, std::vector< double >, std::vector< std::string >, std::vector< rdk::JPos >, std::vector< rdk::Coord > > FlexivDataTypes
ProductModel
All supported product models of the robot.
@ Enlight_LL
Enlight-L standard version.
@ MICO_Ultra
MICO-Plus: MICO-Core with pan-tilt torso.
@ MICO_Core
Enlight-LL: Dual Enlight-L with customizable mounting poses.
@ MICO_Plus
MICO-Core: Dual Enlight-L with fixed-mounting upper body.
Data structure representing the customized data type "COORD" in Flexiv Elements.
std::array< double, kCartDoF/2 > orientation
std::array< std::string, 2 > ref_frame
std::array< double, kCartDoF/2 > position
std::array< double, kSerialJointDoF > ref_q_m
Coord(const std::array< double, kCartDoF/2 > &position, const std::array< double, kCartDoF/2 > &orientation, const std::array< std::string, 2 > &ref_frame, const std::array< double, kSerialJointDoF > &ref_q_m={}, const std::array< double, kMaxExtAxes > &ref_q_e={})
Custom constructor.
std::array< double, kMaxExtAxes > ref_q_e
Data structure representing the customized data type "JPOS" in Flexiv Elements.
JPos(const std::array< double, kSerialJointDoF > &q_m, const std::array< double, kMaxExtAxes > &q_e={})
Custom constructor.
std::array< double, kMaxExtAxes > q_e
std::array< double, kSerialJointDoF > q_m
Commands data for non-real-time Cartesian motion-force control.
NrtCartesianCmd(const std::array< double, kPoseSize > &pose_d, const std::array< double, kCartDoF > &wrench_d={}, const std::array< double, kCartDoF > &twist_d={}, double max_linear_vel=0.5, double max_angular_vel=1.0, double max_linear_acc=2.0, double max_angular_acc=5.0)
std::array< double, kCartDoF > twist_d
std::array< double, kPoseSize > pose_d
NrtCartesianCmd()=default
std::array< double, kCartDoF > wrench_d
Commands data for non-real-time Cartesian multi-waypoint motion-force control.
NrtCartesianMultiWaypointCmd(const std::vector< NrtCartesianCmd > &waypoints)
NrtCartesianMultiWaypointCmd()=default
std::vector< NrtCartesianCmd > waypoints
Commands data for non-real-time joint position control.
std::vector< double > q_d
NrtJointPositionCmd()=default
std::vector< double > dq_d
std::vector< double > ddq_max
std::vector< double > dq_max
NrtJointPositionCmd(const std::vector< double > &q_d, const std::vector< double > &dq_d, const std::vector< double > &dq_max, const std::vector< double > &ddq_max)
Information of the on-going primitive/plan.
std::string node_path_time_period
std::string assigned_plan_name
std::string node_path_number
Arguments of a primitive command.
std::map< std::string, FlexivDataTypes > input_params
PrimitiveArgs(const std::string &pt_name, const std::map< std::string, FlexivDataTypes > &input_params)
SyncMotionMode sync_motion_mode
bool external_axis_control
States data of a primitive.
std::map< std::string, FlexivDataTypes > names_and_values
Robot actions data in joint and Cartesian space for a joint group.
std::pair< int, int > timestamp
std::vector< double > tau_d
std::array< double, kCartDoF > tcp_wrench_d
std::array< double, kCartDoF > tcp_twist_d
std::vector< double > q_d
std::array< double, kPoseSize > tcp_pose_d
std::vector< double > dq_d
Information about a robot event.
std::string probable_causes
@ CRITICAL
Critical error event.
@ INFO
Informational event.
std::chrono::time_point< std::chrono::system_clock > timestamp
std::string recommended_actions
General information about the connected robot.
std::map< JointGroup, std::vector< double > > dq_max
ProductModel product_model
std::map< JointGroup, std::vector< double > > q_min
std::map< JointGroup, std::array< double, kCartDoF > > K_x_nom
std::map< JointGroup, std::vector< double > > K_q_nom
std::map< JointGroup, std::vector< double > > tau_max
std::map< JointGroup, std::string > single_arm_groups
std::map< JointGroup, std::string > all_groups
std::map< JointGroup, std::vector< double > > q_max
std::map< JointGroup, size_t > DoF
Robot states data in joint and Cartesian space for a joint group.
std::array< double, kCartDoF > raw_tcp_wrench
std::vector< double > dtheta
std::pair< int, int > timestamp
std::array< double, kCartDoF > tcp_wrench
std::vector< double > temperature
std::vector< double > tau_dot
std::array< double, kCartDoF > raw_ft_sensor
std::vector< double > tau_ext
std::array< double, kPoseSize > tcp_pose
std::vector< double > theta
std::array< double, kCartDoF > tcp_wrench_local
std::vector< double > tau
std::vector< double > tau_interact
std::array< double, kPoseSize > flange_pose
std::array< double, kCartDoF > tcp_twist
std::array< double, kCartDoF > raw_tcp_wrench_local
Commands data for real-time Cartesian motion-force control.
std::array< double, kCartDoF > wrench_d
RtCartesianCmd(const std::array< double, kPoseSize > &pose_d, const std::array< double, kCartDoF > &wrench_d={}, const std::array< double, kCartDoF > &twist_d={}, const std::array< double, kCartDoF > &acc_d={})
std::array< double, kCartDoF > twist_d
std::array< double, kPoseSize > pose_d
std::array< double, kCartDoF > acc_d
Commands data for real-time joint position control.
std::vector< double > dq_d
RtJointPositionCmd(const std::vector< double > &q_d, const std::vector< double > &dq_d, const std::vector< double > &ddq_d)
RtJointPositionCmd()=default
std::vector< double > q_d
std::vector< double > ddq_d
Commands data for real-time joint torque control.
double friction_comp_scale
RtJointTorqueCmd(const std::vector< double > &tau_d, bool enable_gravity_comp=true, bool enable_soft_limits=true, double friction_comp_scale=100.0)
RtJointTorqueCmd()=default
std::vector< double > tau_d