상세 컨텐츠

본문 제목

[드론 만들기] MAVLink 라이브러리 생성하기

만들기/드론

by kwangpil 2020. 7. 18. 13:14

본문

 

이전 글...

 

드론 만들기

  

   하드웨어

      [드론 만들기] 기본부품

         [드론 만들기] 비행 제어기(FC)

            [드론 만들기] Pixhawk 시리즈

               [드론 만들기] Pixhawk의 GPS

               [드론 만들기] Pixhawk의 텔레메트리(Telemetry)              

               [드론 만들기] Pixhawk의 변속기(ESC)

               [드론 만들기] Pixhawk 4

                  [드론 만들기] QGroundControl에서 Pixhawk 4 펌웨어 설치

                  [드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 1/2

                  [드론 만들기] QGroundControl에서 Pixhawk 4 설정하기 2/2                   

                  [드론 만들기] Pixhawk 4의 Power Management Board

         [드론 만들기] 모터

         [드론 만들기] 배터리

            [드론 만들기] 리튬 폴리머 배터리 팩

         [드론 만들기] 변속기 (ESC)

         [드론 만들기] 프로펠러 (Propeller)

         [드론 만들기] 파워 분배기(PDB, Power Distribution Board)

         [드론 만들기] 조종기(Radio Control)          

 

   소프트웨어

      [드론 만들기] MissionPlanner와 QGroundControl

      [드론 만들기] QGroundControl 설치

         [드론 만들기] QGroundControl 사용방법 1/4

         [드론 만들기] QGroundControl 사용방법 2/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(우분투) 터미널 명령어   

 

   조립

      [드론 만들기] 모터, 변속기에 커넥터 연결하기

      [드론 만들기] Power Management Board에 커넥터 연결하기

      [드론 만들기] 변속기(ESC)와 Power Management Board 연결하기

      [드론 만들기] GPS, Telemetry Pixhawk 4에 연결하기  

 

   통신

      [드론 만들기] MAVLink

         [드론 만들기] MAVLink 설치하기

         [드론 만들기] MAVLink 라이브러리 생성하기

 

   비행

      [드론 만들기] 쿼드콥터(Quadcopter) 비행 원리      

 

   기타

      [드론 만들기] 비행금지구역

      [드론 만들기] 비행 시 주의 사항   

      [드론 만들기] 멀티콥터 종류

      [드론 만들기] 커넥터(connector)

      [드론 만들기] 용어


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

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

참고만 하세요~!

 

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

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


 

[드론 만들기] MAVLink 설치하기에서 설치가 완료되었으면  코드 생성기 툴(code generator tool)을 이용해서 MAVLink 라이브러리를 생성할 수 있다.

 

그러니까  코드 생성기를 사용해서 XML 파일인 dialect 특정 프로그래밍 언어의 MAVLink 라이브러리 변환할 수 있다.

 

 

MAVLink 프로젝터에서는 두 개의 코드 생성기를 제공한다.

 

하나는 GUI 형식인 mavgenerate이고 다른 하나는 command line 형식인 mavgen이다.

 

 

아래에서는 github에서 복제한 mavlink\message_definitions\v1.0\test.xml 파일을 윈도우우분투 18.04에서 Java 언어의 MAVLink 라이브러리를 생성하는 과정을 설명한다.

 

만약 직접 dialect 메시지를 작성하거나 또는 다운 받은 dialect를 수정/변경한 후 MAVLink 라이브러리 생성을 원할 경우에는 작성한 dialect 파일을  message_definitions/v1.0/ 디렉토리에 복사한 후 생성하는 것을 권고한다.

 

왜냐하면 생성기 mavgen의 경우 상대 경로를 처리할 수 있지만 mavgenerate는 그렇지 못하기 때문이다.

 

또 dialect가 다른 dialect를 포함하고 있다면 그 파일도 동일한 폴더 복사해야 한다.

 

 

1. 윈도우에서 MAVLink 라이브러리 생성하기

 

mavlink를 복제한 폴더에서 mavgenrate.py실행한다.

 

 

XML 빈칸에는 MAVLink 라이브러리를 생성할 dialect를 입력하고 Out 빈칸에는 생성될 라이브러리를 저장할 폴더를 지정해 준다.

 

Language에는 Java, Protocol에는 MAVLink v2.0인 2.0을 선택한다.

 

Validate를 선택할 경우 코드 생성 속도가 느릴 수 있다. XML에 오류가 없다면 체크하지 않는다. 여기서도 다운로드한 오류가 없는 XML을 사용함으로 선택하지 않는다.

 

Validate Units는 단위 속성의 유효성을 검증한다. 여기서는 선택하지 않는다.

 

 

만약 선택한 언어를 선택한 프로토콜에서 지원하는 않는 언어라면 MAVLink 라이브러리 생성은 실패한다.

 

 아래와 같은 메시지 창이 나타나면 확인을 클린한다.

 

 

generate를 클릭해서 MAVLink 라이브러리 생성을 완료한다.

 

 

출력으로 지정한 폴더에 Java MAVLink 라이브러리가 생성된 것을 확인할 수 있다.

 

 

 

 

 

2. 우분투 18.04에서 MAVLink 라이브러리 생성하기

 

- mavgenerate를 이용한 라이브러리 생성

 

터미널을 실행시켜서 python3 -m mavgenerate을 입력하고 엔터키를 누른다.

 

 

mavgenrate 창이 나타난다.

 

 

윈도우에서와 마찬가지로 XML 빈칸에는 MAVLink 라이브러리를 생성할 dialect를 입력하고 Out 빈칸에는 생성될 라이브러리를 저장할 폴더를 지정해 준다.

 

language에는 Java, 프로토콜에는 MAVLink v2.0인 2.0을 선택한다. 

 

Validate를 선택할 경우 코드 생성 속도가 느릴 수 있다. XML에 오류가 없다면 체크하지 않는다. 여기서도 다운로드한 오류가 없는 XML을 사용함으로 선택하지 않는다.

 

Validate Units는 단위 속성의 유효성을 검증한다. 여기서는 선택하지 않는다.

 

 

generate를 클릭한다. 

 

만약 선택한 언어를 선택한 프로토콜에서 지원하는 않는 언어라면 MAVLink 라이브러리 생성은 실패한다.

 

아래와 같은 메시지 창이 나타나면 ok를 클릭한다.

 

 

다시 generate를 클릭해서 MAVLink 라이브러리 생성을 완료한다.

 

 

출력으로 생성한 폴더에 Java MAVLink 라이브러리가 생성된 것을 확인할 수 있다.

 

 

 

- mavgen을 이용한 라이브러리 생성

 

mavgenerate를 사용하는 것이 편리하기 때문에 직접 명령어를 입력해주어야 하는 mavgen을 사용할 필요는 굳이 없다.

 

일단 생성 단계는 아래와 같다.

 

터미널을 열어서 아래의 명령어를 입력한 후 엔터키를 누른다.

 

여기서 (1)은 mavgen 명령어 python3 -m pymavlink.tools.mavgen, (2) 생성 언어 --lang=Java (3)은 MAVLink 프로토콜 버전 --wire-protocol=2.0, (4) 유효성 미검사 --no-validate, (5)는 생성될 라이브러리가 저장될 디렉터리, (6)은 dialect가 있는 디렉터리를 의미한다.

 

(이외에도 필요시   --error-limit ERROR_LIMIT(표기할 최대 유효 검사 오류 개수),   --strict-units( 단위 유효성 검사 실행)을 추가할 수 있으며 입력 순서는 상관없다.)   

 

 

MAVLink 라이브러리가 생성되었다.

 

 

출력으로 지정한 폴더에 Java MAVLink 라이브러리가 생성된 것을 확인할 수 있다.

 

 

참고로 터미널에서 ython3 -m pymavlink.tools.mavgen -h를 입력하면 mavgen 관련한 전체 문법과 선택사항에 대한 정보가 터미널 화면에 출력된다.

 


 

관련글 더보기

댓글 영역