跳转至

PX4MavCtrlV4 接口文档

简介

简述:提供PX4飞控无人机离线控制所需的各类枚举、工具类与核心控制类,实现RflySim平台下与PX4飞控的MAVLink通信对接。

该模块是RflySimSDK中负责PX4无人机通信控制的核心组件,基于MAVLink协议适配了PX4飞控的自定义模式、离线控制消息格式,支持多无人机的ID寻址与端口识别。适配RflySim仿真平台的通信规则,既支持通过飞机ID识别目标无人机,也支持通过自定义端口建立通信连接,可用于各类离线航迹规划、控制算法开发、多无人机协同任务仿真等场景,为上层控制算法提供统一的通信接口与参数定义支撑。

模块内置了各类标准MAVLink离线消息的掩码生成类、飞控自定义模式枚举,还提供了适配平台Redis通信机制的键类型定义,方便开发者快速匹配PX4飞控的控制逻辑,无需手动处理通信协议的底层细节。

快速开始

最简可用示例,复制后修改最少配置即可运行。

from RflySimSDK.ctrl.PX4MavCtrlV4 import PX4MavCtrler
import time

# 1. 初始化PX4飞控控制器,这里使用本地仿真环境默认配置,无人机ID为1
mav_ctrl = PX4MavCtrler(ID=1, ip="127.0.0.1", Com="udp", port=0)

# 2. 发送全局启动信号,唤醒所有仿真无人机
mav_ctrl.sendStartMsg(copterID=-1)

# 3. 等待启动信号确认,阻塞程序直到准备完成
mav_ctrl.waitForStartMsg()

# 4. 示例:起飞后悬停10秒后退出
print("无人机已启动,开始执行任务")
# 此处可添加你的控制逻辑,例如发送位置控制指令
time.sleep(10)
print("任务执行完成")

环境与依赖

  • Python 环境>= 3.8.10
  • 依赖库copyctrl.DllSimCtrlAPIctrl.IpManagermathnumpyosplatformpymavlinkpymavlink.dialects.v20socketstructsysthreadingtime
  • 前置准备:调用此接口前,必须完成RflySimSDK的环境配置并导入对应模块。

核心接口说明

该模块 PX4MavCtrlV4.py 包含了配置变量、辅助函数及核心业务类。

全局常量与枚举定义

本节列出模块中所有可直接引用的全局常量和枚举定义。

独立常量


枚举定义

PX4_CUSTOM_MAIN_MODE
名称 类型 说明
PX4_CUSTOM_MAIN_MODE_MANUAL int 1 -
PX4_CUSTOM_MAIN_MODE_ALTCTL int 2 -
PX4_CUSTOM_MAIN_MODE_POSCTL int 3 -
PX4_CUSTOM_MAIN_MODE_AUTO int 4 -
PX4_CUSTOM_MAIN_MODE_ACRO int 5 -
PX4_CUSTOM_MAIN_MODE_OFFBOARD int 6 -
PX4_CUSTOM_MAIN_MODE_STABILIZED int 7 -
PX4_CUSTOM_MAIN_MODE_RATTITUDE int 8 -
PX4_CUSTOM_MAIN_MODE_SIMPLE int 9 -
PX4_CUSTOM_SUB_MODE_AUTO
名称 类型 说明
PX4_CUSTOM_SUB_MODE_AUTO_READY int 1 -
PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF int 2 -
PX4_CUSTOM_SUB_MODE_AUTO_LOITER int 3 -
PX4_CUSTOM_SUB_MODE_AUTO_MISSION int 4 -
PX4_CUSTOM_SUB_MODE_AUTO_RTL int 5 -
PX4_CUSTOM_SUB_MODE_AUTO_LAND int 6 -
PX4_CUSTOM_SUB_MODE_AUTO_RTGS int 7 -
PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET int 8 -
PX4_CUSTOM_SUB_MODE_AUTO_PRECLAND int 9 -

全局/独立函数


RedisKey

Redis 通道的 Key 类型,通过类型 ID,可以从redisKey中查出通道的字符串名称。


GetRedisKey(port)

功能说明:根据端口号获取对应Redis通道Key名称 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
port 任意类型 - 端口编号

返回值 (Returns)

  • str: 对应Redis通道的Key名称

异常 (Raises):

示例

from RflySimSDK.ctrl.PX4MavCtrlV4 import RedisKey
key = RedisKey.GetRedisKey(10000)

类变量

变量名 类型 说明
SIL str SIL 软件在环仿真Redis通道Key
SIL_TRUE str SIL_TRUE 真实无人机SIL模式Redis通道Key
R3D str RFLYSIM_3D RflySim 3D可视化Redis通道Key
SIL_RECV str SIL_RECV SIL接收通道Redis Key
SIL_TRUE_RECV str SIL_TRUE_RECV 真实无人机SIL模式接收通道Redis Key

fifo

先进先出(FIFO)队列,用于存储和访问按顺序添加的数据元素。

__init__()

功能说明:初始化一个空的先进先出队列 参数列表 (Args): 无 返回值 (Returns)

  • fifo 实例对象

异常 (Raises): 无


write(data)

功能说明:向队列末尾添加新数据元素 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
data Any - 需要添加到队列的数据元素

返回值 (Returns)

异常 (Raises): 无


read()

功能说明:从队列头部取出并返回最早添加的数据元素(遵循先进先出规则) 参数列表 (Args): 无 返回值 (Returns)

  • 队列头部最早添加的数据元素,类型与添加时一致

异常 (Raises): 无

示例

# 创建一个FIFO队列
queue = fifo()
# 写入数据
queue.write(10)
queue.write("test_data")
# 读取数据,按照写入顺序返回
first_data = queue.read()
second_data = queue.read()

PosTypeMask

用于生成PX4 offboard控制消息中的类型掩码位图,对应MAVLink协议中POSITION_TARGET_TYPEMASK定义,用于指定哪些控制量会被飞控忽略。

