드론에 연결하기(Connect)
저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo
Last updated
저작권: 쿼드(QUAD) 드론연구소 https://smartstore.naver.com/maponarooo
Last updated
mavutil 모듈은 serial, tcp 또는 udp 채널을 통해 MAVLink 시스템에 대한mavlink_connection()
통신 링크를 설정하는 방법을 제공합니다 . 원격 측정 로그로 작업할 때 유용한 파일 개체에 연결할 수도 있습니다.
이 메서드는 단일 시스템을 나타내는 개체를 반환하지만 링크의 여러 시스템에서 메시지를 수집합니다. 이는 2-시스템 네트워크에 적합하지만 다중 차량 IP 네트워크를 통해 연결해야 하는 경우 참조하십시오 .
이 mavlink_connection()
메서드는 채널을 정의하는 과 전송 속도 및 링크의 기타 속성을 설정하기 위한 몇 가지 선택적 인수를 사용합니다(연결 문자열의 형식은 일부 선택적 인수를 자동으로 설정하고 재정의할 수 있음).
연결 문자열 mavutil.mavlink_connection()
의 형식은 다음과 같습니다.
프로토콜 (선택 사항): IP 프로토콜입니다. 지정하지 않으면 pymavlink는 주소가 직렬 포트(예: USB)인지 파일인지 확인하려고 시도하고, 그렇지 않은 경우 기본적으로 UDP 주소를 사용합니다.
tcp
: 지정된 address
및 port
에서 TCP 연결을 시작합니다.
tcpin
: 지정된 address
및 port
에서 TCP 연결을 수신합니다.
udpin
: 지정된 address
및 port
에서 UDP 연결을 수신합니다.
udpout
: 지정된 address
및 port
에서 TCP 연결을 시작합니다.
udp
: 기본적으로 udpin
와 동일합니다. mavlink_connection
와 같도록 input=Falseudpout
매개변수를 설정합니다 .
udpcast
: 브로드캐스트 UDP 주소 및 udp
포트. 이는 mavlink_connection()
매개 변수 input=False
및 broadcast=True
와 동일합니다.
address : IP 주소, 직렬 포트 이름 또는 파일 이름
port : IP 포트(주소가 IP 주소인 경우에만)
다양한 유형의 연결에 사용할 수 있는 일부 문자열이 아래에 나열되어 있습니다.
연결 타입
연결 문자열
USB를 통해 차량에 연결된 Linux 컴퓨터
/dev/ttyUSB0
직렬 포트를 통해 차량에 연결된 Linux 컴퓨터(RaspberryPi 예)
/dev/ttyAMA0(보드=57600도 설정)
UDP를 통해 SITL 연결을 수신하는 MAVLink API
udpin:localhost:14540(또는 udp:localhost:14540, 127.0.0.1:14540 등, PX4만 지원)
UDP를 통해 SITL에 연결을 시작하는 MAVLink API
udpout:localhost:14540(또는 udpout:127.0.0.1:14540)
UDP를 통해 차량에 연결된 GCS
127.0.0.1:14550 또는 udp:localhost:14550
TCP를 통해 차량에 연결된 SITL
tcp:127.0.0.1:5760(ArduPilot 전용, PX4는 TCP를 지원하지 않음)
USB를 통해 차량에 연결된 OSX 컴퓨터
개발/cu.usbmodem1
USB를 통해 차량에 연결된 Windows 컴퓨터(이 경우 COM14)
com14
COM14에서 3DR Telemetry Radio를 사용하여 차량에 연결된 Windows 컴퓨터
com14(보드=57600도 설정)
MAVLink는 다른 목적으로 사용되는 UDP 포트를 정의하지 않지만 MAVLink API는 UDP 포트 14540에서 SITL 연결을 수신해야 하고 GCS는 UDP 14550에서 연결을 수신해야 한다는 사실상의 표준이 있습니다.
학습 디렉토리를 만들고 vscode 편집기를 엽니다. (학습용 VM에는 이미 설치되어 있습니다)
listen.py 파일을 만들고 아래와 같이 코드를 작성 합니다.
SITL이 정상적으로 실행되면 QGroundControl 실행
첫번째로 작성한 listen.py 프로그램이 드론과 연결한 후 Hearbeat 메시지를 수신한 결과를 볼 수 있습니다.
이제 코드 끝에 다음 라인을 추가해 보겠습니다.
mavutil.mavlink_connection 메소드로 생성된 the_connection 인스턴스에 recv_match 메소드를 이용하여 mavlink로 수신되는 모든 메시지를 출력하는 코드 입니다.
아래와 같이 수신되는 모든 mavlink 메시지를 볼 수 있습니다.
이제 출력되는 메시지 중 "ATTITUDE" 타입의 메시지만 추려서 출력해 보겠습니다.
아까 추가했던 코드를 아래와 같이 변경 합니다.
실행 합니다.
이제 ATTITUDE 타입의 mavlink 메시지만 출력 되는걸 볼 수 있습니다.
본 학습에서 코드 편집기는 vscode를 사용합니다. 설치는