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

2023-05-16

原理说明

PX4飞控控制系统图

图片

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

 

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

 

 

室内T265定点飞行

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


消息流如下图所示:

 

图片

 

首先由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定点飞行时的节点图如下图所示:

图片

 

室内T265指点飞行

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

此时消息流如下图所示:

 

 

图片

 

也即是在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指点飞行时的节点图如下所示:

图片

 

室外GPS定点飞行

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

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

 

 

室外GPS指点飞行

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

图片

也即是在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

图片

图片

 

 

 

室外用GPS时

EKF2_AID_MASK选择GPS

图片


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

图片

 

室内T265定点飞行

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

 

图片

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

 

室内T265指点飞行

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

 

图片

 

再启动控制脚本

roslaunch p450_experiment p450_vio_control.launch

 

图片

 

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

 

图片

 

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

图片

其中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轴指向无人机正上方,单位为米。给无人机发送相对期望位置选择这个坐标系。

 

图片

 

这里我们发送的期望位置是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飞控的期望位置点。

 

图片

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

 

需要降落时我们可以将遥控器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/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

技术分享 | P450-详解室内外指点飞行来啦 的相关文章

  • 关于OLED屏的笔记

    OLED即有机发光管 Organic Light Emitting Diode OLED OLED显示技术具有自发光 广视角 几乎无穷高的对比度 较低功耗 极高反应速度 可用于绕曲性面板 使用温度范围广 构造及制程简单等有点 xff0c 被
  • Ubuntu 上 Let‘s Encrypt 生成泛域名证书

    安装生成工具certbot xff1a apt install certbot 查看安装在哪 xff1a which certbot 使用certbot xff08 位置在 usr bin certbot xff09 生成证书 xff1a
  • DMA的补充笔记

    DMA有两个总线 xff1a 1 DMA存储器总线 xff1a DMA通过该总线来执行存储器数据的传入和传出 2 DMA外设总线 xff1a DMA通过该总线访问AHB外设 xff08 AHB主要是针对高效率 高频宽以及快速系统模块所设计的

