无人机 PX4 飞控 | Offboard 模式详解与gazebo仿真测试
PX4 自动驾驶仪具备很多种控制模式,如下:
- 位置模式
- 手动/自稳模式
- 特技模式
- 环绕模式
- 自动起飞
- 自动降落
- 定点模式
- 跟随模式
- 任务模式
- 返航模式
- Offboard模式
其中通过板载计算机的应用层功能来进行飞行器控制,则需要在Offboard模式下进行
概述
在该模式下,飞行器根据飞行控制栈外部(如机载计算机)提供的设定值控制位置、速度、加速度、姿态以及推力/力矩。
设定值可以通过MAVLink协议提供给飞控
PX4要求外部控制器提供2Hz连续的“有效存在”信号,该信号可由任意支持的 MAVLink 设置点消息提供。
PX4只有在收到该种信号超过1秒后才有效,如果该种信号停止飞行控制栈将重新获得控制权(脱离Offboard模式)。
需要注意的有以下几点:
- 此模式需要位置或位姿信息的提供 - 例如GPS、光流、视觉惯性里程计、mocap等。
- 在该模式下遥控器控制不再被响应,除非改变模式。(在这种模式下,可以在没有任何手动控制器的情况下飞行,通过将参数COM_RC_IN_MODE设置为4:禁用操纵杆输入)
- 飞行器必须已经收到一条 MAVLink 设置点消息,该消息必须持续发送1秒以上,才允许在Offboard模式下解锁或者在飞行中切换至Offboard模式。
- 如果没有以 > 2Hz 的速度收到MAVLink 设置点消息=,飞行器将退出Offboard模式。
- 并非所有 MAVLink 支持的坐标系和字段值都被设定值消息和飞行器支持。
MAVLink 消息
mavros会将收到的期望指令转为下面的mavlink消息,不需要开发者自己构造
下面的 MAVLink 消息及其特定字段和字段值在特定的帧下是可以在Offboard模式下被飞控接收的
SET_POSITION_TARGET_LOCAL_NED
支持以下输入组合:
- 位置设置值 (仅 x,y,z)
- 速度设定值(仅vx,yy,vz)
- 加速度设定值(仅 afx,afy,afz)
- 位置设定值和速度设定值同时输入(速度设定值被作为前馈使用;被叠加到位置控制器的输出上,结果作为速度控制器的输入使用)
- 位置设定值和速度设定值以及加速度设定值同时输入(速度和加速度设定值用作前馈;速度设定值叠加至位置控制器输出,并将结果作为速度控制器的输入;加速度设定值被叠加至速度控制器的输出中,输出结果用于计算推力矢量)。
PX4 支持下面的坐标系设定值:
- 本地坐标系(MAV_FRAME_LOCAL_NED)[注意MAVROS需要接收ENU坐标系的值然后它自动转为NED,组成mavlink消息发送给飞控]
- 机体坐标系( MAV_FRAME_BODY_NED)[位置上还是NED,速度和加速度为机体坐标系FRD]
SET_POSITION_TARGET_GLOBAL_INT
支持以下输入组合:
- 位置设定值(仅lat_int,lon_int,alt)
- 速度设定值(仅vx,vy,vz)
- Thrust setpoint (only afx, afy, afz) [加速度设定值被用来生成归一化的推力设定值(即不支持加速度设定值)。]
- 位置设定值和速度设定值(速度设定值被作为前馈使用;被叠加到位置控制器的输出上,结果作为速度控制器的输入使用)。
PX4 支持下面的坐标系设定值:
- MAV_FRAME_GLOBAL : Global (WGS84) coordinate frame + altitude relative to mean sea level (MSL).
Offboard参数
Offboard模式 受以下参数影响:
- COM_OF_LOSS_T : Offboard 连接超时时间(以秒为单位),超过该时间未检测到offboard连接后将触发 offboard 连接丢失的失效保护措施 ( COM_OBL_RC_ACT)
- COM_OBL_RC_ACT : 当offboard模式控制丢失时切换到的飞行模式(值为 - 0: 位置, 1: 高度, 2: 手动, 3: *返航, 4: 降落).
- COM_RC_OVERRIDE : 遥控器打杆时多旋翼(或者多旋翼模式下的 VOTL)会切换到 位置模式。 默认情况下未启用此功能。
- COM_RC_STICK_OV : 遥控器打杆多少会切换到 位置模式 (如果 COM_RC_OVERRIDE 已启用)。
- COM_RCL_EXCEPT : 该参数指定一种模式,在该模式下将忽略RC丢失及不会触发RC丢失的失效保护动作。 将位 2 置1将在Offboard模式下忽略RC丢失。
Offboard控制固件设置
在进行Offboard开发前,您需要在固件端做两个设置。
1.将遥控开关通道映射到offboard
在 QGroundControl 中加载参数,将RC_MAP_OFFB_SW 参数设置为您用来激活Offboard模式的RC 通道 。 该方法会在脱离Offboard模式后进入位置控制模式。
虽然此步骤不是强制性的,因为可以使用 Mavlink 消息激活Offboard模式。 但这种方法安全多了。
2.启用机载计算机接口
在连接任务计算机的串口上启动MAVLink
硬件设置
通常,有三种方式设置Offboard模式通信。
串口电台
一端连接飞控的 UART
一端连接地面站电脑
板载处理器
在飞行器上部署一台小型将计算机,用 UART 转 USB 适配器连接飞控。 这里有许多可能性,这将取决于除了向自驾仪发送指令外,还想要做什么样的额外机载处理。
安装支架
板载处理器和 WIFI 链接到 ROS
部署在飞行器上的小型计算机除了通过 UART - USB 适配器连接到自动驾驶仪外,同时还可通过WiFi连接至运行 ROS 的地面站。 这可以是上述配备了WiFi适配器的任一计算机。
在 gazebo 中实践 offboard 模式程序控制
写一个ros的节点,节点启动后,飞机自动进入offboard模式,并解锁,然后起飞至设定点位置
代码
//一系列头文件
#include <ros/ros.h>
#include <geometry_msgs/PoseStamped.h>
#include <mavros_msgs/CommandBool.h>
#