close_btn
로그인, 회원가입후 더 많은 혜택을 누리세요 로그인 회원가입 닫기

2016.07.26 Leewoongwon


<Pixhawk와 ROS를 이용한 자율주행>

 

목차

1. 외장하드에 UBUNTU 설치

2. Ubuntu에 ROS Indigo 설치

3. Gazebo6 설치

4. MAVROS와 PX4 설치

5. Software In The Loop(SITL)

6. More about SITL

7. ROS와 PX4의 구조

8. Off-board Control (1) Pixhawk

9. Off-board Control (2) Raspberry Pi

10. Off-board Control (3) Mavros

11. Off-board Control (4) Test Flight

 


8. Off-board Control (1) Pixhawk

 

1. Off-board Control

http://www.modulabs.co.kr/board_GDCH80/2961

위 글에서 언급했듯이 저희가 하려는 것은 mavros를 통해서 PX4와 ROS를 연결하고, 그로 인해 offboard control을 하는 것입니다.

Screenshot from 2016-07-11 14:17:22.png

 

 

위 그림 중에서 <modular approach>를 하려고 합니다. 라즈베리파이에 이전에 ROS설치했던 것처럼 동일하게 설치를 해주고 그 라즈베리파이와 PX4가 설치된 pixhawk를 연결해서 자율주행을 할 계획입니다. 라즈베리파이와 연결해서 사용하기 전에 pixhawk보드에 먼저 PX4를 설치해보도록 하겠습니다.

 

 


2. Pixhawk 보드 설치

https://pixhawk.org/

pixhawk-logo-view.jpg

 

첫 번째 글에서 Pixhawk에 대해서 설명한 적이 있습니다. Pixhawk가 무엇인지 모르시는 분들은 Pixhawk 홈페이지를 참조해주시길 바랍니다. 

https://pixhawk.org/

 

이 프로젝트를 하기 전에 아두이노 우노와 나노로 450 frame 쿼드콥터를 만드는 프로젝트를 했었습니다. 그 때 사용했던 쿼드콥터에서 아두이노만 빼서 그대로 Pixhawk를 달고 사용하려고 합니다. Pixhawk는 준비되어 있다고 생각하겠습니다. (주문하고 배송오는 데만 시간이 많이 걸릴 겁니다.)

 

아두이노 드론을 만들 때 구매했던 부품 리스트는 다음과 같습니다.

1. Frame  2. BLDC motor  3. Propeller  4. ESC 

5. Battery  6. Battery Charger 7. Power distribution board 

8. Mirco controller(Arduino)  9. Gyro sensor(+Accelerometer)  10. Transmitter(+receiver) 

 

위 리스트에서 8번과 9번을 빼고 Pixhawk를 넣으면 되겠습니다. Pixhawk는 보통 세트로 오기 때문에 그 안에 텔레메트리도 있고 GPS도 있고 여러가지가 추가로 들어있습니다. 구매했던 링크는 다음과 같습니다.  

1. 해외(하비킹)

http://www.hobbyking.com/hobbyking/store/index.asp

 

   * Frame : Hobbyking SK450 Glass Fiber Quadcopter Frame 450mm 1개

   * Motor : Turnigy Aerodrive SK3 - 2826-1240kv Brushless Outrunner Motor 4개

   * ESC : Afro ESC 30Amp Multi-rotor Motor Speed Controller (SimonK Firmware) 4개

   * Propeller : Hobbyking™ Propeller 10x4.5 White (CW) (4pcs) 1개

                     Hobbyking™ Propeller 10x4.5 White (CCW) (4pcs) 1개

   * Power distribution board : Hobby King Octocopter Power Distribution Board 1개

   * Battery : Turnigy nano-tech 2200mah 3S 35~70C Lipo Pack 2개

   * Battery Charger : IMAX B6AC V2 Professional Balance Charger/Discharger

 

 

프로펠러나 배터리같은 건 여분을 구매하시는 것이 좋고

모터랑 ESC와 배터리 프로펠러는 서로 맞는 것을 구매해야해서 임의로 구입하지 말고 이미 검증된 조합을 구매하시는 것이 좋을 것 같습니다. 위의 조합도 하비킹 직원에게 문의해서 나온 조합입니다. 원래 HITL에서는

이 각 각의 부품을 전부 테스트해보고 붙여서도 테스트해보고 해야 하는데 쿼드콥터의 특성상(이미 잘 만들어져있는 상태) 바로 이 부품들을 조립해서 사용하겠습니다.

 

조립하면 밑과 같이 되는데 조립하는 과정에 대해서는 간단하게 정리해놨던 글이 있습니다.

