Skip to main content
Skip table of contents

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) 대비 상대좌표)
  • 선행모션과 후행모션에 대한 온라인 블렌딩은 지원하지 않습니다.

주의

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

리턴

설명

0

오류

1

성공

예제

CPP
// 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)로 움직임

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.