상세 컨텐츠

본문 제목

[드론 만들기] jMAVSim 사용하기 1/2

만들기/드론

by kwangpil 2021. 4. 3. 23:08

본문

 

이전 글...

 

드론 만들기

  

   하드웨어

      기본부품

         비행 제어기(FC)

            Pixhawk 시리즈

               Pixhawk의 GPS

               Pixhawk의 텔레메트리(Telemetry)              

               Pixhawk의 변속기(ESC)

                  QGroundControl에서 변속기(ESC) 교정하기     

               Pixhawk 4의 Power Management Board              

               Pixhawk 4

                  QGroundControl에서 Pixhawk 4 펌웨어 설치

                  QGroundControl에서 Pixhawk 4 설정하기 1/2

                  QGroundControl에서 Pixhawk 4 설정하기 2/2       

         모터

         배터리

            리튬 폴리머 배터리 팩

         변속기 (ESC)

         프로펠러 (Propeller)

         파워 분배기(PDB, Power Distribution Board)

         조종기(Radio Control)          

 

   소프트웨어

      MissionPlanner와 QGroundControl

      QGroundControl 설치

         QGroundControl 사용방법 1/4

         QGroundControl 사용방법 2/4

         QGroundControl 사용방법 3/4      

         QGroundControl 사용방법 4/4 

         QGroundControl에서 Pixhawk 4 펌웨어 설치

         QGroundControl에서 Pixhawk 4 설정하기 1/2

         QGroundControl에서 Pixhawk 4 설정하기 2/2

         QGroundControl에서 Pixhawk 파라미터 변경하기  

      VMware Workstation Pro 설치하기

         VMware Workstation Player에 Virtaul Machine 만들기

         VMware Workstation Player에 Ubuntu 설치하기

            Ubuntu(우분투) 터미널 명령어

            Ubuntu(우분투) 주요 디렉터리

            Ubuntu(우분투) 기초용어

   

   조립

      모터, 변속기에 커넥터 연결하기

      Power Management Board에 커넥터 연결하기

      변속기(ESC)와 Power Management Board 연결하기

      모터와 변속기(ESC) 연결하기

      QGroundControl에서 변속기(ESC) 교정하기

      GPS, Telemetry Pixhawk 4에 연결하기

 

   통신

     uORB

         uORB 새 토픽 추가하기 

     MAVLink

         MAVLink 설치하기

         MAVLink 라이브러리 생성하기

 

   개발

      드론 비행 시뮬레이터(Simulator)         

         툴체인(toolchain) 설치하기

            jMAVSim 사용하기 1/2

            jMAVSim 사용하기 2/2

            Gazebo 사용하기 1/4

            Gazebo 사용하기 2/4

            Gazebo 사용하기 3/4

            Gazebo 사용하기 4/4       

      내장된 응용 프로그램 생성 및 실행하기

      PX 시스템의 구성        

 

   비행

      쿼드콥터(Quadcopter) 비행 원리   

 

   문제해결

      Pixhawk와 Emax ESC(변속기) 호환문제 해결방법

 

   기타

      비행금지구역

      비행 시 주의 사항   

      멀티콥터 종류

      커넥터(connector)

      용어


 

완전 초짜의 드론 만들기 도전! 도전! 도전~!입니다.
맨땅에 헤딩~

인터넷 검색, 관련 사이트를 참고하여 Pixhawk 4(PX4)를 이용한 중/소형 쿼드콥터 드론을 만들려고 하고 있습니다.

참고만 하세요~!

 

※ 아래 내용은 픽스호크 홈페이지 내용을 기반으로 작성한 것으로 틀린 내용을 포함하고 있을 수도 있습니다.

※ 정확한/상세한 내용은 Pixhawk 홈페이지 참조하세요.

 

※ 사용하는 운영체제는 우분투(Ubuntu) 18.04 또는 20.04이며 특별한 언급이 없을 경우 우분투(Ubuntu) 18.04입니다.


 

[드론 만들기] 드론 비행 시뮬레이터에서 픽스호크(Pixhawk)가 지원하는 시뮬레이터에 대해서 대략적으로 알아보았다. 여기서는 언급한 시뮬레이터들 중에서 jMAVSim을 어떻게 사용하는지에 대해서 알아본다.

 

jMAVSim 시뮬레이터

 

jMAVSim은 다른 시뮬레이터에 비해서 설정매우 간단하며, 드론이 이륙, 착륙, GPS 통신 실패 등과 같은 오류 상황에서 비행 제어기(flight controller) 적절하게 작동/반응하는지를 시험해볼 수 있다.

 

지원하는 기체는 쿼드콥터(Qaudcopter)뿐이며 SITL(Software in the loop)HITL(Hardware in the loop) 시뮬레이션 모두 지원한다.

 

