맨위로가기

멀티위

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

멀티위(Multiwii)는 멀티위 플라이트 콘트롤러(FC)에서 사용되는 표준 통신 규약인 MSP(Multiwii Serial Protocol)를 발전시켜 사용한다. MSP는 FC 보드와 무선 조정 장치(RC) 간의 무선 메시지 교환을 위한 프로토콜로, 아스키 코드를 시리얼 통신에 사용한다. MSP 패킷은 헤더, 데이터 길이, 메시지 ID, 데이터, 체크섬으로 구성되며, FC를 기준으로 송신, 수신, 요청 패킷 형식이 정의되어 있다.

더 읽어볼만한 페이지

  • 원격 데스크톱 - 원격 데스크톱 서비스
    원격 데스크톱 서비스(RDS)는 네트워크를 통해 원격으로 컴퓨터의 데스크톱 환경에 접근할 수 있게 해주는 기술이며, 클라이언트 소프트웨어, 서버 구성 요소, 다양한 역할을 수행하는 구성 요소로 구성된다.
  • 원격 데스크톱 - 원격 데스크톱 프로토콜
    원격 데스크톱 프로토콜(RDP)은 마이크로소프트가 개발한 독점 프로토콜로, 컴퓨터를 원격으로 제어하고 관리할 수 있게 해주며, 여러 버전 업데이트를 거쳐 기능이 향상되었지만 보안 취약점에도 노출되어 사용 시 주의가 필요하다.
멀티위
멀티위
멀티위 로고
멀티위 로고
개발알렉스 뒤퐁과 멀티위 커뮤니티
최초 릴리스2011년
최신 릴리스2.4 (2015년 9월 23일)
상태더 이상 개발되지 않음
유형드론 펌웨어
라이선스GPLv3
웹사이트멀티위 공식 위키
특징
지원 플랫폼아두이노
지원 센서가속도계
자이로스코프
기압계
GPS
자기계
지원 기능자세 제어
고도 유지
헤드리스 모드
자동 귀환
GPS 홀드
지원 통신블루투스
USB
시리얼 통신
역사
개발 동기Wii 모션 플러스 기술을 RC 비행기에 적용하기 위함
주요 개발자알렉스 뒤퐁
기여오픈 소스 커뮤니티의 기여
기술적 세부 사항
프로그래밍 언어C++
개발 환경아두이노 IDE
지원 프로세서Atmel AVR
추가 정보
관련 프로젝트베이스 플라이트
클린 플라이트
베타 플라이트

2. 통신 프로토콜

MSP (Multiwii Serial Protocol)는 멀티위 비행 컨트롤러(FC)가 사용하는 통신 규약으로, 아스키 코드를 시리얼통신에 사용한다.[5]

MSP 패킷 중 명령형 타입의 예시는 다음과 같다.[6][7]

헤더 1헤더 2헤더 3sizetype(메시지 ID)bytescrc
3677608200125,125,125,0,10,0,0,0233



CRC 체크섬 값은 '데이터의 항목', '패킷 타입', '데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)'의 XOR 값이다. 위의 경우 crc = 8 XOR 200 XOR 125 XOR 125 XOR 125 XOR 0 XOR 10 XOR 0 XOR 0 XOR 0 = 183이다.

아스키코드 표현은 다음과 같다.

$M<È}}}□LF□□□É
3677608200125,125,125,0,10,0,0,0233



128 이상에서는 ISO/IEC 88591를 적용한 경우이다.

2. 1. 기본 구조

MSP(Multiwii Serial Protocol)는 멀티위 플라이트 콘트롤러(FC)가 사용하는 멀티위 펌웨어를 구성하는 표준통신 규약이다.[5] 멀티위는 비행체의 FC보드와 무선조정장치(RC)를 서로 연동하는 무선 메시지를 교환하는 프로토콜로 MSP를 발전시켜 사용했으며 데이타형식으로는 아스키 코드를 시리얼통신에 사용하고있다.[5]

MSP패킷중 명령형 타입의 예는 다음과 같다.[6][7]

$M<sizetype(메세지 ID)bytescrc
헤더1헤더2헤더3데이타의 항목(DATA length)패킷타입(CODE)데이타(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)CRC
3677608200125,125,125,0,10,0,0,0233



CRC 체크섬 값은 데이타의 항목, 패킷 타입, 데이타(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)의 XOR 값이다. 위의 경우 crc = 8 XOR 200 XOR 125 XOR 125 XOR 125 XOR 0 XOR 10 XOR 0 XOR 0 XOR 0 = 183이다.

아스키코드 표현은 다음과 같다.

$M<È}}}□LF□□□É
3677608200125,125,125,0,10,0,0,0233



128이상에서는 ISO/IEC 88591를 적용한 경우이다. 패킷 형식은 FC(플라이트 컨트롤러)를 기준으로 하는 방향이다.[8] 헤더1 과 헤더2의 값은 고유값이며 헤더3은 패킷의 신호 방향이다.

송신 패킷 형식

