/mavlink/waypoint_protocol /mavlink/waypoint_protocol
QgroundControl QgroundControl  Waypoint Protocol Waypoint Protocol
QgroundControl QgroundControl  航点航点文件文件文件和和传输传输格式协议格式协议格式协议
The waypoint protocol describes how waypoints are sent to and read from a MAV. The goal is to ensure a consistent state between sender and receiver. QGroundControl has an implementation of the Groundcontrol side of the protocol, every waypointplanner on a MAV implementing this protocol using MAVLINK can communicate with QGroundControl and exchange and update its waypoints.
本航点协议描述航点数据在地面站软件和飞控之间的传输。目的在于确保收发双方的一致性。本协议分为两部分:飞控端和地面站端,QGC 软件应用了地面端。 其他应用MAVLink 协议的航点规划软件都可以同QGC 之间彼此交换更新其航点数据。
Communication / State Machine Communication / State Machine
通讯通讯//状态机状态机((状态机状态机,,即在新数据刷新之前即在新数据刷新之前,,老数据维持不变老数据维持不变)) The protocol consists of different transactions, each transaction is completed
successfully or fails in a way that the previous state of the waypoint list on the receiving side is unchanged. A transaction can be initiated with a specific message only when no other transaction is active between the two communication parties. This means to initiate a
transaction both communication parties have to be in state IDLE . If a transaction is started the state is changed, using a simple state machine in this way the protocol can be easily implemented.
本协议含各种传输过程,每个传输过程的成功或者失败的状态由接收端数据是否被更新而决定。只有在两端都没有消息正处于发送状态的时候,才可以发送下一个消息。也就是说,两端都必须处于“空闲IDLE”状态。在具体的应用中,可以设置一个状态机/状态变量,一旦消息开始传送,就把这个变量设置为特定状态/数值。
After each sent message that expect an answer the sending component starts a timer. If no response is received until a specified time has passed the request message is sent again. The resending is retried a number of times, if there is no answer after the last retry timed out the transaction is
failed. The retrying mechanism means that all components have to be able to handle duplicate messages.
某些消息是需要接收端的回复的,这类的消息发送之后,就应该启动一个计时器/计时变量。在设定的时间之内如果没有收到期待中的回复,则再次发送。在设定的若干次发送之后,如果依然没有收到回复,则发送失败,不再继续发送。重发机制意味着,收发双方都有应该有能力处理重复的消息。
Pull)
,Pull
)Read MAV Waypoint list读取MAV航路点列表
航路点列表(
(请求对方发送
请求对方发送,
To retrieve a list of all waypoints from a component a
WAYPOINT_REQUEST_LIST message is sent. The targeted components will response with a WAYPOINT_COUNT message stating the number of waypoints in its list.
如需要从外部读取/接收航路点列表,首先需要向对方发送“航点列表请求消息WAYPOINT_REQUEST_LIST”。对方应该回复一个“航点列表数量WAYPOINT_COUNT”消息,用于说明航点列表中航点的数量。
The requesting component will now request every waypoint starting with sequence number 0 by sending a WAYPOINT_REQUEST message and the targeted component answers every request with a corresponding WAYPOINT message containing the waypoint data.
然后,请求方重复发送“航点请求消息WAYPOINT_REQUEST”,对方则用具体的“航点消息WAYPOINT”回复。
When the last waypoint was successfully received the requesting component sends a WAYPOINT_ACK message to the targeted component. This will finish the transaction. Notice that the targeted component has to listen to WAYPOINT_REQUEST messages of the last waypoint until it gets the WAYPOINT_ACK or another message that starts a different transaction or a timeout happens.
当最后一个航点消息成功发送/接收,请求方发出一个“航点收到消息WAYPOINT_ACK”,以此结束传送过程。注意,发送方每次发送“航点消息WAYPOINT”之后,都要开始监听“航点请求消息WAYPOINT_REQUEST”,或“航点收到消息WAYPOINT_ACK”,或“其他消息”并进入其他传输过程,或直到超时。
Write MAV Waypoint list
Write MAV Waypoint list
,Push
timeout was reached要求对方接收,
Push)
写MAV航路点列表
航路点列表(
(要求对方接收
To send a list of waypoints a WAYPOINT_COUNT message containing the number waypoints in the list is sent to the targeted component. The component prepares itself for the reception and starts retrieving all the waypoints by sending WAYPOINT_REQUEST starting with sequence number 0. The component that is sending the waypoint list answers all the requests with a WAYPOINT message
直接向对方发送“航点数量消息WAYPOINT_COUNT”作为起始。接收方准备好之后,回复“航点请求消息WAYPOINT_REQUEST”,起始消息序号为0,然后发送方不断用具体的“航点消息WAYPOINT”回复对方。
When the last waypoint was successfully received by the targeted component, it sends a WAYPOINT_ACK message to the sending component. This finishes the transaction.
当最后一个航点成功发送/接收,接收方发送“航点收到消息WAYPOINT_ACK”,是为结束。
If a waypoint planner component receives WAYPOINT messages outside of transactions it answers with a WAYPOINT_ACK message.
在正常的航点列表收发过程之外,如果收到“航点消息WAYPOINT”,可以直接
回复“航点收到消息WAYPOINT_ACK”。
Clear MAV Waypoint list
Clear MAV Waypoint list
清除航点列表
清除航点列表
To clear the waypoint list of a component a WAYPOINT_CLEAR_ALL message is sent. After having cleared the waypoint list the targeted component answers with a WAYPOINT_ACK message.
发送“清除全部航点消息WAYPOINT_CLEAR_ALL”可以清楚对方的全部航点,对方完成清除之后,回复“航点收到消息WAYPOINT_ACK”
Set new current MAV Waypoint
Set new current MAV Waypoint
设置新的当前航点
设置新的当前航点
To set a new current active waypoint for a component a
WAYPOINT_SET_CURRENT message is sent. After having changed the current waypoint the targeted component answers with a WAYPOINT_CURRENT message with the new current sequence number.
设置新的当前活动航路点,需要向对方发送“WAYPOINT_SET_CURRENT 设置当前航路点消息”,
Waypoint rea Waypoint reached Status message from MAV ched Status message from MAV ched Status message from MAV
航路点到达状态消息航路点到达状态消息
If a waypoint planner on a MAV reaches a waypoint, it broadcasts a WAYPOINT_REACHED message. As this is a broadcast no ack message has to be sent, but also no reception guarantees ca
n be given.
飞控端飞到某个航点之后,会广播发送一个“航点到达消息WAYPOINT_REACHED”,因为这是广播消息,因此不需要任何回复,当然接收者是否收到也就无法得到确认。
Current Waypoint changed Status message from MAV Current Waypoint changed Status message from MAV
当前航点改变状态的消息当前航点改变状态的消息
If a waypoint planner on a MAV selects a waypoint as its new current target, it broadcasts a WAYPOINT_CURRENT message. As this is a broadcast no ack message has to be sent, but also no reception guarantees can be given. It is recommended that this message is sent twice with a small delay to make sure it reaches all receivers with high probability.
航点规划端,通过“当前航点消息WAYPOINT_CURRENT”改变当前航点。这也是一条广播消息,无需回复,没有收发可靠性保证,因此,建议这条消息发两次,两次之间间隔一小段延迟时间,用于提高接收成功率。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。