http://www.whydsp.org/343

2433C54D574D4AEE333C8D

 

 

여기에 Pixhawk를 설치해주시면 됩니다. 저는 알리익스프레스에서 Pixhawk를 패키지로 주문했는데 다음은 그러한 페이지 중 하나입니다.

HTB1XC5PKVXXXXXQXFXXq6xXFXXXW.jpg

 

부품리스트는 다음과 같습니다.

Package Included:

- PX4 V2.4.7 Flight board x1

- safety switch x1

- Buzzer x1

- Original Case x1

- 4GB SD Card x1

- SD Card Adapter x1

- External LED light board  X  1

- PPM Module w/ shell  x1

- Pixhawk-I2C Splitter Expand Module  X  1

- Neo-M8N Gps Module x1 

- Black Gps Holder x1 

- Power Module x1 

- Minim OSD w/ shell x1

- 433 telemetry w/ shell x1

- DF13 4Pin Cable x1 

- DF13 5Pin Cable x1 

- DF13 6Pin Cable x1 

 

픽스호크 보드 자체의 세부 사항은 다음과 같습니다.

Processor

- 32bit STM32F427 Cortex M4 core with FPU

- 168 MHz

- 256 KB RAM

- 2 MB Flash

- 32 bit STM32F103 failsafe co-processor

 

Sensors

- ST Micro L3GD20H 16 bit gyroscope

- ST Micro LSM303D 14 bit accelerometer / magnetometer

- MEAS MS5611 barometer

 

위 부품 리스트 중에서 픽스호크 보드에 GPS, buzzer, switch, power module, ppm module을 연결해주고 각 각 리시버, esc를 연결한 후에 쿼드콥터 프레임 위에 올려줍니다. 아래 왼쪽 그림에서 맨 왼쪽에 RC 부분에 PPM encoder를 연결해주시면 됩니다. 밑의 오른쪽 그림이 픽스호크에 PPM encoder와 ESC선들을 연결한 사진입니다. 세 줄이 있는데 제일 위 줄은 ground이고 두 번째 줄은 +이고 세 번째는 signal선입니다. 그거에 맞춰서 RC라고 써져있는 곳에 PPM encoder를 연결하고 Mainout 1,2,3,4에 ESC를 연결해주면 됩니다.

 

 

1.jpeg11.jpeg

 

ESC를 연결하실 때 어떤 모터가 1번인지 어떤 모터가 4번인지 알아야합니다. 3D robotics의 사진을 참고해주시면 됩니다. 다른 쿼드콥터와는 달라서 헷갈리기 때문에 정확히 보시고 연결해주세요

http://www.dronetrest.com/t/pixhawk-flips-over/718

 

da9bc60a5e29ef7a.JPG

 

 

 

 

밑의 그림은 Pixhawk 보드의 포트 정보입니다. 참고하시면 되겠습니다.

 

pix_port.png

 


3. Qgroundcontrol 설치

 

이렇게 설치가 완료되면 USB선으로 밑의 사진과 같이 컴퓨터와 픽스호크를 연결해줍니다.

10.jpeg

 

이렇게 하드웨어를 준비해준 다음에 이제 소프트웨어를 준비해줍니다. 픽스호크에 올라가는 펌웨어가 PX4 flight stack이라고 말했었는데 그 PX4를 업로드하기도 하고 여러가지 쿼드콥터의 설정들(센서 칼리브레이션, 조종기 칼리브레이션, 채널 설정 등)을 할 수 있는 Qgroundcontrol을 설치하셔야 합니다. Qgroundcontrol의 홈페이지는 다음과 같습니다.

http://qgroundcontrol.org/

 

다음 페이지에서 linux버전을 클릭하면 다운로드가 되는데 압축파일이 다운로드가 됩니다. 다운로드가 완료가 되면 위치를 하나 정해서 압축을 풀어주시고 그 폴더안의 start.sh파일을 실행해 주시면 됩니다.

https://donlakeflyer.gitbooks.io/qgroundcontrol-user-guide/content/download_and_install.html#rcbuildsScreenshot from 2016-07-26 16:04:29.png

 

 

우분투에서는 여기에 additional package를 설치해줘야합니다. 관련페이지는 다음과 같고 명령어는 밑과 같습니다.

https://github.com/mavlink/qgroundcontrol

sudo apt-get install espeak libespeak-dev libudev-dev libsdl1.2-dev

 

실행할 때에는 qgroundcontrol 폴더 내에서 다음과 같은 명령어를 실행해줍니다.

