본문 바로가기
Tech Story/QuadCopter ROS

Offboard Control - (4) Test Flight

Offboard Control - (4) Test Flight

 

DJI F50기반 쿼드콥터 하드웨어를 기반으로 Pixhawk와 Raspberry Pi(ROS)를 이용하여 자율비행 드론 구현

 

Offboard Control - (1) Pixhawk h/w  

Offboard Control - (2) Raspberry Pi  

Offborad Control - (3) MarvROS  

Offboard Control - (4) Test Flight

 

 

 

1. Pixhawk와 Raspberry Pi의 연결

2. Raspberry Pi의 전원

3. Raspberry Pi의 Wifi 연결

4. Pixhawk의 flight mode 설정

5. Trajectory node

6. Test flight

 

 

 

1. Pixhawk와 Raspberry Pi 연결

 

USB to TTL 연결방법(권장방법, 위에서 설명함)

Pixhawk Telem2와 RPi USB 

 

 

 

 

 

 

 

 

별도로 케이블 제작한 모습

 

RPi USB연결잭은 인터넷에서 USB to ttl 이라고 해서 나오는 케이블을 구매하면 됩니다. 

구매한 USB to TTL 모듈에 함께 제공된 케이블(보통 4개연결 케이블)과 Pixhawk 모듈 구매시 제공된 케이블(Telem2에 연결할 수 있는 케이블)을 서로 잘라서 해당 선만 연결하여 사용하면 편리합니다.(위의 사진 참조)

