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