[이동 로봇 동작 계획] 02 —— 샘플링 기반 계획 알고리즘

머리말

이 기사의 내용 중 일부는 Deep Blue Academy의 모바일 로봇 동작 계획을 참조 하고 그에 따라 관련 메모 및 배열을 만듭니다. 이전 글에서도 샘플링 기반 알고리즘을 소개하였으므로 이 글은 그러한 알고리즘의 기본 개념에 초점을 맞추지 않고 주로 이전 글을 보완합니다.

관련 코드 마무리:

  1. https://gitee.com/lxyclara/motion-plan-homework/
  2. https://github.com/KailinTong/Motion-Planning-for-Mobile-Robots/blob/master
  3. https://gitee.com/aries-wu/Motion-plan/blob/main/
  4. 링크: https://pan.baidu.com/s/1UtVHRxDq771LfSGK_21wgQ?pwd=rhtp 추출 코드: rhtp

관련 기사:

자율주행을 위한 경로 계획 - 확률 샘플링(PRM) 기반 경로 계획 알고리즘 https://blog.csdn.net/sinat_52032317/article/details/127177278
자율주행을 위한 경로 계획 - 확률 샘플링(RRT, RRT) 기반 경로 계획 알고리즘 *) https://blog.csdn.net/sinat_52032317/article/details/127197120

기본 사상

계획 완성도의 개념

  • Complete Planner : 항상 제한된 시간 내에 경로 계획 쿼리에 올바르게 응답합니다.
  • Probabilistic Complete Planner : 솔루션이 존재하는 경우 플래너는 임의 샘플링(예: Monte Carlo 샘플링)을 사용하여 결국 솔루션을 찾습니다.
  • Resolution Complete Planner : 위와 같지만 결정론적 샘플링을 기반으로 함(예: 고정 그리드 샘플링).【采样更确定】

확률적 로드맵

이전 블로그에서 이미 소개한 코드 예제: 자율주행 경로 계획 - 확률 샘플링(PRM) 기반 경로 계획 알고리즘

기본 프로세스

일반적으로 전처리 단계 (학습 단계/전처리 단계)와 쿼리 단계 (쿼리 단계) 의 두 단계로 나눌 수 있습니다 .

전처리 단계

  • 초기화 . G ( V , E ) G(V,E)( 브이 ,E ) 는 정점 세트 VV인 무방향 그래프입니다.V는 충돌이 없는 정점 집합을 나타내고 연결 집합EE는E는 충돌 없는 경로를 나타냅니다. 초기 상태는 비어 있습니다.
  • 구성 샘플링 . 구성 공간에서 충돌 없는 점 a ( i ) a(i) 샘플링a ( i ) 및 정점 세트VVV 에서
  • 필드 계산 . 거리 ρ ρ 정의ρ , 이미 존재하는VVa ( i ) a(i) 와 관련된 경우 V 의 점a ( i )는 ρ ρ보다 작은 거리를 가집니다.ρ , 그런 다음 점a ( i ) a(i)a ( i ) 의 이웃 점
  • 국경 연결 . a ( i ) a(i)a ( i ) 는 도메인 포인트와 연결되어 연결선τ τ를 .
  • 충돌 감지 . 연결 감지 τ ττ가 장애물과 충돌하는지 여부, 충돌이 없으면 연결 세트EEE._ _
  • 종료 조건 . 모든 샘플링 지점(샘플링 수량 요구 사항 충족)이 위의 단계를 완료하면 그렇지 않으면 2-5를 반복합니다.
    여기에 이미지 설명 삽입

쿼리 단계

AStar 또는 Dijkstra와 같은 알고리즘을 사용하여 시작점에서 끝점까지 검색합니다.
여기에 이미지 설명 삽입

장점과 단점(장단점)

기능에 대한 보다 자세한 요약은 이전 블로그에서 자세히 설명했으며 여기에는 몇 가지 핵심 사항만 나열되어 있습니다.

이점:

  • 확률적 완전성
  • 고차원적 공간 계획을 다루는 높은 효율성
  • 지역 최소값에 갇히기가 쉽지 않음

결점:

  • 경계 값 문제(운동학적 제약)는 아직 고려되지 않았습니다.
  • 2단계 알고리즘은 지루합니다.

일부 향상된 알고리즘

게으른 충돌 검사

개선점:
맵 구축을 위한 포인트 수집 시 충돌 감지 처리를 하지 않고, 후속 검색 단계에서만 충돌 감지 처리를 수행합니다. 충돌이 감지되면 경로에서 충돌 지점과 가장자리를 삭제하고 도로 지도를 재구성하고 경로를 찾을 때까지 다시 검색합니다.

