技术分享 | P450-详解室内外指点飞行来啦

原理说明

PX4飞控控制系统图

技术分享 | P450-详解室内外指点飞行来啦

定点飞行就是由传感器(T265/GPS)获得当前位置数据,并且把当前位置作为期望位置,即可实现定点飞行,此时飞控处于position模式。

 

指点飞行为在定点飞行基础上,由板载计算机发送期望位置给飞控,飞控由此期望位置和由传感器(T265/GPS)得到的的当前位置实现位置控制,即实现指点飞行,此时飞控处于offboard模式。

 

 

室内T265定点飞行

实现T265室内定点飞行,只需要将T265计算出的位置数据传给PX4飞控即可,此时飞控处于position模式。


消息流如下图所示:

 

技术分享 | P450-详解室内外指点飞行来啦

 

首先由T265的驱动librealsense获得T265计算出的位置数据。

再由realsense_camera节点将其以ROS话题/t265/odom/sample的形式发布出去。

再由px4_pos_estimator节点将此话题转为/mavros/vision_pose/pose话题发送给MAVROS。

MAVROS再将其转为对应的mavlink消息类型VISION_POSE_ESTIMATE发送给PX4飞控,PX4飞控由此获得来自于T265的位置数据并作为自己的当前位置。

 

运行室内T265定点飞行时的节点图如下图所示:

技术分享 | P450-详解室内外指点飞行来啦

 

室内T265指点飞行

实现室内指点飞行只需要在室内定点的基础上,也就是把T265的位置数据传输给PX4飞控的基础上,再通过板载计算机发送期望位置给PX4飞控,此时飞控处于offboard模式。
 

此时消息流如下图所示:

 

 

技术分享 | P450-详解室内外指点飞行来啦

 

也即是在T265定点的基础上,我们在终端输入期望位置,由terminal_control节点以话题/prometheus/control_command的形式发送给px4_sender节点,再由px4_sender节点将期望位置的以话题/mavros/setpoint_raw/local的形式发送给MAVROS。

