FW_class.py API 参考¶
固定翼状态、MAVROS 通信、模式切换、姿态/推力控制以及速度向量转换。
- 源码路径:
uav_controller/scripts/uav_model_lib/FW_class.py - 本页函数/方法数:21
- 行号对应本文档生成时采用的源码版本;源码调整后应重新生成本页。
阅读方式
本页用于快速检索签名与调用关系。核心控制和算法推导请先阅读“开发指南”中的对应章节。
uav.__init__¶
__init__(self, type='plane', uav_index=None)
- 源码位置:第 28 行
- 类别:初始化
- 作用:初始化
uav的参数、状态缓存以及所需的通信或算法对象。 - 主要调用:
np.array,self.mavros_client,self.mavros_publisher,self.mavros_subscriber,str,time.time - 写入状态:
self.R_enu2ned,self.armed,self.avoid,self.body_acc,self.body_vel,self.control_mode,self.global_acc,self.global_pose,self.global_vel,self.index,self.local_pose,self.local_vel,self.mode,self.orientation,self.state,self.time_now,self.topic_form,self.type,self.velocity_sp
uav.mavros_subscriber¶
mavros_subscriber(self)
- 源码位置:第 65 行
- 类别:内部计算/辅助
- 作用:创建该对象所需的 MAVROS、真值和控制话题订阅者。
- 主要调用:
rospy.Subscriber - 写入状态:
self.acc_sub,self.att_control_sub,self.body_vel_sub,self.global_pose_sub,self.global_vel_sub,self.local_pose_sub,self.local_vel_sub,self.uav_state_sub,self.vel_control_sub
uav.mavros_publisher¶
mavros_publisher(self)
- 源码位置:第 134 行
- 类别:内部计算/辅助
- 作用:创建 MAVROS 设定值或统一控制话题发布者。
- 主要调用:
rospy.Publisher - 写入状态:
self.plane_att_pub,self.plane_local_vel_pub,self.plane_pos_pub
uav.mavros_client¶
mavros_client(self)
- 源码位置:第 151 行
- 类别:内部计算/辅助
- 作用:等待并创建解锁、模式、起飞或 VTOL 转换服务代理。
- 主要调用:
rospy.ServiceProxy,rospy.wait_for_service - 写入状态:
self.arming_client,self.set_mode_client,self.takeoff_client
uav.local_pose_cb¶
local_pose_cb(self, data)
- 源码位置:第 170 行
- 类别:ROS 回调
- 作用:读取位姿消息并更新位置与四元数姿态缓存。
- 主要调用:无显式函数调用
- 写入状态:
self.local_pose,self.orientation
uav.global_pose_cb¶
global_pose_cb(self, data)
- 源码位置:第 184 行
- 类别:ROS 回调
- 作用:读取 NavSatFix 消息并更新经纬度和高度缓存。
- 主要调用:无显式函数调用
- 写入状态:
self.global_pose
uav.local_vel_cb¶
local_vel_cb(self, data)
- 源码位置:第 192 行
- 类别:ROS 回调
- 作用:读取速度消息并更新对应坐标系下的速度缓存。
- 主要调用:无显式函数调用
- 写入状态:
self.local_vel
uav.global_vel_cb¶
global_vel_cb(self, data)
- 源码位置:第 200 行
- 类别:ROS 回调
- 作用:读取速度消息并更新对应坐标系下的速度缓存。
- 主要调用:无显式函数调用
- 写入状态:
self.global_vel
uav.body_vel_cb¶
body_vel_cb(self, data)
- 源码位置:第 208 行
- 类别:ROS 回调
- 作用:读取速度消息并更新对应坐标系下的速度缓存。
- 主要调用:无显式函数调用
- 写入状态:
self.body_vel
uav.acc_cb¶
acc_cb(self, data)
- 源码位置:第 216 行
- 类别:ROS 回调
- 作用:读取 IMU 加速度并根据姿态转换到全局坐标系,同时扣除重力项。
- 主要调用:
np.copy,np.dot,quaternion_matrix - 写入状态:
self.body_acc,self.global_acc
uav.state_cb¶
state_cb(self, data)
- 源码位置:第 231 行
- 类别:ROS 回调
- 作用:读取 MAVROS 状态消息并更新解锁或飞行模式状态。
- 主要调用:无显式函数调用
- 写入状态:
self.state
uav.vel_control_cb¶
vel_control_cb(self, msg)
- 源码位置:第 234 行
- 类别:ROS 回调
- 作用:读取速度消息并更新对应坐标系下的速度缓存。
- 主要调用:无显式函数调用
- 写入状态:
self.control_mode,self.velocity_sp
uav.att_control_cb¶
att_control_cb(self, msg)
- 源码位置:第 242 行
- 类别:ROS 回调
- 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
- 主要调用:无显式函数调用
- 写入状态:
self.attitude_sp,self.control_mode
uav.takeoff¶
takeoff(self)
- 源码位置:第 246 行
- 类别:飞行状态控制
- 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
- 主要调用:
geod.Direct,rospy.logerr,rospy.loginfo,self.arming,self.takeoff_client - 写入状态:不直接写入对象属性
uav.arming¶
arming(self, should_arm)
- 源码位置:第 270 行
- 类别:飞行状态控制
- 作用:arming vehicle
- 主要调用:
rospy.logerr,rospy.loginfo,self.arming_client - 写入状态:不直接写入对象属性
uav.set_mode¶
set_mode(self, mode)
- 源码位置:第 281 行
- 类别:飞行状态控制
- 作用:Set the mode of the vehicle.
- 主要调用:
rospy.logerr,rospy.loginfo,rospy.logwarn,self.set_mode_client - 写入状态:不直接写入对象属性
uav.set_offboard¶
set_offboard(self)
- 源码位置:第 297 行
- 类别:飞行状态控制
- 作用:Switch the vehicle to OFFBOARD mode.
- 主要调用:
self.set_mode - 写入状态:不直接写入对象属性
uav.MotionControl¶
MotionControl(self, control_type, control_vector, control_force=0.6)
- 源码位置:第 308 行
- 类别:控制接口
- 作用:按控制类型组装 MAVROS 设定值消息,并发布到 PX4。
- 主要调用:
AttitudeTarget,Eular2Quater,PoseStamped,PositionTarget,rospy.logerr,self.plane_att_pub.publish,self.plane_local_vel_pub.publish,self.plane_pos_pub.publish - 写入状态:不直接写入对象属性
VectorControlPlane.__init__¶
__init__(self, type='uav', uav_index=None)
- 源码位置:第 361 行
- 类别:初始化
- 作用:初始化
VectorControlPlane的参数、状态缓存以及所需的通信或算法对象。 - 主要调用:
PID,__init__,super - 写入状态:
self.B_err_pid,self.E_err_pid,self.a_pid,self.pitch_h_pid,self.pitch_pid,self.psi_pid
VectorControlPlane.tecsControl¶
tecsControl(self, a_sp, desire_d_h, roll, dt)
- 源码位置:第 452 行
- 类别:内部计算/辅助
- 作用:根据速度、高度变化率和加速度构造能量/能量分配误差,输出纵向控制量与俯仰角。
- 主要调用:
np.abs,np.arctan,np.clip,np.isnan,np.sqrt,self.B_err_pid.calculate,self.E_err_pid.calculate,self.pitch_h_pid.calculate - 写入状态:
self.force
VectorControlPlane.Vec2Ori¶
Vec2Ori(self, desire_vec, dt=-1, method=1)
- 源码位置:第 483 行
- 类别:内部计算/辅助
- 作用:把期望速度向量转换为爬升率、偏航角、滚转角和轴向加速度需求。
- 主要调用:
np.append,np.arccos,np.arctan,np.arctan2,np.clip,np.copy,np.cross,np.linalg.norm,np.sign,self.psi_pid.calculate - 写入状态:
self.before_time,self.time_now