Main Content

plannerAStarGrid

그리드 맵의 A* 경로 플래너

R2020b 이후

    설명

    plannerAStarGrid 객체는 A* 경로 플래너를 생성합니다. 플래너는 점유 맵에서 A* 탐색을 수행하여 발견법에 근거한 비용을 기반으로 시작 그리드 위치부터 목표 그리드 위치 사이에 장애물이 없는 최단 경로를 찾습니다.

    생성

    설명

    planner = plannerAStarGrid는 너비와 높이가 각각 10미터이고 그리드 해상도가 미터당 셀 1개인 binaryOccupancyMap 객체를 갖는 plannerAStarGrid 객체를 생성합니다.

    예제

    planner = plannerAStarGrid(map)은 지정된 map 객체 map을 사용하여 plannerAStarGrid 객체를 생성합니다. mapbinaryOccupancyMap 객체 또는 occupancyMap 객체로 지정하십시오. map 입력값은 Map 속성의 값을 설정합니다.

    planner = plannerAStarGrid(___,Name,Value)는 하나 이상의 이름-값 쌍을 사용하여 속성를 설정합니다. 지정되지 않은 속성은 디폴트 값을 가집니다. 각 속성 이름을 따옴표로 묶습니다.

    예를 들어 plannerAStarGrid(map,'GCost','Manhattan')은 Manhattan 비용 함수를 사용하여 A* 경로 planner 객체를 생성합니다.

    속성

    모두 확장

    맵 표현으로, binaryOccupancyMap 객체 또는 occupancyMap 객체로 지정됩니다. 이 객체는 로봇의 환경을 점유 그리드로 표현합니다. 각 그리드 셀의 값은 맵에서 연결된 위치의 점유를 나타냅니다.

    예: planner.Map = binaryOccupancyMap(zeros(50,50));

    그리드에서 임의의 두 점 사이를 이동하는 일반적인 비용으로, 미리 정의된 비용 함수 'Chebyshev', 'Euclidean', 'EuclideanSquared', 'Manhattan' 중 하나로 지정됩니다.

    카테시안 좌표가 (x1,y1)과 (x2,y2)인 두 점 사이의 이동 비용은 다음과 같이 계산됩니다.

    • 체비쇼프

      d=max(|x2x1|,|y2y1|)

    • 유클리드

      d=(x2x1)2+(y2y1)2

    • 유클리드 제곱

      d=(x2x1)2+(y2y1)2

    • 맨해튼

      d=|x2x1|+|y2y1|

    참고

    미리 정의된 비용 함수를 사용하거나 사용자 지정 비용 함수를 사용할 수 있습니다. 사용자 지정 비용 함수를 사용하려면 GCostFcn 속성을 참조하십시오.

    예: planner = plannerAStarGrid(map,'GCost','Manhattan');

    예: planner.GCost = 'Chebyshev';

    데이터형: string | char

    사용자 지정 GCost 함수로, 함수 핸들로 지정됩니다. 함수 핸들은 두 개의 자세 입력값을 [row column] 벡터로 받아 double형의 스칼라를 반환해야 합니다.

    참고

    미리 정의된 비용 함수를 사용하거나 사용자 지정 비용 함수를 사용할 수 있습니다. 미리 정의된 비용 함수를 사용하려면 GCost 속성을 참조하십시오.

    예: planner = plannerAStarGrid(map,'GCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    예: planner.GCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    데이터형: function_handle

    그리드의 어느 한 지점부터 목표 지점까지 발견법에 근거하여 구한 비용으로, 미리 정의된 비용 함수 'Chebyshev', 'Euclidean', 'EuclideanSquared', 'Manhattan' 중 하나로 지정됩니다.

    카테시안 좌표가 (x1,y1)과 (x2,y2)인 두 점 사이의 이동 비용은 다음과 같이 계산됩니다.

    • 체비쇼프

      d=max(|x2x1|,|y2y1|)

    • 유클리드

      d=(x2x1)2+(y2y1)2

    • 유클리드 제곱

      d=(x2x1)2+(y2y1)2

    • 맨해튼

      d=|x2x1|+|y2y1|

    참고

    미리 정의된 비용 함수를 사용하거나 사용자 지정 비용 함수를 사용할 수 있습니다. 사용자 지정 비용 함수를 사용하려면 HCostFcn 속성을 참조하십시오.

    예: planner = plannerAStarGrid(map,'HCost','Manhattan');

    예: planner.HCost = 'Chebyshev';

    데이터형: string | char

    사용자 지정 HCost 함수로, 함수 핸들로 지정됩니다. 함수 핸들은 두 개의 자세 입력값을 [row column] 벡터로 받아 double형의 스칼라를 반환해야 합니다.

    참고

    미리 정의된 비용 함수를 사용하거나 사용자 지정 비용 함수를 사용할 수 있습니다. 미리 정의된 비용 함수를 사용하려면 HCost 속성을 참조하십시오.

    예: planner = plannerAStarGrid(map,'HCostFcn',@(pose1,pose2)sum(abs(pose1-pose2),2));

    예: planner.HCostFcn = @(pose1,pose2)sum(abs(pose1-pose2),2);

    데이터형: function_handle

    우선 순위 결정 모드 켜기/끄기로, 'on' 또는 'off'로 지정됩니다.

    TieBreaker 속성을 활성화하면 A* 경로 플래너는 발견법에 근거하여 구한 비용 값을 조정하여 동일한 길이의 여러 경로 중에서 선택합니다.

    예: planner = plannerAStarGrid(map,'TieBreaker','on');

    예: planner.TieBreaker = 'off';

    데이터형: string | char

    대각선 탐색 모드 켜기/끄기로, 'on' 또는 'off'로 지정됩니다.

    이 속성을 'on'으로 설정하면 A* 경로 플래너는 그리드의 네 방향과 함께 대각선 방향으로도 탐색합니다. 이 속성을 'off'로 설정하면 A* 경로 플래너는 그리드의 네 방향으로만 탐색합니다.

    데이터형: char | string

    객체 함수

    planFind shortest obstacle-free path between two points
    showPlot and visualize A* explored nodes and planned path

    예제

    모두 축소

    A* 경로 계획 알고리즘을 사용하여 장애물 그리드 맵에서 충돌 없는 최단 경로를 계획합니다.

    mapClutter 함수를 사용하여 무작위로 흩어진 장애물이 있는 binaryOccupancyMap 객체를 생성합니다.

    rng('default');
    map = mapClutter;

    맵을 사용하여 plannerAStarGrid 객체를 만듭니다.

    planner = plannerAStarGrid(map);

    출발 지점과 목표 지점을 정의합니다.

    start = [2 3];
    goal = [248 248];

    출발 지점부터 목표 지점에 이르는 경로를 계획합니다.

    plan(planner,start,goal);

    show 객체 함수를 사용하여 경로와 탐색된 노드를 시각화합니다.

    show(planner)

    Figure contains an axes object. The axes object with title AStar, xlabel Columns, ylabel Rows contains 8 objects of type image, line. One or more of the lines displays its values using only markers These objects represent Path, Start, Goal, GridsExplored.

    확장 기능

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

    버전 내역

    R2020b에 개발됨