Breadcrumbs

check_orientation_condition()

check_orientation_condition(axis, min, max, ref, mod)

기능

현재 로봇 엔드이펙터의 자세 정보와 주어진 위치 자세 간 차이의 상태를 확인합니다. 현재 자세와 주어진 자세 간의 차이는 알고리즘 내부에서 회전행렬로 변환되어 “AngleAxis” 기법으로 차이 값(rad 단위)을 리턴합니다. 차이가 + 값이면 true를, - 값이면 false를 리턴합니다. 현재 자세를 기준으로, 주어진 position보다 차이가 +인지 –인지 확인할 때 사용합니다. 사용 예로, 직접교시 position을 이용하여 현재 위치와 차이가 + 방향인지, - 방향인지를 판단한 후 orientation limit에 대한 조건을 만들 수 있습니다.  또한 while 또는 if 조건과 함께 사용하여 해당 조건을 반복 확인할 수 있습니다.

  • Min만 설정 시: 차이가 +이면 True, -이면 False

  • Min, Max 설정 시: min과의 차이가 -이고, max 차이가 +이면 True, 반대면 False

  • Max만 설정 시: max 차이가 -이면 True, +이면 False

image2021-11-4_10-15-29.png

인수

인수명

자료형

기본값

설명

axis

int

-

axis

  • DR_AXIS_A: x축 회전

  • DR_AXIS_B: y축 회전

  • DR_AXIS_C: z축 회전

min


posx

-

posx 또는

position list

list (float[6])

max


posx

-

posx 또는

position list

list (float[6])

ref

int

None

reference coordinate

  • DR_BASE : base coordinate

  • DR_WORLD : world coordinate

  • user coordinate: 사용자 정의

mod

int

DR_MV_MOD_ABS

이동 기준

  • DR_MV_MOD_ABS: 절대

리턴

설명

True

조건이 참

False

조건이 거짓

예외

예외

설명

DR_Error (DR_ERROR_TYPE)

인수들의 데이터형 오류 시

DR_Error (DR_ERROR_VALUE)

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

DR_Error (DR_ERROR_RUNTIME)

C Extension 모듈 에러 발생 시

DR_Error (DR_ERROR_STOP)

프로그램 강제 종료 시

예제

Python
posx1 = posx(400,500,800,0,180,30)
posx2 = posx(400,500,500,0,180,60)

CON1= check_orientation_condition(DR_AXIS_C, min=posx1, max=posx2) 
# 현재 Task 좌표가 posxc = posx(400,500,500,0,180,40)인 경우
# posx1 Rz=30 < posxc Rz=40 < posx2 Rz=60이므로 CON1=True 값이 됩니다.

CON2= check_orientation_condition(DR_AXIS_C, min=posx1) 
# 현재 Task 좌표가 posxc = posx(400,500,500,0,180,15)인 경우
# posx1 Rz= 30 > posxc Rz=15이므로 CON2=False 값이 됩니다.

CON3= check_orientation_condition(DR_AXIS_C, max=posx2) 
# 현재 Task 좌표가 posxc = posx(400,500,500,0,180,75)인 경우
# posx1 Rz= 75 > posxc Rz = 60이므로 CON2=False 값이 됩니다.

관련 명령어


check_orientation_condition(axis, min, max, ref, mod, pos)

기능

현재 로봇 엔드이펙터의 자세와 회전각 범위 차이에 대한 상태를 확인합니다. 현재 자세와 회전각 범위에 대한 차이는 알고리즘 내부에서 회전행렬로 변환되어 “AngleAxis” 기법으로 차이 값(rad 단위)을 리턴합니다. 차이가 + 값이면 true를, -값이면 false를 리턴합니다. 현재 자세를 기준으로, 주어진 position과 회전각 범위 차이가 +인지 –인지 확인할 때 사용합니다. 사용 예로, 어떤 기준이 되는 position에서 min, max로 회전각 범위를 설정하여, 현재 위치와 차이가 + 방향인지, - 방향인지 판단한 후 orientation limit에 대한 조건을 만들 수 있습니다. 또한 while 또는 if 조건과 함께 사용하여 해당 조건을 반복 확인할 수 있습니다.

  • Min만 설정 시: 차이가 +이면 True, -이면 False

  • Min, Max 설정 시: min과의 차이가 -이고, max 차이가 +이면 True, 그 반대이면 False

  • Max만 설정 시: max 차이가 -이면 True, +이면 False

image2021-11-4_10-20-4.png

알아두기

회전각 범위: 주어진 position에서 설정된 axis를 기준으로, 상대적인 각도 범위(min, max)를 말합니다. 인자 ref에 따라 주어진 position의 기준 좌표계가 정해집니다.

인수

인수명

자료형

기본값

설명

axis

int

-

axis

  • DR_AXIS_X: x축 회전

  • DR_AXIS_Y: y축 회전

  • DR_AXIS_Z: z축 회전

min

float

DR_COND_NONE

최솟값

max

float

DR_COND_NONE

최댓값

ref

int

None

reference coordinate

  • DR_BASE : base coordinate

  • DR_WORLD : world coordinate

  • user coordinate: 사용자 정의

mod

int

DR_MV_MOD_REL

이동 기준

  • DR_MV_MOD_REL: 상대

pos


posx

-

posx 또는

position list

list (float[6])

리턴

설명

True

조건이 참

False

조건이 거짓

예외

예외

설명

DR_Error (DR_ERROR_TYPE)

인수들의 데이터형 오류 시

DR_Error (DR_ERROR_VALUE)

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

DR_Error (DR_ERROR_RUNTIME)

C Extension 모듈 에러 발생 시

DR_Error (DR_ERROR_STOP)

프로그램 강제 종료 시

예제

Python
posx1 = posx(400,500,800,0,180,15)
CON1= check_orientation_condition(DR_AXIS_C, min=-5, mod=DR_MV_MOD_REL, pos=posx1, DR_WORLD) 
# 현재 Task 좌표가 posxc = posx(400,500,500,0,180,40) 인 경우 
# posx1 Rz=15 – (min=5) < posxc Rz=40 이므로 CON1=True 값이 됨.

CON1= check_orientation_condition(DR_AXIS_C, max=5, mod=DR_MV_MOD_REL, pos=posx1) 
# 현재 Task 좌표가 posxc = posx(400,500,500,0,180,40) 인 경우 
# posxc Rz=40 > posx1 Rz=15 + (max=5) 이므로 CON1=False 값이 됨

관련 명령어