정의
set_external_force_reset(mode, offset)
기능
로봇에 장착한 외력 센서를 초기화하는 기능입니다. 이를 통해 힘/순응 제어의 정확도를 향상할 수 있으며, 접촉으로 인한 외력이 있는 상태에서도 힘/순응 제어를 시작할 수 있습니다. 로봇에 장착한 외력 센서를 기준으로 초기화를 수행하므로 As 시리즈의 경우 TCP 힘/토크값을 기준으로 offset 값을 설정하며, 그 외의 모델에서는 관절 토크값을 기준으로 offset 값을 설정합니다.
인수
|
인수명 |
자료형 |
기본값 |
설명 |
|---|---|---|---|
|
mode |
int |
1 |
초기화 모드
|
|
offset |
float[6] |
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0] |
외력 센서 offset
|
알아두기
-
힘/순응 제어 동작 여부와 상관없이 set_external_force_reset() 명령어를 사용하여 외력 오차를 초기화 할 수 있습니다.
-
set_external_force_reset() 명령어의 효과는 로봇의 안전 기능(충돌 감지, TCP SLF 등)에는 영향을 미치지 않습니다.
-
툴 무게 설정이 부정확한 경우에도 set_external_force_reset() 명령어 사용시 외력을 초기화 할 수 있습니다.
-
접촉으로 인한 외력 때문에 힘/순응 제어를 시작할 수 없는 경우에 set_external_force_reset() 명령어를 사용하여 외력을 초기화하면 힘/순응 제어를 시작할 수 있습니다.
-
set_external_force_reset() 명령어를 사용한 후 로봇이 움직이면 오차가 다시 쌓일 수 있으므로 정밀한 힘 제어를 위해서는 접촉하기 전 가능한 근접한 위치에서 set_external_force_reset 명령어를 사용해 주십시오.
-
check_force_condition() 명령어의 힘 상태에 영향을 미치며, get_external_torque()와 get_tool_force() 명령어를 통해 취득하는 출력값에도 영향을 미칩니다.
-
본 기능은 JTS와 FTS 등의 추가적인 센서가 장착되어 있는 M/H/P/As 시리즈에서 유용하게 사용이 가능합니다. 모터 전류 센서(CS)를 사용하는 A/E 시리즈의 경우에는 사용에 주의가 필요합니다.
경고
-
접촉으로 인한 외력이 있을 때 set_external_force_reset() 명령어를 사용하면 offset에 접촉력이 포함되므로 실제 외력 측정이 왜곡되는 문제가 있음을 명심해 주십시오.
-
또한 접촉이 있을 때 set_external_force_reset() 명령어를 중복해서 사용하면 문제가 중첩될 수 있으므로 중복 사용이 되지 않게 주의해 주십시오.
-
위의 경우를 피하기 위하여 set_external_force_reset() 명령어는 가능한 비접촉 상태에서 사용하시기 바랍니다.
리턴
|
값 |
설명 |
|---|---|
|
offset |
현재 설정된 센서 offset
|
예외
|
예외 |
설명 |
|---|---|
|
DR_Error (DR_ERROR_TYPE) |
인수들의 데이터형 오류 시 |
|
DR_Error (DR_ERROR_VALUE) |
인수의 값이 유효하지 않을 시 |
|
DR_Error (DR_ERROR_RUNTIME) |
C Extension 모듈 에러 발생 시 |
|
DR_Error (DR_ERROR_STOP) |
프로그램 강제 종료 시 |
예제
# Example
# 1. 초기 자세 이동: [J1, J2, J3, J4, J5, J6] = [0, 0, 90, 0, 90, 0]
# 2. 순응 제어 시작: 외력 초기화 후 순응 제어 시작(모션 종료 후 진동이 남아 있으면 외력 초기화 중에 오차의 원인이 될 수 있으므로 wait(2.0) 추가.
# 3. 힘 제어 대상 위치 접근
# 4. 힘 제어 시작: 힘 제어 정확도를 향상 시키기 위해 힘 제어 시작 전 외력 초기화.
# 5. 힘/순응 제어 종료 후 Retract: 강성 제어 종료 후 외력 offset을 0으로 복원
# 1. 초기 자세 이동
q0 = posj(0.0, 0.0, 90.0, 0.0, 90.0, 0.0)
set_velj(30.0)
set_accj(60.0)
movej(q0)
# 2. 외력 초기화 후 강성 제어 시작
wait(2.0)
set_external_force_reset() # 외력 초기화
k_d = [3000.0, 3000.0, 3000.0, 200.0, 200.0, 200.0]
task_compliance_ctrl(k_d)
wait(2.0)
# 3. 힘 제어 대상 위치 접근
set_velx(75.0)
set_accx(100.0)
delta_approach = [0.0, 0.0, -100.0, 0.0, 0.0, 0.0]
movel(delta_approach, mod=DR_MV_MOD_REL)
# 4. 힘 제어 시작
wait(2.0)
set_external_force_reset() # 외력 초기화
force_desired = 20.0
f_d = [0.0, 0.0, -force_desired, 0.0, 0.0, 0.0]
f_dir = [0, 0, 1, 0, 0, 0]
set_desired_force(f_d, f_dir)
wait(10.0)
# 5. 힘-강성 제어 종료 후 Retract
release_force(0.5)
delta_retract = [0.0, 0.0, 150.0, 0.0, 0.0, 0.0]
movel(delta_retract, mod=DR_MV_MOD_REL)
release_compliance_ctrl() # 외력 offset을 0으로 복원
set_external_force_reset(0)
movej(q0)