VTOL_class.py API 参考

垂起固定翼的多旋翼/固定翼状态管理、转换服务和两阶段控制。

  • 源码路径:uav_controller/scripts/uav_model_lib/VTOL_class.py
  • 本页函数/方法数:22
  • 行号对应本文档生成时采用的源码版本;源码调整后应重新生成本页。

阅读方式

本页用于快速检索签名与调用关系。核心控制和算法推导请先阅读“开发指南”中的对应章节。

uav_vtol.__init__

__init__(self, uav_index, uav_amount=2)
  • 源码位置:第 31 行
  • 类别:初始化
  • 作用:初始化 uav_vtol 的参数、状态缓存以及所需的通信或算法对象。
  • 主要调用rospy.loginfo, self.mavros_client, self.mavros_publisher, self.mavros_subscriber, str, time.time
  • 写入状态self.armed, self.avoid, self.before_time, self.fly_mode, self.force, self.index, self.mode, self.orientation, self.pose, self.time_now, self.topic_form, self.type, self.velocity

uav_vtol.__del__

__del__(self)
  • 源码位置:第 54 行
  • 类别:资源清理
  • 作用:注销订阅并关闭服务代理,释放该对象持有的 ROS 资源。
  • 主要调用rospy.loginfo, self.arm_client.close, self.local_pose_sub.unregister, self.set_mode_client.close, self.uav_state_sub.unregister, str
  • 写入状态:不直接写入对象属性

uav_vtol.AvoidCB

AvoidCB(self, msg)
  • 源码位置:第 62 行
  • 类别:ROS 回调
  • 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
  • 主要调用len, range, str
  • 写入状态self.avoid

uav_vtol.vel_CB

vel_CB(self, msg)
  • 源码位置:第 72 行
  • 类别:ROS 回调
  • 作用:读取速度消息并更新对应坐标系下的速度缓存。
  • 主要调用:无显式函数调用
  • 写入状态self.velocity

uav_vtol.LocalPoseCB

LocalPoseCB(self, data)
  • 源码位置:第 75 行
  • 类别:ROS 回调
  • 作用:读取位姿消息并更新位置与四元数姿态缓存。
  • 主要调用:无显式函数调用
  • 写入状态self.orientation, self.pose

uav_vtol.mavros_subscriber

mavros_subscriber(self)
  • 源码位置:第 85 行
  • 类别:内部计算/辅助
  • 作用:创建该对象所需的 MAVROS、真值和控制话题订阅者。
  • 主要调用rospy.Subscriber
  • 写入状态self.acc_sub, self.fly_state_sub, self.global_vel_sub, self.local_pose_sub, self.uav_state_sub, self.vel_sub, self.velocity_sub

uav_vtol.mavros_publisher

mavros_publisher(self)
  • 源码位置:第 122 行
  • 类别:内部计算/辅助
  • 作用:创建 MAVROS 设定值或统一控制话题发布者。
  • 主要调用rospy.Publisher
  • 写入状态self.drone_pub, self.plane_att_pub, self.plane_pos_pub

uav_vtol.mavros_client

mavros_client(self)
  • 源码位置:第 138 行
  • 类别:内部计算/辅助
  • 作用:等待并创建解锁、模式、起飞或 VTOL 转换服务代理。
  • 主要调用rospy.ServiceProxy, rospy.loginfo, rospy.wait_for_service
  • 写入状态self.arm_client, self.set_mode_client, self.vtol_trans_client

uav_vtol.globalVelCB

globalVelCB(self, data)
  • 源码位置:第 155 行
  • 类别:ROS 回调
  • 作用:读取速度消息并更新对应坐标系下的速度缓存。
  • 主要调用:无显式函数调用
  • 写入状态self.global_vel

uav_vtol.accCB

accCB(self, data)
  • 源码位置:第 163 行
  • 类别:ROS 回调
  • 作用:读取 IMU 加速度并根据姿态转换到全局坐标系,同时扣除重力项。
  • 主要调用np.copy, np.dot, quaternion_matrix
  • 写入状态self.acc, self.global_acc

uav_vtol.bodyVelCB