다음은 개략도입니다.
여기에 이미지 설명 삽입여기에 이미지 설명 삽입여기에 이미지 설명 삽입

빠르게 탐색하는 랜덤 트리

이전 블로그에서 이미 소개한 코드 예제: 자율주행 경로 계획 - 확률 샘플링 기반 경로 계획 알고리즘(RRT, RRT*)

알고리즘 의사 코드

여기에 이미지 설명 삽입

일부 향상된 알고리즘

KD-트리

참고: https://blog.csdn.net/junshen1314/article/details/51121582

kd-tree를 사용하여 가장 가까운 노드 찾기(매번 중앙값 찾기)
여기에 이미지 설명 삽입여기에 이미지 설명 삽입

양방향 RRT / RRT 연결

Bidirectional RRT / RRT Connect의 이전 블로그에 소개된 내용: 자율주행을 위한 경로 계획 - 확률 샘플링 기반 경로 계획 알고리즘(RRT, RRT*)

여기에 이미지 설명 삽입여기에 이미지 설명 삽입여기에 이미지 설명 삽입

최적의 샘플링 기반 경로 계획 방법

빠르게 탐색하는 랜덤 트리*

이 부분 은 자동 주행 경로 계획 - 확률 샘플링 기반 경로 계획 알고리즘(RRT, RRT*)을 참조할 수도 있습니다.

알고리즘 의사 코드:
여기에 이미지 설명 삽입

키노다이나믹-RRT*

로봇의 운동학적 제약 고려
여기에 이미지 설명 삽입
논문: Kinodynamic RRT*: Linear Differential Constraints가 있는 시스템을 위한 최적의 모션 계획
https://arxiv.org/abs/1205.5088
여기에 이미지 설명 삽입

언제나-RRT*

로봇이 움직이는 동안 RRT는 항상 업데이트됩니다*

여기에 이미지 설명 삽입
RRT*를 사용한 애니타임 모션 계획 https://ieeeexplore.ieee.org/document/5980479

고급 샘플링 기반 방법

알린 RRT*

Informed RRT*: 허용 가능한 타원 휴리스틱의 직접 샘플링을 통해 초점을 맞춘 최적의 샘플링 기반 경로 계획
https://ieeexplore.ieee.org/abstract/document/6942976

여기에 이미지 설명 삽입

프로세스

경로가 생성된 후 빨간색 점에서 녹색 점(빨간색 부분)까지의 경로 길이는 반장축(2a)의 2배이며 빨간색 점과 녹색 점을 초점으로 하여 경로를 생성합니다. 타원. 샘플링과 플래닝은 타원의 범위 내에서 수행되며, 경로를 재생성한 후 위의 단계를 반복합니다. 정보에 입각한 RRT*는 계획 속도를 개선하고 CPU 작동 시간을 줄이며 경로를 더 부드럽게 만듭니다.
여기에 이미지 설명 삽입

교차 엔트로피 모션 계획

교차 엔트로피 동작 계획 https://ieeeexplore.ieee.org/document/6301069

먼저 경로를 얻은
다음 경로의 각 지점을 가우스 모델의 중심으로 사용하여 다중 경로를 얻기 위해 다중 가우시안 모델에서 샘플링합니다.
그런 다음 다중 경로의 평균을 구하고 다중 가우시안 모델을 다시 빌드합니다.여기에 이미지 설명 삽입여기에 이미지 설명 삽입여기에 이미지 설명 삽입

다른 변형

• 하위 경계 트리 RRT(LBTRRT)[a]
• 희소 안정 RRT[b]
• 전환 기반 RRT(T-RRT)[c]
• 벡터 필드 RRT[d]
• 병렬 RRT(pRRT)[e]
• 기타 [에프]

[1] 빠르게 탐색하는 랜덤 트리 클래스 개요
[2] http://msl.cs.uiuc.edu/rrt/
[a] https://arxiv.org/pdf/1308.0189.pdf
[b] http://pracsyslab.org/sst_software
[c] http://homepages.laas.fr/jcortes/Papers/jaillet_aaaiWS08.pdf
[d] https://ieeexplore.ieee.org/stamp/stamp.jsp?tp= &arnumber=6606360
[e] https://robotics.cs.unc.edu/publications/Ichnowski2012_IROS.pdf
[f] https://github.com/zychaoqun

관행

[1] https://ompl.kavrakilab.org/
[2] https://moveit.ros.org/
[3] https://industrial-training-master.readthedocs.io/en/melodic/_source/session4 /Motion-Planning-CPP.html

