1. Pymavlink

Peroro·2023년 4월 2일

캡스톤

목록 보기
1/10

우선 MAVlink에 대해서 설명하고자 한다.

MAVlink란 Micro Air Vehicle Link라는 뜻으로 드론과 통신하기 위한 프로토콜을 의미한다. 우리 팀은 캡스톤을 진행하는 와중에 대부분의 드론들은 이 MAVlink를 통해 통신을 한다는 것을 알게 되었다. 아래는 PX4의 아키텍쳐이다. Ground station과 Telemetry radio가 MAVLink를 통해 통신하는 것을 알 수 있다.

아래는 MAVLink version 2.0의 프로토콜 구조다. 1.0 버전도 있는데, 드론이 1.0 버전이고 MAVLink가 2.0일 경우 통신이 가능하지만, 역은 안된다고 한다.

  • STX: 0xFD로 고정된 시작 마커
  • LEN: PAYLOAD의 길이
  • INC FLAGS: MAVLink 호환 링크, 이해할 수 없는 패킷은 버려짐
  • CMP FLAGS: MAVLink 비호환 링크, 이해할 수 없는 패킷도 처리됨
  • SEQ: 메시지 시퀀스 번호
  • SYS ID: 송신자의 시스템 ID
  • COMP ID: 송신자의 컴포넌트 ID
  • MSG ID: 3 bytes로 된 메시지 ID
  • PAYLOAD:우리가 원하는 메시지를 보내게 된다.
  • CHECKSUM: CRC checksum
  • SIGNATURE: 메시지의 서명

  • 위는 드론 조종과 관련된 명령이다. 이를 PAYLOAD에 담아 패킷을 보내게 된다.
  • x: 이는 조이스틱이 앞(1000), 뒤(-1000)로 움직인 값을 의미한다.-1000~1000의 범위를 가진다. 드론의 Pitch와 관련되었다. 드론의 전후 이동에 필요한 값이다.
  • y: 이는 조이스틱이 왼쪽(-1000), 오른쪽(1000)으로 움직인 값을 의미한다. -1000~1000의 범위를 가진다. 드론의 Roll과 관련되었다. 드론의 좌우 이동에 필요한 값이다.
  • z: 상하로 움직이게 한다(추력). 여기에서는 -1000~1000까지의 범위를 준다고 했지만, pymavlink에서는 0~1000까지를 범위로 두었다. 0이 밑으로, 500이 호버링, 1000을 위로 움직이게 명령을 줄 수 있다.
  • r: 조이스틱의 회전과 관련되어 있는 값이다. -1000~1000까지의 범위를 가진다. 1000이 시계방향, -1000이 반시계 방향이다. 드론의 Yaw와 관련되었다. 드론의 회전과 관련된 값이다.

이를 python에서 사용할 수 있도록 모듈로 되어있는데 이를 pymavlink라고 한다.

https://www.ardusub.com/developers/pymavlink.html

  • 설치 방법(Ubuntu 20.04)
sudo apt update
sudo apt -y upgrade

sudo apt install -y python3-pip

pip3 install mavproxy

잘 설치되었는지 확인하려면,

python
import pymavlink
print(pymavlink.__doc__)
//output
Python MAVLink library - see http://www.qgroundcontrol.org/mavlink/mavproxy_startpage
  • 사용법
from pymavlink import mavutil // import

# Create the connection
master = mavutil.mavlink_connection('udpin:0.0.0.0:14550')
# Wait a heartbeat before sending commands
master.wait_heartbeat()

# master.mav.manual_control_send(master.target_system,
								x, y, z, r, btn)
master.mav.manual_control_send( master.target_system,
							500,-500, 250, 500, 0)
  • 궁금한 점
    - button이 무슨 역할을 하는지 잘 모르겠다.
  • 정확하지 않은 내용이 있을 수 있으니 추후에 수정을 할 것이다.
  • 혹시 잘못된 내용이 있다면 댓글에 적어주시길 부탁드립니다.
profile
오늘 공부한 것을 올리는 공간 / 일주일에 글 3개 / 블로그 이전 : https://perorochan321.tistory.com/

1개의 댓글

comment-user-thumbnail
2023년 5월 9일

잘 보고 갑니다~

답글 달기