Linux(Ubuntu), Mac, Windows 운영체제 모두에서 사용 가능하다.

 

여기서는 Ubuntu에서 설치, SITL과 HITL 시뮬레이션 등에 대해서 설명한다.

 

 

1. 설치 

 

Ubuntu에서 jMAVSim을 사용하려면 우선 툴체인설치해야 한다.

 

툴체인 설치는  [드론 만들기] 툴체인(toolchain) 설치하기을 참조한다.

 

 

2. SITL Simulation

 

SITL 시뮬레이션을 실행하기 위해서 우분투 터미널에서 PX4 소스 코드 디렉터리로 이동한 후 아래의 make 명령어를 터미널에 입력해서 jMAVSim을 실행한다.

(* make를 사용한 빌드의  옵션 구조는 아래 참조)

 

make px4_sitl jmavsim

 

 

엔터 키를 누르면 jMAVSim이 실행된다.

 

 

jMAVSim 시뮬레이터 종료하려면 콘솔 창에서 ctrl + c를 누르면 된다.

 

jMAVSim SITL 실행/빌드 시 발생하는 에러 내용은 아래를 참조한다.

 

(SITL에 대한 내용은 [드론 만들기] 드론 비행 시뮬레이터 참조)

 

 

2.1 드론 이륙 및 착륙

 

콘솔에 아래의 명령어로 드론을 이륙, 착륙할 수 있다.

 

이륙:

commander takeoff

착륙:

commander land

 

먼저 이륙 명령어를 콘솔에 입력한다.

(콘솔에 명령어를 입력하면 px4>는 자동으로 나타난다)

 

 

그런데 기대와 다르게 아래처럼 에러가 발생한다.

 

