주요 콘텐츠

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

minsnappolytraj

웨이포인트를 통과하는 최소 스냅 궤적 생성

R2021b 이후

    설명

    [q,qd,qdd,qddd,qdddd,pp,tPoints,tSamples] = minsnappolytraj(waypoints,timePoints,numSamples)는 주어진 입력 웨이포인트를 대응하는 시간 지점에 구현하는 최소 스냅 다항식 궤적을 생성합니다. 이 함수는 주어진 샘플 개수 numSamples에서 위치, 속도, 가속도, 저크, 스냅을 반환합니다. 또한 시간에 대한 다항식 궤적의 조각별 다항식 pp 형식과 시간 지점 tPoints, 샘플 시간 tSamples를 반환합니다.

    예제

    [q,qd,qdd,qddd,qdddd,pp,tPoints,tSamples] = minsnappolytraj(___,Name=Value)는 위에 열거된 구문의 입력 인수 외에 하나 이상의 이름-값 쌍 인수를 사용하여 옵션을 지정합니다. 예를 들어, minsnappolytraj(waypoints,timePoints,numSamples,VelocityBoundaryCondition=[1 0 -1 -1; 1 1 1 -1])은 2차원 최소 스냅 궤적을 생성하고 각 웨이포인트에 대한 각 차원의 속도 경계 조건을 지정합니다.

    [q,qd,qdd,qddd,qdddd,pp,tPoints,tSamples] = minsnappolytraj(___,TimeAllocation=true)는 스냅과 총 세그먼트 시간 비용의 조합을 최적화합니다. 이 경우, 함수는 timePoints를 웨이포인트에 도착한 시간에 대한 초기 추측값으로 처리합니다.

    예제

    모두 축소

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

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

    출력 궤적의 샘플 개수를 지정합니다.

    numsamples = 100;

    최소 스냅 궤적을 계산합니다. 이 함수는 주어진 샘플 개수에서 궤적 위치(q), 속도(qd), 가속도(qdd), 저크(qddd), 스냅(qdddd)을 출력합니다.

    [q,qd,qdd,qddd,qdddd,pp,timepoints,tsamples] = minsnappolytraj(wpts,tpts,numsamples);

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

    plot(tsamples,q)
    hold on
    plot(timepoints,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는 웨이포인트 개수입니다.

    예: [2 5 8 4; 3 4 10 12]

    데이터형: single | double

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

    예: [1 2 3 5]

    데이터형: single | double

    출력 궤적의 샘플 개수로, 양의 정수로 지정됩니다.

    예: 50

    데이터형: single | double

    이름-값 인수

    모두 축소

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

    예: minsnappolytraj(waypoints,timePoints,numSamples,VelocityBoundaryCondition=[1 0 -1 -1; 1 1 1 -1])은 2차원 최소 스냅 궤적을 생성하고 각 웨이포인트에 대한 각 차원의 속도 경계 조건을 지정합니다.

    각 웨이포인트의 속도 경계 조건으로, n×p 행렬로 지정됩니다. 각 행은 p개 웨이포인트 각각에서 궤적의 대응하는 차원에 대한 속도 경계를 설정합니다. 기본적으로 이 함수는 경계 웨이포인트에서 0 값을 사용하고 중간 웨이포인트에서 NaN을 사용합니다.

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

    데이터형: single | double

    각 웨이포인트의 가속도 경계 조건으로, n×p 행렬로 지정됩니다. 각 행은 p개 웨이포인트 각각에서 궤적의 대응하는 차원에 대한 가속도 경계를 설정합니다. 기본적으로 이 함수는 경계 웨이포인트에서 0 값을 사용하고 중간 웨이포인트에서 NaN을 사용합니다.

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

    데이터형: single | double

    각 웨이포인트의 저크 경계 조건으로, n×p 행렬로 지정됩니다. 각 행은 p개 웨이포인트 각각에서 궤적의 대응하는 차원에 대한 저크 경계를 설정합니다. 기본적으로 이 함수는 경계 웨이포인트에서 0 값을 사용하고 중간 웨이포인트에서 NaN을 사용합니다.

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

    데이터형: single | double

    각 웨이포인트의 스냅 경계 조건으로, n×p 행렬로 지정됩니다. 각 행은 p개 웨이포인트 각각에서 궤적의 대응하는 차원에 대한 스냅 경계를 설정합니다. 기본적으로 이 함수는 경계 웨이포인트에서 0 값을 사용하고 중간 웨이포인트에서 NaN을 사용합니다.

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

    데이터형: single | double

    시간 할당 플래그로, 논리값 0(false) 또는 1(true)로 지정됩니다. 이 플래그를 활성화하여 스냅과 총 세그먼트 시간 비용의 조합을 최적화합니다.

    참고

    시간 할당 플래그가 활성화되었을 때 특이점이 발생하면 MaxSegmentTimeMinSegmentTime 비율을 줄입니다.

    예: TimeAllocation=true

    데이터형: logical

    시간 할당의 가중치로, 양의 스칼라로 지정됩니다.

    예: TimeWeight=120

    데이터형: single | double

    최소 시간 세그먼트 길이로, 양의 스칼라 또는 요소를 (p1)개 가진 행 벡터로 지정됩니다.

    예: MinSegmentTime=0.2

    데이터형: single | double

    최대 시간 세그먼트 길이로, 양의 스칼라 또는 요소를 (p1)개 가진 행 벡터로 지정됩니다

    예: MaxSegmentTime=5

    데이터형: single | double

    출력 인수

    모두 축소

    tSamples에 주어진 시간 샘플에서의 궤적의 위치로, n×m 행렬로 반환됩니다. n은 궤적의 차원이고 mnumSamples와 같습니다.

    tSamples에 주어진 시간 샘플에서의 궤적의 속도로, n×m 행렬로 반환됩니다. n은 궤적의 차원이고 mnumSamples와 같습니다.

    tSamples에 주어진 시간 샘플에서의 궤적의 가속도로, n×m 행렬로 반환됩니다. n은 궤적의 차원이고 mnumSamples와 같습니다.

    tSamples에 주어진 시간 샘플에서의 궤적의 저크로, n×m 행렬로 반환됩니다. n은 궤적의 차원이고 mnumSamples와 같습니다.

    tSamples에 주어진 시간 샘플에서의 궤적의 스냅으로, n×m 행렬로 반환됩니다. n은 궤적의 차원이고 mnumSamples와 같습니다.

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

    • form: 'pp'.

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

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

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

    • order: 다항식 + 1의 차수입니다. 다항식 차수는 10입니다.

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

    궤적의 웨이포인트에 대한 시간 지점으로, 요소를 p개 가진 행 벡터로 반환됩니다. 여기서 p는 웨이포인트 개수입니다.

    궤적에 대한 시간 샘플로, 요소를 m개 가진 행 벡터로 반환됩니다. 출력 위치 q, 속도 qd, 가속도 qdd, 저크 qdddd, 스냅 qddd의 각 요소는 이 벡터의 대응하는 시간에서 샘플링되었습니다.

    참고 문헌

    [1] Bry, Adam, Charles Richter, Abraham Bachrach, and Nicholas Roy. “Aggressive Flight of Fixed-Wing and Quadrotor Aircraft in Dense Indoor Environments.” The International Journal of Robotics Research, 34, no. 7 (June 2015): 969–1002.

    [2] Richter, Charles, Adam Bry, and Nicholas Roy. “Polynomial Trajectory Planning for Aggressive Quadrotor Flight in Dense Indoor Environments." Paper presented at the International Symposium of Robotics Research (ISRR 2013), 2013.

    확장 기능

    모두 확장

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

    버전 내역

    R2021b에 개발됨