RflySimSDK v3.08
RflySimSDK说明文档
载入中...
搜索中...
未找到
PX4MavCtrler类 参考

无人机通信实例。 更多...

Public 成员函数

 __init__ (self, CopterID=1, ip='127.0.0.1', Com='udp', port=0)
 构造函数。
 
 convert_to_payload64 (self, payload_bytes)
 将传入的字节序列(payload_bytes)转换成MAVLink协议中的payload64格式。
 
 convert_to_rosmsg (self, mavmsg, header)
 将 pymavlink 库中的一个MAVLink消息对象转换为ROS消息格式。
 
 setGPSOriLLA (self, LonLatAlt=[40.1540302, 116.2593683, 50])
 设置GPS原点
 
 arm_px4 (self, isArm)
 给PX4发送解锁指令。
 
 fillList (self, data, inLen, fill=0)
 将输入数据填充或截断到指定的长度。
 
 InitMavLoop (self)
 仿真初始化,启动无人机仿真循环
 
 sendStartMsg (self, copterID=-1)
 发送开始仿真信息
 
 waitForStartMsg (self)
 等待个特定的启动消息,每个无人机或节点等待接收特定的启动信号以开始仿真
 
 SendMavArm (self, isArm)
 发送解锁指令
 
 initOffboard (self)
 初始化Offboard模式
 
 OffboardLoop (self)
 启动Offboard模式循环
 
 endOffboard (self)
 结束Offboard模式
 
 stopRun (self)
 停止仿真
 
 calcTypeMask (self, EnList)
 根据提供的布尔列表 EnList 计算一个类型掩码(type mask)。
 
 SendVelNED (self, vx=math.nan, vy=math.nan, vz=math.nan, yawrate=math.nan)
 发送北东地坐标系下的速度指令。
 
 SendVelFRD (self, vx=math.nan, vy=math.nan, vz=math.nan, yawrate=math.nan)
 发送机体坐标系下的速度指令。
 
 SendPosNED (self, x=math.nan, y=math.nan, z=math.nan, yaw=math.nan)
 发送北东地坐标系下的位置指令。
 
 SendPosVelNED (self, PosE=[math.nan] *3, VelE=[math.nan] *3, yaw=math.nan, yawrate=math.nan)
 发送北东地坐标系下的位置、速度指令,位置和速度共同控制接口,如果某个通道不想控制,设置为nan即可。
 
 local_pose_callback (self, msg)
 处理ROS中订阅的本地位置话题的消息,更新无人机的位置和姿态信息
 
 local_vel_callback (self, msg)
 处理ROS中订阅的本地速度话题的消息,更新无人机的速度和角速率信息
 
 mavros_state_callback (self, msg)
 处理ROS中订阅的MAVROS状态主题的消息,更新无人机的飞行模式信息。
 
 imu_callback (self, msg)
 处理ROS中订阅的IMU话题的消息,更新无人机的IMU数据
 
 gps_callback (self, msg)
 处理ROS中订阅的GPS话题的消息,更新无人机的GPS数据
 
 q2yaw (self, q)
 从输入的四元数(q)来计算偏航角
 
 q2Euler (self, q)
 从输入的四元数(q)来计算欧拉角
 
 SendMavArm (self, isArm=1)
 通过MAVLink发送解锁指令给PX4
 
 arm (self)
 检查PX4的解锁状态
 
 disarm (self)
 检查PX4的上锁状态
 
 offboard (self)
 设置PX4无人机进入Offboard控制模式,尝试将无人机切换到Offboard模式,这是一种允许外部控制命令覆盖无人机内部控制的模式。
 
 land (self)
 
 yawSat (self, yaw)
 对偏航角进行饱和处理,此函数接收一个偏航角值,并确保其在 -π/2 到 π/2 弧度(或等效的 -90 到 90 度)的范围内。如果输入的偏航角超出这个范围,函数会相应地调整它,使其不超过阈值。
 
 sendMavSetParam (self, param_id_str, param_value, param_type)
 发送MAVLink设置参数请求,用于通过MAVLink协议设置无人机的参数。根据参数类型,它可以设置整型或实型参数。
 
 SendMavCmdLong (self, command, param1=0, param2=0, param3=0, param4=0, param5=0, param6=0, param7=0)
 发送MAVLink长格式命令,该函数用于通过MAVLink协议发送长格式的命令给无人机。命令可以包括一系列的参数,用于指定命令的具体行为。
 
 SendHILCtrlMsg (self, ctrls=[0] *16, idx=0)
 发送硬件在环仿真的hil_actuator_controls消息(消息定义可见:https://mavlink.io/en/messages/common.html#HIL_ACTUATOR_CONTROLS) 代码的核心是创建一个Mavlink消息,并转换为ros_mavlink消息,在Python中比较复杂 在C语言中很简单,利用\opt\ros[noetic或foxy]\mavlink_convert.h中的 bool convert(const Mavlink & rmsg, mavlink_message_t & mmsg)函数可以轻松转换,然后发布即可 RflySim平台需要借用hil_actuator_controls来将数据传到rfly_ctrl、rfly_ctrl1和rfly_ctrl2中 通过mavros的接口,将一条mavlink的buf包消息,传给飞控
 

Public 属性

 isCom
 UDP模式解析
 
 Com
 
 baud
 COM波特率。
 
 ip
 
 CopterID
 
 port
 
 rosName
 ROS名称
 
 ComName
 串口名称,串口连接模式解析。
 
 imu
 IMU数据。
 
 gps
 GPS数据。
 
 local_pose
 本地位置量
 
 mavros_state
 MAVROS状态
 
 current_heading
 当前机头状态
 
 local_vel
 本地速度量
 
 arm_state
 解锁状态
 
 offboard_state
 Offboard模式状态
 
 received_imu
 接收到的IMU数据
 
 frame
 坐标系名称
 
 state
 无人机状态量
 
 command
 指令
 
 offCmd
 mavros_msgs包中的目标位置信息。
 
 isInOffboard
 是否进入Offboard模式的标志位。
 
 uavAngEular
 无人机欧拉角状态量
 
 uavAngRate
 无人机欧拉角速率状态量
 
 uavPosNED
 无人机北东地位置状态量
 
 uavVelNED
 无人机北东地速度状态量
 
 uavAngQuatern
 无人机姿态角四元数状态量
 
 uavGlobalPos
 从PX4转移到UE4地图的估计全球位置
 
 trueGpsUeCenter
 真实全球GPS位置
 
 geo
 地理坐标转换的模块
 
 count
 软件在环仿真计数
 
 countHil
 硬件在环仿真计数
 
 hasInit
 初始化是否完成标志位
 
 local_pose_sub
 订阅ROS中的本地位置
 
 local_vel_sub
 订阅ROS中的本地速度
 
 mavros_sub
 订阅mavros包中消息
 
 gps_sub
 订阅ROS中的GPS信息
 
 imu_sub
 订阅ROS中的IMU信息
 
 vel_pub
 发布期望速度数据到ROS中
 
 vel_raw_pub
 发布本地原始期望速度数据到ROS中
 
 mav_raw_pub
 发布原始MAVLink消息到ROS中
 
 armService
 创建解锁服务代理
 
 flightModeService
 创建飞行模式服务代理
 
 setparamService
 创建参数设置服务代理
 
 sendCmdLongService
 创建发送长格式的命令给无人机服务代理
 
 ros_node
 创建ROS节点
 
 executor
 创建一个多线程执行器
 
 t1
 创建一个线程并开始执行
 
 f
 MAVLink初始化
 
 mav0
 发送任意mavlink消息
 
 tgtSys
 
 child
 
 t2
 

详细描述

无人机通信实例。

此类通过UDP、COM方式与无人机模拟器进行通信,控制模拟器的操作。

ID: 表示飞机的CopterID号。按平台规则,port=20100+CopterID*2-2。
ip: 数据向外发送的IP地址。默认是发往本机的127.0.0.1的IP;在分布式仿真时,也可以指定192.168打头的局域网电脑IP;也可以使用255.255.255.255的广播地址(会干扰网络其他电脑)
Com: 与Pixhawk的连接模式。
    Com='udp',表示使用默认的udp模式接收数据,这种模式下,是接收CopterSim转发的PX4的MAVLink消息(或UDP_full,simple)消息包
             使用port+1端口收和port端口发(例如,1号飞机是20101端口收,20100端口发,与CopterSim对应)。
    Com='COM3'(Widnows下)或 Com='/dev/ttyUSB0'(Linux系统,也可能是ttyS0、ttyAMA0等),表示通过USB线(或者数传)连接飞控,使用默认57600的波特率。注意:波特率使用port口设置,默认port=0,会重映射为57600

port: UDP模式下默认情况下设为0,会自动根据IP填充,按平台规则,port=20100+CopterID*2-2。如果这里赋值大于0,则会强制使用port定义的端口。
      COM模式下,Port默认表示波特率self.baud=port。如果port=0,则会设置self.baud=57600


接口示例:
UDP模式
PX4MavCtrler(1) # 默认IP
PX4MavCtrler(1,'192.168.31.24') # 指定IP,用于远程控制

串口模式
PX4MavCtrler(1,'127.0.0.1','com1',57600) # 指定串口,并设置波特率

构造及析构函数说明

◆ __init__()

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

构造函数。

参数
CopterID初始化时设置的无人机ID,默认为:1。
ipip地址,默认为:127.0.0.1。
portIP端口,默认为:0。

成员函数说明

◆ arm()

arm ( self)

检查PX4的解锁状态

返回
返回解锁标准的真假值
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ arm_px4()

arm_px4 ( self,
isArm )

给PX4发送解锁指令。

参数
isArm解锁标志位。
返回
返回解锁信息
+ 这是这个函数的调用关系图:

◆ calcTypeMask()

calcTypeMask ( self,
EnList )

根据提供的布尔列表 EnList 计算一个类型掩码(type mask)。

参数
EnList布尔列表
返回
返回计算后的类型掩码
+ 这是这个函数的调用关系图:

◆ convert_to_payload64()

convert_to_payload64 ( self,
payload_bytes )

将传入的字节序列(payload_bytes)转换成MAVLink协议中的payload64格式。

参数
payload_bytes字节序列
返回
MAVLink协议中的payload64格式。
+ 这是这个函数的调用关系图:

◆ convert_to_rosmsg()

convert_to_rosmsg ( self,
mavmsg,
header )

将 pymavlink 库中的一个MAVLink消息对象转换为ROS消息格式。

参数
mavmsgMAVLink消息对象
header消息头对象
返回
创建的Mavlink对象。
Convert pymavlink message to Mavlink.msg

Currently supports MAVLink v1.0 only.
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ disarm()

disarm ( self)

检查PX4的上锁状态

返回
返回上锁标准的真假值
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ endOffboard()

endOffboard ( self)

结束Offboard模式

+ 这是这个函数的调用关系图:

◆ fillList()

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

将输入数据填充或截断到指定的长度。

参数
data需要填充或截断的数据,可以是列表或NumPy数组。
inLen目标长度,即填充或截断后的长度。
fill填充值,当数据长度小于目标长度时,会用这个值来填充数据。默认值为0。
返回
返回填充或截断后的数据
+ 这是这个函数的调用关系图:

◆ gps_callback()

gps_callback ( self,
msg )

处理ROS中订阅的GPS话题的消息,更新无人机的GPS数据

参数
msg从ROS中接收到的消息对象

◆ imu_callback()

imu_callback ( self,
msg )

处理ROS中订阅的IMU话题的消息,更新无人机的IMU数据

参数
msg从ROS中接收到的消息对象
+ 函数调用图:

◆ InitMavLoop()

InitMavLoop ( self)

仿真初始化,启动无人机仿真循环

◆ initOffboard()

initOffboard ( self)

初始化Offboard模式

+ 函数调用图:

◆ local_pose_callback()

local_pose_callback ( self,
msg )

处理ROS中订阅的本地位置话题的消息,更新无人机的位置和姿态信息

参数
msg从ROS中接收到的消息对象
+ 函数调用图:

◆ local_vel_callback()

local_vel_callback ( self,
msg )

处理ROS中订阅的本地速度话题的消息,更新无人机的速度和角速率信息

参数
msg从ROS中接收到的消息对象

◆ mavros_state_callback()

mavros_state_callback ( self,
msg )

处理ROS中订阅的MAVROS状态主题的消息,更新无人机的飞行模式信息。

参数
msg从ROS中接收到的消息对象

◆ offboard()

offboard ( self)

设置PX4无人机进入Offboard控制模式,尝试将无人机切换到Offboard模式,这是一种允许外部控制命令覆盖无人机内部控制的模式。

返回
返回是否成功进入Offboard控制模式的布尔值
+ 这是这个函数的调用关系图:

◆ OffboardLoop()

OffboardLoop ( self)

启动Offboard模式循环

+ 这是这个函数的调用关系图:

◆ q2Euler()

q2Euler ( self,
q )

从输入的四元数(q)来计算欧拉角

参数
q四元数
返回
返回计算后的姿态角。
+ 这是这个函数的调用关系图:

◆ q2yaw()

q2yaw ( self,
q )

从输入的四元数(q)来计算偏航角

参数
q四元数
+ 这是这个函数的调用关系图:

◆ SendHILCtrlMsg()

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

发送硬件在环仿真的hil_actuator_controls消息(消息定义可见:https://mavlink.io/en/messages/common.html#HIL_ACTUATOR_CONTROLS) 代码的核心是创建一个Mavlink消息,并转换为ros_mavlink消息,在Python中比较复杂 在C语言中很简单,利用\opt\ros[noetic或foxy]\mavlink_convert.h中的 bool convert(const Mavlink & rmsg, mavlink_message_t & mmsg)函数可以轻松转换,然后发布即可 RflySim平台需要借用hil_actuator_controls来将数据传到rfly_ctrl、rfly_ctrl1和rfly_ctrl2中 通过mavros的接口,将一条mavlink的buf包消息,传给飞控

参数
ctrls16维控制量
idx索引值,用于选择不同的uORB消息ID,默认为0
 Send hil_actuator_controls command to PX4, which will be transferred to uORB message rfly_ctrl
https://mavlink.io/en/messages/common.html#HIL_ACTUATOR_CONTROLS
+ 函数调用图:

◆ SendMavArm() [1/2]

SendMavArm ( self,
isArm )

发送解锁指令

+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SendMavArm() [2/2]

SendMavArm ( self,
isArm = 1 )

通过MAVLink发送解锁指令给PX4

参数
isArm解锁标志位
  • 0表示上锁
  • 1表示解锁
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SendMavCmdLong()

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

发送MAVLink长格式命令,该函数用于通过MAVLink协议发送长格式的命令给无人机。命令可以包括一系列的参数,用于指定命令的具体行为。

参数
command要发送的MAVLink命令的ID
param1命令的第一个参数,默认为0
param2命令的第二个参数,默认为0
param3命令的第三个参数,默认为0
param4命令的第四个参数,默认为0
param5命令的第五个参数,默认为0
param6命令的第六个参数,默认为0
param7命令的第七个参数,默认为0
+ 这是这个函数的调用关系图:

◆ sendMavSetParam()

sendMavSetParam ( self,
param_id_str,
param_value,
param_type )

发送MAVLink设置参数请求,用于通过MAVLink协议设置无人机的参数。根据参数类型,它可以设置整型或实型参数。

参数
param_id_str参数的名称字符串标识符
param_value参数的值,可以是整型或实型
param_type参数的类型,'INT' 表示整型,其他值表示实型
+ 这是这个函数的调用关系图:

◆ SendPosNED()

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

发送北东地坐标系下的位置指令。

参数
xX轴位置
yY轴位置
zZ轴位置
yaw偏航角角度
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SendPosVelNED()

SendPosVelNED ( self,
PosE = [math.nan]*3,
VelE = [math.nan]*3,
yaw = math.nan,
yawrate = math.nan )

发送北东地坐标系下的位置、速度指令,位置和速度共同控制接口,如果某个通道不想控制,设置为nan即可。

参数
PosEX、Y、Z轴位置指令
VelEX、Y、Z轴速度指令
yaw偏航角角度
yawrate偏航角速率
+ 函数调用图:

◆ sendStartMsg()

sendStartMsg ( self,
copterID = -1 )

发送开始仿真信息

参数
copterID无人机ID,默认为:-1。

◆ SendVelFRD()

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

发送机体坐标系下的速度指令。

参数
vxX轴速度
vyY轴速度
vzZ轴速度
yawrate偏航角速率
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ SendVelNED()

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

发送北东地坐标系下的速度指令。

参数
vxX轴速度
vyY轴速度
vzZ轴速度
yawrate偏航角速率
+ 函数调用图:
+ 这是这个函数的调用关系图:

◆ setGPSOriLLA()

setGPSOriLLA ( self,
LonLatAlt = [40.1540302,116.2593683,50] )

设置GPS原点

参数
LonLatAltGPS的经度、纬度和高度

◆ stopRun()

stopRun ( self)

停止仿真

+ 这是这个函数的调用关系图:

◆ waitForStartMsg()

waitForStartMsg ( self)

等待个特定的启动消息,每个无人机或节点等待接收特定的启动信号以开始仿真

◆ yawSat()

yawSat ( self,
yaw )

对偏航角进行饱和处理,此函数接收一个偏航角值,并确保其在 -π/2 到 π/2 弧度(或等效的 -90 到 90 度)的范围内。如果输入的偏航角超出这个范围,函数会相应地调整它,使其不超过阈值。

参数
yaw输入的偏航角,以弧度为单位
返回
返回饱和后的偏航角值
+ 这是这个函数的调用关系图:

类成员变量说明

◆ arm_state

arm_state

解锁状态

◆ armService

armService

创建解锁服务代理

◆ baud

baud

COM波特率。

◆ command

command

指令

◆ ComName

ComName

串口名称,串口连接模式解析。

◆ count

count

软件在环仿真计数

◆ countHil

countHil

硬件在环仿真计数

◆ current_heading

current_heading

当前机头状态

◆ executor

executor

创建一个多线程执行器

◆ f

f

MAVLink初始化

◆ flightModeService

flightModeService

创建飞行模式服务代理

◆ frame

frame

坐标系名称

◆ geo

geo

地理坐标转换的模块

◆ gps

gps

GPS数据。

◆ gps_sub

gps_sub

订阅ROS中的GPS信息

◆ hasInit

hasInit

初始化是否完成标志位

◆ imu

imu

IMU数据。

◆ imu_sub

imu_sub

订阅ROS中的IMU信息

◆ isCom

isCom

UDP模式解析

◆ isInOffboard

isInOffboard

是否进入Offboard模式的标志位。

◆ local_pose

local_pose

本地位置量

◆ local_pose_sub

local_pose_sub

订阅ROS中的本地位置

◆ local_vel

local_vel

本地速度量

◆ local_vel_sub

local_vel_sub

订阅ROS中的本地速度

◆ mav0

mav0

发送任意mavlink消息

◆ mav_raw_pub

mav_raw_pub

发布原始MAVLink消息到ROS中

◆ mavros_state

mavros_state

MAVROS状态

◆ mavros_sub

mavros_sub

订阅mavros包中消息

◆ offboard_state

offboard_state

Offboard模式状态

◆ offCmd

offCmd

mavros_msgs包中的目标位置信息。

◆ received_imu

received_imu

接收到的IMU数据

◆ ros_node

ros_node

创建ROS节点

◆ rosName

rosName

ROS名称

◆ sendCmdLongService

sendCmdLongService

创建发送长格式的命令给无人机服务代理

◆ setparamService

setparamService

创建参数设置服务代理

◆ state

state

无人机状态量

◆ t1

t1

创建一个线程并开始执行

◆ trueGpsUeCenter

trueGpsUeCenter

真实全球GPS位置

◆ uavAngEular

uavAngEular

无人机欧拉角状态量

◆ uavAngQuatern

uavAngQuatern

无人机姿态角四元数状态量

◆ uavAngRate

uavAngRate

无人机欧拉角速率状态量

◆ uavGlobalPos

uavGlobalPos

从PX4转移到UE4地图的估计全球位置

◆ uavPosNED

uavPosNED

无人机北东地位置状态量

◆ uavVelNED

uavVelNED

无人机北东地速度状态量

◆ vel_pub

vel_pub

发布期望速度数据到ROS中

◆ vel_raw_pub

vel_raw_pub

发布本地原始期望速度数据到ROS中


该类的文档由以下文件生成: