Flexiv RDK APIs  1.6.0
Public Member Functions | List of all members
flexiv::rdk::Maintenance Class Reference

Interface to carry out robot maintenance operations. The robot must be in IDLE mode when triggering any operations. More...

#include <maintenance.hpp>

Public Member Functions

 Maintenance (const Robot &robot)
 [Non-blocking] Create an instance and initialize the interface. More...
 
void CalibrateJointTorqueSensors (const std::vector< double > &cali_posture={})
 [Blocking] Calibrate all joint torque sensors. The robot will first move to a proper calibration posture, then start the low-level calibration of all joint torque sensors. Trigger this calibration if the sensed joint torques have noticeable deviations from true values. See below for more details. More...
 

Detailed Description

Interface to carry out robot maintenance operations. The robot must be in IDLE mode when triggering any operations.

Definition at line 19 of file maintenance.hpp.

Constructor & Destructor Documentation

◆ Maintenance()

flexiv::rdk::Maintenance::Maintenance ( const Robot robot)

[Non-blocking] Create an instance and initialize the interface.

Parameters
[in]robotReference to the instance of flexiv::rdk::Robot.
Exceptions
std::runtime_errorif the initialization sequence failed.

Member Function Documentation

◆ CalibrateJointTorqueSensors()

void flexiv::rdk::Maintenance::CalibrateJointTorqueSensors ( const std::vector< double > &  cali_posture = {})

[Blocking] Calibrate all joint torque sensors. The robot will first move to a proper calibration posture, then start the low-level calibration of all joint torque sensors. Trigger this calibration if the sensed joint torques have noticeable deviations from true values. See below for more details.

Parameters
[in]cali_postureJoint positions to move to before starting the calibration: \( q_cali \in \mathbb{R}^{n \times 1} \). If left empty, the robot will use the recommended upright posture for calibration. Otherwise the specified posture will be used, which is NOT recommended. Valid range: [RobotInfo::q_min, RobotInfo::q_max]. Unit: \( [rad] \).
Exceptions
std::invalid_argumentif [cali_posture] contains any value outside the valid range, or its size does not match robot DoF.
std::logic_errorif robot is not in the correct control mode.
std::runtime_errorif failed to deliver the request to the connected robot.
Note
Applicable control modes: IDLE.
This function blocks until the calibration is finished.
Warning
The robot needs to be rebooted for the calibration result to take effect.
How to determine when this calibration is needed?
  1. When the robot is static and there's no payload or external force exerted on it, if RobotStates::ext_wrench_in_tcp still gives greater than 5N reading, then this calibration should be triggered once.
  2. When running the "intermediate4_realtime_joint_floating.cpp" example, if the joints drift swiftly toward one direction, then this calibration should be triggered once.

The documentation for this class was generated from the following file: