1. 연구 진행 내용
global path planner
- global path planner
- 사용자 위치 기반으로 경로 생성
테스트 환경 구성
- 다시 칸막이 세워서 map 구성
- 테이프 구매 후 견고하게 고정 필요
2. 결과
경로 생성 알고리즘 구현함
- 아직 완벽하지 않음
- 어떤 점에서?
- 사용자 위치 정확한 각도로 맞추어야 함
- 경로가 안전하게 중앙으로 위치하면 좋을 것 같음 (
하지만 실제 움직여서 확인해볼 수 있을 것 같음.) - V2의 그래프 위에서 움직이는 점을 개선 해야 함
- 어떤 점에서?
3. 고찰
- 사용자 위치 기반으로 경로 생성
- 이를 위해 한 것:
- 기존의 로봇 위치 토픽 “/twinny_robot/LocalizedDeadReckoning”으로부터 경로 생성을 /human_pose_localized 토픽을 구독하여 경로를 생성하게 해두었음.
- 기존에 내가 만들어둔 위치 추적 node는 driving_map으로 부터 사용자의 위치를 받아오고 있음 하지만 twinny_robot_v1에서의 dg_global_planner노드는 Localization_map 프레임을 기반으로 하기 때문에 human_detector 패키지의 human_detector_node_gpt노드에서 driving_map에서 Localization_map으로 교체함. BUT, 아직 여전히 아쉬운 점이 있는데 라이다가 약간 (15도) 정도 돌아가 있기 때문에 정확한 위치는 아니지만 큰 문제는 아님 ⇒ 간단하게 해결 가능.
- 이를 위해 한 것:
- global path planner
- A*
- 제일 정상적인 것 같으나 약간 벽으로 붙어서 가려고 하는 성향이 있음.
- 방향에서 문제가 있었으나 smoothing 기법을 적용해서 해결됨.
- 초반 보다 벽에 덜 붙으나 아직 중앙 쪽으로 움직이는 경향은 보이지 않음.
- APF
- local minimum문제로 인해 도착지에 도달 전에 제자리 회전하는 경로 보임.
- 사용하기 어려울 것이라 판단하여 개선 중단함.
- Hybrid A* based on voronoi
- 지금 가장 좀 괜찮을 것이라 판단되는 방식임.
- voronoi그래프 위에서 경로가 생성되기 때문에 중앙 쪽으로 경로가 생성되는 경향이 있음.
- V2 버전과 V3 버전이 있음
- ==V2==는 보로노이 그래프 경향을 매우 따르려는 성향이 존재하나 만약 도착지나 로봇의 현재 위치가 보로노이 그래프와 떨어져 있을 때 출발지와 도착지의 경로가 떨어지는 경향이 존재함.
- V3 는 출발지와 도착지에 경로가 떨어질 때 시작점 및 도착점에서 가장 가까운 보로노이 그래프의 좌표를 찾아서 다이렉트로 연결하게 되어있음 이 부분은 매우 갑자기 꺽이는 문제가 발생하기 때문에 수정할 필요가 있음. 또한, 경로가 그래프 위에서 생성되지 않는 상황임.
- A*
- 아직 테스트 해봐야 알 것 같지만 → 사용자의 위치가 움직임에 따라 경로가 사용자로 붙어서 생길 것이니 뭔가 내가 생각했던 사용자의 위치가 생성된 경로로 벗어났다는 것을 판단하기 어려울 것으로 생각됨.
- 그렇다면
- 그냥 사용자 경로는 한번 받은 global costmap기반으로 한번만 생성할까??
- 그렇다면
4. 이후 계획
1. 사용자 위치 정밀도 향상 및 정렬 보정
- 현재 라이다가 약 15도 돌아가 있어 위치 정렬이 부정확함. → 간단한 보정 노드 또는 변환 행렬(TF) 적용하여 보정 필요.
2. Global Path Planner 개선 및 안정화
-
A*: 벽 가까이 경로 생성 문제 → 중앙 유도 weight 추가 고려.
-
Hybrid A_ + Voronoi:
-
V2: 출발/도착점에서 경로 이탈 문제 → 경로 보완 필요.
-
V3: 그래프 외부의 점을 무리하게 연결함 → **매끄러운 연결 방식(Spline 등)**으로 개선 필요.
-
그래프 위에서 벗어난 경로 생성 문제 → Graph projection 방법 도입 고려.
-
3. 테스트 환경 정비
- 칸막이 재설치 및 테이핑 등 물리적 환경 보완