__init__(ignore_all=False)

功能说明:初始化掩码对象,默认初始化为速度+偏航角速率控制模式,可通过参数设置忽略所有offboard控制量。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
ignore_all bool False True时忽略所有offboard控制量,为False时使用默认的速度+偏置角速率模式

返回值 (Returns)

  • PosTypeMask 实例对象

异常 (Raises): 无


mask()

功能说明:获取计算完成的最终类型掩码值。 参数列表 (Args): 无

返回值 (Returns)

  • int: 最终的offboard控制类型掩码位图,可直接用于生成MAVLink位置控制消息

异常 (Raises): 无

示例

from RflySimSDK.ctrl import PosTypeMask
# 创建默认速度+偏航角速率模式的掩码对象
mask_obj = PosTypeMask()
# 获取掩码值
type_mask = mask_obj.mask()

# 创建忽略所有控制量的掩码对象
ignore_all_mask = PosTypeMask(ignore_all=True).mask()

AttTypeMask

用于生成离线(offboard)控制消息的位掩码,对应MAVLink协议中ATTITUDE_TARGET_TYPEMASK的定义,常用于PX4无人机离线控制场景中标记需要忽略的控制量。

__init__(ignore_all=False)

功能说明:初始化位掩码对象,默认初始化为姿态+油门控制模式,当ignore_allTrue时会忽略所有离线控制量。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
ignore_all bool False 是否忽略所有离线控制量,设为True时所有控制位均标记为忽略

返回值 (Returns)

  • AttTypeMask 实例对象

异常 (Raises): 无


mask()

功能说明:获取计算完成的位掩码值,用于发送给飞控的离线控制消息。 参数列表 (Args): 无 返回值 (Returns)

  • int: 计算得到的控制位掩码值

异常 (Raises): 无

示例

from RflySimSDK.ctrl import AttTypeMask
# 创建默认姿态油门模式的位掩码
att_mask = AttTypeMask()
mask_val = att_mask.mask()
# 忽略所有控制量的位掩码
ignore_mask = AttTypeMask(ignore_all=True)
ignore_val = ignore_mask.mask()

PX4ExtMsg

该类用于表示PX4飞控拓展消息,作为RflySimSDK中PX4拓展消息相关数据的基础容器类。

__init__()

功能说明:初始化PX4ExtMsg类实例 参数列表 (Args): 无参数 返回值 (Returns)

  • PX4ExtMsg 实例对象

异常 (Raises): 无


PX4MavCtrler

创建PX4飞控的MAVLink通信控制实例,支持仿真、真机直连、串口连接等多种通信模式。

__init__(ID=1, ip='127.0.0.1', Com='udp', port=0)

功能说明:初始化PX4飞控MAVLink通信实例,根据输入参数配置对应通信模式与连接参数。 参数列表 (Args)

参数名 类型 默认值 说明
ID - 1 飞机ID或端口号:ID≤10000表示飞机的CopterID号;ID>10000表示通信端口号port(兼容旧接口的过渡定义),COM、Direct模式下仅表示飞机ID。
ip str 127.0.0.1 数据发送的目标IP地址:默认发往本机127.0.0.1;分布式仿真可指定局域网IP,也可设置为广播地址255.255.255.255。Redis模式下为服务器地址。
Com str udp 与飞控的连接模式:
udp:默认UDP模式,接收CopterSim转发的MAVLink消息,使用port端口发、port+1端口收;
COMx//dev/ttyxxx:串口连接模式,Windows下为COM口名称,Linux下为设备路径,通过USB/数传连接飞控;
Direct:UDP直连模式(真机模式),使用同一端口收发数据;
redis:Redis通信模式,通过Redis服务器实现数据交互。
port int 0 端口/波特率配置:
UDP模式:0表示自动按规则计算端口port=20100+CopterID*2-2,大于0则强制使用指定端口;
串口模式:表示波特率,0默认映射为57600;
Direct模式:指定收发共用的端口号;
Redis模式:指定Redis服务器端口,0默认映射为默认端口6379。

返回值 (Returns):无 异常 (Raises):无

fillList(data, inLen, fill="0")

功能说明:对输入列表进行填充,将列表长度调整到指定长度,不足时使用指定值填充 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
data Any 待处理的输入列表
inLen Any 目标列表长度
fill Any "0" 填充使用的值,默认填充0

返回值 (Returns):填充后长度为inLen的列表 异常 (Raises):无


sendStartMsg(copterID=-1)

功能说明:向网络发送启动信号,供调用了waitForStartMsg()的无人机接收并启动运行。当copterID=-1时,所有无人机都会启动运行;当copterID>0时,仅指定ID的无人机会启动运行 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
copterID Any -1 需要启动的无人机ID,默认-1表示启动所有无人机

返回值 (Returns):无 异常 (Raises):无


waitForStartMsg()

功能说明:程序会阻塞,直到接收到来自sendStartMsg()的启动信号后才继续执行 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


initPointMassModel(intAlt=0, intState=[0, 0, 0])

功能说明:初始化并启动无人机质点模型,用于无人机控制。intAlt为UE4地图中飞行器的初始高度(单位:米),可从CopterSim或UE4中获取;intState包含飞行器初始位置的X坐标(米)、Y坐标(米)和偏航角(度),该初始状态与CopterSim界面上的值一致 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
intAlt Any 0 初始高度,单位米,默认值为0
intState Any [0, 0, 0] 初始状态[X位置, Y位置, 偏航角],默认值为[0, 0, 0]

返回值 (Returns):无 异常 (Raises):无


EndPointMassModel()

功能说明:结束质点模型运行 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


yawSat(yaw)

功能说明:将输入偏航角饱和到[-π, π]区间内 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
yaw Any 输入偏航角,单位弧度

返回值 (Returns):饱和后[-π, π]区间内的偏航角 异常 (Raises):无


PointMassModelLoop()

