1.33 1.32 1.31 1.30 1.29 1.28 1.20 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish
1.33 1.32 1.31 1.30 1.29 1.28 1.20 Korean English Chinese Czech Dutch French German Hungarian Italian Japanese Polish Portuguese Spanish

CDRFLEx.movesx

기능

로봇 제어기에서 로봇을 현재 위치에서 작업공간의 경유점들을 거쳐 목표위치(마지막 경유점)까지 연결되는 스플라인 곡선경로를 따라 이동시키기 위한 함수이다. 입력된 속도/가속도는 경로 중 최대 속도/가속도이며 정속모션 옵션을 선택할 경우 조건에 따라 입력한 속도로 정속도의 모션을 수행합니다.

인수

인수명

자료형

기본값

설명

fTargetPos

float [MAX_SPLINE_

POINT][6]

-

최대 100개까지의 경유점 정보

nPosCount

unsigned char

-

유효 경유점 개수

fTargetVel

float[2]

-

선속도, 각속도

fTargetAcc

float[2]

-

선가속도, 각가속도

fTargetTime

float

0.f

도달 시간 [sec]

eMoveMode

enum.MOVE_MODE

MOVE_MODE_

ABSOLUTE

상수 및 열거형 정의 참조

eMove

Reference

enum.MOVE_REFERENCE

MOVE_REFERENCE_BASE

상수 및 열거형 정의 참조

eVelOpt

enum.SPLINE_VELOCITY_OPTION

SPLINE_VELOCITY_OPTION_DEFAULT

상수 및 열거형 정의 참조


알아두기
  • fTargetVel 에 하나의 인자를 입력한 경우(예를들어, fTargetVel ={30, 0}) 입력된 인자는 모션의 선속도에 대응되며, 각속도는 선속도에 비례하여 결정됩니다.

  • fTargetAcc 에 하나의 인자를 입력한 경우(예를들어, fTargetAcc ={60, 0}) 입력된 인자는 모션의 선가속도에 대응되며, 각가속도는 선가속도에 비례하여 결정됩니다.

  • fTargetTime 지정 시, fTargetVel, fTargetAcc 를 무시하고 fTargetTime 기준으로 처리됩니다

  • eMoveMode 가 MOVE_MODE_RELATIVE 인 경우 position list의 각 pos는 앞 선 pos에 대한 상대좌표로 정의됩니다. (position list=[q1, q2, ...,q(n-1), q(n)]로 이루어질 때 q1은 시작점 대비 상대각도, q(n)은 q(n-1) 대비 상대좌표)

  • 선행모션과 후행모션에 대한 온라인 블렌딩은 지원하지 않습니다.


주의

eVelOpt을 SPLINE_VELOCITY_OPTION_CONST 옵션(등속모션)을 선택할 경우 입력된 경유점 간 거리와 속도 조건에 따라 등속모션을 사용할 수 없을 수 있으며, 이 경우에 변속모션 (eVelOpt =SPLINE_VELOCITY_OPTION_DEFAULT)으로 자동 전환됩니다.

리턴

값

설명

0

오류

1

성공

예제

C++
// CASE 1 : 절대좌표계 기준 이동 (mod= MOVE_MODE_ABSOLUTE)
float xpos[4][6];
int xposNum = 4;
float tvel={ 50, 100 };
float tacc={ 50, 100 }; 
xpos[0][0]=559; xpos[0][1]=434.5; xpos[0][2]=651.5; 
xpos[0][3]=0; xpos[0][4]=180; xpos[0][5]=0;
xpos[1][0]=559; xpos[1][1]=434.5; xpos[1][2]=251.5; 
xpos[1][3]=0; xpos[1][4]=180; xpos[1][5]=0;
xpos[2][0]=559; xpos[2][1]=234.5; xpos[2][2]=251.5; 
xpos[2][3]=0; xpos[2][4]=180; xpos[2][5]=0;
xpos[3][0]=559; xpos[3][1]= 234.5; xpos[3][2]=451.5; 
xpos[3][3]=0; xpos[3][4]=180; xpos[3][5]=0;
drfl.movesx(xpos, xposNum, tvel, tacc, 0, MOVE_MODE_ABSOLUTE);
     // 현재위치에서 시작하여 xpos에 정의된 경유점 집합을 연결하는 스플라인 
     // 곡선을 최대속도 50, 50(mm/sec, deg/sec), 최대가속도 100, 100(mm/sec2,
     // deg/sec2)로 움직임

// CASE 2 : 상대좌표계 기준 이동 (mod= MOVE_MODE_RELATIVE)
float xpos[4][6];
int xposNum = 4;
float tvel={ 50, 100 };
float tacc={ 50, 100 }; 
xpos[0][0]=0; xpos[0][1]=400; xpos[0][2]=0; 
xpos[0][3]=0; xpos[0][4]=0; xpos[0][5]=0;
// 시작위치에서 상대좌표 xpos[0]만큼의 동차변환 → x0
xpos[1][0]=0; xpos[1][1]=0; xpos[1][2]=-400; 
xpos[1][3]=0; xpos[1][4]=0; xpos[1][5]=0;
// x0에서 상대좌표 xpos[1]만큼의 동차변환 → x1
xpos[2][0]=0; xpos[2][1]=-200; xpos[2][2]=0; 
xpos[2][3]=0; xpos[2][4]=0; xpos[2][5]=0;
// x1에서 상대좌표 xpos[2]만큼의 동차변환 → x2
xpos[3][0]=0; xpos[3][1]=0; xpos[3][2]=200; 
xpos[3][3]=0; xpos[3][4]=0; xpos[3][5]=0;
// x3에서 상대좌표 xpos[3]만큼의 동차변환 → x3
drfl.movesx(xpos, xposNum, tvel, tacc, 0, MOVE_MODE_RELATIVE);
	// 현재위치에서 시작하여 xpos에 상대정의된 경유점 집합을 연결하는 
// 스플라인 곡선을 최대속도 50, 50(mm/sec, deg/sec), 최대가속도 100, 
	// 100(mm/sec2, deg/sec2)로 움직임