이전 버전(1.33.4)의 문서를 보고 있습니다. 이 버전은 계속 지원됩니다.
최신 버전 정보는 1.33.5에서 확인하세요.

release_force

이 함수는 지정한 전환 시간 동안 목표 힘과 토크 값을 0까지 서서히 줄이고, 로봇의 제어 모드(Control Mode)를 적응형 위치 제어로 되돌립니다.

정의
DRFLEx.h, CDRFLEx 클래스의 public 섹션

bool release_force(float fTargetTime = 0.f) {
    return _release_force(_rbtCtrl, fTargetTime);
};

매개변수

매개변수 이름

자료형

기본값

설명

fTargetTime

float

0

목표 힘을 0까지 줄이는 시간 [sec]입니다.
범위: 0–1.0(시간에 따른 선형 보간).

반환값

값

설명

0

실패

1

성공

참고

open_connection에 전달한 주소가 정확히 “127.0.0.1”이면 task_compliance_ctrl, set_stiffnessx, release_compliance_ctrl, set_desired_force, release_force는 컨트롤러에 명령을 보내지 않고 true를 반환합니다.

예제 A — 수동 모드(핸드가이딩 후 힘 해제)

// 사전 조건:
// - 연결됨, 서보 온
// - 수동(교시) 모드 활성

// 1) 기준 좌표계 설정
drfl.set_ref_coord(COORDINATE_SYSTEM_TOOL);

// 2) 시작 포즈로 이동
float q0[6] = {0.0f, 0.0f, 90.0f, 0.0f, 90.0f, 0.0f};
drfl.movej(q0, 60, 30);
drfl.mwait();

// 3) 순응 모드 활성화
float stiff[6] = {1500.f, 1500.f, 1000.f, 150.f, 150.f, 150.f};
drfl.task_compliance_ctrl(stiff);

// 4) 하향 힘(+Z) 적용
float fTarget[6] = {0.f, 0.f, 20.f, 0.f, 0.f, 0.f};
unsigned char dir[6] = {0, 0, 1, 0, 0, 0};
drfl.set_desired_force(fTarget, dir, COORDINATE_SYSTEM_TOOL, 0.3f);

// 5) 가한 힘을 서서히 해제
drfl.release_force(0.4f);

// 6) 순응 제어 종료
drfl.release_compliance_ctrl();

printf("Force released and compliance ended.\n");

예제 B — 자동 모드(힘 제어 작업 완료)

// 사전 조건:
// - 자동 모드 활성
// - 공정 중 힘 제어가 이미 활성화됨

// 1) 하향 삽입 힘 적용
float fTarget[6] = {0.f, 0.f, 30.f, 0.f, 0.f, 0.f};
unsigned char dir[6] = {0, 0, 1, 0, 0, 0};
drfl.set_desired_force(fTarget, dir, COORDINATE_SYSTEM_TOOL, 0.3f);

// 2) 삽입 동작 실행
float p_insert[NUM_TASK] = {550.f, 200.f, 90.f, 180.f, 0.f, 0.f};
float vel[2] = {50.f, 20.f}, acc[2] = {200.f, 80.f};
drfl.movel(p_insert, vel, acc);
drfl.mwait();

// 3) 완료 후 가한 힘을 부드럽게 해제
drfl.release_force(0.4f);

// 4) 일반 제어를 복원하고 다음 동작 계속
drfl.release_compliance_ctrl();

printf("Force smoothly released and returned to position mode.\n");

참고 사항 및 모범 사례

  • 안정적으로 전환하려면 release_compliance_ctrl() 전에 항상 release_force()를 호출하세요.

  • 힘을 부드럽고 안전하게 줄이려면 짧은 전환 시간(0.3–0.5 s)을 사용하세요.

  • 외부 하중이 걸린 상태에서 힘을 갑자기 해제하지 마세요. 먼저 접촉 상태가 안정적인지 확인하세요.

  • 순응 제어와 힘 제어(Force Control)의 전체 작업 흐름에는 set_desired_force, task_compliance_ctrl과 함께 사용하세요.

  • 자동 모드에서는 힘을 해제하기 전에 모션이 끝날 때까지(예: mwait() 사용) 기다리는 것을 권장합니다.