헤더1헤더2헤더3DATA lengthCODEDATACRC
$M<È}}}□LF□□□É



요청 패킷 형식

: 데이타 필드가 없다. 따라서 데이터의 크기는 0이다.

헤더1헤더2헤더3DATA lengthCODECRC
$M<0dd



수신 패킷 형식 (송신 패킷 형식의 구조를 사용한다.)

헤더1헤더2헤더3DATA lengthCODEDATACRC
$M>


2. 2. 패킷 구조 및 형식

MSP(Multiwii Serial Protocol) 패킷은 헤더, 데이터 길이, 메시지 ID (CODE), 데이터, CRC로 구성된다. FC(플라이트 컨트롤러)를 기준으로 송신, 수신, 요청 패킷 형식이 정의되어 있다.[8]

MSP 명령형 타입의 패킷 예시는 다음과 같다.

헤더1헤더2헤더3데이터 항목(DATA length)패킷타입(CODE)데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)체크섬
3677608200125,125,125,0,10,0,0,0233



CRC 체크섬 값은 '데이터의 항목', '패킷 타입', '데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)'의 XOR 값이다.

아스키 코드 표현

$M<È}}}□LF□□□É
3677608200125,125,125,0,10,0,0,0233



128 이상에서는 ISO/IEC 88591를 적용한 경우이다.

패킷 형식은 FC를 기준으로 하며, 헤더3(<,>,!)은 패킷의 신호 방향을 나타낸다.[8]

종류헤더1헤더2헤더3DATA lengthCODEDATACRC
송신$M<È}}}□LF□□□É
요청$M<0dd
수신$M>


2. 2. 1. 헤더

헤더1($)과 헤더2(M)는 고유값이며, 헤더3은 패킷의 신호 방향(<, >, !)을 나타낸다.[8]

2. 2. 2. 데이터 길이

MSP(Multiwii Serial Protocol) 패킷에서 데이터 길이(DATA length)는 데이터 필드의 바이트 수를 나타낸다.[6][7] 명령형 타입의 예에서 데이터 길이는 8인데, 이는 패킷의 데이터 필드(Roll, Pitch, Yaw, Throttle, AUX1, AUX2, AUX3, AUX4)가 8바이트로 구성되어 있음을 의미한다.

요청 패킷 형식에서는 데이터 필드가 없으므로 데이터 크기는 0이다.

2. 2. 3. 메시지 ID (CODE)

MSP(Multiwii Serial Protocol) 패킷 중 명령형 타입에서 패킷 타입(CODE)은 수행할 작업 또는 전송할 데이터의 종류를 나타내는 고유한 코드이다.[5] 이 값은 네트워크 패킷의 일부로, '메시지 ID'라고도 불린다.[6][7]

다음은 명령형 타입의 예시이다.

헤더1헤더2헤더3데이터 항목(DATA length)패킷 타입(CODE)데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)체크섬
3677608200125,125,125,0,10,0,0,0233



위 표에서 패킷 타입(CODE)은 200이다.

아스키 코드 표현

$M<È}}}□LF□□□É
3677608200125,125,125,0,10,0,0,0233



위 표에서 200은 1에서 È (E grave)로 표현된다.

2. 2. 4. 데이터

MSP(Multiwii Serial Protocol)는 멀티위 플라이트 콘트롤러(FC)가 사용하는 멀티위 펌웨어를 구성하는 표준 통신 규약이다. 멀티위는 비행체의 FC보드와 무선조정장치(RC)를 서로 연동하는 무선 메시지를 교환하는 프로토콜로 MSP를 발전시켜 사용했으며 데이터 형식으로는 아스키 코드를 시리얼 통신에 사용하고있다.[5]

MSP 패킷 중 명령형 타입의 예는 다음과 같다.[6][7]

헤더1헤더2헤더3데이터 항목(DATA length)패킷 타입(CODE)데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)체크섬
3677608200125,125,125,0,10,0,0,0233



CRC 체크섬 값은 데이터 항목, 패킷 타입, 데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)의 XOR 값이다. 위의 경우 crc = 8 XOR 200 XOR 125 XOR 125 XOR 125 XOR 0 XOR 10 XOR 0 XOR 0 XOR 0 = 183이다.

아스키코드 표현은 다음과 같다.

$M<È}}}□LF□□□É
3677608200125,125,125,0,10,0,0,0233



128 이상에서는 ISO/IEC 88591를 적용한 경우이다. 패킷 형식은 FC(플라이트 컨트롤러)를 기준으로 하는 방향이다.[8] 헤더1과 헤더2의 값은 고유값이며 헤더3은 패킷의 신호 방향이다.

송신, 수신, 요청 패킷 형식은 다음과 같다.

종류헤더1헤더2헤더3DATA lengthCODEDATACRC
송신$M<È}}}□LF□□□É
요청$M<0dd
수신$M>


2. 2. 5. 체크섬 (CRC)

CRC 체크섬은 데이터 길이, 메시지 ID, 데이터의 XOR 연산을 통해 계산되는 값이다.[5]

