Main Content

cubicpolytraj

3차 다항식 궤적 생성

설명

예제

[q,qd,qdd,pp] = cubicpolytraj(wayPoints,timePoints,tSamples)는 주어진 일련의 입력 웨이포인트를 대응하는 시간 지점에 구현하는 3차 다항식을 생성합니다. 이 함수는 주어진 시간 샘플 tSamples에서의 위치, 속도, 가속도를 출력합니다. 또한 시간에 대한 다항식 궤적의 조각별 다항식 pp 형식을 반환합니다.

[q,qd,qdd,pp] = cubicpolytraj(___,Name,Value)는 위에 열거된 구문의 조합을 사용하면서 추가 파라미터를 Name,Value 쌍 인수로 지정합니다.

예제

모두 축소

주어진 일련의 2차원 xy 웨이포인트와 함께 cubicpolytraj 함수를 사용합니다. 웨이포인트에 대한 시간 지점도 주어집니다.

wpts = [1 4 4 3 -2 0; 0 1 2 4 3 1];
tpts = 0:5;

궤적을 샘플링하기 위한 시간 벡터를 지정합니다. 지정된 시간 지점보다 짧은 간격으로 샘플링합니다.

tvec = 0:0.01:5;

3차 궤적을 계산합니다. 이 함수는 3차 다항식의 궤적 위치(q), 속도(qd), 가속도(qdd), 다항식 계수(pp)를 출력합니다.

[q, qd, qdd, pp] = cubicpolytraj(wpts, tpts, tvec);

x 위치와 y 위치에 대한 3차 궤적을 플로팅합니다. 각 웨이포인트와 궤적을 비교합니다.

plot(tvec, q)
hold all
plot(tpts, wpts, 'x')
xlabel('t')
ylabel('Positions')
legend('X-positions','Y-positions')
hold off

Figure contains an axes object. The axes object with xlabel t, ylabel Positions contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent X-positions, Y-positions.

2차 평면에서 실제 위치를 확인할 수도 있습니다. q 벡터와 웨이포인트의 개별 행을 x 위치와 y 위치로 플로팅합니다.

figure
plot(q(1,:),q(2,:),'-b',wpts(1,:),wpts(2,:),'or')
xlabel('X')
ylabel('Y')

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 2 objects of type line. One or more of the lines displays its values using only markers

입력 인수

모두 축소

궤적의 웨이포인트에 대한 점으로, n×p 행렬로 지정됩니다. 여기서 n은 궤적의 차원이고 p는 웨이포인트 개수입니다.

예: [1 4 4 3 -2 0; 0 1 2 4 3 1]

데이터형: single | double

궤적의 웨이포인트에 대한 시간 지점으로, 요소를 p개 가진 벡터로 지정됩니다.

예: [0 2 4 5 8 10]

데이터형: single | double

궤적에 대한 시간 샘플로, 요소를 m개 가진 벡터로 지정됩니다. 출력 위치 q, 속도 qd, 가속도 qdd는 이러한 시간 간격으로 샘플링됩니다.

예: 0:0.01:10

데이터형: single | double

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 버전에서는 쉼표를 사용하여 각 이름과 값을 구분하고 따옴표로 Name을 묶으십시오.

예: 'VelocityBoundaryCondition',[1 0 -1 -1 0 0; 1 1 1 -1 -1 -1]

각 웨이포인트의 속도 경계 조건으로, 'VelocityBoundaryCondition'이 n×p 행렬과 함께 쉼표로 구분되어 지정됩니다. 각 행은 궤적의 각 변수에 대한 모든 p개 웨이포인트에서의 속도와 대응됩니다.

예: [1 0 -1 -1 0 0; 1 1 1 -1 -1 -1]

데이터형: single | double

출력 인수

모두 축소

tSamples에 지정된 시간 샘플에서의 궤적의 위치로, 요소를 m개 가진 벡터로 반환됩니다. 여기서 m은 tSamples의 길이입니다.

데이터형: single | double

tSamples에 지정된 시간 샘플에서의 궤적의 속도로, 벡터로 반환됩니다.

데이터형: single | double

tSamples에 지정된 시간 샘플에서의 궤적의 가속도로, 벡터로 반환됩니다.

데이터형: single | double

조각별 다항식으로, 조각별 궤적의 각 섹션에 대한 다항식을 정의한 구조체로 반환됩니다. mkpp를 사용하여 직접 조각별 다항식을 만들거나 ppval을 사용하여 지정된 시간에서의 다항식을 계산할 수 있습니다. 구조체에는 다음 필드가 있습니다.

  • form: 'pp'.

  • breaks: 조각별 궤적의 형식이 변경되는 시점으로 구성된, 요소를 p개 가진 벡터입니다. p는 웨이포인트 개수입니다.

  • coefs: 다항식의 계수에 대한 n(p-1)×order 행렬입니다. n(p-1)은 궤적의 차원에 pieces의 개수를 곱한 값입니다. 각각의 n 행 세트는 각 변수 궤적을 설명하는 다항식의 계수를 정의합니다.

  • pieces: p–1. 절점의 개수에서 1을 뺀 값입니다.

  • order: 다항식의 차수(degree)에 1을 더한 값입니다. 예를 들어 3차 다항식의 위수(order)는 4입니다.

  • dim: n. 제어점 위치의 차원입니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2019a에 개발됨