상세 컨텐츠

본문 제목

[드론 만들기] Gazebo 사용하기 4/4

만들기/드론

by kwangpil 2021. 4. 29. 21:14

본문

 

이전 글...

 

드론 만들기

  

   하드웨어

      기본부품

         비행 제어기(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에서 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에 연결하기

  

   통신

      MAVLink

         MAVLink 설치하기

         MAVLink 라이브러리 생성하기

 

   개발

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

         툴체인(toolchain) 설치하기

            jMAVSim 사용하기 1/2

            jMAVSim 사용하기 2/2

            Gazebo 사용하기 1/4

            Gazebo 사용하기 2/4

            Gazebo 사용하기 3/4

            Gazebo 사용하기 4/4

 

   비행

      쿼드콥터(Quadcopter) 비행 원리     

 

   문제해결

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

 

   기타

      비행금지구역

      비행 시 주의 사항   

      멀티콥터 종류

      커넥터(connector)

      용어

 


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

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

참고만 하세요~!

 

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

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

 

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


 

 

Gazebo 사용하기 3/4에 이어서

 

4. HITL Simulation

 

Pixhawk 비행 제어기를 직접 연결해서 시뮬레이션하는 것이기 때문에 먼저 Pixhawk USB 케이블로 컴퓨터에  연결한다.

 

QGroundControl(QGC)를 실행한 후 QGC > 기어 아이콘 > 안전을 선택한 후 스크롤을 내려가다 보면 HITL 활성화 항목이 있다.

 

QGC에서 HITL 활성화 설정

 

위의 그림과 같이 HITL enabled선택한 후 HITL활성화시킨다.

 

QGC에서 HITL 활성화 설정완료

 

화면에 메시지 창이 나타나면 x표를 눌러서 종료한 후 QGC > 기어 아이콘 > 기체를 클릭해서 시뮬레이션하고자 하는 기체 형태선택한다.
(Gazebo HITL이 지원하는 기체 형태 종류는 [드론 만들기] 드론 비행 시뮬레이터(Simulator) 참조)

 

여기서 Generic Quadcopter선택했다.
(HIL xxx 기체 형태를 선택하면 QGC의 설정이 자동으로 HITL로 변경되어 RC 등의 세부 설정 고정값을 설정되어 변경되지 않는다. 또한 가상 머신에서 시뮬레이터를 돌리고 있어서 데이터 링크 지연 문제가 자주 발생하는데 HITL의 경우 기본 설정값이 disable이라서 데이터 지연으로 시뮬레이션 에러가 계속 발생한다)

 

 

HITL 시뮬레이션에서도 조종기를 사용하지 않을 계획이므로 조정기를 아래와 같이 설정을 한다.

 

QGC > 기어 아이콘 > 파라미터로 이동한 후 상위에 나타나는 검색란에서 com_rc를 입력하면 com_rc와 관련 있는 명령어가 아래에 나타난다.

(명령어 전체 이름을 알면 검색란에 바로 입력하면 된다)

 

QGC에서 조정기 설정

 

조종기를 사용하지 않을 계획이기 때문에 조종기 설정 명령어인 COM_RC_IN_MODE를 선택한 후 오른쪽에 나타나는 창에서 joystick/No RC Checks선택하고 저장한다.

 

QGC에서 조정기 세부설정

 

이어서 조종기의 신호가 인식되지 않을 때 드론이 어떤 행동을 취해야 하는가에 대한 RC 안전장치 명령어를 설정을 한다.

 

검색란에서 com_rc를 입력한 후 가장 아래에 있는 NAV_RCL_ACT가 RC 자동 안정장치를 설정하는 명령어다.

(명령어 전체 이름을 알면 검색란에 바로 입력하면 된다)

 

QGC에서 RC 자동안전장치 설정

 

명령어를 클릭한 후 disable 선택하고 저장한다.

 

QGC에서 RC 자동안전장치 해제

 

필요한 설정을 모두 완료했으면 픽스호크를 재부팅한다.

(QGC > 기어 아이콘(기체 설정) > 파라미터 > 도구(오른쪽 상단) > 재부팅)

 

이어서 UDP(User Datagram Protocol)를 설정한다.

(UDP에 대한 간략한 정의는 [드론 만들기] 용어 참조)

 

UDP 설정은 QGC > QGC 설정 > 일반을 선택한 후 "다음 장치에 자동으로 연결" 항목에서 UDP만 체크한 후 다른 모든 항목은 해제하면 된다.

(이제 픽스호크와 QGC는 UDP로만 연결)

 

QGC에서 UDP 설정

 

설정 완료했으면 QGC 종료하고 컴퓨터에서 픽스호크를 제거한다.

 

다시 컴퓨터에 픽스호크를 연결하고 부팅이 될 동안 잠깐 기다린 후 터미널 창실행한다.

(QGroundControl이 실행되어 있어서는 안 됨!!)

 

새 터미널에서 PX4 소스코드 디렉터리로 이동한 후 필요시 아래의 명령어로 앞서 실행한 모든 make 명령 실행지운다.

make clean

그다음 make 명령어로 PX4 빌드 시 에러가 발생하기 때문에 아래의 명령어로 기존에 있던 iris.sdf 파일을 삭제한다.

(iris 파일은 PX4 빌드 시 자동으로 생성된다)

rm Tools/sitl_gazebo/models/iris/iris.sdf

 

터미널에서 iris.sdf 삭제

 

파일이 삭제되면 아래의 명령어로 Gazebo와 함께 PX4를 빌드한다.

DONT_RUN=1 make px4_sitl_default gazebo

 

SITL 코드 빌드

빌드가 완료되면 PX4 소스코드 디렉터리에서 아래의 명령어를 입력해서 iris.sdf 파일불러온다.

gedit Tools/sitl_gazebo/models/iris/iris.sdf

(gedit는 Ubuntu에서 기본으로 제공하는 문서 편집기이다.)

 

문서 편집기로 iris.sdf 파일 열기

Windows처럼 파일 탐색기로 iris.sdf 파일을 열어도 된다.

 

 

mavlink_interface_plugin을 찾아서 아래처럼 serialEnabledhil_mode 값을 0에서 1로 변경한다.

 

serial device와 hil_mode 1로 변경

 

만약 make clean을 실행한 후 PX4를 새로 빌드하는 경우 iris.sdf 파일은 자동으로 재생성되기 때문에 HITL 시뮬레이션을 하고자 할 경우 매번 위와 같이 수정해주어야 한다.

 

serialEnable 아래에 있는 serialDevice는 USB로 연결한 Pixhawk와 Gazebo를 연결해주는 포트로 Ubuntu의 경우 일반적으로 /dev/ttyACM0이지만 그렇지 않을 경우 올바른 serialDevice로 수정해준다.

(시리얼 포트 확인 방법은 아래 참조.)

 

 

iris.sdf 파일 변경이 완료되면 PX4 소스코드 디렉터리에서 아래의 명령어로 환경변수 설정한다.

source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

 

환경변수 설정

 

이어서 아래의 명령어로 HITL 모드 Gazebo를 실행한다.

gazebo Tools/sitl_gazebo/worlds/hitl_iris.world

HITL Gazebo 실행

노란색의 경고문구가 뜨고 serial device가 /dev/ttyACM0 포트로 연결되었다는 듯한 메시지가 출력된 후 잠시만 기다리면 가운데쯤에 작은 쿼드콥터가 있는 Gazebo가 실행된다.

 

HITL Gazebo

이어서 QGC실행하면 자동으로 PX4와 Gazebo를 연결한다.

 

QGC와 Gazebo

QGC의 왼쪽 이륙 아이콘으로 이륙 명령어를 실행하면 드론이 미친 듯이 왔다갔다 하다가 오류로 멈춘다.

(다른 기체 형태 또는 다른 시뮬레이션 환경에서는 위와 같은 문제가 발생하지 않고 정상적으로 작동할 수도 있다.)

 

Gazebo HITL 오류

 

동영상은 아래와 같다'

 

Gazebo와 QGC 연결 및 실행 동영상

 

위와 유사한 문제가 발생할 경우, 해결하는 방법hitl_iris.world 파일을 iris.world 파일로 대체하는 것이다.

 

파일을 대체하기 전에 먼저 Pixhawk를 컴퓨터에서 제거한 후 Ubuntu 재시작한다.

 

부팅이 완료되면 PX4 소스코드 디렉터리로 이동한 후 아래의 명령어로 기존의 hitl_iris.world 파일을 iris.world 파일명으로 복사한다.

cp Tools/sitl_gazebo/worlds/hitl_iris.world Tools/sitl_gazebo/worlds/iris.world

 

hitl_iris.world 파일을 iris.world 파일명으로 복사

 

복사가 완료되면 아래의 명령어로 iris.world 파일을 불러온다.

gedit Tools/sitl_gazebo/worlds/iris.world

 

iris.world 불러오기

엔터키를 눌러서 텍스트 편집기를 실행한 후 아래와 같이 "hitl_iris"을 모두 "iris"로 변경한다.

(Windows처럼 파일 탐색기로 iris.sdf 파일을 열어서 변경해도 된다.)

 

iris.world 파일 내용 변경

 

iris.world 파일 저장한 후 Pixhawk를 USB로 컴퓨터에 연결하고 에서 실행한 단계 반복한다.

▶ iris.sdf 파일 삭제

 make clean

 DONT_RUN=1 make px4_sitl_default gazebo

 serialEnabled와 hil_mode 값을 0에서 1로 변경

 source Tools/setup_gazebo.bash $(pwd) $(pwd)/build/px4_sitl_default

 

위의 단계가 완료되면 Pixhawk 소스 디렉터리에서 아래의 명령어Gazebo 시뮬레이터를 실행한다.

gazebo Tools/sitl_gazebo/worlds/iris.world

 

HITL Gazebo

 

"opened serial device..." 메시지 외에는 아무런 경고 없이 가운데에 작은 쿼드콥터가 있는 Gazebo 시뮬레이터가 실행된다.

이어서 QGC를 실행하면 QGC가 자동으로 PX4와 Gazebo를 연결한다.

 

QGC와 Gazebo

 

아래는 QGC에서 이/착륙 및 일정 위치를 이동하는 명령어를 입력해서 드론이 비행하는 동영상이다.

 

 

Gazebo와 QGC 연결 및 실행 동영상

 

동영상에서 보듯이 아무런 문제 없이 드론이 비행한다!!!

 


 

< 시리얼 포트 확인방법 >

 

시리얼 포트를 확인하려면 픽스호크를 연결한 후 터미널 창에서 dmesg | grep "tty"를 입력한다.

 

<시리얼 포트 확인>

 

마지막 줄의 장치가 픽스호크의 시리얼 포트이다.

 


 

<HITL 시뮬레이션에서 SITL 시뮬레이션 변경>

 

쿼드콥터(iris) 시뮬레이션을 HITL에서 다시 SITL로 변경하기 위해서 iris.sdf 파일의 serialEnable와 hil_mode를 1에서 다시 0으로 변경해준 후 make px4_sitel gazebo 명령어를 터미널에 실행하면 아래처럼 멈춰버린다.

 

<sitl 빌드 멈춤>

설정상에 문제인 것 같은데 Ubuntu와 PX4에 대해서 여전히 잘 알지못하다 보니 어떻게 해야하는지 정확하게 알길이 없다.

(너무 상식적인 것인지, 나 혼자만의 문제인지 인터넷을 뒤져도 나오지도 않는다.....)

 

마구잡이 클릭질로 알아낸 방법은 아래와 같다.

1. iris.sdf 파일에서 serialEnalbel과 hil_mode 값을 1에서 다시 0으로 변경

2. world 디렉토리의 iris.world를 삭제 또는 이름 변경

3. 터미널 창에서 PX4 소스코드 디렉토리로 이동 후 make px4_sitl gazebo 실행.

 

원인과 해결방법을 알게 되면 추가하기로하고, 일단 다.... 그냥 모른 척하고 넘어간다.


 

관련글 더보기

댓글 영역