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
catkin build modudculab_ros
source /home/leewoongwon/ros_catkin_ws/devel/setup/bash

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


3.Pixhawk와 Raspberry Pi의 연결

(1) GPIO

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

각 연결선들이 무엇을 연결한 건지 아래 그림을 보면 알 수 있습니다. 하지만 이 방법같은 경우에는 Baudrate에 제한이 있어서 저는 usb to ttl 포트를 사용하였습니다. http://ardupilot.org/dev/docs/raspberry-pi-via-mavlink.html

(2) USB to TTL 이 연결 같은 경우에는 따로 모듈을 하나 구매하셔야 합니다. 연결은 첫 번째 사진과 같이 하면 되고 실재로는 밑의 사진과 같이 사용하고 있습니다.


3. MAVROS test

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

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

cd qgroundcontrol
bash qgroundcontrol-start.sh

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

다시 라즈베리파이로 돌아와서 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

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

rqt


4. modudculab_ros package test

modudculab_ros 패키지 안에서 Position control로 테스트 해 볼 겁니다. /ros_catkin_ws/src/modudculab_ros/launch안에 있는 ctrl_pos_gazebo.launch파일을 수정해줍니다. 3번 째 줄을 다음 그림과 같이 "dev/ttyUSB0:921600"으로 수정해줍니다.

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

roslaunch modudculab_ros ctrl_pos_gazebo.launch

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

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

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

results matching ""

    No results matching ""