MSP(Multiwii Serial Protocol) 패킷 중 명령형 타입의 예는 다음과 같다.[6][7]

헤더1헤더2헤더3데이터 길이메시지 ID데이터CRC
3677608200125,125,125,0,10,0,0,0233



위 표에서 CRC 값은 8 XOR 200 XOR 125 XOR 125 XOR 125 XOR 0 XOR 10 XOR 0 XOR 0 XOR 0 = 183과 같이 계산된다.

2. 3. 표준 MSP 코드 테이블

MSP는 다양한 기능을 수행하기 위한 여러 메시지 ID (CODE)를 정의한다.

MSP 패킷 중 명령형 타입의 예는 다음과 같다.[6][7]

$M<sizetype(메시지 ID)bytescrc
헤더1헤더2헤더3데이터의 항목(DATA length)패킷타입(CODE)데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)체크섬
3677608200125,125,125,0,10,0,0,0233



CRC 체크섬 값은 데이터의 항목, 패킷 타입, 데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)의 XOR 값이다. 위의 예시에서 CRC 값은 다음과 같이 계산된다:

crc = 8 XOR 200 XOR 125 XOR 125 XOR 125 XOR 0 XOR 10 XOR 0 XOR 0 XOR 0 = 233

아래는 위의 패킷을 아스키 코드로 표현한 것이다.

$M<È}}}□LF□□□É
3677608200125,125,125,0,10,0,0,0233



128 이상에서는 ISO/IEC 8859ISO/IEC 8859-1을 적용한 경우이다.

2. 3. 1. 주요 메시지 ID

MSP(Multiwii Serial Protocol)의 주요 메시지 ID는 다음과 같다.[6][7]

CommandMessage ID (CODE)DirectionDataTypeComment
MSP_IDENT100FC →VERSIONUINT 8멀티위 버전
MULTITYPEUINT 8멀티콥터 유형: TRI, QUADP, QUADX, BI, GIMBAL, Y6, HEX6, FLYING_WING, Y4, HEX6X, OCTOX8, OCTOFLATP, OCTOFLATX, AIRPLANE, HELI_120, HELI_90, VTAIL4, HEX6H, SINGLECOPTER, DUALCOPTER
MSP_VERSIONUINT 8현재 사용되지 않음
capabilityUINT 32FC 보드의 기능을 나타내는 32비트 변수. 현재 첫 번째 비트는 BIND 버튼, 두 번째 비트는 DYNBAL, 세 번째 비트는 FLAP에 사용됨
MSP_STATUS101FC →cycleTimeUINT 16단위: 마이크로초
i2c_errors_countUINT 16
sensorUINT 16비트 변수: ACC, BARO<<1, MAG<<2, GPS<<3, SONAR<<4
flagUINT 32활성화된 BOX를 나타내는 비트 변수, 비트 위치는 구성된 BOX에 따라 달라짐
global_conf.currentSetUINT 8현재 구성 설정을 나타냄
MSP_RC105FC →rcData[RC_CHANS]16 x UINT 16범위 [1000;2000]: ROLL, PITCH, YAW, THROTTLE, AUX1, AUX2, AUX3, AUX4
MSP_SET_RAW_RC200→ FCrcData[RC_CHANS]16 x UINT 16범위 [1000;2000]: ROLL, PITCH, YAW, THROTTLE, AUX1, AUX2, AUX3, AUX4
MSP를 통해 RC 채널을 주입하는 데 사용됨. 각 채널은 최소 1초마다 갱신되는 한 레거시 RX를 오버라이드함. 자세한 내용은 UART 라디오 프로젝트 참조.
MSP_RAW_GPS106FC →GPS_FIXUINT 80 또는 1
GPS_numSatUINT 8
GPS_coord[LAT]UINT 321 / 10 000 000 deg
GPS_coord[LON]UINT 321 / 10 000 000 deg
GPS_altitudeUINT 16미터
GPS_speedUINT 16cm/s


3. 소프트웨어 버전

2011년 본격적으로 개발된 MultiWii 1.8 버전을 비롯해서 현재 펌웨어로 빌드되고 있는 안정 버전은 2.4이다.[9]

참조

[1] 웹인용 멀티위 공식위키 http://www.multiwii.[...] 2019-01-09
[2] 문서 GNU GPL https://code.google.[...]
[3] 문서 (MSP)Multiwii Serial Protocol
[4] 문서 (ATmega32u4칩)아두이노 프로 마이크로 보드계열 레오나르도등
[5] 문서 MultiWii Serial Protocol implementation for Arduino https://github.com/f[...]
[6] 문서 (UINT 8)정수형중 부호없는 정수값 0~255
[7] 웹인용 표준 MSP 테이블 http://www.multiwii.[...] 2019-01-15
[8] 웹인용 New Multiwii Serial Protocol http://www.multiwii.[...] 2019-01-17
[9] 문서 구글코드아키브 https://code.google.[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com