RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
HighLevelMode

模式控制模块在仿真与实飞下使用完全相同,如图 2所示。“模式控制”模块是为初学者进行基本的飞行控制提供一些安全保障,例如在没有切换到Flying模式前,飞机不会接收用户设置的位置和偏航等值,这样即便用户没有按正确操作复原位置也不会在起飞时就发生异常。设计该模块时,同时考虑了兼容一些用户未来可能增长的需求。如初学者用户可能只需要进行位置控制,但随着学习的不断加深,需要进行速度和加速度控制,该模块也支持速度和加速度控制。“模式控制”模块包含5个输入和一个总线输出。

(1) **指令输入cmd**。指令输入必须通过“模式切换”模块生成。该模块会对输入的指令进行进一步加工,以使得系统更加稳定可靠。如发送Offboard指令、解锁指令、上锁指令,理论上只需要发送一次。但实际发送过程中可能出现丢包等现象,当指令需要发送多次。但如果指令发送的频率过高,可能导致网络拥塞或者触发飞控故障。该模块默认情况下会按1s的时间间隔发送指令,这样既可以保证指令发送的可靠性,又不会造成网络拥塞。结合“模式切换”模块,当旋钮放置在某个模式时,意味着用户想发送该指令。首次将旋钮切换到相应模式时,会立即发送一次指令,下一次发送指令会在1s之后。另一方面,该模块会根据指令的情况决定控制量的值。例如在非Flying模式下,不会接收外部输入的期望位置或速度等。

(2) **控制模式mode**。当前仅支持三种控制模式,当mode=1时,处于位置模式,输出总线中xd、yd、zd和yawd有效。当mode=2时,处于速度控制模式,输出总线中vxd、vyd、vzd和yawrated有效。当mode=3时,处于加速度控制模式,accxd、accyd、acczd和yawrated有效。

(3) **控制输入ctrls**。在集群控制中一般期望控制指令尽可能的简短,所以一般情况使用前四位作为输入。但考虑到后期的可扩展性,ctrls总共预留了16维,可支持复杂的控制。用户使用时只需指定前4维的值,后面12维指定为0即可。至于前面四维数据如何解析,有mode的值进行控制。如mode=1时,处于位置模式,前四维数据分别解析为xd、yd、zd和yawd。

(4) **起飞高度takeoff_height。**起飞高度是指当用户将“模式切换”模块旋转到起飞时,飞机将自动起飞到的高度。该高度以向下为正,与无人机的NED坐标系兼容。在室内场景下,建议默认高度为1m,即在MATLAB中设置数值为-1。

(5) **飞机状态校验是否通过check_pass。**在后文即将介绍的RflyUdpMavlink模块中,会自动对无人机的状态进行校验,最终通过一个标志传递给MATLAB程序。check_pass的设计正是为了使用该标志,当无人机没有校验通过时不应该执行任何控制指令。如果check_pass为未通过,该模块的所有输出都将为0。在多机场景下,有一架飞机未校验通过,那么就不会执行任何控制指令。

模式控制模块

“模式控制”模块的输出是一个总线,MATLAB在从总线中提取数据时会显示总线中有哪些类型的数据,这样可以便于用户选择所需要的数据。总线中具体包含的数据,如下表所示。

名称 符号 描述
指令 ctrlCmd 输出经过加工过后的指令,例如每个1s才会有一个底层飞控指令
使能控制 enableControl 使用该标志控制积分重置,未使能控制时整个MATLAB的输出为0等。
期望X位置 xd mode=1有效,非Flying模式时为0
期望Y位置 yd mode=1有效,非Flying模式时为0
期望Z位置 zd mode=1有效,takeoff模式时为起飞高度,Flying模式时为用户指定高度。
期望X速度 vxd mode=2有效,非Flying模式时为0
期望Y速度 vyd mode=2有效,非Flying模式时为0
期望Z速度 vzd mode=2有效,非Flying模式时为0
期望X加速度 accxd mode=3有效,非Flying模式时为0
期望Y加速度 accyd mode=3有效,非Flying模式时为0
期望Z加速度 acczd mode=3有效,非Flying模式时为0
期望偏航角 yawd mode=1时有效,非Flying模式时为0
期望偏航角速率 yawd_rate mode=2或3时有效,非Flying模式时为0

最后总结一下该模块的使用要点1)接收的指令必须来自“模式切换”模块。2)控制量模式mode只有等于1时是相对安全的,直接控制速度需要使用者有较好的操控技术,控制加速度则需要进行程控。