Breadcrumbs

set_external_force_reset()

정의

set_external_force_reset(mode, offset)

기능

로봇에 장착한 외력 센서를 초기화하는 기능입니다. 이를 통해 힘/순응 제어의 정확도를 향상할 수 있으며, 접촉으로 인한 외력이 있는 상태에서도 힘/순응 제어를 시작할 수 있습니다. 로봇에 장착한 외력 센서를 기준으로 초기화를 수행하므로 As 시리즈의 경우 TCP 힘/토크값을 기준으로 offset 값을 설정하며, 그 외의 모델에서는 관절 토크값을 기준으로 offset 값을 설정합니다. 

인수

인수명

자료형

기본값

설명

mode

int

1

초기화 모드

  • 0: offset을 0으로 변경 

  • 1: 외력 센서 초기화, 현재 측정 외력을 offset으로 설정 (default)

  • 2: 입력한 offset 값으로 설정

offset

float[6]

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

외력 센서 offset

  • As 시리즈: TCP 힘/토크 (순서: Fx, Fy, Fz, Tx, Ty, Tz), (단위: N, Nm)

  • 그 외 시리즈: 관절 토크(순서: J1~ 6), (단위: Nm)

알아두기

  • 힘/순응 제어 동작 여부와 상관없이 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

  • As 시리즈: TCP 힘/토크 (순서: Fx, Fy, Fz, Tx, Ty, Tz), (단위: N, Nm)

  • 그 외 시리즈: 관절 토크(순서: J1~ 6), (단위: Nm)

예외

예외

설명

DR_Error (DR_ERROR_TYPE)

인수들의 데이터형 오류 시

DR_Error (DR_ERROR_VALUE)

인수의 값이 유효하지 않을 시

DR_Error (DR_ERROR_RUNTIME)

C Extension 모듈 에러 발생 시

DR_Error (DR_ERROR_STOP)

프로그램 강제 종료 시

예제

Python
# 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)

관련 명령어