由MAVROS转为mavlink消息类型SET_POSITION_TARGET_LOCAL_NED(#84号mavlink消息)发送给PX4飞控,PX4飞控由此得到自己的期望位置。有了当前位置和期望位置后,就可以基于PX4自身控制环实现位置控制,使得无人机飞到我们设定的期望位置点。


运行室内T265指点飞行时的节点图如下所示:

技术分享 | P450-详解室内外指点飞行来啦

 

室外GPS定点飞行

室外GPS定点飞行只需要GPS的位置数据传给PX4飞控,飞控处于position模式。

GPS模块直接插在PX4飞控上,PX4飞控可直接获得GPS的位置数据。

 

 

室外GPS指点飞行

在室外GPS定点飞行的基础上,再通过板载计算机发送期望位置给PX4飞控,此时飞控处于offboard模式。
此时消息流如下图所示:

技术分享 | P450-详解室内外指点飞行来啦

也即是在GPS定点的基础上,我们在终端输入期望位置,由terminalcontrol节点以话题/prometheus/control_command的形式发送给px4_sender节点,再由px4_sender节点将期望位置的以话题/mavros/setpointraw/local的形式发送给MAVROS。

由MAVROS转为mavlink消息类型

SET_POSITION_TARGET_LOCAL_NED给PX4飞控,PX4飞控由此得到自己的期望位置。有了当前位置和期望位置后,就可以基于PX4自身控制环实现位置控制,使得无人机飞到设定的期望位置点。

 

 

实机操作

PX4飞控参数修改

室内用T265时EKF2_AID_MASK 选择 vision position fusion 和 vision yaw fusion   EKF2_HGT_MODE设置为 Vision

技术分享 | P450-详解室内外指点飞行来啦

技术分享 | P450-详解室内外指点飞行来啦

 

 

 

室外用GPS时

EKF2_AID_MASK选择GPS

技术分享 | P450-详解室内外指点飞行来啦


EKF2_HGT_MODE选择气压计作为作为高度估计的主要来源
 

技术分享 | P450-详解室内外指点飞行来啦

 

室内T265定点飞行

先启动基本vio脚本
roslaunch p450_experiment p450_vio_onboard.launch

 

技术分享 | P450-详解室内外指点飞行来啦

然后遥控器定点模式下解锁起飞即可。

 

室内T265指点飞行

先启动基本vio脚本
roslaunch p450_experiment p450_vio_onboard.launch

 

技术分享 | P450-详解室内外指点飞行来啦

 

再启动控制脚本

roslaunch p450_experiment p450_vio_control.launch

 

技术分享 | P450-详解室内外指点飞行来啦

 

在此命令行控制终端输入0并敲回车,表示选择命令输入控制。

 

技术分享 | P450-详解室内外指点飞行来啦

 

然后命令行控制终端会显示如下

技术分享 | P450-详解室内外指点飞行来啦

其中0表示的是怠速;意思就是飞机会进入offboard模式,但是在该模式下,没有对飞机进行任何指令的发送,飞机也不会有任何动作,这个指令一般也可以不用。

 

1 表示的是 起飞;起飞点为当前点,起飞高度通过 yaml参数设置,单位是米,默认起飞高度是0.5m。

 

2 表示的是 悬停;飞机正在飞行过程中如果接受到 2 指令,会在当前时刻进入悬停状态。

 

3 表示的是 降落;降落速度通过 yaml参数设置,单位是m/s ,默认降落速度为0.2m/s 。还有一个 上锁高度,到达上锁高度之后飞机会进入飞控本身的降落模式进而缓缓着地, 上锁高度通过 yaml 参数进行设置,单位是米,默认是 0.18m,即认为离地不到20cm的时候进入飞控本身的降落飞行模式(AUTO_LAND)。

 

4 表示的是 move模式;该模式就包含我们所称的指点飞行功能,在此模式下,又有5种子模式, 0对应XYZ_POS, 1对应XY_POS_Z_VEL, 2对应XY_VEL_Z_POS, 3对应XYZ_VEL, 5对应TRAJECTORY;对应的功能为空间位置控制, 水平面位置控制高度速度控制, 水平面速度控制高度定高控制, 空间速度控制, 以及最后的轨迹跟踪控制。

 

然后我们在此命令行控制终端首先输入4并敲回车 ,表示选择move模式,然后输入 0 并敲回车,表示选择空间位置控制,然后输入 0 并敲回车,表示选择ENU_FRAME惯性坐标系,然后依次输入期望的位置坐标值(即ENU_FRAME惯性坐标系下的坐标,单位为米)x,y,z和航向角yaw(一般为0)。


对坐标系做下说明:ENU_FRAME惯性坐标系始终以无人机初始上电点为原点,且x轴指向无人机机头方向,y轴指向无人机正左方,z轴指向无人机正上方,单位为米。给无人机发送绝对期望位置选择这个坐标系。


BODY_FRAME机体坐标系始终以无人机本身为原点,无论无人机飞到哪里都是以无人机当前位置为原点,且x轴指向无人机机头方向,y轴指向无人机正左方,z轴指向无人机正上方,单位为米。给无人机发送相对期望位置选择这个坐标系。

 

技术分享 | P450-详解室内外指点飞行来啦

 

这里我们发送的期望位置是ENU_FRAME惯性坐标系下x为0.5,y为0.5,z为0.8的坐标点,偏航yaw为0,表示让无人机飞到相对于初始上电点(原点)往前(x轴)0.5m,往左(y轴)0.5m,往上(z轴)0.8m的期望位置,航向角保持不变。

 

在输完期望航向角并敲回车后,我们再遥控器定点模式(SWC拨杆切到中档)下解锁并切到offboard模式(SWD拨杆切到下档),无人机会自动起飞到发送给PX4飞控的期望位置点。

 

技术分享 | P450-详解室内外指点飞行来啦

上图可看飞机已经到达并且稳定在我们设定的期望位置点。

 

需要降落时我们可以将遥控器SWD拨杆切至上档退出offboard模式,飞控会自动进入position模式(注意SWC拨杆是一直保持在中档,不需要动),然后我们可以手动操控无人机降落。

 

室外GPS指点飞行可以参考室内T265指点飞行步骤。

 

 

更多详细步骤和视频可参见P450wiki:

https://prometheus-wiki.readthedocs.io/zh_CN/latest/docs/p450/5-%E8%BF%9B%E9%98%B6%E5%8A%9F%E8%83%BD-%E5%AE%A4%E5%86%85%E6%8C%87%E7%82%B9%E9%A3%9E%E8%A1%8C.html

作者-阿木实验室:新 一

 

关注阿木实验室公众号,带您了解更多知识干货~

 阿木实验室

官网:https://www.amovlab.com/

上一篇:PX4官方动态 | 2021年开发者峰会发布


下一篇:爬取某个网址高清图片