bash qgroundcontrol-start.sh

 

만약 여기서 에러가 생기면 다음 페이지들을 참조해주세요

 

해결 방법 1.

http://askubuntu.com/questions/616517/dev-ttyacm0-permission-denied-error

 

해결 방법 2.

http://websistent.com/fix-serial-port-permission-denied-errors-linux/

해결 방법 2 이후에는 reboot 를 해주어야 함.
 

정상적으로 실행이 되면 다음과 같은 화면이 나옵니다. 이제 Qgroundcontrol를 통해서 pixhawk 설정을 해보도록 하겠습니다.

 

Screenshot from 2016-07-26 16:27:17.png

 

 

 


4. Configrations and Calibration

 

(1)PX4 flight stack 설치

 

설정을 들어가서 Firmware부분으로 들어가면 다음과 같은 화면이 나옵니다. 글을 읽어보면 USB선을 뺐다 다시 꽂으라고 되어있습니다. 그대로 해주면 오른쪽에 Firmware를 선택할 수 있습니다. 저희는 PX4 Flight Stack를 선택하고 OK를 눌러줍니다.

Screenshot from 2016-07-26 13:59:08.png

 

 

 

(2) 프레임 선택

 

저희는 quadcopter X이고 그 중에서 450mm 프레임을 선택하면 얼추 맞기 때문에 DJI Flame Wheel F450을 선택해주었습니다.

Screenshot from 2016-07-26 14:21:19.png

 

 

 

(3) Radio설정

 

현재 리시버와 트랜스미터를 연결한 상황에서 트랜스미터(조종기)를 캘리브레이션해주는 단계입니다. 친절하게 설명이 계속 나오므로 그 설명대로 해주시면 됩니다.

Screenshot from 2016-07-26 14:22:04.png

 

 

(4) 센서 캘리브레이션

 

Compass, Gyroscope, Accelerometer, Level Horizon 네 개를 calibrate 해줘야하고 하나씩 클릭해서 진행하시면 됩니다.

Screenshot from 2016-07-26 16:48:11.png

 

 

Compass : 아래 그림처럼 쿼드콥터의 자세를 잡고 회전표시가 나오면 회전해주면 됩니다. 나머지 세 개도 각 각 클릭해서 진행해주시면 되는데 각 각 살짝 달라서 지침을 잘 읽고 그대로 따라 주시면 캘리브레이션이 완료됩니다.

Screenshot from 2016-07-26 16:48:31.png

 

 

(5) Flight Mode 설정

 

http://www.moses-modellbau.de/mediafiles/Anleitungen/DEVO/Manual%20of%20DEVO-7.pdf

보통 조종기에서는 조종기 위쪽 버튼을 통해서 여러가지 mode들을 선택할 수 있습니다. 예를 들면, auto takeoff, landing, return to home등의 기능들입니다. 저는 Gear button을 사용해서 ROS로 드론을 컨트롤 하는 모드와 손으로 조종하는 모드를 왔다갔다 하려고 합니다.

Screenshot from 2016-07-26 20:01:20.png

저는 GEAR가 channel 5이고(radio test할 때 그렇게 나옵니다) 따라서 Flight mode channel에 channel 5를 사용하고 Flight Mode 1에는 Stabilized를 선택하고 Flight Mode 2에는 offboard를 선택해줍니다. 그리고 오른 쪽"Switch Settings"에서는 세 번째 offboard switch channel에서 Channel 5를 선택해주면 Gear버튼을 위로 올리고 내리는 것에 따라서 손으로 조종하다가도 off board모드로 들어가서 라즈베리 파이에 있는 명령들로 쿼드콥터를 자율주행 시킬 수 있습니다.

 

Screenshot from 2016-07-26 17:10:08.png

 

 

(6) ESC Calibration

 

Qgroundcontrol에서 ESC 칼리브레이션은 상당히 간단합니다. 왼쪽의 Power탭으로 들어가서 Calibrate를 눌러주면 battery를 연결해주라는 지침이 나옵니다. 그러면 끝입니다.

Screenshot from 2016-07-26 17:23:40.png

 

 

 

 


5. Arming

 

