주 메뉴 열기

멀티위(MultiWii)는 비행용 RC(원격조정가능한) 모델을 제어하기위한 범용 무료 오픈 소스 프로젝트이다.[1][2]

일례로 멀티위콥터(MultiWiiCopter)는 역사적으로 Wii가 확장된 Wii Motion Plus아두이노(Arduino) pro 미니 보드계열(ATmega328칩)의 조합을 기반으로한다.[3] 또는 ATmega32u4칩의 아두이노 프로 마이크로[4]같은 매우 단순하고 저렴하며 미니멀한 비행 제어 장치에서 이 프로젝트는 성숙되어 GPS 네비게이션을 포함한 모든 추가 기능을 지원하도록 발전하여왔다. 오픈소스로 공개되어 개발되고있다.

목차

통신 프로토콜편집

MSP(Multiwii Serial Protocol)는 멀티위 플라이트 콘트롤러(FC)가 사용하는 멀티위 펌웨어를 구성하는 표준통신 규약이다. 멀티위는 비행체의 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) 체크섬
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 88591를 적용한 경우이다.

패킷 구조 및 형식편집

패킷 형식은 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 >

표준 MSP 코드 테이블의 예편집

command message_id(CODE) direction data type comment
MSP_IDENT 100 FC → VERSION UINT 8 version of MultiWii
MULTITYPE UINT 8 type of multi:

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 not used currently
capability UINT 32 A 32 bit variable to indicate capability of FC board.

Currently, BIND button is used on first bit, DYNBAL on second, FLAP on third

MSP_STATUS 101 FC → cycleTime UINT 16 unit: microseconds
i2c_errors_count UINT 16
sensor UINT 16 BARO<<1|MAG<<2|GPS<<3|SONAR<<4
flag UINT 32 a bit variable to indicate which BOX are active, the bit position depends on the BOX which are configured
global_conf.currentSet UINT 8 to indicate the current configuration setting
MSP_RC 105 FC → rcData[RC_CHANS] 16 x UINT 16 Range [1000;2000]

ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4

MSP_SET_RAW_RC 200 → FC rcData[RC_CHANS] 16 x UINT 16 Range [1000;2000]

ROLL,PITCH,YAW,THROTTLE,AUX1,AUX2,AUX3,AUX4

This request is used to inject RC channel via MSP. Each chan overrides legacy RX as long as it is refreshed at least every second. See UART radio projects for more details.

MSP_RAW_GPS 106 FC → GPS_FIX UINT 8 0 or 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 meter
GPS_speed UINT 16 cm/s

소프트웨어 버전편집

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

함께보기편집

참고편집

  1. (멀티위 공식위키)http://www.multiwii.com/wiki/?title=Main_Page
  2. (GNU GPL)https://code.google.com/archive/p/multiwii/
  3. (MSP)Multiwii Serial Protocol
  4. (ATmega32u4칩)아두이노 프로 마이크로 보드계열 레오나르도등
  5. (MultiWii Serial Protocol implementation for Arduino)https://github.com/filipproch/MSP_Arduino
  6. (UINT 8)정수형중 부호없는 정수값 0~255
  7. (표준 MSP 테이블)http://www.multiwii.com/wiki/index.php?title=Multiwii_Serial_Protocol
  8. ( New Multiwii Serial Protocol)http://www.multiwii.com/forum/viewtopic.php?f=8&t=1516
  9. (구글코드아키브)https://code.google.com/archive/p/multiwii/