功能说明:质点模型的死循环运行函数,用于持续更新质点模型状态 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


sendUE4PosNew(copterID=1, vehicleType=3, PosE=[0, 0, 0], AngEuler=[0, 0, 0], VelE=[0, 0, 0], PWMs=[0] * 8, runnedTime=-1, windowID=-1)

功能说明:发送位置和姿态信息到RflySim3D,用于创建新的3D模型或者更新已有模型的状态。数据将按照RflySim3D约定结构体格式封装发送 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
copterID Any 1 无人机ID,默认值为1
vehicleType Any 3 载具类型,默认值为3
PosE Any [0, 0, 0] 地球系NED下的载具位置,单位米,默认值为[0, 0, 0]
AngEuler Any [0, 0, 0] 载具滚转、俯仰、偏航欧拉角,单位弧度,默认值为[0, 0, 0]
VelE Any [0, 0, 0] 地球系下载具速度,默认值为[0, 0, 0]
PWMs Any [0] * 8 8个电机的PWM/转速信息,默认全为0
runnedTime Any -1 当前时间戳,单位秒,默认值为-1表示自动使用当前时间
windowID Any -1 目标RflySim3D窗口ID,默认-1表示发送到所有窗口

返回值 (Returns):无 异常 (Raises):无


InitTrueDataLoop()

功能说明:初始化来自CopterSim的UDP真实数据监听循环,使用30100系列端口接收数据 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


EndTrueDataLoop()

功能说明:结束真实数据接收模式,停止真实数据监听循环 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


SendOffAll(type_mask=PosTypeMask(), coordinate_frame=1, pos=[0, 0, 0], vel=[0, 0, 0], acc=[0, 0, 0], yaw=0, yawrate=0)

功能说明:发送位置控制指令给PX4飞控,通过MAVLink协议 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
type_mask Any PosTypeMask() 位置控制类型掩码,用于忽略/使能对应控制量
coordinate_frame Any 1 坐标帧编号,默认值为1表示全局系
pos Any [0, 0, 0] 期望位置,默认值为[0, 0, 0]
vel Any [0, 0, 0] 期望速度,默认值为[0, 0, 0]
acc Any [0, 0, 0] 期望加速度,默认值为[0, 0, 0]
yaw Any 0 期望偏航角,默认值为0
yawrate Any 0 期望偏航角速度,默认值为0

返回值 (Returns):无 异常 (Raises):无


SendAttAll(type_mask=AttTypeMask(), q=[1, 0, 0, 0], body_rate=[0, 0, 0], thrust=0)

功能说明:发送姿态控制指令给PX4飞控,通过MAVLink协议 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
type_mask Any AttTypeMask() 姿态控制类型掩码,用于忽略/使能对应控制量
q Any [1, 0, 0, 0] 期望姿态四元数,默认单位四元数
body_rate Any [0, 0, 0] 期望机体角速度,默认值为[0, 0, 0]
thrust Any 0 期望推力,默认值为0

返回值 (Returns):无 异常 (Raises):无


InitMavLoop(UDPMode=2)

功能说明:初始化来自CopterSim的MAVLink监听循环,支持多种工作模式:0和1分别对应UDP_Full和UDP_Simple模式,2和3分别对应MAVLink_Full和MAVLink_Simple模式,4为MAVLink_NoSend模式,5为MAVLink_NoGPS模式,6为MAVLink_NoVision模式,默认模式为2即MAVLink_Full模式 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
UDPMode Any 2 工作模式编号,默认值为2即MAVLink_Full模式

返回值 (Returns):无 异常 (Raises):无


endMavLoop()

功能说明:功能与stopRun()相同,停止从20100端口或串口的消息监听 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


SendVisionPosition(x, y, z, yaw)

功能说明:发送动捕或视觉测量得到的无人机位置和偏航角给PX4飞控,用于视觉里程计/动捕定位 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x Any 动捕/视觉测量的X方向位置
y Any 动捕/视觉测量的Y方向位置
z Any 动捕/视觉测量的Z方向位置
yaw Any 动捕/视觉测量的偏航角

返回值 (Returns):无 异常 (Raises):无

SendHILGps(lat=40.1540302, lon=116.2593683, alt=50, vel=0, vn=0, ve=0, vd=0, cog=0, time_usec=-1, eph=0.3, epv=0.4, fix_type=3, satellites_visible=15)

功能说明:向PX4发送硬件在环仿真(HIL)模式下的GPS信息 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
lat None 40.1540302 GPS纬度,单位为度
lon None 116.2593683 GPS经度,单位为度
alt None 50 GPS高度,单位为米
vel None 0 GPS对地速度,单位为m/s
vn None 0 北向速度,单位为m/s
ve None 0 东向速度,单位为m/s
vd None 0 地向向下速度,单位为m/s
cog None 0 航迹向,单位为度
time_usec None -1 时间戳(微秒),为-1时自动使用当前同步时间
eph None 0.3 水平精度因子
epv None 0.4 垂直精度因子
fix_type None 3 GPS定位类型,3表示3D定位
satellites_visible None 15 可见卫星数量

返回值 (Returns):无 异常 (Raises):无


SendRedisData(key, buf)

功能说明:通过Redis发送指定数据 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
key None Redis数据的键名
buf None 要发送的数据缓存

返回值 (Returns):无 异常 (Raises):无


SendBuf(buf)

功能说明:发送数据缓存到PX4 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
buf None 要发送的字节数据缓存

返回值 (Returns):无 异常 (Raises):无


SendBufTrue(buf, port=None)

功能说明:通过指定端口发送完整数据缓存 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
buf None 要发送的字节数据缓存
port None None 目标端口号,为None时使用默认端口

返回值 (Returns):无 异常 (Raises):无


sat(inPwm=0, thres=1)

功能说明:对输入值进行限幅饱和处理,若输入值超过阈值范围则将其限制在阈值范围内 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
inPwm None 0 需要进行饱和处理的输入值
thres None 1 饱和阈值,允许输入值的最大绝对值

