자주 묻는 질문
사용자
- MAVLINK는 얼마나 효율적인가요?
- MAVLINK는 매우 효율적인 프로토콜입니다. MAVLink 1은 시작 부호와 패킷 손실 탐지 부분을 포함하여 패킷당 8바이트의 크기를 가집니다. Mavlink 2는 14 바이트(부호를 포함하는 경우, 27 바이트)의 오버헤드를 가지지만, 훨씬 더 확장성 있는 프로토콜입니다.
- MAVLINK가 지원하는 기기 댓수는 몇대인가요?
- 1부터 255까지의 범위(0은 유효한 ID가 아닙니다)의 시스템 ID를 가지는 총 255개의 기기를 지원합니다.
참고: 엄밀히 말하자면, MAVLINK는255개의 동시 시스템을 지원합니다. 이러한 시스템은 여러 기기의 혼합, 지상국(GCS, Ground Control Station), 안테나 트래커와 기타 하드웨어를 포함할 수 있습니다. - MAVLINK는 어떤 장치에서 쓸 수 있나요?
- MAVLINK는 ARM7, ATMega, dsPic, STM32등의 마이크로컨트롤러와 Windows, Linux, MacOS, Android와 iOS등의 운영체제에서 작동하는 것으로 보입니다.
- MAVLINK를 얼마나 믿을 수 있나요?
- 상당히 신뢰할 수 있습니다. MAVLink는 여건이 혹독한 다양한 통신 채널(높은 지연율/잡음) 환경에서 다양한 기체, 지상 관제국(및 타 노드)간의 통신 수행 목적으로 2009년부터 사용했습니다. MAVLINK는 패킷 손실 탐지와 패킷 결성 체크를 위해 잘 알려진 ITU X.25 체크섬 메서드를 사용합니다.
- MAVLINK는 얼마나 안전한가요?
- MAVLINK는 시스템이 신뢰할 수 있는 출처에서 오는 메시지임을 인증하도록 message signing을 사용합니다. MAVLINK는 메시지 암호화를 제공하지 않습니다.
- What version of MAVLink should I use?
- You should use the MAVLink 2 protocol where at all possible (it fixes a number of limitations of earlier versions). The MAVLink 2 libraries also support MAVLink 1, so you can use them to communicate with legacy systems if needed.
- How often is MAVLink updated/released?
- The underlying over-the-wire format is rarely updated (we're only up to MAVLink 2, which was introduced in 2017).
- New messages/microservices are frequently added. This is a backwards compatible change, and users are expected to regularly update their libraries to support new messages.
- Messages are rarely modified (or removed) such that they would become incompatible. If this is needed the project will update the MAVLink minor version number and notify users through the mailing list (users can also query the version in code).
개발자
- MAVLINK를 소스 코드를 공개하지 않는 어플리케이션에서 저작권 문제 없이 사용할 수 있나요?
- 어떠한 제한 없이 MAVLINK를 사용할 수 있습니다. The generated MAVLink library headers are made available under the *MIT license* (for more information see: Introduction > License).
- MAVLink는 어떻게 메시지를 감지하고 바이트 스트림으로 디코딩하나요?
- MAVLink는 패킷 시작 신호를 기다리다가 패킷의 길이를 읽습니다. 그리고 n 바이트 이후의 체크섬을 검사합니다. 만약 체크섬이 일치한다면, 디코딩된 패킷을 반환하고 다시 시작 신호를 기다립니다. 만약에 바이트가 변경되거나 손실되면, MAVLink는 현재 메시지 처리를 중단하고, 다음 메시지에서 디코딩을 계속합니다.
- MAVLink는 하나의 시작 신호만을 사용하는데, 두세개의 시작 신호를 사용하는 것보다 덜 안전하지 않나요?
- 그렇지 않습니다. MAVLink는 CRC 체크를 통해 수신 메시지의 무결성을 판단합니다. 시작 신호를 추가로 사용하는 것은 시작 신호의 탐지율을 올릴 수 있지만, 메시지 유효성 관점에서는 단일 시작 신호에 비해 불확실성을 크게 줄이지 못합니다. 추가 시작 신호가 커뮤니케이션 링크의 바이트 수를 증가시키기 때문에, MAVLink는 단일 시작 신호를 사용하기로 결정했습니다.
- 시스템 ID와 컴포넌트 ID는 어떤 용도인가요?
- 시스템 ID는 특정 MAVLink system(vehicle, GCS, etc.)의 신원을 나타냅니다. MAVLink는 동시에 최대 255개의 시스템에서 함께 사용될 수 있습니다. 컴포넌트 ID는 더 큰 시스템의 요소를 나타냅니다. 예를 들면, 시스템은 autopilot, companion computer, 카메라 등 개별적으로 식별할 수 있는 장치를 포함할 수 있습니다. 따라서 컴포넌트 ID는 MAVLink가 온보드와 오프보드 통신 모두에서 사용되게 합니다.
- MAVLink 헤더의 시퀀스 넘버(Sequence number)는 왜 필요한가요?
- MAVLink는 무인 항공 시스템의 안전에 중요한 구성 요소의 일부입니다. 많은 패킷을 버리는 나쁜 통신 링크는 비행체의 안전을 위협할 수 있고, 모니터링이 필요합니다. 헤더에 시퀀스를 가지는 것은 MAVLink가 패킷 손실률에 관한 피드백을 지속적으로 제공할 수 있도록 하여 비행체나 관제국이 조치를 취할수 있도록 합니다.
- 왜 CRC_EXTRA가 패킷 무결성 체크섬에 필요한가요?
- CRC_EXTRA의 CRC는 송수신자 각자가 지정 메시지의 유선 형식을 이해하는지 검증하는 용도로 활용합니다 (프로토콜 구조가 단순하여 메시지 구조에 페이로드가 들어있지 않기 때문에 필요함). MAVLink 0.9에서는 CRC를 사용하지 않았습니다(다만 길이 검사는 진행했습니다). 메시지를 설명하는 XML이 메시지 길이 변화 없이 변경되는 소수의 케이스가 있었는데, 이것은 메시지를 읽을 때 심각하게 손상된 필드로 이어졌습니다.
- 디코딩/인코딩 루틴이나 다른 요소들을 개선하는데 도움을 주고 싶습니다. MAVLink가 바뀔 수도 있나요?
- 매우 엄밀한 안전 테스트를 거치는 경우에 그럴 수 있습니다. MAVLink는 많은 autopilot 시스템에서 중요한 안전 요소로 사용되기 때문에 다년간의 시험을 거칩니다. Please suggest new features on the MAVLink support channels.
- How can I further reduce the generated C library size?
- On extremely resource-constrained systems you may be able to reduce the size of the generated library by setting
MAVLINK_COMM_NUM_BUFFERS=1
andMAVLINK_MAX_PAYLOAD_LEN
="size of your largest buffer" (assuming only one comm link and that your payload is less than the maximum supported by MAVLink). You should also make sure that any buffers you use to pass into MAVLink are also as small as possible (e.g. the one passed intomavlink_msg_to_send_buffer()
).
Another alternative is to use one of the other generators. For example fastMavlink asserts that it is smaller and more efficient than the libraries generated by mavgen (this has not been valided by the MAVLink project).