随机推荐

  • 关于ADC的笔记1

    ADC xff0c 全称Anlog to Digital Converter xff0c 模拟 数字转换器 是指将连续变量的模拟信号转换为离散的数字信号的器件 xff0c 我们能通过ADC将外界的电压值读入我们的单片机中 常见的ADC有两种
  • STM32-ADC单通道采集实验

    实验要求 xff1a 通过ADC1通道 xff08 PA1 xff09 采集电位器的电压 xff0c 并显示ADC转换的数字量及换算后的电压值 首先要确定最小刻度 Vref 61 3 3V xff0c 所以输入电压有效范围在0V lt 61
  • jetson xavier nx安装ROS Melodic

    1 前期准备 打开系统设置 软件和更新 xff0c 确保图示的选项已选中 点击close xff0c 选择reload 在不同的教程里搜到的这一步都不同 xff0c 似乎没什么影响 xff0c 就很迷 2 设置你的源文件列表 设置计算机以接
  • sylixos标准工程移植到Lite版本

    1 概述 针对低端处理器 xff08 如ARM M系列处理器 xff09 的开发工作 xff0c 翼辉信息推出了SylixOS Lite工程版本 SylixOS Lite版本工程属于SylixOS轻量级工程 xff0c 与标准的SylixO
  • Linux下TCP/IP网络编程示例——实现服务器/客户端通信(一)

    一 说明 最近梳理网络编程的一些知识点时 xff0c 整理了一些笔记 xff0c 写了一些demo例程 xff0c 主要包含下面几部分 xff0c 后面会陆续完成 1 Linux下TCP IP网络编程示例 实现服务器 客户端通信 xff08
  • OpenMV色块寻找

    OpenMV入门 xff0c 从入门到入坟 gt lt 此文章大部分内容取自OpenMV官方中文参考文档 详情看OpenMV官方中文参考文档 文章目录 一 sensor snapshot 拍一张照片二 image find blogs 查找
  • 四轴 PID 调试

    四轴 PID 用到了串级 PID xff0c 即两个闭环 xff0c 分别为 角速度环 xff08 内环 xff09 和角度环 xff08 外环 xff09 调试时 xff0c 先整定内环PID xff0c 再整定外环 P 内环 P xff
  • bind:address already in use的深刻教训以及解决办法

    今天在linux下 xff0c 编写了一个简单的回射客户 服务器 xff08 就是客户机从控制台标准输入并发送数据 xff0c 服务端接受数据 xff0c 但是不对数据进行处理 xff0c 然后将数据返回 xff0c 交由客户机标准输出 x
  • stm32简说步进电机(有代码)!!!

    步进电机 xff08 也称脉冲电机 xff09 xff08 将电脉冲转换为相应的角位移或线位移的电磁机械装置 xff0c 具有快速启动 xff0c 停能力 xff0c 在电机的负荷不超过它能提供的动态转矩时 xff0c 可以通过输入脉冲来控
  • 阿里云Linux Ubentu16.04 安装 Nginx 并配置 https,后续升级openssl和Nginx

    一 准备工作 进入安装目录 cd usr local 下载nginx xff08 官网选择版本稳定版即可 xff1a http nginx org en download html xff09 wget http nginx org dow
  • C++多线程面向对象封装

    相信很多人都读过 C 43 43 沉思录 这本经典著作 xff0c 在我艰难地读完整本书后 xff0c 留给我印象最深的只有一句话 xff1a 用类表示概念 xff0c 用类解决问题 关 于多线程编程 xff0c 如果不是特别需要 xff0
  • stm32(寄存器)超声波程序

    我们是基于stm32f103系列 xff0c 超声波模块用的是 xff1a HC SR04 寄存器版的代码 编译器用的是 xff1a keil5 在此 xff1a 输入捕获用的是TIM2 CH1 用的是PA0 xff0c 可以从开发板原理图
  • 127.0.0.1和localhost和本机IP三者的区别!!!

    1 xff0c 什么是环回地址 xff1f xff1f 与127 0 0 1的区别呢 xff1f xff1f 环回地址是主机用于向自身发送通信的一个特殊地址 xff08 也就是一个特殊的目的地址 xff09 可以这么说 xff1a 同一台主
  • malloc函数,大大的详解

    很多学过C的人对malloc都不是很了解 xff0c 知道使用malloc要加头文件 知道malloc是分配一块连续的内存 xff0c 知道和free函数是一起用的 但是但是 xff1a 一部分人还是将 xff1a malloc当作系统所提
  • Windows程序内部运行原理

    本文大部分内容都是摘自孙鑫老师 xff0c 在下就是一个简单的总结 xff0c 归纳 xff0c 希望对大家有用 xff01 xff01 xff01 xff01 Windows操作系统是一种完全不同于传统的dos方式的程序设计方法 xff0
  • the english of the simple view

    自述 xff1a 我的英语很差 xff0c 四级至今没有过 xff0c 在新东方报班学的一些东西 xff0c 只是想着简单的记录下来 xff0c 权当做新一次的整理笔记 xff0c 归纳 xff0c 希望也能帮助大家 1 200个核心词汇
  • 小小鉴赏(闹着玩)

    when you believe xff1a 作曲 Stephen Schwartz 作词 Stephen Schwartz Many xff08 span class hljs attribute 39 meni span xff09 n
  • 技术分享 | GPS无人机集群

    随着人工智能的发展 xff0c 机器人行业也进入了高速发展的阶段 xff0c 在今年春晚 xff0c 也出现了无人机的身影 xff0c 在高速发展的同时 xff0c 也让人们逐渐体会到单机器人能做的事情是有限的 xff0c 多机器人 编队
  • 技术分享 | 开源不稳?试试DJI N3飞控呢

    原创阿木实验室 1 DJI N3飞控简介 N3内置双IMU冗余设置 xff0c 结合在线故障检测算法 xff0c 可实现双IMU数据实时互为备份 xff0c 极大地提高了飞行器可靠性 集成8GB工业级SD卡的 黑匣子 数据记录系统 xff0
  • 技术分享 | P450-详解室内外指点飞行来啦

    原理说明 PX4飞控控制系统图 定点飞行就是由传感器 xff08 T265 GPS xff09 获得当前位置数据 xff0c 并且把当前位置作为期望位置 xff0c 即可实现定点飞行 xff0c 此时飞控处于position模式 指点飞行为