返回值 (Returns):经过饱和处理后的输入值 异常 (Raises):无


SendMavCmdLong(command, param1=0, param2=0, param3=0, param4=0, param5=0, param6=0, param7=0)

功能说明:向PX4发送COMMAND_LONG类型MAVLink命令,MAVLink命令定义可参考官方文档:https://mavlink.io/en/messages/common.html#COMMAND_LONG 和 https://mavlink.io/en/messages/common.html#MAV_CMD 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
command None MAVLink命令ID,对应MAV_CMD枚举值
param1 None 0 命令参数1
param2 None 0 命令参数2
param3 None 0 命令参数3
param4 None 0 命令参数4
param5 None 0 命令参数5
param6 None 0 命令参数6
param7 None 0 命令参数7

返回值 (Returns):无 异常 (Raises):无


SendMavCmdLongNEW(command, param1=0, param2=0, param3=0, param4=0, param5=0, param6=0, param7=0, target_system=None, target_component=1, confirmation=0, force_send=False)

功能说明:向PX4发送COMMAND_LONG类型MAVLink命令,PX4会将COMMAND_LONG转换为uORB的vehicle_command并写入ULog。MAVLink命令定义可参考官方文档:https://mavlink.io/en/messages/common.html#COMMAND_LONG 和 https://mavlink.io/en/messages/common.html#MAV_CMD 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
command None MAVLink命令ID,对应MAV_CMD枚举值
param1 None 0 命令参数1
param2 None 0 命令参数2
param3 None 0 命令参数3
param4 None 0 命令参数4
param5 None 0 命令参数5
param6 None 0 命令参数6
param7 None 0 命令参数7
target_system None None 目标系统ID,为None时使用默认目标系统
target_component None 1 目标组件ID
confirmation None 0 确认序号,用于命令确认
force_send bool False 是否强制发送,即使未连接也尝试发送

返回值 (Returns):无 异常 (Raises):无


SendFaultEvent(fault_id, params=None, action=1, seq=0, vehicle_id=None, sim_id=0, command=MAV_CMD_USER_1)

功能说明:发送故障事件信息,用于仿真中故障注入的记录 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
fault_id int 故障ID,标识故障类型
params None None 故障参数信息
action int 1 故障动作,1表示注入故障,0表示清除故障
seq int 0 故障事件序号
vehicle_id int None 目标无人机ID,为None时使用当前无人机ID
sim_id int 0 仿真ID,区分多机仿真
command int MAV_CMD_USER_1 使用的MAVLink命令ID,默认使用MAV_CMD_USER_1

返回值 (Returns):无 异常 (Raises):无


ClearFault(fault_id, seq=0, vehicle_id=None, sim_id=0, command=MAV_CMD_USER_1)

功能说明:清除/结束指定故障,会写入一条action=0的记录,方便后处理划定故障时间窗 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
fault_id int 需要清除的故障ID
seq int 0 故障事件序号
vehicle_id int None 目标无人机ID,为None时使用当前无人机ID
sim_id int 0 仿真ID,区分多机仿真
command int MAV_CMD_USER_1 使用的MAVLink命令ID,默认使用MAV_CMD_USER_1

返回值 (Returns):无 异常 (Raises):无


SendQgcCmdLong(command, param1=0, param2=0, param3=0, param4=0, param5=0, param6=0, param7=0)

功能说明:发送COMMAND_LONG命令到QGroundControl地面站 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
command None MAVLink命令ID,对应MAV_CMD枚举值
param1 None 0 命令参数1
param2 None 0 命令参数2
param3 None 0 命令参数3
param4 None 0 命令参数4
param5 None 0 命令参数5
param6 None 0 命令参数6
param7 None 0 命令参数7

返回值 (Returns):无 异常 (Raises):无


sendMavOffboardCmd(type_mask, coordinate_frame, x, y, z, vx, vy, vz, afx, afy, afz, yaw, yaw_rate)

功能说明:向PX4发送离线控制命令,对应MAVLink的SET_POSITION_TARGET_LOCAL_NED消息,消息定义可参考:https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
type_mask None 离线控制类型掩码,用于标记哪些控制量生效
coordinate_frame None 坐标系统,一般为LOCAL_NED
x None X方向位置/速度/加速度指令,取决于type_mask
y None Y方向位置/速度/加速度指令,取决于type_mask
z None Z方向位置/速度/加速度指令,取决于type_mask
vx None X方向速度指令,取决于type_mask
vy None Y方向速度指令,取决于type_mask
vz None Z方向速度指令,取决于type_mask
afx None X方向加速度指令,取决于type_mask
afy None Y方向加速度指令,取决于type_mask
afz None Z方向加速度指令,取决于type_mask
yaw None 偏航角指令
yaw_rate None 偏航角速度指令

返回值 (Returns):无 异常 (Raises):无


TypeMask(EnList)

功能说明:根据需要启用的控制量生成离线控制消息的type_mask位图,位图定义可参考:https://mavlink.io/en/messages/common.html#POSITION_TARGET_TYPEMASK 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
EnList None 需要启用的控制量列表,列表中包含需要生效的控制量名称

返回值 (Returns):计算得到的type_mask位图 异常 (Raises):无


sendMavOffboardAPI(type_mask=0, coordinate_frame=0, pos=[0, 0, 0], vel=[0, 0, 0], acc=[0, 0, 0], yaw=0, yawrate=0)

功能说明:封装后的离线控制API,向PX4发送离线控制命令,对应MAVLink的SET_POSITION_TARGET_LOCAL_NED消息,消息定义可参考:https://mavlink.io/en/messages/common.html#SET_POSITION_TARGET_LOCAL_NED 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
type_mask None 0 离线控制类型掩码,用于标记哪些控制量生效
coordinate_frame None 0 坐标系统,默认为LOCAL_NED
pos None [0, 0, 0] 位置指令,格式为[x, y, z]
vel None [0, 0, 0] 速度指令,格式为[vx, vy, vz]
acc None [0, 0, 0] 加速度指令,格式为[afx, afy, afz]
yaw None 0 偏航角指令
yawrate None 0 偏航角速度指令