bodyVelCB(self, data)
  • 源码位置:第 177 行
  • 类别:ROS 回调
  • 作用:读取速度消息并更新对应坐标系下的速度缓存。
  • 主要调用:无显式函数调用
  • 写入状态self.body_vel

uav_vtol.StateCB

StateCB(self, data)
  • 源码位置:第 185 行
  • 类别:ROS 回调
  • 作用:读取 MAVROS 状态消息并更新解锁或飞行模式状态。
  • 主要调用:无显式函数调用
  • 写入状态self.armed, self.mode

uav_vtol.FlyStateCB

FlyStateCB(self, data)
  • 源码位置:第 189 行
  • 类别:ROS 回调
  • 作用:把 MAVROS ExtendedState 的 VTOL 状态码映射为内部飞行阶段字符串。
  • 主要调用rospy.logerr, str
  • 写入状态self.fly_mode

uav_vtol.ModeSet

ModeSet(self, mode)
  • 源码位置:第 202 行
  • 类别:飞行状态控制
  • 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
  • 主要调用rospy.logerr, self.set_mode_client
  • 写入状态:不直接写入对象属性

uav_vtol.Arming

Arming(self, arm_command)
  • 源码位置:第 210 行
  • 类别:飞行状态控制
  • 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
  • 主要调用rospy.logerr, self.arm_client
  • 写入状态:不直接写入对象属性

uav_vtol.FlyModeTrans

FlyModeTrans(self, mode)
  • 源码位置:第 218 行
  • 类别:控制接口
  • 作用:调用 MAVROS VTOL 转换服务,在多旋翼态和固定翼态之间请求切换。
  • 主要调用Header, rospy.logerr, rospy.logwarn, self.vtol_trans_client
  • 写入状态:不直接写入对象属性

uav_vtol.LandOrigin

LandOrigin(self)
  • 源码位置:第 234 行
  • 类别:飞行状态控制
  • 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
  • 主要调用self.ModeSet
  • 写入状态:不直接写入对象属性

uav_vtol.Manual

Manual(self)
  • 源码位置:第 240 行
  • 类别:飞行状态控制
  • 作用:源码内部辅助函数;结合签名、状态写入和主要调用可定位其在调用链中的职责。
  • 主要调用self.ModeSet
  • 写入状态:不直接写入对象属性

uav_vtol.MotionControl

MotionControl(self, control_type, control_vector, control_force=0.6)
  • 源码位置:第 247 行
  • 类别:控制接口
  • 作用:按控制类型组装 MAVROS 设定值消息,并发布到 PX4。
  • 主要调用AttitudeTarget, Eular2Quater, PoseStamped, PositionTarget, rospy.logerr, rospy.logwarn, self.drone_pub.publish, self.plane_att_pub.publish, self.plane_pos_pub.publish
  • 写入状态:不直接写入对象属性

VectorControlVtol.__init__

__init__(self, uav_index, uav_amount)
  • 源码位置:第 335 行
  • 类别:初始化
  • 作用:初始化 VectorControlVtol 的参数、状态缓存以及所需的通信或算法对象。
  • 主要调用PID, __init__, super
  • 写入状态self.B_err_pid, self.E_err_pid, self.a_pid, self.pitch_pid, self.psi_pid

VectorControlVtol.tecsControl

tecsControl(self, a, desire_v, roll, dt)
  • 源码位置:第 409 行
  • 类别:内部计算/辅助
  • 作用:根据速度、高度变化率和加速度构造能量/能量分配误差,输出纵向控制量与俯仰角。
  • 主要调用np.abs, np.arcsin, np.clip, np.isnan, np.linalg.norm, np.sqrt, self.B_err_pid.calculate, self.E_err_pid.calculate, self.pitch_pid.calculate
  • 写入状态self.force

VectorControlVtol.Vec2Ori

Vec2Ori(self, desire_vec, dt=-1, method=0)
  • 源码位置:第 439 行
  • 类别:内部计算/辅助
  • 作用:把期望速度向量转换为爬升率、偏航角、滚转角和轴向加速度需求。
  • 主要调用np.append, np.arccos, np.arctan, np.arctan2, np.clip, np.copy, np.cross, np.linalg.norm, np.sign, self.a_pid.calculate
  • 写入状态self.before_time, self.time_now