드론 쿼드콥터

콥터 - 지형추적(Terrain Following)

하늘이푸른오늘 2016. 11. 1. 18:08

Copter 3.4(이상)에서는 AUTO, Guided, RTL, Land 비행모드에서 "지형추적(Terrain Following)"을 지원한다. (참고 : 비행모드 한글 문서는 여기 참조) 이 기능은 기체가 지형위로 지정한 거리를 유지하며 상승 또는 하강하는 기능으로, 하방 Lidar 또는 초음파 거리측정기(Sonar) 또는 구글맵과 같은 매핑 서비스를 이용하는 지상국(ground station)에서 제공하는 지형 고도 데이터를 사용한다. 구글맵 데이터가 어떻게 사용되는지에 대한 자세한 내용은 비행기 지형 추적 페이지를 참고하라.

지형 데이터를 사용하도록 미션을 설정하는 방법

  • 하방 Lidar를 사용할 경우, 여기에서 설명한 방법대로 설정
  • GCS에서 제공하는 지형데이터를 사용할 경우, TERRAIN_ENABLE 변수를 1로 설정
  • Mission Planner (혹은 지형추적기능을 지원하는 다른 GCS) 최신 버전을 사용하여, 비행계획(Flight Plan) 화면에서 고도 유형을 "Terrain"으로 설정. 이렇게 설정하면 "Alt" 필드가 있는 모든 미션명령들은 고도를 지형을 기준으로 한 고도(altitudes-above-terrain)로 해석함
  • Upload the mission to the vehicle and execute the mission as you normally would in AUTO
  • 미션을 기체에 업로드 하고, 미션을 실행시킴. 일반적으로 AUTO 모드를 사용.

집으로 및 착륙 모드에서 지형고도를 사용법

집으로(RTL) 모드와 착륙(Land)모드에서 지형데이터를 사용하려면 TERRAIN_FOLLOW 변수를 1로 설정한다. 이렇게 설정하면 RTL_ALT를 지형을 기준으로 한 고도(altitute-above-terrain)로 해석하여, 일반적으로 출발지점으로 돌아오는 길에 언덕 위로 올라가게 된다. 이와 비슷하게 착륙(Land) 모드는 (출발지점보다 10m 높은 게 아니라) 지형보다 10m 이상 높이 있을 때 LAND_SPEED(일반적으로 초속 50cm) 로 떨어뜨린다. 현재 이들 변수는 추천되지 않는다. 아래에서 언급할 경계조건에 걸리게 되면, 자주 발생하는 것은 아니지만, 기체가 RTL 귀환 때 지형데이터를 불러올 수 없는 경우가 발생하기 때문이다. 이 경우, RTL_ALT는 출발지를 기준으로 한 고도(alt-above-home)로 해석된다.

지형데이터가 없을 경우의 비상대책(Failsafe)

기체가 지형데이터가 필요한 미션명령을 수행중이나, 지형데이터를 2초이상 수신하지 못했을 경우(range finder가 고장났거나, 통신범위를 벗어났거나, 지상국에서 지형데이터를 공급할 수 없을 때) 기체는 집으로(RTL) 모드로 바뀐다. 참고로 이경우 지형데이터를 즉시 접근할 수 없기 때문에, TERRAIN_FOLLOW가 1로 설정되었든 아니든, RTL_ALT를 출발지점을 기준으로 한 고도(altitude-above-home)로 해석하여, 일반 RTL을 수행한다.

지형 간격과 정확도

TERRAIN_SPACING 변수는 지상국으로부터 지형 고도를 요청할 때(Lidar가 있을 경우 사용하지 않음) 사용되는 격자의 크기를 조절할 때 사용된다. 100미터가 기본값이지만, 30미터로 줄이면, GCS와 비행콘트롤간 텔레메트리 송수신을 줄이면서 정확도를 올리는 효과가 있다. TERRAIN_SPAING은 최소 30미터 이상으로 사용하는 것이 좋다.

지상국에서 기체에서 요청한 해상도의 지형데이터가 없을 경우, 지상국에서는 요청한 격자 크기에 맞춰 데이터를 내삽하게 된다.

지형 정확도

SRTM 데이터베이스의 정확도는 지구상의 위치에 따라 다르다. 일반적으로는 10-20미터 정도이지만, 개발자에 따라선 35미터에 달하는 경우도 있다고 한다. 따라서 지형추적 기능은 고도 60미터 이상에서 날려야 한다. 저고도에서 정확한 지형추적기능을 사용하려면 하향 Lidar나 초음파거리측정기를 사용해야 한다.

Lidar를 사용한 2m 고도 지형 추적 미션

====

원문 : http://ardupilot.org/copter/docs/terrain-following.html