[Autonomous Ship] A* Algorithm 자체 개발(6) : 시뮬레이션 구현(2021.08.01.)

한은기·2021년 8월 1일
0

Study) NAOE

목록 보기
10/11
post-thumbnail

Simulator 제작 with PyQt5

3단계 제작 목표

  • 더 많은 파라미터를 직접 설정할 수 있도록 옵션 추가
  • 그래픽 뿐만 아니라 상세한 값을 알 수 있도록 현황판(board) 추가
  • 레이아웃 디자인 보충
  • Goal Range 표시 등 이전 단계에서 설정한 보완 내용 구현

개발 현황

  • g값 중 heading 회전각에 따른 가중치 값을 설정할 수 있도록 3개 파라미터 추가
  • h값에도 가중치 추가
  • 분산된 초깃값 통일
  • 조금씩 다르게 쓰인 변수명 통일
  • 경계선을 사용자가 지정한 꼭짓점에 따라 설정할 수 있도록 변경
  • Start 버튼 누르기 전에 미리 장애물, 경계선, 출발지점, 도착지점 표시
  • Offset 사용하지 않음 (GraphicsView는 좌측 상단이 (0, 0)이기에 y값에 -를 붙여 배치함)
  • GroupBox, GridLayout을 섞어 사용하여 유연하고 균형있는 레이아웃 구현




Simulator & Algorithm Interaction

  • 특정 상황에서 Stuck 되는 문제는 알고리즘적 문제가 있어 보임. goal cost를 0으로 설정하면 stuck은 되지 않지만 당연히 아예 목표점 쪽으로 이동하지 않음. 해결 급선무
  • h값에도 gain을 곱해주도록 변수 선언 및 수식 추가함

추후 계획

Simulator 수정 및 보완

  1. Reset, Pause 기능 잘 안 되는 것 해결
  2. 초기 heading이 잘 들어가는지 확인
  3. obstacle, 시작점, 도착점도 마우스로 찍어서 설정할 수 있게 하는 기능
  4. 닫기 버튼 누르면 전체 프로세스가 종료되게 하기
  5. trajectory 그릴 때 마지막 점까지 그릴 수 있도록 하기
  6. 배 위치를 배 모양(오각형)으로 바꾸기
  7. heading vector 방향 표시하기
  8. Status Bar에 마우스 위치 표시하기
  9. 5/10단위로 그래픽뷰에 격자 그리기(추가)
  10. search 포인트, 그 주변 f 계산중인 8방위 표시(추가)
  11. board 좌표 표시할 때는 자릿수 맞추도록 문자열 formating(추가)

알고리즘 수정 및 보완

  1. 특정 조건에서 Stuck 되는 것 : 일정 시간/횟수 동안 Stuck 되었을 때 따로 처리하는 코드 추가
  2. heading vector을 변경했을 때 normalize해야 함
  3. 넘파이 배열을 스마트하게 쓸 수 있는 방법 강구
  4. 선수 회전에서 각도가 마이너스로 잘 들어가는지, 180도 이상인 둔각에서는 잘 되는지 필시 확인
  5. 경계선 line out 체크하는 함수에서 오른쪽 벡터와 선이 아예 일치할 경우 등 예외처리 살피기
  6. heading 방향으로 장애물 자동 할당 기능(실시간 장애물 탐지 위해)

Source Code

GitHub(실시간 업데이트) : AutunomousShipAlgorithm/A_star

profile
🏫Inha Univ. Naval Architecture and Ocean Engineering & Computer Engineering (Undergraduate) / 🚢Autonomous Vehicles, 💡Machine Learning

0개의 댓글