픽스호크-라즈베리파이 통신 테스트 : http://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html

                                                                    (http://dronewe.com/article/pixhawk-개발-ardupilot/2/693)

 

 

2. Raspberry Pi 전원

 

픽스호크가 Battery에서 Power Module로 전원을 공급받고 있고, 라즈베리파이도 5V 전원이 필요합니다. 4가지 방법이 있습니다. (1번 또는 3번 추천)

(1) Telem2 port의 5V의 전원을 받아와서 라즈베리파이의 Power in micro usb port로 연결하는 방법 (참조사이트 : http://comterman.tistory.com/1000)

(2) ESC의 BEC에서 5V를 받아와서 라즈베리파이의 Power in으로 전원을 공급하는 방법(비추,잘못하면 라즈베리 과전압ㅇ로 사망할 수 있습니다)

(3) 별도의 보조배터리를 통해서 라즈베리파이에 Power in 포트에 전원을 공급하는 방법(권장)

(4) 라즈베리파이에  GPIO핀에 5V를 공급하는 방법(비추)

 

제일좋은 방법은 픽스호크와 라즈베리파이가 서로 다른 전원을 사용하는겁니다. 별도의 보조배터리를 이용하여 라즈베리파이의 전원을 공급하는게 좋습니다.(제일 가벼운 보조배터리팩으로 연결-이는 드론의 전체 무게에 영향을 주기 때문입니다.)

 

 

3. Raspberry Pi Wifi연결

 

라즈베리파이에서 roscore와 node(trajectory or position)가 실행되고 있어서 mavros를 통해 픽스호크에 명령을 보내고 있다가 조종기를 통해서 Off board mode에 들어가면서 명령이 실행되는 형태입니다.

 

그래서 라즈베리파이에서 roscore와 node를 실행해줘야 하는데, 그 방법이 wifi를 라즈베리파이와 연결하여 원격으로 접속(putty 이용)하여 해당 명령을 실행해주면 됩니다.

※ 라즈베리파이 내장 wifi 통신거리가 짧아서 wifi동글 추천

※ 라즈베리파이 유선네트웍 설정을 통해서 노트북과 다이렉트 UTP 케이블을 연결하여 putty를 이용하여 연결도 가능

 

Putty를 이용하여 접속하는 방법은 인터넷을 참조

접속 후 roscore 실행

# roscore

 

4. Pixhawk의 flight mode 설정

 

3가지 형태로 비행테스트 진행 (1) Position hold, (2) Mission mode, (3) Offboard mode 순서

mode가 변경될때마다 qgroundcontrol에서 픽스호크를 설정해줘야 합니다

 

# 노트북에 Micro USB를 픽스호크와 연결 후  QGroundControl 실행

 

조종기의 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모드로 들어가서 라즈베리 파이에 있는 명령들로 쿼드콥터를 자율주행 시킬 수 있습니다.(http://e3jake.tistory.com/42 글 확인)

 

 

5. Trajectory node

 

offboard mode를 사용할 때 라즈베리파이에서 roscore 를 실행하고 ctrl_traj_test.launch 를 실행해줍니다. 

이 ctrl_traj_test.launch파일을 살펴보시면 아래와 같이 fcu_url을 USB port로 설정해야 합니다. 

(/dev/ttyAMA0:57600 ▶ /dev/ttyUSB0:921600)

# roscore 

roslaunch modudculab_ros ctrl_traj_test.launch 

 

 

관련된 내용은 바로 전 글을 참조해 주시기 바랍니다. 

이 launch 파일은 두 개의 node를 실행시키는데 mavros와 pub_setpoints_traj를 실행시킵니다. 

이 pub_setpoints_traj node에 대해서 두 가지 변수를 설정해줄 수 있는데 반지름과 각속도입니다.

 

pub_setpoints_traj.cpp파일을 열어보면 지워주셔야 할 부분이 있는데 아래와 같습니다. 

이 부분은 자동으로 offboard 모드로 바꾸고 또 자동으로 arming을 해주는 것입니다.(추락위험)

※ SITL할 때 편리하기 위해서 넣어놓은 코드인데 실재 비행할 때는 있으면 안되는 부분입니다. 

그 밑에 trajectory식을 보시면 고도 2m에서 원을 도는 trajectory입니다. 

그 원과 관련된 r과 wn을 launch file에서 설정하는 것입니다. 

QGroundControl에서 parameters에서 maximum velocity를 설정할 수 있습니다. 

※ ctrl_traj_test.launch 파일을 수정하여  r = ?m, wn = ?로 설정하여 저장후 실행하면 그 값에 따라 회전반경과 원을 그리며 비행하게 됩니다.(기본 설정 r = 3m, wn = 0.2)

※ 그리고 코드(pub_setpoints_traj.cpp)에서는 높이를 ??m로 조정하여 다시 빌드하면 적용 됩니다.(기본설정 2m)

 

 

 

 

6. Test Flight

 

야외에 나가서 사전에 노트북에 픽스호크를 연결해서 QGroundControl로 sensor calibration을 해주는 것이 좋습니다. 

또한 RPi 여유분과 밧데리, 무선 공유기도 필요합니다.

 

(비행전 체크사항)

offboard로 자율주행을 하기 전에 pixhawk만을 사용해서 GPS를 사용해서 position홀드를 해보고 QGroundControl로 mission을 짜서 수행해보아야 합니다. 이 두가지가 정상적으로 실행이 될 때 그 다음에 offboard mode를 실행

 

(1) Position

pixhawk에 대한 글에서 다루었듯이 픽스호크에 전원을 연결하고 보드에 초록불이 들어오면 GPS가 되는 것입니다. 그 후에 safety switch를 누른 후에 조종기의 throttle bar를 오른쪽 아래로 하면 arming이 됩니다. 처음에는 stabilized flight mode로 띄우고 적당한 거리와 적당한 높이에서 Gear를 바꾸어주면 position mode로 들어가고 GPS를 사용하여 그 때 자신의 위치에 고정되어서 hovering하게 됩니다. 이 때 Throttle은 중간에 놔주어야 합니다.

 Pixhawk Power On ▶  Safety Switch ▶ 조종기 Throttle bar Arming ▶ Stabilized flight mode 

 ▶ Gear변경 ▶ throttle 중간 위치

 

 

(2) Mission

미션은 qgroundcontrol에서 다음과 같이 해줄 수 있는데 왼쪽 위의 +모양을 누르면 명령들을 넣을 수 있습니다. 처음에 Takeoff명령을 주고 waypoint들을 준 다음에 land명령을 줘서 하나의 mission을 형성합니다. 

너무 넓게는 설정하기 말고 고도도 설정해줄 수 있고 현재는 25m로 되어있습니다.  바닥에 쿼드콥터를 놓고 배터리를 연결하고 arming을 한 다음에 바닥에서 mode를 바꾸어주면 이 미션을 수행하게 됩니다. 

※ 혹시나 이상이 생겼을 경우에 바로 stabilized flight mode로 바꾸어야 하니까 조종기를 항상 들고 있어야 합니다.

 

 

 노트북 QGroundControl 실행 ▶ 위쪽 좌측 노란색 + 클릭 ▶ Takeoff 명령 ▶ waypoint 지정 ▶ Land 명령 완료

 

 

 

 

 

3) Offboard

위 까지 성공적으로 수행이 되었다면 이제 offboard로 비행할 차례입니다. 

라즈베리파이에 전원이 들어가는 상태에서 공유기를 통해서 노트북에서 라즈베리파이에 접속합니다. 

그리고 두 개의 명령을 실행해주시면 됩니다.

 

# roscore 

roslaunch modudculab_ros ctrl_traj_test.launch 

  

그 후에 조종기로 arming을 해주고 offboard mode로 바꾸어주면 상공 2m에서 5m 반경으로 회전하게 됩니다.

(위에서 언급했듯이 자동으로 offboard모드가 되고 arming이 되는 코드를 안 빼면 잘 못하면 test flight를 해서 추락할 수 있기 때문에 유의하시기 바랍니다.)

 

 

7. 테스트2

참조영상 : youtu.be/SOdEuAY_VfM

소스코드 : github.com/yingshaoxo/suicide-squad/tree/master/PX4

 

참조영상 : youtu.be/ELa6w6Z6mws

github.com/yingshaoxo/suicide-squad/tree/master/PX4

 

 

 

 

 

End of Posting