About me
home
Portfolio
home

Autonomous Navigation

진행 상태
완료
팀원
마감일
태그
작업 (하위 작업)에 관계됨
3 more properties

Autonomous Navigation

ROS navigation stack
ROS navigation stack 에서 틀만 가져오고 새로 구성할지
local planner
아니면 ,,, plugin 작성해서 갈지
global planner sensor 부분(lidar +depth로 읽은 작은 장애물,계단 + 초음파센서) gps 로 tf발행(+방향추정하는 odom이나 imu)
초음파 센서로 읽고 긴급정지 기능 필요(아주아주 가까운 장애물)

Global planner

현재위치부터 도착위치까지 전체 경로를 생성하는 역할
학교의 주요 건물과 갈림길등을 주요 노드(node)으로 하여 그래프(graph) 제작 간선(edge)는 실제 그 위치를 갈 수 있는 길들로 이루어지게 됨 edge의 cost는 노드끼리 이동할때 소요되는 시간 또는 거리가 됨
각 edge들마다 로봇이 이동할 수 있는 gps waypoint들이 일대일 매치되어있음 waypoint들은 일정 간격으로 저장되어 있음 (ex 10cm) waypoint들은 gps를 들고 학교를 돌아다니며 수집할 예정
도착노드 : 목표하는 학교의 주요건물과 가장 가까운노드로 설정(ex 과학기술관) 시작노드 : 현재 위치에서 가장 가까운 edge탐색 → 현재 위치에서 그 edge까지 도달하는 임시 노드 생성 → 그 임시 노드가 시작 노드가 됨
이후 시작노드에서 도착노드까지 dijkstra 알고리즘을 사용하여 경로 탐색
경로로 선택된 edge들에 따라 gps waypoint들을 순서대로 이어 붙여서 global path생성
gpspath.zip
176.2KB

Local planner

global path를 추종 + 실시간으로 센서로 인식한 장애물 회피
1.
보통 바퀴형 로봇에 많이 사용하는 DWA(dynamic window approach)나 TEB(Time Elastic Band) 을 사용
2.
사족 보행용 local planner등을 사용 (아직 어떤 알고리즘인지 모름)
그리고 장애물 회피 기능 이외에도 계단임을 인식하여 로봇의 모드를 바꾸는 기능이 필요함
stair climbing mode (계단을 오르는 모드)

Sensor Sources

전통적으로는 2d 라이다 센서를 활용하도록 되어있다. 그런데 로봇에 2d 라이다가 로봇 위에 설치 될 것이기 때문에 로봇보다 낮은 장애물을 확인하는 능력이 부족할 것으로 예상
따라서 아래쪽을 보는 depth camera를 활용하여 local planner가 이를 회피할 수 있도록 함

tf / odometry

odometry : 로봇의 기구학적인 특성을 이용해 초기 위치로부터 얼마나 이동했는지 파악 바퀴형 로봇의 경우 로봇의 바퀴 회전수를 통해 파악 그리고 이를 amcl알고리즘을 사용하여 보정 후 활용
사족보행 로봇의 경우 odometry의 정확도가 떨어지는 편이기도하고(발표전에 확인필요) 실외이기 때문에 slam이나 amcl알고리즘을 활용하기도 적절하지 않음 (너무 넓다)
따라서 로봇의 위치추정에 gps를 활용! → rtk gps는 일반적인 gps에 비해 정확성이 높다

Base Controller

바퀴형 로봇의 경우 속도와 각속도 입력하면 동작하도록 ROS 패키지가 구성되어있음
사족보행 로봇에 맞도록 high level 컨트롤러를 잘 활용하는 것이 중요

Map Server

정적장애물들 정보를 미리 map으로 만들어서 Global path plan과 local path plan에 활용함
그러나 ,,, 이걸 만들려면 로봇을 데리고 서비스 구역 전체를 다 돌아다녀야함, 그리고 현재 계획상 local path plan에서만 활용하게 될 예정 → 일단 없이 경로계획 구현해보고 잘 안될경우 재도입 논의