返回值 (Returns):无 异常 (Raises):无


sendUDPSimpData(ctrlMode, ctrls)

功能说明:通过UDP发送简化控制数据 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
ctrlMode None 控制模式
ctrls None 控制量数组

返回值 (Returns):无 异常 (Raises):无


sendPX4UorbRflyCtrl(data=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], modes=1, flags=1)

功能说明:发送Rfly定制的PX4 uORB控制消息 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
data None [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 16维控制数据数组
modes None 1 控制模式标识
flags None 1 控制标志位

返回值 (Returns):无 异常 (Raises):无

SendVelNED(vx, vy, vz, yawrate=math.nan)

功能说明:向PX4发送地理北东下(NED)坐标系下的目标无人机速度(单位:m/s)与偏航角速度(单位:rad/s),当无人机向上飞行时,vz < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
vx 浮点型 math.nan NED坐标系下北向速度,NaN表示不控制该轴
vy 浮点型 math.nan NED坐标系下东向速度,NaN表示不控制该轴
vz 浮点型 math.nan NED坐标系下向下速度,NaN表示不控制该轴
yawrate 浮点型 math.nan 目标偏航角速度,NaN表示不控制偏航角速度

返回值 (Returns):无 异常 (Raises):无


SendVelNEDNoYaw(vx, vy, vz)

功能说明:向PX4发送地理北东下(NED)坐标系下的目标无人机速度(单位:m/s),不控制偏航,当无人机向上飞行时,vz < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
vx 浮点型 NED坐标系下北向速度,NaN表示不控制该轴
vy 浮点型 NED坐标系下东向速度,NaN表示不控制该轴
vz 浮点型 NED坐标系下向下速度,NaN表示不控制该轴

返回值 (Returns):无 异常 (Raises):无


SendVelFRD(vx, vy, vz, yawrate=math.nan)

功能说明:向PX4发送机体前右下(FRD)坐标系下的目标无人机速度(单位:m/s),并控制偏航角速度(单位:rad/s),当无人机向上飞行时,vz < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
vx 浮点型 math.nan FRD坐标系下前向速度,NaN表示不控制该轴
vy 浮点型 math.nan FRD坐标系下右向速度,NaN表示不控制该轴
vz 浮点型 math.nan FRD坐标系下向下速度,NaN表示不控制该轴
yawrate 浮点型 math.nan 目标偏航角速度,NaN表示不控制偏航角速度

返回值 (Returns):无 异常 (Raises):无


SendAttPX4(att=[0, 0, 0, 0], thrust=0.5, CtrlFlag=0, AltFlg=0)

功能说明:向PX4发送机体前右下(FRD)坐标系下的目标无人机姿态。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
att 列表/数组 [0, 0, 0, 0] 目标姿态四元数,格式为[w, x, y, z]
thrust 浮点型 0.5 推力值,范围通常为0~1
CtrlFlag 整型 0 控制标志位,0表示默认控制模式
AltFlg 整型 0 高度控制标志,0表示默认控制

返回值 (Returns):无 异常 (Raises):无


EulerToQuat(Euler)

功能说明:将欧拉角转换为四元数。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
Euler 列表/数组 输入欧拉角,格式为[roll, pitch, yaw](单位:rad)

返回值 (Returns):四元数数组,格式为[w, x, y, z] 异常 (Raises):无


SendAccPX4(afx=math.nan, afy=math.nan, afz=math.nan, yawValue=math.nan, yawType=0, frameType=0)

功能说明:向PX4发送目标加速度(单位:m/s²)。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
afx 浮点型 math.nan x轴目标加速度,NaN表示不控制该轴
afy 浮点型 math.nan y轴目标加速度,NaN表示不控制该轴
afz 浮点型 math.nan z轴目标加速度,NaN表示不控制该轴
yawValue 浮点型 math.nan 目标偏航值,由yawType确定是偏航角还是偏航角速度
yawType 整型 0 偏航控制类型,0表示yawValue为偏航角,1表示yawValue为偏航角速度
frameType 整型 0 坐标系类型,0表示NED地理坐标系,1表示FRD机体坐标系

返回值 (Returns):无 异常 (Raises):无


SendVelNoYaw(vx=math.nan, vy=math.nan, vz=math.nan)

功能说明:向PX4发送机体前右下(FRD)坐标系下的目标无人机速度(单位:m/s),不控制偏航角速度,当无人机向上飞行时,vz < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
vx 浮点型 math.nan FRD坐标系下前向速度,NaN表示不控制该轴
vy 浮点型 math.nan FRD坐标系下右向速度,NaN表示不控制该轴
vz 浮点型 math.nan FRD坐标系下向下速度,NaN表示不控制该轴

返回值 (Returns):无 异常 (Raises):无


SendPosNED(x=math.nan, y=math.nan, z=math.nan, yaw=math.nan)

功能说明:向PX4发送地理北东下(NED)坐标系下的目标无人机位置(单位:m),并控制偏航角(单位:rad),当无人机在地面上方飞行时,z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x 浮点型 math.nan NED坐标系下北向位置,NaN表示不控制该轴
y 浮点型 math.nan NED坐标系下东向位置,NaN表示不控制该轴
z 浮点型 math.nan NED坐标系下向下位置,NaN表示不控制该轴
yaw 浮点型 math.nan 目标偏航角,NaN表示不控制偏航

返回值 (Returns):无 异常 (Raises):无


SendVelYawAlt(vel=10, yaw=6.28, alt=-100)

功能说明:向PX4发送速度、偏航角与高度设定值,当无人机在地面上方飞行时,高度对应NED坐标系下z值满足z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
vel 浮点型 10 目标前向速度大小
yaw 浮点型 6.28 目标偏航角(单位:rad)
alt 浮点型 -100 目标高度(NED坐标系z值,单位:m)

返回值 (Returns):无 异常 (Raises):无


SendPosGlobal(lat=0, lon=0, alt=0, yawValue=0, yawType=0)

功能说明:向PX4发送全球经纬高坐标系下的目标无人机位置,并控制偏航,当无人机在地面上方飞行时,z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
lat 浮点型 0 目标纬度(单位:度)
lon 浮点型 0 目标经度(单位:度)
alt 浮点型 0 目标高度(单位:m)
yawValue 浮点型 0 目标偏航值,单位rad,由yawType确定是偏航角还是偏航角速度
yawType 整型 0 偏航控制类型,0表示yawValue为偏航角,1表示yawValue为偏航角速度

返回值 (Returns):无 异常 (Raises):无


SendPosNEDNoYaw(x=math.nan, y=math.nan, z=math.nan)

功能说明:向PX4发送地理北东下(NED)坐标系下的目标无人机位置(单位:m),不控制偏航,当无人机在地面上方飞行时,z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x 浮点型 math.nan NED坐标系下北向位置,NaN表示不控制该轴
y 浮点型 math.nan NED坐标系下东向位置,NaN表示不控制该轴
z 浮点型 math.nan NED坐标系下向下位置,NaN表示不控制该轴

返回值 (Returns):无 异常 (Raises):无


SendPosFRD(x=math.nan, y=math.nan, z=math.nan, yaw=math.nan)

功能说明:向PX4发送机体前右下(FRD)坐标系下的目标无人机位置(单位:m),并控制偏航角(单位:rad),当无人机在地面上方飞行时,z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x 浮点型 math.nan FRD坐标系下前向位置,NaN表示不控制该轴
y 浮点型 math.nan FRD坐标系下右向位置,NaN表示不控制该轴
z 浮点型 math.nan FRD坐标系下向下位置,NaN表示不控制该轴
yaw 浮点型 math.nan 目标偏航角,NaN表示不控制偏航

返回值 (Returns):无 异常 (Raises):无


SendPosFRDNoYaw(x=math.nan, y=math.nan, z=math.nan)

功能说明:向PX4发送机体前右下(FRD)坐标系下的目标无人机位置(单位:m),不控制偏航,当无人机在地面上方飞行时,z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x 浮点型 math.nan FRD坐标系下前向位置,NaN表示不控制该轴
y 浮点型 math.nan FRD坐标系下右向位置,NaN表示不控制该轴
z 浮点型 math.nan FRD坐标系下向下位置,NaN表示不控制该轴

返回值 (Returns):无 异常 (Raises):无


SendPosNEDExt(x=math.nan, y=math.nan, z=math.nan, mode=3, isNED=True)

功能说明:向PX4发送扩展格式的目标无人机位置(单位:m),当无人机在地面上方飞行时,z < 0参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x 浮点型 math.nan x轴目标位置,NaN表示不控制该轴
y 浮点型 math.nan y轴目标位置,NaN表示不控制该轴
z 浮点型 math.nan z轴目标位置,NaN表示不控制该轴
mode 整型 3 控制模式,对应PX4位置控制掩码
isNED 布尔型 True True表示输入为NED地理坐标系,False表示为FRD机体坐标系

返回值 (Returns):无 异常 (Raises):无


enFixedWRWTO()

功能说明:发送指令使能固定翼飞机跑道起飞模式。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无

SendCruiseSpeed(Speed=0)

功能说明:发送指令修改飞行器的巡航速度,单位为 m/s 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
Speed None 0 需要设置的目标巡航速度

返回值 (Returns):无 异常 (Raises):无


SendCopterSpeed(Speed=0)

功能说明:发送指令设置多旋翼飞行器的最大速度 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
Speed None 0 需要设置的多旋翼最大速度

返回值 (Returns):无 异常 (Raises):无


SendGroundSpeed(Speed=0)

功能说明:发送指令修改飞行器的地速,单位为 m/s 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
Speed None 0 需要设置的目标地速

返回值 (Returns):无 异常 (Raises):无


SendCruiseRadius(rad=0)

功能说明:发送指令修改飞行器的巡航转弯半径,单位为 m 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
rad None 0 需要设置的目标巡航转弯半径

返回值 (Returns):无 异常 (Raises):无


sendTakeoffMode(alt=0)

功能说明:发送指令控制飞行器起飞 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
alt None 0 起飞目标高度

返回值 (Returns):无 异常 (Raises):无


initOffboard()

功能说明:发送指令让PX4飞控进入Offboard模式,并启动30Hz的Offboard消息发送 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


initOffboardAcc()

功能说明:发送指令让PX4飞控进入Offboard模式,并启动30Hz的Offboard消息发送(加速度控制类型) 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


initOffboardAtt()

功能说明:发送指令让PX4飞控进入Offboard模式,并启动30Hz的Offboard消息发送(姿态控制类型) 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


initOffboard2()

功能说明:发送指令让PX4飞控进入Offboard模式,并启动30Hz的Offboard消息发送(扩展版本) 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


sendMavTakeOff(xM=0, yM=0, zM=0, YawRad=0, PitchRad=0)

功能说明:发送指令控制飞行器起飞到指定的本地坐标系目标位置,单位为 m 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
xM None 0 目标位置X坐标
yM None 0 目标位置Y坐标
zM None 0 目标位置Z坐标
YawRad None 0 目标偏航角,单位为弧度
PitchRad None 0 目标俯仰角,单位为弧度

返回值 (Returns):无 异常 (Raises):无


sendMavTakeOffLocal(xM=0, yM=0, zM=0, YawRad=0, PitchRad=0, AscendRate=2)

功能说明:发送指令控制飞行器起飞到指定的本地坐标系目标位置,单位为 m 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
xM None 0 目标位置X坐标
yM None 0 目标位置Y坐标
zM None 0 目标位置Z坐标
YawRad None 0 目标偏航角,单位为弧度
PitchRad None 0 目标俯仰角,单位为弧度
AscendRate None 2 起飞爬升速度

返回值 (Returns):无 异常 (Raises):无


sendMavTakeOffGPS(lat=None, lon=None, alt=None, yawDeg=0, pitchDeg=15)

功能说明:发送指令控制飞行器起飞到指定的全球坐标系目标位置,坐标单位为度 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
lat None None 目标纬度,单位为度
lon None None 目标经度,单位为度
alt None None 目标海拔高度,单位为米
yawDeg None 0 目标偏航角,单位为度
pitchDeg None 15 目标俯仰角,单位为度

返回值 (Returns):无 异常 (Raises):无


sendMavLand(xM=None, yM=None, zM=None)

功能说明:发送指令控制飞行器降落至指定的本地坐标系目标位置,单位为 m 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
xM None None 目标位置X坐标
yM None None 目标位置Y坐标
zM None None 目标位置Z坐标

返回值 (Returns):无 异常 (Raises):无


sendMavLandGPS(lat=None, lon=None, alt=None)

功能说明:发送指令控制飞行器降落至指定的全球坐标系目标位置,坐标单位为度 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
lat None None 目标纬度,单位为度
lon None None 目标经度,单位为度
alt None None 目标海拔高度,单位为米

返回值 (Returns):无 异常 (Raises):无


endOffboard()

功能说明:发送指令让PX4飞控退出Offboard模式,并停止Offboard消息发送循环 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无

sendMavSetParam(param_id, param_value, param_type)

功能说明:向PX4发送指令修改指定参数,采用MAVLink的PARAM_SET消息,参数列表可在QGroundControl中查看。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
param_id Any 目标参数名称标识
param_value Any 目标参数的目标值
param_type Any 参数的MAVLink类型

返回值 (Returns):无 异常 (Raises):无


SendHILCtrlMsg(ctrls=[0] * 16, idx=0, flags=1)

功能说明:向PX4发送HIL_ACTUATOR_CONTROLS指令,该消息会被转换为uORB消息rfly_ctrl。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
ctrls Any [0] * 16 16维控制量数组
idx Any 0 控制组索引
flags Any 1 消息标志位

返回值 (Returns):无 异常 (Raises):无


SendHILCtrlMsg1()

功能说明:向PX4发送DEBUG_VECT调试向量消息,该消息会被转换为uORB消息rfly_ctrl。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


SendMavArm(isArm=1)

功能说明:向PX4发送指令,控制无人机上锁/解锁。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
isArm Any 1 1表示解锁(arm),0表示上锁(disarm)

返回值 (Returns):无 异常 (Raises):无


initRCSendLoop(Hz=30)

功能说明:初始化遥控器PWM发送循环,设置发送频率。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
Hz Any 30 遥控器信号发送频率,单位Hz

返回值 (Returns):无 异常 (Raises):无


endRCSendLoop()

功能说明:终止遥控器PWM发送循环。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


RcSendLoop()

功能说明:遥控器PWM发送循环的执行函数,持续发送设置好的PWM值。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


SendRCPwms(Pwms)

功能说明:设置待发送的遥控器PWM值。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
Pwms Any 各通道PWM值数组

返回值 (Returns):无 异常 (Raises):无


SendRcOverride(ch1=1500, ch2=1500, ch3=1100, ch4=1500, ch5=1100, ch6=1100, ch7=1500, ch8=1500)

功能说明:向PX4发送MAVLink指令,覆盖原有的遥控器通道信号,采用RC_CHANNELS_OVERRIDE消息。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
ch1 Any 1500 1通道PWM值,范围1000~2000
ch2 Any 1500 2通道PWM值,范围1000~2000
ch3 Any 1100 3通道PWM值,范围1000~2000
ch4 Any 1500 4通道PWM值,范围1000~2000
ch5 Any 1100 5通道PWM值,范围1000~2000
ch6 Any 1100 6通道PWM值,范围1000~2000
ch7 Any 1500 7通道PWM值,范围1000~2000
ch8 Any 1500 8通道PWM值,范围1000~2000

返回值 (Returns):无 异常 (Raises):无


sendMavManualCtrl(x=0, y=0, z=0, r=0)

功能说明:向PX4发送MAVLink指令,覆盖手动控制信号,采用MANUAL_CONTROL消息。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
x Any 0 X轴控制量,范围-1000~1000
y Any 0 Y轴控制量,范围-1000~1000
z Any 0 Z轴控制量,范围-1000~1000
r Any 0 偏航轴控制量,范围-1000~1000

返回值 (Returns):无 异常 (Raises):无


SendSetMode(mainmode, cusmode=0)

功能说明:向PX4发送MAVLink指令修改飞行模式,采用MAV_CMD_DO_SET_MODE消息。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
mainmode Any 主模式编号
cusmode Any 0 自定义子模式编号,默认为0

返回值 (Returns):无 异常 (Raises):无


stopRun()

功能说明:停止InitMavLoop()启动的MAVLink监听循环,功能与endMavLoop()一致。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


getTrueDataMsg()

功能说明:启动循环监听来自端口30100的真实仿真数据。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


getPX4DataMsg()

功能说明:启动循环监听来自端口40100的PX4数据。 参数列表 (Args):无参数 返回值 (Returns):无 异常 (Raises):无


setMsgDict(stName)

功能说明:设置消息字典相关标识。 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
stName Any 消息字典名称标识

返回值 (Returns):无 异常 (Raises):无

netForwardData()

功能说明:网络转发数据 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无


GetUDPRedisBuf(sock)

功能说明:获取UDP转发缓存数据 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
sock None UDP套接字对象

返回值 (Returns):无 异常 (Raises):无


getMavMsg()

功能说明:启动循环,监听来自20100系列端口或串口的mavlink数据 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无


OffboardSendMode()

功能说明:设置offboard模式发送 参数列表 (Args): 无参数 返回值 (Returns):无 异常 (Raises):无


sendRebootPix(copterID, delay=-1)

功能说明:发送重启仿真的消息到指定无人机ID的PX4飞控 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
copterID None 目标无人机的ID
delay None -1 重启延迟时间,单位为秒

返回值 (Returns):无 异常 (Raises):无


sendCustomData(CopterID, data=[0] * 16, checksum=123456, port=50000, IP=127.0.0.1)

功能说明:发送16维自定义消息到指定IP和端口 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
CopterID None 目标无人机ID
data None [0] * 16 待发送的16个元素数据数组
checksum None 123456 数据校验和
port None 50000 目标端口号
IP None 127.0.0.1 目标IP地址

返回值 (Returns):无 异常 (Raises):无


setGPSOriLLA(LonLatAlt)

功能说明:设置GPS初始经纬度高度 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
LonLatAlt None 初始经纬度高度数组,格式为[经度, 纬度, 高度]

返回值 (Returns):无 异常 (Raises):无


sendSILIntFloat(inSILInts=[0] * 8, inSILFLoats=[0] * 20, copterID=-1)

功能说明:发送 SIL 整数和浮点数数据到PX4飞控 参数列表 (Args)

参数名 类型 是否必填 默认值 说明
inSILInts None [0] * 8 待发送的8个整数数组
inSILFLoats None [0] * 20 待发送的20个浮点数数组
copterID None -1 目标无人机ID,-1表示发送给所有无人机

返回值 (Returns):无 异常 (Raises):无

进阶用法示例

展示复杂组合场景(如多类协作、异步控制、批量操作)

本示例实现了多无人机集群的点质量模型协同仿真+真实位频数据异步回传的组合场景,通过fifo队列实现不同线程间的控制指令与状态数据交互,同时结合PX4自定义飞行模式完成多机协作任务。

import RflySimSDK.ctrl as rfc
import threading
import time

# 初始化5架无人机的控制器对象队列
px4_ctrl_list = [rfc.PX4MavCtrler() for _ in range(5)]
# 初始化异步通信fifo队列
data_fifo = rfc.fifo()
# 启动所有无人机的真值数据回传线程
for ctrl in px4_ctrl_list:
    ctrl.InitTrueDataLoop()
# 批量初始化点质量仿真模型
for ctrl in px4_ctrl_list:
    ctrl.initPointMassModel()

# 定义异步位姿数据读取线程函数
def async_read_true_data():
    while True:
        # 从fifo读取最新多机位姿数据
        all_pos_data = data_fifo.read()
        if all_pos_data:
            # 批量发送位姿数据到仿真可视化端
            for idx, pos_data in enumerate(all_pos_data):
                px4_ctrl_list[idx].sendUE4PosNew(pos_data, rfc.PosTypeMask.mask(), rfc.AttTypeMask.mask())
        time.sleep(0.01)

# 启动异步线程处理数据回传
read_thread = threading.Thread(target=async_read_true_data, daemon=True)
read_thread.start()

# 主循环运行点质量模型控制,实现集群协同航路跟踪
try:
    while True:
        for ctrl in px4_ctrl_list:
            ctrl.PointMassModelLoop(rfc.PX4_CUSTOM_MAIN_MODE, rfc.PX4_CUSTOM_SUB_MODE_AUTO)
            # 添加偏航角限制约束
            ctrl.yawSat(max_yaw_rate=30.0)
        time.sleep(0.01)
finally:
    # 结束后批量停止所有线程与模型
    for ctrl in px4_ctrl_list:
        ctrl.EndPointMassModel()
        ctrl.EndTrueDataLoop()

注意事项与避坑指南

  • 点质量模型启停配对使用initPointMassModelEndPointMassModel必须配对调用,若只初始化不终止,会导致后台仿真线程持续占用资源,下次启动仿真时容易出现模型状态异常的问题。同理InitTrueDataLoopEndTrueDataLoop也需要配对管理生命周期。
  • fifo队列读写权限匹配:多线程协作场景下,fifo队列的读写需要对应不同线程操作,不要在同一个线程内同时进行连续的读写操作,否则容易出现数据阻塞或者空读错误,影响控制链路的实时性。
  • 自定义飞行模式参数匹配:调用PointMassModelLoop等需要传入自定义飞行模式参数时,必须使用本模块提供的PX4_CUSTOM_MAIN_MODEPX4_CUSTOM_SUB_MODE_AUTO类型参数,传入自定义整数参数会导致PX4飞控无法识别控制指令,触发模式切换失败。
  • Redis键获取需对应飞机ID:调用RedisKey.GetRedisKey获取状态存储键时,需要传入与无人机编号对应的正确ID,错误的ID会导致读取到其他无人机的状态数据,引发集群控制中串扰问题。

更新日志

  • 2026-03-03: feat:SDK增加IP处理机制,兼容本地版上云
  • 2025-09-19: 兼容WSL2
  • 2025-09-19: 解决组播失效情况下恢复机制
  • 2025-09-11: fix: 增加Linux端口复用的支持
  • 2025-08-20: fix:获取故障注入时间戳
  • 2025-08-07: 修复direct模式mavlink连真机port变量无效的bug
  • 2024-12-18: fix: 增加一个自定义消息发送接口
  • 2024-11-22: fix
  • 2024-11-22: fix:更新API页面
  • 2024-10-23: fix: 更新sendHIl接口
  • 2024-09-09: feat: 新增外部发送GPS消息的接口
  • 2024-08-30: fix: 删除综合模型控制相关接口,挪到别处
  • 2024-08-28: fix: 默认不控制通道
  • 2024-08-14: fix:更新HTML版API
  • 2024-07-29: fix: 保持旧版的兼容性