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

2016.07.29 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

 


10. Off-board Control (3) Mavros

 

1. 라즈베리파이에  Mavros 설치

sudo apt-get update

sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras

이 두 줄을 실행시키면 MAVROS가 설치가 됩니다.

 

 

2. modudculab_ros 설치

이제 Offboard Control을 위한 modudculab_ros package를 설치해줍니다. Package를 설치하려면 Package를 Build를 해야하는데 catkin build 명령어는 catkin_tools 패키지 안에 있습니다. 따라서 그 패키지를 설치해줘야합니다.

http://answers.ros.org/question/207433/catkin-build-gives-command-not-found/

sudo apt-get install python_catkin_tools

 

 

https://github.com/Jaeyoung-Lim/modudculab_ros

그 후에 다음 명령어들을 실행해주시면 됩니다.

cd ~/ros_catkin_ws/src

git clone https://github.com/Jaeyoung-Lim/modudculab_ros.git

~/ros_catkin_ws/ 에서서

catkin build modudculab_ros

 

 

Screenshot at 2016-07-28 23:21:38.png

 

이제 설치된 ROS 패키지를 통해 픽스호크에게 명령을 주기 위해 두 보드를 연결해야 합니다.

 

 

2. Pixhawk와 Raspberry Pi의 연결

 

(1) GPIO

아래 사진과 같이 Pixhawk의 Telem2 포트와 Raspberry Pi의 GPIO핀을 연결해야 합니다. 원래 Telemetry 포트는 지상국과의 연결을 하는 안테나를 연결하는 포트이고 그 안테나를 통해서 지상국(예를 들면 데스크탑)과 MAVLINK로 통신하는 것입니다. 아래 사진은 임재영님이 연결하신 방법입니다.

photo_0(1).jpg

 

 

각 연결선들이 무엇을 연결한 건지 아래 그림을 보면 알 수 있습니다. 하지만 이 방법같은 경우에는 Baudrate에 제한이 있어서 저는 usb to ttl 포트를 사용하였습니다.

http://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html

 

../_images/RaspberryPi_Pixhawk_wiring1.jpg

 

 

(2) USB to TTL

이 연결 같은 경우에는 따로 모듈을 하나 구매하셔야 합니다. 연결은 왼쪽과 같이 하면 되고 실재로는 오른쪽과 같이 사용하고 있습니다.

Screenshot from 2016-07-29 16:03:12.pngphoto_0(5).jpg

 

 

이런 것을 구매하시면 됩니다. 꼭 여기서 안 구매하셔도 파는 곳은 많으니까 공동 구매로 진행하는 것이 좋을 것 같습니다.

http://parts-kits.com/shop/goods/goods_view.php?goodsno=10&inflow=naver&NaPm=ct%3Dirhgbr40%7Cci%3D8adfffadff2d75a699ea4d998e242fcc65cf79ad%7Ctr%3Dsls%7Csn%3D298972%7Chk%3Dce13cf94b096f4ef744d8e9abd4de842532fd1e0

141213418081l0.jpg

 

 

 

3. MAVROS test

Mavros를 돌려보고 픽스호크로부터 토픽을 받아오는 것을 실행함으로서 라즈베리파이와 픽스호크의 연결을 테스트해보려고 합니다.

 

그 전에 픽스호크의 설정을 바꿔줄 것이 있습니다. 노트북에서 Qgroundcontrol을 실행시켜줍니다.

cd qgroundcontrol

bash qgroundcontrol-start.sh

 

메뉴 중에서 Parameters로 들어가서 System으로 들어갑니다. 밑의 그림에서 SYS_COMPANION이 companion컴퓨터와의 연결을 설정하는 것입니다. 저 부분을 눌러서 Companion Link(921600 baudrate 8N1)을 선택해줍니다. GPIO핀에 연결한 경우에는 이 baudrate를 사용할 수 없습니다.

Screenshot from 2016-07-29 15:51:03.png

 

다시 라즈베리파이로 돌아와서 Mavros를 구동하기 전에 Permission문제를 해결해줘야 합니다. 픽스호크와 연결되어 있는 USB포트를 확인해봅니다. 터미널 창에서 다음을 실행해주면 그 정보를 확인할 수 있습니다.

ls /dev/ttyUSB*

 

저는 /dev/USB0라는 결과가 돌아옵니다. 그러면 이제 터미널 창에서 다음을 입력해줍니다. 그러면 이후에 있을 permission 문제가 해결됩니다.

sudo chmod 666 /dev/ttyUSB0

 

Master를 실행시킵니다.

roscore

이제 Mavros를 실행시켜줍니다.

rosrun mavros mavros_node _fcu_url:="/dev/ttyUSB0:921600"

Screenshot at 2016-07-29 01_32_16.png

 

 

노드 그래프를 실행시켜봅니다. 현재는 mavros 노드 하나만 있는 것을 볼 수 있습니다.

rqt_graph

Screenshot at 2016-07-29 01_33_49.png

 

Mavros를 통해 받아온 픽스호크의 데이터를 확인해봅니다. topic monitor에서 각각의 토픽을 통해서 데이터가 오는 것을 확인할 수 있습니다.

rqt

Screenshot at 2016-07-29 02_12_20.png

 

 

 

4. modudculab_ros package test

modudculab_ros 패키지 안에서 Position control로 테스트 해 볼 겁니다.

/ros_catkin_ws/src/modudculab_ros/launch안에 있는 ctrl_pos_gazebo.launch파일을 수정해줍니다.

3번 째 줄을 다음 그림과 같이 "dev/ttyUSB0:921600"으로 수정해줍니다.

Screenshot at 2016-07-29 02_27_41.png

 

roslaunch명령어를 통해서 실행해줍니다.

roslaunch modudculab_ros ctrl_pos_gazebo.launch

 

다음과 같이 실행이 됩니다.

Screenshot at 2016-07-29 02_12_38.png

 

이제 위에서와 마찬가지로 node graph와 topic data들을 확인해줍니다.

Screenshot at 2016-07-29 02_20_36.png

 

 

Screenshot at 2016-07-29 02_32_53.png

 

위와 같이 실행이 되면 성공한 것입니다. 노드 2개가 활성화되어 있으며 position의 명령을 주고 있습니다. 그 명령은 밑의 사진에서 /mavros/setpoint_position/local안에 pose/position z좌표를 보면 1의 명령이 들어가고 있는 것을 볼 수 있습니다.

 

 


이제 야외로 나가서 드론을 자율주행하기 위한 준비는 끝났습니다. 다음 글에서는 실재 밖에서 드론으로 trajectory control하는 것을 다루도록 하겠습니다.

번호 제목 글쓴이 날짜 조회 수
공지 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
» PIXHAWK와 ROS를 이용한 자율주행 - 10 : Off-board Control (3) Mavros [19] file 이웅원 2016.07.29 19250
15 PIXHAWK와 ROS를 이용한 자율주행 - 9 : Off-board Control (2) Raspberry Pi [1] file 이웅원 2016.07.29 12044
14 PIXHAWK와 ROS를 이용한 자율주행 - 8 : Off-board Control (1) Pixhawk [3] file 이웅원 2016.07.26 11595
13 ROS 분산 컴퓨팅 환경 설정 [9] file 삶사랑 2016.07.20 943