본문 바로가기
  • 경제적 자유를 얻는 그날까지
엔지니어링/드론

[PX4 개발자] SITL 미션 수행

by 베니스상인 2019. 7. 13.

지난 시간에 SITL을 gazebo 환경에서 동작해보았다. 몇가지 간단한 명령으로 제어가 가능하다.

하지만 그라운드 스테이션에서 제어명령을 주게되면 더욱 다양한 미션 수행이 가능하다.

여기서 사용할 그라운드 스테이션은 QGroundControl 이라는 오픈소스 프로그램이다. 이 프로그램은 QT 베이스로 개발되어 플랫폼에 상관없이 동작한다. 즉, 윈도우, 리눅스, 심지어 안드로이드 기반 스마트폰이나 테블릿에서도 동작이 가능하다.

 

QGroundControl과 PX4, Gazebo는 서로 어떻게 연동이 되는가?

아래 그림처럼 서로 UDP로 연동되어 있다. PX4는 서로 UDP로 QGroundControl과 Gazebo와 연결되어 있고 제어 명령을 받고 상태정보를 전송해는 방법으로 연동한다.

 

 

 

지난 번에 Gazebo 환경에서 IRIS 모델을 SITL로 구축해보았다. 오늘 QGRoundControl도 Gazebo가 연결되어 있는 상황에서 실행하는 것이므로 미리 빌드가 되어 아래 화면과 같이 Gazebo에서 IRIS 모델이 로딩되어야 한다.

 

 

 

QGroundControl은 아래에서 받을 수 있다. stable 버전은 소스로 제공이 가능하고, 매일 업데이트되는 최신 버전은 바이너리로만 받을 수 있다.

 

https://docs.qgroundcontrol.com/en/releases/daily_builds.html

 

Daily Builds · QGroundControl User Guide

No results matching ""

docs.qgroundcontrol.com

 

QGroundControl 을 다운 받기 전에 serial modem manager를 제거한다. robotics 관련 USB 시리얼이나 다른 시리얼과 충돌이 일어나는 문제가 발생하기 때문에 아래와 같이 제거한 후 QGroundControl에서 필요한 프로그램을 다운로드 한다.

$ sudo usermod -a -G dialout $USER

$ sudo apt-get remove modemmanager -y

$ sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav -y

 

소스를 다운로드하면 아래와 같이 실행한다.

$ ./QGroundControl.AppImage

 

정상적으로 로딩되면 아래와 같은 지도와 함께 현재의 위치가 표시된다. SITL에서 디폴트 위치는 취리히 대학 인근으로 표시가 되는 것 같다.

 

 

간단한 동작으로 QGroundControl에서 Takeoff를 수행하면 Gazebo에서 약 2m 정도 호버링하다가 내려오는 것을 확인할 수 있다. 오른쪽 고도계가 바뀌는 것을 보아 서로 연동이 되는 것을 알 수 있는 것이다.

 

 

다음은 QGroundControl을 이용하여 WayPoint 미션을 수행해보자.

 

왼쪽 상단의 A-B로 표시된 메뉴로 들어가면 Waypoint 비행을 설정할 수 있다. 기본 고도가 50m인데 너무 높으면 Gazebo 에서 확인이 어려우므로 10m로 수정하여 아래와 같이 5개의 waypoint를 설정하였다. 그리고 오른쪽 상단의 upload를 하면 PX4로 경로 비행의 waypoint가 전송된다.

 

 

다시 왼쪽 상단의 종이비행기 메뉴를 클릭하면 경로비행이 표시되는 것을 확인할 수 있다.

Start Mission을 수행하며 takeoff부터 waypoint 비행을 수행하고 Landing 까지 수행된다.

PX4를 SITL 환경으로 동작하도록 빌드하고, Gazebo 환경에서 동작하도록 환경을 구축하였으며, 오늘은 QGroundControl에서  Mavlink로 waypoint 명령을 전달하여 미션을 수행하는 것을 해보았다.

 

아래는 동작과정을 영상으로 확인한 것이다.

 

 

실제 PX4하드웨어를 사용한다면 내가 위치한 곳에 GPS 좌표가 표시되고 인근 지역 중심으로 미션을 수행하고 돌아오는 드론을 보게될 것이다.

 

그러나 이정도의 수준을 시뮬레이션 환경에서 구축해보고 미리 경험해볼 수 있다는 것은 굉장히 큰 메리트인 것 같다.

 

다음에 SITL이 어떠한 구조로 돌아가는지, 어떻게 데이터를 주고받는지 좀더 깊이 연구해봐야 겠다. 그리고 시뮬레이션 환경에서 다른 모듈을 이용한 여러가지 시험을 진행해보면 많은 도움이 될 것이라 생각한다.

 

 

 

 

 

 

 

728x90

댓글