코드 링크

링크: https://pan.baidu.com/s/1UtVHRxDq771LfSGK_21wgQ?pwd=rhtp 추출 코드: rhtp

숙제 아이디어

[1] 3장 숙제 아이디어 설명 1
[2] 3장 숙제 아이디어 설명 2

MATLAB

RRT

여기에 이미지 설명 삽입

RRT*

여기에 이미지 설명 삽입

목표 바이어스 RRT*

여기에 이미지 설명 삽입

RRT, RRTStar, Goal-bias RRTStar의 15개 계획의 평균 계획 시간(s), 평균 계획 경로 비용, 평균 방문 노드 수, 트리의 노드 트리를 대략적으로 계산합니다. MAP1, MAP2, MAP3는 3가지 종류의 맵으로, MAP1은 작업에서 제공하는 맵, MAP2는 좁은 공간 테스트 맵, MAP3은 더 엄격한 좁은 공간 테스트 맵입니다. RRT, RRTStar 및 Goal-bias RRTStar 세 가지 알고리즘은 20의 단계 크기를 사용하며, 그 중 RRTStar 및 Goal-bias RRTStar의 선택 부모 부분의 선택 범위는 50이고 Goal-bias RRTStar가 대상에 대한 바이어스 확률 포인트는 0.3입니다.

여기에 이미지 설명 삽입

여기에 이미지 설명 삽입

RRT는 포인트를 임의로 샘플링하여 트리 구조를 확장하므로 트리 구조에서 대상 포인트에 해당하는 실행 가능한 경로를 찾을 수 있습니다. 이론적으로 RRT 알고리즘은 확률적으로 완전하며, 샘플링 포인트가 많을수록 경로를 찾을 확률은 1에 가까워진다.

RRT의 문제점은 알고리즘이 점근적으로 최적이 아니라는 점이며, RRTStar는 부모 노드를 다시 선택하고 재배선하여 알고리즘이 점근적으로 최적의 특성을 이루도록 하여 경로를 더 좋게 만들고 비용 값을 더 작게 만들 수 있습니다. 세 지도 중 경로 계획의 비용 가치를 볼 수 있습니다. 동시에 RRTstar의 평균 노드 수는 RRT 트리보다 훨씬 적고 트리 구조는 더 간결합니다.

목표 편향 RRTStar는 단순히 휴리스틱 목표점 편향 방법을 채택합니다. 특정 확률로 트리와 목표점을 연결하여 트리가 목표점을 향해 더 성장하도록 하고 위의 왼쪽 및 오른쪽 그림을 비교하고 휴리스틱을 추가합니다. 대상 포인트 Bias, RRT는 더 적은 포인트로 확장하고 더 빠르게 솔루션을 찾습니다. 표의 데이터에서 Goal-bias RRTStar의 평균 계획 시간이 RRT 및 RRTStar보다 훨씬 작고 좁은 공간의 경우에도 계획 속도가 더 빠르다는 것을 알 수 있습니다.

로스

OMPL

개방형 동작 계획 라이브러리인 OMPL은 많은 고급 샘플링 기반 동작 계획 알고리즘으로 구성됩니다.
OMPL 자체에는 충돌 검사 또는 시각화와 관련된 코드가 포함되어 있지 않습니다. 이는 OMPL이 특정 충돌 검사기 또는 시각적 프런트 엔드에 연결되지 않도록 의도적인 디자인 선택입니다. 라이브러리는 다른 필수 구성 요소를 제공하는 시스템에 쉽게 통합될 수 있도록 설계되었습니다.

OMPL 공식 웹사이트 https://ompl.kavrakilab.org
관련 문서 https://ompl.kavrakilab.org/geometricPlanningSE3.html

OMPL 호출 프로세스

  1. 상태 공간 구축 RealVectorStateSpace(3);
  2. 상태 공간 경계 설정 realVectorBounds(3);
  3. 빌드 상태 정보 SpaceInformation;
  4. 문제 인스턴스 구축 ProblemDefinition;
  5. 시작점과 끝점을 구성하고 값을 설정합니다 ScopedState.
  6. 최적화 목표를 설정합니다. 여기서는 경로 길이가 사용됩니다.
  7. Planner다음과 같은 플래너를 구축합니다 RRTstar.
  8. 플래너 솔루션 Planner->solve();
  9. 솔루션이 성공하면 getSolutionPath()경로 지점을 얻기 위해 전화하십시오.

결과

여기에 이미지 설명 삽입

추천

출처blog.csdn.net/sinat_52032317/article/details/132084609