최신 버전 정보는 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 |
성공 |
참고
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()사용) 기다리는 것을 권장합니다.