이제 비행을 하기 위한 준비는 다 끝났습니다. Arming이라는 단어가 있는데 안전을 위한 장치라고 보시면 될 것 같습니다. 자동차에서도 키를 꼽고 돌려야 시동이 걸리듯이 쿼드콥터에서도 어떠한 행동을 해줘야 쿼드콥터로 비행을 할 수 있습니다. 보통은 조종기에서 Throttle 스틱을 오른쪽 밑으로 해주면 Arming이 되도록 설정되어있는데 Firmware마다 다를수가 있습니다. PX4가 업로드 되어있는 Pixhawk에서는 배터리를 연결하고 컴퓨터와는 연결하지 않은 상태에서 safety switch를 몇 초간 눌러주고 그 다음에 조종기에서 throttle stick을 오른쪽 밑으로 유지하면 arming이 되면서 네 개의 모터가 돌게 됩니다. arming이 될 때 왜 모터가 도는 지 의아해하는 분들이 계실 수도 있는데 모터가 돌지 않으면 arming이 되었는지 알 수 없기 때문에 쿼드콥터가 뜨지 않을 정도만 돌게 해주는 것입니다. SITL에서도 잘 보면 arming이라는 command를 주면 쿼드콥터의 프로펠러들이 도는 것을 볼 수 있었습니다.

Screenshot from 2016-07-26 21:53:48.png

6. Test Flight

Pixhawk가 제대로 설정이 되었고 비행이 가능한 지 확인하기 위해서 실재로 낮은 고도로 비행시켜 보았습니다.

450 Frame으로 PID계수가 맞춰져있어서 Tunning안해줘도 잘 날지만 날려본 다음에 진동을 보고서 P나 I gain을 바꿔주는 것이 좋습니다. 저는 Stabilized 모드로 비행을 했습니다. 다음 사진과 같이 쿼드콥터를 세팅해놨습니다.

photo_1(1).jpgphoto_0(4).jpg

 

 

https://www.facebook.com/100004068281468/videos/917401101738824/

비행 동영상 링크는 위와 같습니다.

Screenshot from 2016-07-29 12:50:47.png

 

 

 


여기까지 Pixhawk보드의 Setting에 대해서 살펴보았습니다. 다음 포스팅에서는 라즈베이파이에 Ubuntu를 설치하고 ROS,MAVROS를 설치해서 작동을 하는 것을 확인해보겠습니다.

번호 제목 글쓴이 날짜 조회 수
공지 Drone Control and Utilization Lab. 연구실 안내 모두의연구소 2016.06.12 664
32 Ardupilot을 이용한 임무수행 따라 하기-비행 계획 작성 및 활용 file 마르코프김 2016.12.02 2170
31 Ardupilot을 이용한 임무수행 따라 하기-Flight Mode 설정 file 마르코프김 2016.12.02 1487
30 Ardupilot을 이용한 임무수행 따라 하기-번외 : 드론 조종법! file 마르코프김 2016.12.02 1373
29 Ardupilot을 이용한 임무수행 따라 하기-드론 초기 설정 file 마르코프김 2016.12.02 4281
28 Ardupilot을 이용한 임무수행 따라 하기-Mission Planner 설치 방법 file 마르코프김 2016.12.02 3320
27 opencv + vision based hovering 참고자료 이웅원 2016.11.01 793
26 DCULab 데모데이 MODU쓰기드론 [3] file 이웅원 2016.10.06 435
25 [e-book]Learning ROS for Robotics Programing file 마르코프김 2016.09.13 919
24 2016.09.06 모임자료 file 이웅원 2016.09.06 261
23 Optical flow sensor 조사 [4] file 이웅원 2016.08.30 1825
22 odroid 보드에 ROS 포팅 방법 정리 [1] file 독립군 2016.08.22 986
21 2016.08.16 DCULab 모임자료 file 이웅원 2016.08.16 279
20 PIXHAWK와 ROS를 이용한 자율주행 - 11 : Off-board Control (4) Test Flight [5] file 이웅원 2016.08.08 10210
19 MAVROS Offboard 드론 위치 이동 제어 예제 #2 - 사각형/원 경로로 드론 이동 [2] file 삶사랑 2016.08.05 2182
18 MAVROS Offboard 드론 위치 이동 제어 예제 #1 [7] file 삶사랑 2016.08.03 2445
17 ROS Node 란?: 01. Chatter [5] file 삶사랑 2016.08.03 1106
16 PIXHAWK와 ROS를 이용한 자율주행 - 10 : Off-board Control (3) Mavros [19] file 이웅원 2016.07.29 19251
15 PIXHAWK와 ROS를 이용한 자율주행 - 9 : Off-board Control (2) Raspberry Pi [1] file 이웅원 2016.07.29 12044
» PIXHAWK와 ROS를 이용한 자율주행 - 8 : Off-board Control (1) Pixhawk [3] file 이웅원 2016.07.26 11595
13 ROS 분산 컴퓨팅 환경 설정 [9] file 삶사랑 2016.07.20 943