멀티위
"오늘의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 | 헤더 3 | size | type(메시지 ID) | bytes | crc |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
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□□□ | É |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
128 이상에서는 ISO/IEC 8859 중 1를 적용한 경우이다.
2. 1. 기본 구조
MSP(Multiwii Serial Protocol)는 멀티위 플라이트 콘트롤러(FC)가 사용하는 멀티위 펌웨어를 구성하는 표준통신 규약이다.[5] 멀티위는 비행체의 FC보드와 무선조정장치(RC)를 서로 연동하는 무선 메시지를 교환하는 프로토콜로 MSP를 발전시켜 사용했으며 데이타형식으로는 아스키 코드를 시리얼통신에 사용하고있다.[5]MSP패킷중 명령형 타입의 예는 다음과 같다.[6][7]
$ | M | < | size | type(메세지 ID) | bytes | crc |
---|---|---|---|---|---|---|
헤더1 | 헤더2 | 헤더3 | 데이타의 항목(DATA length) | 패킷타입(CODE) | 데이타(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4) | CRC |
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
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□□□ | É |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
128이상에서는 ISO/IEC 8859중 1를 적용한 경우이다. 패킷 형식은 FC(플라이트 컨트롤러)를 기준으로 하는 방향이다.[8] 헤더1 과 헤더2의 값은 고유값이며 헤더3은 패킷의 신호 방향이다.
송신 패킷 형식
헤더1 | 헤더2 | 헤더3 | DATA length | CODE | DATA | CRC |
---|---|---|---|---|---|---|
$ | M | < | ← | È | }}}□LF□□□ | É |
요청 패킷 형식
: 데이타 필드가 없다. 따라서 데이터의 크기는 0이다.
헤더1 | 헤더2 | 헤더3 | DATA length | CODE | CRC |
---|---|---|---|---|---|
$ | M | < | 0 | d | d |
수신 패킷 형식 (송신 패킷 형식의 구조를 사용한다.)
헤더1 | 헤더2 | 헤더3 | DATA length | CODE | DATA | CRC |
---|---|---|---|---|---|---|
$ | 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) | 체크섬 |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
CRC 체크섬 값은 '데이터의 항목', '패킷 타입', '데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4)'의 XOR 값이다.
아스키 코드 표현
$ | M | < | ← | È | }}}□LF□□□ | É |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
128 이상에서는 ISO/IEC 8859 중 1를 적용한 경우이다.
패킷 형식은 FC를 기준으로 하며, 헤더3(<,>,!)은 패킷의 신호 방향을 나타낸다.[8]
종류 | 헤더1 | 헤더2 | 헤더3 | DATA length | CODE | DATA | CRC |
---|---|---|---|---|---|---|---|
송신 | $ | M | < | ← | È | }}}□LF□□□ | É |
요청 | $ | M | < | 0 | d | d | |
수신 | $ | 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) | 체크섬 |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
위 표에서 패킷 타입(CODE)은 200이다.
아스키 코드 표현
$ | M | < | ← | È | }}}□LF□□□ | É |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
위 표에서 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) | 체크섬 |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
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□□□ | É |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
128 이상에서는 ISO/IEC 8859 중 1를 적용한 경우이다. 패킷 형식은 FC(플라이트 컨트롤러)를 기준으로 하는 방향이다.[8] 헤더1과 헤더2의 값은 고유값이며 헤더3은 패킷의 신호 방향이다.
송신, 수신, 요청 패킷 형식은 다음과 같다.
종류 | 헤더1 | 헤더2 | 헤더3 | DATA length | CODE | DATA | CRC |
---|---|---|---|---|---|---|---|
송신 | $ | M | < | ← | È | }}}□LF□□□ | É |
요청 | $ | M | < | 0 | d | d | |
수신 | $ | M | > |
2. 2. 5. 체크섬 (CRC)
CRC 체크섬은 데이터 길이, 메시지 ID, 데이터의 XOR 연산을 통해 계산되는 값이다.[5]MSP(Multiwii Serial Protocol) 패킷 중 명령형 타입의 예는 다음과 같다.[6][7]
헤더1 | 헤더2 | 헤더3 | 데이터 길이 | 메시지 ID | 데이터 | CRC |
---|---|---|---|---|---|---|
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
위 표에서 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 | < | size | type(메시지 ID) | bytes | crc |
헤더1 | 헤더2 | 헤더3 | 데이터의 항목(DATA length) | 패킷타입(CODE) | 데이터(Roll,Pitch,Yaw,Throttole,AUX1,AUX2,AUX3,AUX4) | 체크섬 |
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
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□□□ | É |
36 | 77 | 60 | 8 | 200 | 125,125,125,0,10,0,0,0 | 233 |
128 이상에서는 ISO/IEC 8859 중 ISO/IEC 8859-1을 적용한 경우이다.
2. 3. 1. 주요 메시지 ID
MSP(Multiwii Serial Protocol)의 주요 메시지 ID는 다음과 같다.[6][7]Command | Message ID (CODE) | Direction | Data | Type | Comment |
---|---|---|---|---|---|
MSP_IDENT | 100 | FC → | VERSION | UINT 8 | 멀티위 버전 |
MULTITYPE | UINT 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_VERSION | UINT 8 | 현재 사용되지 않음 | |||
capability | UINT 32 | FC 보드의 기능을 나타내는 32비트 변수. 현재 첫 번째 비트는 BIND 버튼, 두 번째 비트는 DYNBAL, 세 번째 비트는 FLAP에 사용됨 | |||
MSP_STATUS | 101 | FC → | cycleTime | UINT 16 | 단위: 마이크로초 |
i2c_errors_count | UINT 16 | ||||
sensor | UINT 16 | 비트 변수: ACC, BARO<<1, MAG<<2, GPS<<3, SONAR<<4 | |||
flag | UINT 32 | 활성화된 BOX를 나타내는 비트 변수, 비트 위치는 구성된 BOX에 따라 달라짐 | |||
global_conf.currentSet | UINT 8 | 현재 구성 설정을 나타냄 | |||
MSP_RC | 105 | FC → | rcData[RC_CHANS] | 16 x UINT 16 | 범위 [1000;2000]: ROLL, PITCH, YAW, THROTTLE, AUX1, AUX2, AUX3, AUX4 |
MSP_SET_RAW_RC | 200 | → FC | rcData[RC_CHANS] | 16 x UINT 16 | 범위 [1000;2000]: ROLL, PITCH, YAW, THROTTLE, AUX1, AUX2, AUX3, AUX4 |
MSP를 통해 RC 채널을 주입하는 데 사용됨. 각 채널은 최소 1초마다 갱신되는 한 레거시 RX를 오버라이드함. 자세한 내용은 UART 라디오 프로젝트 참조. | |||||
MSP_RAW_GPS | 106 | FC → | GPS_FIX | UINT 8 | 0 또는 1 |
GPS_numSat | UINT 8 | ||||
GPS_coord[LAT] | UINT 32 | 1 / 10 000 000 deg | |||
GPS_coord[LON] | UINT 32 | 1 / 10 000 000 deg | |||
GPS_altitude | UINT 16 | 미터 | |||
GPS_speed | UINT 16 | cm/s |
2011년 본격적으로 개발된 MultiWii 1.8 버전을 비롯해서 현재 펌웨어로 빌드되고 있는 안정 버전은 2.4이다.[9]
[1]
웹인용
멀티위 공식위키
http://www.multiwii.[...]
2019-01-09
3. 소프트웨어 버전
참조
[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