이전 글...
드론 만들기
하드웨어
QGroundControl에서 변속기(ESC) 교정하기
Pixhawk 4의 Power Management Board
QGroundControl에서 Pixhawk 4 펌웨어 설치
QGroundControl에서 Pixhawk 4 설정하기 1/2
QGroundControl에서 Pixhawk 4 설정하기 2/2
파워 분배기(PDB, Power Distribution Board)
소프트웨어
MissionPlanner와 QGroundControl
QGroundControl에서 Pixhawk 4 펌웨어 설치
QGroundControl에서 Pixhawk 4 설정하기 1/2
QGroundControl에서 Pixhawk 4 설정하기 2/2
QGroundControl에서 Pixhawk 파라미터 변경하기
VMware Workstation Player에 Virtaul Machine 만들기
VMware Workstation Player에 Ubuntu 설치하기
조립
Power Management Board에 커넥터 연결하기
변속기(ESC)와 Power Management Board 연결하기
QGroundControl에서 변속기(ESC) 교정하기
GPS, Telemetry Pixhawk 4에 연결하기
통신
개발
비행
문제해결
Pixhawk와 Emax ESC(변속기) 호환문제 해결방법
기타
완전 초짜의 드론 만들기 도전! 도전! 도전~!입니다.
맨땅에 헤딩~
인터넷 검색, 관련 사이트를 참고하여 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 활성화 항목이 있다.
위의 그림과 같이 HITL enabled를 선택한 후 HITL을 활성화시킨다.
화면에 메시지 창이 나타나면 x표를 눌러서 종료한 후 QGC > 기어 아이콘 > 기체를 클릭해서 시뮬레이션하고자 하는 기체 형태를 선택한다.
(Gazebo HITL이 지원하는 기체 형태 종류는 [드론 만들기] 드론 비행 시뮬레이터(Simulator) 참조)
여기서는 Generic Quadcopter를 선택했다.
(HIL xxx 기체 형태를 선택하면 QGC의 설정이 자동으로 HITL로 변경되어 RC 등의 세부 설정 고정값을 설정되어 변경되지 않는다. 또한 가상 머신에서 시뮬레이터를 돌리고 있어서 데이터 링크 지연 문제가 자주 발생하는데 HITL의 경우 기본 설정값이 disable이라서 데이터 지연으로 시뮬레이션 에러가 계속 발생한다)
HITL 시뮬레이션에서도 조종기를 사용하지 않을 계획이므로 조정기를 아래와 같이 설정을 한다.
QGC > 기어 아이콘 > 파라미터로 이동한 후 상위에 나타나는 검색란에서 com_rc를 입력하면 com_rc와 관련 있는 명령어가 아래에 나타난다.
(명령어 전체 이름을 알면 검색란에 바로 입력하면 된다)
조종기를 사용하지 않을 계획이기 때문에 조종기 설정 명령어인 COM_RC_IN_MODE를 선택한 후 오른쪽에 나타나는 창에서 joystick/No RC Checks를 선택하고 저장한다.
이어서 조종기의 신호가 인식되지 않을 때 드론이 어떤 행동을 취해야 하는가에 대한 RC 안전장치 명령어를 설정을 한다.
검색란에서 com_rc를 입력한 후 가장 아래에 있는 NAV_RCL_ACT가 RC 자동 안정장치를 설정하는 명령어다.
(명령어 전체 이름을 알면 검색란에 바로 입력하면 된다)
명령어를 클릭한 후 disable를 선택하고 저장한다.
필요한 설정을 모두 완료했으면 픽스호크를 재부팅한다.
(QGC > 기어 아이콘(기체 설정) > 파라미터 > 도구(오른쪽 상단) > 재부팅)
이어서 UDP(User Datagram Protocol)를 설정한다.
(UDP에 대한 간략한 정의는 [드론 만들기] 용어 참조)
UDP 설정은 QGC > QGC 설정 > 일반을 선택한 후 "다음 장치에 자동으로 연결" 항목에서 UDP만 체크한 후 다른 모든 항목은 해제하면 된다.
(이제 픽스호크와 QGC는 UDP로만 연결)
설정을 완료했으면 QGC을 종료하고 컴퓨터에서 픽스호크를 제거한다.
다시 컴퓨터에 픽스호크를 연결하고 부팅이 될 동안 잠깐 기다린 후 터미널 창을 실행한다.
(QGroundControl이 실행되어 있어서는 안 됨!!)
새 터미널에서 PX4 소스코드 디렉터리로 이동한 후 필요시 아래의 명령어로 앞서 실행한 모든 make 명령 실행을 지운다.
make clean |
그다음 make 명령어로 PX4 빌드 시 에러가 발생하기 때문에 아래의 명령어로 기존에 있던 iris.sdf 파일을 삭제한다.
(iris 파일은 PX4 빌드 시 자동으로 생성된다)
rm Tools/sitl_gazebo/models/iris/iris.sdf |
파일이 삭제되면 아래의 명령어로 Gazebo와 함께 PX4를 빌드한다.
DONT_RUN=1 make px4_sitl_default gazebo |
빌드가 완료되면 PX4 소스코드 디렉터리에서 아래의 명령어를 입력해서 iris.sdf 파일을 불러온다.
gedit Tools/sitl_gazebo/models/iris/iris.sdf |
(gedit는 Ubuntu에서 기본으로 제공하는 문서 편집기이다.)
Windows처럼 파일 탐색기로 iris.sdf 파일을 열어도 된다.
mavlink_interface_plugin을 찾아서 아래처럼 serialEnabled와 hil_mode 값을 0에서 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 |
노란색의 경고문구가 뜨고 serial device가 /dev/ttyACM0 포트로 연결되었다는 듯한 메시지가 출력된 후 잠시만 기다리면 가운데쯤에 작은 쿼드콥터가 있는 Gazebo가 실행된다.
이어서 QGC를 실행하면 자동으로 PX4와 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 |
복사가 완료되면 아래의 명령어로 iris.world 파일을 불러온다.
gedit Tools/sitl_gazebo/worlds/iris.world |
엔터키를 눌러서 텍스트 편집기를 실행한 후 아래와 같이 "hitl_iris"을 모두 "iris"로 변경한다.
(Windows처럼 파일 탐색기로 iris.sdf 파일을 열어서 변경해도 된다.)
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 |
"opened serial device..." 메시지 외에는 아무런 경고 없이 가운데에 작은 쿼드콥터가 있는 Gazebo 시뮬레이터가 실행된다.
이어서 QGC를 실행하면 QGC가 자동으로 PX4와 Gazebo를 연결한다.
아래는 QGC에서 이/착륙 및 일정 위치를 이동하는 명령어를 입력해서 드론이 비행하는 동영상이다.
동영상에서 보듯이 아무런 문제 없이 드론이 비행한다!!!
< 시리얼 포트 확인방법 >
시리얼 포트를 확인하려면 픽스호크를 연결한 후 터미널 창에서 dmesg | grep "tty"를 입력한다.
마지막 줄의 장치가 픽스호크의 시리얼 포트이다.
<HITL 시뮬레이션에서 SITL 시뮬레이션 변경>
쿼드콥터(iris) 시뮬레이션을 HITL에서 다시 SITL로 변경하기 위해서 iris.sdf 파일의 serialEnable와 hil_mode를 1에서 다시 0으로 변경해준 후 make px4_sitel gazebo 명령어를 터미널에 실행하면 아래처럼 멈춰버린다.
설정상에 문제인 것 같은데 Ubuntu와 PX4에 대해서 여전히 잘 알지못하다 보니 어떻게 해야하는지 정확하게 알길이 없다.
(너무 상식적인 것인지, 나 혼자만의 문제인지 인터넷을 뒤져도 나오지도 않는다.....)
마구잡이 클릭질로 알아낸 방법은 아래와 같다.
1. iris.sdf 파일에서 serialEnalbel과 hil_mode 값을 1에서 다시 0으로 변경
2. world 디렉토리의 iris.world를 삭제 또는 이름 변경
3. 터미널 창에서 PX4 소스코드 디렉토리로 이동 후 make px4_sitl gazebo 실행.
원인과 해결방법을 알게 되면 추가하기로하고, 일단 다.... 그냥 모른 척하고 넘어간다.
[드론 만들기] Gazebo 사용하기 3/4 (2) | 2021.05.13 |
---|---|
[드론 만들기] Gazebo 사용하기 2/4 (0) | 2021.05.01 |
[드론 만들기] Gazebo 사용하기 1/4 (2) | 2021.04.25 |
[드론 만들기] jMAVSim 사용하기 2/2 (0) | 2021.04.05 |
[드론 만들기] jMAVSim 사용하기 1/2 (0) | 2021.04.03 |
댓글 영역