Main Content

reedsSheppConnection

Reeds-Shepp 경로 연결 유형

R2019b 이후

설명

reedSheppConnection 객체에는 자세 사이를 연결하는 reedsSheppPathSegment 객체를 계산하기 위한 정보가 들어 있습니다. Reeds-Shepp 경로 세그먼트는 두 자세를 5개 모션 시퀀스로 연결합니다. 모션 옵션은 다음과 같습니다.

  • 직진

  • 최대 조향에서 좌회전

  • 최대 조향에서 우회전

  • 이동 없음

Reeds-Shepp 경로 세그먼트는 정방향 모션과 역방향 모션을 모두 지원합니다.

이 연결 객체를 사용하여 최소 회전 반경과 경로 유형 옵션을 포함한 이동체 모션 모델의 파라미터를 정의합니다. 이 연결 유형을 사용하여 자세 간의 경로 세그먼트를 생성하려면 connect 함수를 호출하십시오.

생성

설명

예제

reedsConnObj = reedsSheppConnection은 디폴트 속성값을 사용하여 객체를 생성합니다.

예제

reedsConnObj = reedsSheppConnection(Name,Value)는 이름-값 쌍을 사용하여 속성값을 지정합니다. 여러 속성을 설정하려면 이름-값 쌍을 여러 개 지정하십시오.

속성

모두 확장

이동체의 최소 회전 반경으로, 양의 스칼라(단위: 미터)로 지정됩니다. 최소 회전 반경은 이동체가 한 방향으로 최대한 조향할 수 있는 가장 작은 원을 나타냅니다.

데이터형: double

허용하지 않을 경로 유형으로, string형 스칼라로 구성된 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.

모션 유형설명
"Sp","Sn"직진(p= 정방향, n= 역방향)
"Lp","Ln"

이동체의 최대 조향각에서 좌회전(p= 정방향, n= 역방향)

"Rp","Rn"

이동체의 최대 조향각에서 우회전(p= 정방향, n= 역방향)

"N"모션 없음

경로 세그먼트에 5개 미만의 모션 유형이 있는 경우 나머지 요소는 "N"(모션 없음)입니다.

사용 가능한 모든 경로 유형을 보려면 AllPathTypes 속성을 확인하십시오.

예: ["LpSnLp","LnSnRpSn","LnSnRpSnLp"]

데이터형: cell

읽기 전용 속성입니다.

사용 가능한 모든 경로 유형으로, 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 이 속성은 모든 유형을 나열합니다. 특정 유형을 허용하지 않으려면 이 목록에 있는 유형을 DisabledPathTypes에 지정하십시오.

Reeds-Shep 연결은 44가지 모션 유형 조합이 가능합니다.

데이터형: cell

정방향으로 이동하기 위한 비용 승수로, 양의 숫자형 스칼라로 지정됩니다. 정방향 모션에 벌점을 적용하려면 이 속성을 늘리십시오.

데이터형: double

역방향으로 이동하기 위한 비용 승수로, 양의 숫자형 스칼라로 지정됩니다. 역방향 모션에 벌점을 적용하려면 이 속성을 늘리십시오.

데이터형: double

객체 함수

connectConnect poses for given connection type

예제

모두 축소

reedsSheppConnection 객체를 생성합니다.

reedsConnObj = reedsSheppConnection;

출발 자세와 목표 자세를 [x y theta] 벡터로 정의합니다.

startPose = [0 0 0];
goalPose = [1 1 pi];

자세를 연결하는 유효한 경로 세그먼트를 계산합니다.

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);

생성된 경로를 표시합니다.

show(pathSegObj{1})

reedsSheppConnection 객체를 생성합니다.

reedsConnObj = reedsSheppConnection;

출발 자세와 목표 자세를 [x y theta] 벡터로 정의합니다.

startPose = [0 0 0];
goalPose = [1 1 pi];

자세를 연결하는 유효한 경로 세그먼트를 계산합니다.

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);

생성된 경로를 표시합니다. 회전 방향을 확인합니다.

show(pathSegObj{1})

pathSegObj{1}.MotionTypes
ans = 1x5 cell
    {'L'}    {'R'}    {'L'}    {'N'}    {'N'}

pathSegObj{1}.MotionDirections
ans = 1×5

     1    -1     1     1     1

새 연결 객체에서 특정 모션 시퀀스를 허용하지 않도록 지정합니다. 로봇의 기동성이 더 높다면 MinTurningRadius를 줄입니다. 역방향이 사용될 가능성을 줄이려면 역방향 비용을 늘립니다. 자세를 다시 연결하여 다른 경로를 구합니다.

reedsConnObj = reedsSheppConnection('DisabledPathTypes',{'LpRnLp'});
reedsConnObj.MinTurningRadius = 0.5;
reedsConnObj.ReverseCost = 5;

[pathSegObj,pathCosts] = connect(reedsConnObj,startPose,goalPose);
pathSegObj{1}.MotionTypes
ans = 1x5 cell
    {'L'}    {'S'}    {'L'}    {'N'}    {'N'}

show(pathSegObj{1})
xlim([0 1.5])
ylim([0 1.5])

확장 기능

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

버전 내역

R2019b에 개발됨