(이때 배터리, 통신 등의 에러 발생을 대비하여 안전장치  RTL(Return to Launch)활성화되어 있으면 RTL명령어가 실행될 수도 있다. 소스코드에서 안전 설정 변경은 어떻게 하는지 모르겠고, QGroundControl에서 안전장치 설정을 변경해서 RTL 명령어를 해제할 수 있다.  안전장치 설정를 설정하는 방법은 [드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 2/2을  참조)

 

 

시동이 꺼지고 드론이 이륙하지 않는다. 하지만 다시 이륙 명령어를 입력하면 정상적으로 이륙한다.

(즉 제일 처음 명령어에서만 오류 발생)

 

 

이륙 후 착륙 명령어를 입력하면 드론은 착륙하다.

 

 

인터넷 상에서 이 문제에 대한 해결방법을 찾으려고 해 봤지만 찾지를 못했다. 다행히 시뮬레이터 실행 후 처음 이륙 명령어에서만 이런 에러가 발생했고 지금까지 그 외에는 시뮬레이션을 하는데 문제가 발생하지 않아서 일단은 이 에러를 무시하기로 했다. 

 

 

 

 

 

 

 

jMAVSim에서 드론 이/착륙 동영상은 아래와 같다.

 

 

 

2.2 QGroundControl과 함께 실행

 

QGroundControl(QGC)를 연결해서 함께 사용하면 일단 시각적으로 시뮬레이션 효과가 향상될 뿐만 아니라 QGC상에서 이륙, 착륙, 미션 실행도 할 수 있으며 필요시 조이스틱 등도 연결해서 사용할 수도 있다.

(조이스틱은 사용하지 않기 때문에 여기서 따로 설명하지는 않는다) 

 

사용방법은 간단하다.

jMAVSim을 실행한 후 QGC를 실행시켜도 되고 반대로 QGC를 실행 후 jMAVSim을 실행해도 된다.

 

아래 그림은 jMAVSim을 실행한 후 QGC를 실행한 화면이다.

 

 

처음 실행 후 jMAVSim 콘솔에서 이륙 명령어를 입력하면 단일로 jMAVSim을 사용할 때처럼 에러가 발생한다. 물론 이후에는 단일 jMAVSim에서처럼 에러 없이 이륙, 착륙 명령어가 실행된다(아래 동영상 참조)

 

 

하지만 QGC에서 직접 이륙, 착륙 명령을 실행하면 이런 에러가 발생하지 않는다(아래 동영상 참조)

 

 

이 문제의 해결방법을 찾아보려고 했지만 딱히 검색되는 게 없다.

어쩌면 다른 컴퓨터 환경에서는 이러한 에러가 발생하지 않을 수도 있고 jMAVSim 자체 문제일 수도 있다.

 

어쨌든 시뮬레이션하는데 큰 문제가 되지 않기 때문에 추후에 해결방법을 찾으면 수정하기로 하고 일단은 이 에러도 무시하기로 한다. 

 

 

2.3  설정 기능

 

- 홈(Home) 위치 변경

 

환경변수를 사용해서 직접 홈 위치를 설정/변경할 수 있으며 명령어는 아래와 같다.

 

위도:

export PX4_HOME_LAT

경도:

export PX4_HOME_LON

고도:

export PX4_HOME_ALT

 

예로 홈 위치를 서울의 한 곳으로 변경하려면 다음과 같다.

(설정할 홈 위치: 위도 - 37.418613, 경도 - 126.714935, 고도 - 30)

 

먼저 새 홈의 위도, 경도를 찾아야 하고 고도를 결정해야 한다.

그 후  터미널에서 PX4 소스코드 디렉터리로 이동한 후  홈 위치의 위도, 경도, 고도 입력한다.

 

 

입력이 끝났으면 jMAVSim을 실행한다.

 

 

QGC와 함께 실행하면 홈 위치가 변경되는 것을 시각적으로 확인할 수 있다.

 

 

 

- 시뮬레이션 속도 변경

 

환경변수를 이용해서 실제 시간 대비 시뮬레이션 속도를 증가 또는 감소할 수 있으며 명령어는 아래와 같다.

 

export PX4_SIM_SPEED_FACTOR

 

예로 시뮬레이션 속도를 실제 속도보다 2배 빠르게 설정하는 방법은 아래와 같다.

 

우선  터미널에서 PX4 소스코드 디렉터리로 이동한 후 원하는 속도 배율 인수에 2 입력한다.

 

 

이어서 jMAVSim을 실행하면 시뮬레이션 속도가 2 배가된다.

 

 

 

 

 

 

- jMAVSim과 PX4를 분리해서 실행

 

jMAVSim과 PX4를 분리해서 실행할 수 있으며 PX4 소스코드 디렉터리에서 아래의 명령어각각의 터미널에 입력하면 된다.

 

jMAVSim 실행:

./Tools/jmavsim_run.sh -l

PX4 실행:

make px4_sitl none

 

아래는 jMAVSim과 PX4를 분리해서 실행하는 동영상이다.

 

 

이렇게 각각 분리해서 실행하면 jMAVSim이 재시작하는데 걸리는 시간을 절약할 수 있기 때문에 더 빠른 테스트 주기가능하다.

 

 

- GUI 없이 jMAVSim 실행

 

환경변수를 설정해서 그래픽 사용자 인터페이스(GUI) 없이 jMAVSim 실행할 수 있으며 PX4 소스코드 디렉토리에서 명령어는 아래와 같다.

 

HEADLESS=1  make px4_sitl jmavsim

 

 

아래의 동영상에서 확인할 수 있듯이 그래픽 화면이 실행되지 않는다.

 

 

만약 현재 터미널에서 실행되는 모든 SITL GUI 없이 실행하고 싶을 경우에는 export 명령어를 사용하면 된다.

 

export HEADLESS=1

 

명령어 입력 후 jMAVSim을 실행하면 GUI가 나타나지 않으며 이 설정은 터미널 창이 종료되기 전까지 유지된다.

 

 

 

[드론 만들기] jMAVSim 사용하기 2/2에서 계속...

 


 

< jMAVSim 시뮬레이션 에러 >

 

jMAVSim을 실행하면 터미널 상에 다음과 같은 경고(warning)가 출력된다.

 

 

인터넷에 찾아보니 위의 경고는 자바 버전을 다운그레이드(downgrade)하면 해결된다고 한다. 하지만 픽스호크 홈페이지에 따르면 시뮬레이터가 문제없이 동작하기 때문에 무시해도 된다고 하니 꼭 자바를 다운그레이드 할 필요는 없을 것 같다.

 

혹시 실행 시 "java.long.NoClassDefFoundError"이나 "java.awt.AWTError:Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper" 같은 경고가 나타난다면 픽스호크 홈페이지를 참조한다.

 

 

< make를 사용한 빌드의  옵션 구조 >

make [vendor_][model][_variant] [viewer_model_debugger_world]


vendor: px4, intel 등의 제조사 이름이며 픽스호크 시리즈 보드 용 vendor 이름은 px4.
model: sitl, fmu-v2, fmu-v4, fmu-v5 등.
variant: 세부적인 구성을 나타내며, 예로 rtps, lpe 등이 있으며 생략할 경우 default가 있는 것과 동일.
viewer:  gazebo, jmavsim, none.

          예) make px4_sitl none_iris -> PX4는 기체 형태는 iris이지만 시뮬레이터 없이 빌드.
model: 모델 명을 기입, 예를 들자면 rover, iris, tailstter 등, 생략 시 기본 설정인 iris 적용.
debugger: none(기본 설정), ide, gdb, lldb, ddd 등, 생략 시 none
world: 가제보에만 적용하는 환경설정으로 기본 설정은 empty_world, 생략 시 기본설정 적용.


 

관련글 더보기

댓글 영역