You're reading the documentation for an older, but still supported version (GL013300).
For information on the latest version, please have a look at GL013301.

set_singularity_handling (Manual Mode)

When teaching or jogging in Cartesian space, wrist singularities can cause unstable orientation flips. Use set_singularity_handling to configure how the controller reacts when approaching such configurations, ensuring smoother and safer manual teaching.

Typical usage

  • Prevent wrist or elbow flips near singular configurations.

  • Switch to STOP mode for safety or VEL mode for continuous smooth operation.

  • Commonly used when the operator observes TCP instability during fine motion near workspace limits.

Note

  • Default mode: SINGULARITY_AVOIDANCE_AVOID (smooth avoidance).

  • Affects only Cartesian (task-space) moves.

  • Does not affect direct joint jog commands.

Example: Avoiding Wrist Flip During Manual Jogging

#include "DRFLEx.h"
using namespace DRAFramework;

int main() {
    CDRFLEx drfl;

    // Step 1: Set singularity handling to velocity reduction mode
    drfl.set_singularity_handling(SINGULARITY_AVOIDANCE_VEL);

    // Step 2: Jog near singularity region (e.g., wrist fully extended)
    drfl.jog(JOG_AXIS_TASK_Z, MOVE_REFERENCE_BASE, 10.0f);
    std::this_thread::sleep_for(std::chrono::milliseconds(800));
    drfl.stop(STOP_TYPE_SLOW);

    printf("Jog completed safely with singularity handling enabled.\n");

    return 0;
}

Tips

  • Use STOP mode for operator safety in high-risk orientation changes.

  • Use VEL mode for maintaining path continuity with reduced speed.

  • Combine with get_current_rotm to visualize TCP orientation near singularity regions.