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.

release_protective_stop (Manual Mode)

This section explains how to use release_protective_stop during Manual (Teach) operations. This function releases the robot from a protective stop state, which occurs when a safety event or collision is detected. After the protective stop is cleared and verified, this command allows the robot to return to a normal operational state.

Typical usage

  • Manually release the robot from a protective or safety stop condition after confirming it is safe to resume operation.

  • Reset safety-related errors (e.g., collision detection, protective zone violation) following inspection.

  • Resume motion or teaching once the stop condition has been cleared and acknowledged.

Note

  • The robot must be in a stopped and safe condition before release can occur.

  • Releasing a protective stop does not re-enable servo power — call servo_off or re-enable motion as needed.

Example: Release protective stop and resume manual operation

#include "DRFLEx.h"
#include <cstdio>
#include <thread>
using namespace DRAFramework;

int main() {
    CDRFLEx drfl;

    // Preconditions:
    // - Connection established (open_connection)
    // - Manual (Teach) mode active
    // - Robot currently halted by a protective stop (collision, zone violation, etc.)

    // 1) Attempt to release protective stop
    if (drfl.release_protective_stop(RELEASE_MODE_MANUAL))
        std::printf("[Protective Stop] Released successfully (Manual Mode).\n");
    else {
        std::printf("[Protective Stop] Release failed. Confirm safety conditions.\n");
        return -1;
    }

    // 2) Wait for the robot state to return to idle
    while (drfl.check_motion() != 0)
        std::this_thread::sleep_for(std::chrono::milliseconds(200));

    // 3) Resume manual jog or motion after verification
    float qTarget[6] = {0, -30, 90, 0, 90, 0};
    drfl.movej(qTarget, 50, 50);
    drfl.mwait();

    std::printf("[Protective Stop] Robot motion resumed.\n");
    return 0;
}

Tips

  • Always perform visual inspection and confirm safe clearance before calling this function.

  • For repetitive or automated releases, prefer RELEASE_MODE_AUTOMATIC only in controlled environments.

  • If the release fails repeatedly, check safety configuration via get_safety_configuration_ex2 or get_safety_configuration_ex2_v3.

  • After a protective stop, you may need to re-enable servo power before motion can resume.

  • Combine with set_safety_mode for complete recovery procedures after safety events.