PX4学习笔记3: 速度控制

2023-05-16

记录一下PX4在offboard板外模式下用速度控制四旋翼的过程.
参考资料如下:

  1. PX4板外模式教程
  2. youtube速度控制小实验
  3. PX4飞行模式
  4. offboard模式
  5. offboard模式控制例子
    注意:必须2Hz以上的频率发布控制消息,否则PX4则自动由offboard切会返航return模式(一直网往上飞至一定高度后返航,可由以下参数进行调整)
    在这里插入图片描述

1.mavros话题

详见: mavros话题
四旋翼的控制量主要为[x,y,z,roll,pitch,yaw,vx,vy,vz,wx,wy,wz];也就是位置和姿态以及两者的变化率共12个变量.
其中位置在mavros中包括global和local两种,global指的是经纬高LLA,通常会转化成东北天ENU,local指得是在Gazebo坐标系下的坐标和姿态(xyzw四元数表示). 通常可以使用发布local坐标的位置进行控制, 也可以使用速度控制. 话题如下:
以下为local坐标控制:
在这里插入图片描述
以下为速度控制:
在这里插入图片描述

2.youtube速度控制小实验

详见本文摘要参考链接2.
主要分为一下几步:

  • 启动PX4在Gazebo中的SITL
  • 发布位置控制消息,同时打开QGC地面站,切换到Offboard模式
  • 发布速度控制消息,停止发布位置控制消息
  • PX4飞机将以发布的速度消息飞行.
# 参考: https://www.youtube.com/watch?v=2jksI-S3ojY

## 1.发送位置
rostopic pub -r 20 /mavros/setpoint_position/local geometry_msgs/PoseStamped "header:
+ 'Tab键'+光标输入改变数字  "
## 2.切换到Offboard模式
rosrun mavros mavsys mode -c OFFBOARD
# 解锁
rosrun mavros mavsafety arm

## 3.发送速度
rostopic pub -r 20 /mavros/setpoint_velocity/cmd_vel_unstamped geometry_msgs/Twist "linear:
+ 'Tab键'+光标输入改变数字  "
### 关闭发布位置的终端,飞机将以速度消息控制飞行.

3.body frame下的速度控制

以上速度和位置控制都是在NED坐标系下的,在gazebo的SITL仿真中即为设置在gazebo坐标系的xyz方向的分量。要使用机体系下的速度控制,先给出参考:
机体系速度控制1
机体系速度控制2
body_frame_vel
机体系速度控制3
offboard_avoidance

setpoint_raw/local消息如下:
在这里插入图片描述
其中各个变量含义如下:

坐标系选择

uint8 coordinate_frame表示坐标系;
在这里插入图片描述
1和7分别表示LOCAL的北东地坐标系和offset,8和9分别表示机体坐标系和offset。

控制变量选择

uint16 type_mask 表示要控制变量的忽略码字。
在这里插入图片描述
共12位,如果要忽略多位,只需要将对应的码相加即可。
如速度控制的码字应该是111,111,000,111等于2*2048-1-8-16-32=4039。
速度控制加上偏航角控制应该是:101,111,000,111等于3015
位置控制的码字应该是111,111,111,000,等于4088.
或者参考以下问题中的写法:https://github.com/mavlink/mavros/issues/909
like this:

   while(ros::ok() && !this->manual){
        mavros_msgs::PositionTarget velocity_msg;
        velocity_msg.coordinate_frame = mavros_msgs::PositionTarget::FRAME_BODY_NED;
        velocity_msg.header.frame_id = "drone";
        velocity_msg.type_mask = mavros_msgs::PositionTarget::IGNORE_PX |
                                 mavros_msgs::PositionTarget::IGNORE_PY |
                                 mavros_msgs::PositionTarget::IGNORE_PZ |
                                 mavros_msgs::PositionTarget::IGNORE_AFX |
                                 mavros_msgs::PositionTarget::IGNORE_AFY |
                                 mavros_msgs::PositionTarget::IGNORE_AFZ |
                                 mavros_msgs::PositionTarget::FORCE |
                                 mavros_msgs::PositionTarget::IGNORE_YAW |
                                 mavros_msgs::PositionTarget::IGNORE_YAW_RATE ;
        velocity_msg.header.stamp = ros::Time::now();

        velocity_msg.velocity.x = this->xs;
        velocity_msg.velocity.y = this->ys;
        velocity_msg.velocity.z = this->zs;

        if(this->testen){
            velocity_msg.velocity.x = 0.0;
            velocity_msg.velocity.y = -0.4;
            velocity_msg.velocity.z = 0.0;
        }

大佬还是很多。参考:
控制节点的学习案例
机体系速度的学习案例2

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

PX4学习笔记3: 速度控制 的相关文章

随机推荐

  • PX4学习(2)——原生固件框架分析

    本文转自阿木社区 xff1a 搭建好了编译环境 xff0c 装上了QT xff0c 就迫不及待的想看看代码的内容 xff0c 结果 一看框架是懵逼的状态 怎么办 xff0c 查阅资料慢慢梳理呗 xff5e 框架分析 xff08 一 xff0
  • 【航模插头总结】 ec3,ec5,t插,xt60,xt90,xt150,as150,mt60,mt30

    在模型接插件行业 xff0c 常用的模型插头无非就是几种 EC2插头 xff0c EC5插头 xff0c EC3插头 xff0c T 插头 xff0c XT60插头 xff0c XT90插头 xff0c XT150插头 xff0c AS15
  • 【算法基础学习 4】互补滤波算法——PX4姿态估计

    目录 应用场景 名词解释 陀螺仪 加速度计 磁力计 xff08 又叫磁罗盘 xff09 坐标系 姿态表示 滤波原理 滤波主要过程 预备知识 预测 校正 加速度计校正 磁力计校正 更新四元数 源码分析 主程序运行流程图 函数功能简述 源码分析
  • 【视觉SLAM之认识摄像头】

    视觉SLAM 了解摄像机单目摄像机双目摄像机 了解摄像机 从这篇文章开始 xff0c 我将用20篇文章带你了解视觉SLAM 我们先来了解一下摄像机 摄像头分为几种 xff0c 分别是 xff1a 单目摄像机双目摄像机深度摄像机 通过一个表格
  • 到底什么是非线性优化?

    你是否也对非线性优化这个领域望而却步 xff1f 你是否也在思索非线性优化求解方法的根源 xff1f 你是否也苦恼于非线性优化到底在研究什么 xff1f 如果你的回答是肯定的 xff0c 说明我们是一样的 那么 xff0c 让我们从这里开始
  • 视线角 视线角速率(待补充)

    视线相对惯性空间的旋转角速度
  • 【无人机学习】惯性导航系统简介

    前面文章SLAM初识 xff08 点击查看 xff09 中我们介绍过SLAM中的两大类传感器 xff1a 激光雷达和视觉传感器 xff0c 并详细分析了其优缺点 而实际上 xff0c 在基于移动机器人的SLAM中 xff0c 还有一类很重要
  • PID介绍 PID调参 串级PID

    鉴于串级PID在pixhawk系统中的重要性 xff0c 无论是误差的补偿 xff0c 如姿态解算 xff1b 还是控制的实现 xff0c 如姿态控制 xff0c 位置控制 xff0c 靠的都是串级的pid xff0c 这里我们先对串级pi
  • 【通俗讲5G】第一次有人把5G讲的这么简单明了

    关于5G通信 xff0c 常见的文章都讲的晦涩难懂 xff0c 不忍往下看 xff0c 特转载一篇 xff0c 用大白话实现5G入门 简单说 xff0c 5G就是第五代通信技术 xff0c 主要特点是波长为毫米级 xff0c 超宽带 xff
  • 终于有人把云计算、大数据和 AI 讲明白了

    原标题 xff1a 不是技术也能看懂云计算 xff0c 大数据 xff0c 人工智能 我今天要讲这三个话题 xff0c 一个是云计算 xff0c 一个大数据 xff0c 一个人工智能 xff0c 我为什么要讲这三个东西呢 xff1f 因为这
  • 常用锁原理的介绍(上)

    本文是学习 多处理器编程的艺术 的笔记 下面主要介绍了一些常用的锁的原理 xff0c 这些只是一些理论 xff0c 离我们实际使用还是有一些差距的 不过这种理论也往往是相对比较好容易理解了掌握的 xff0c 只有了解了这些理论 xff0c
  • 实时数据库数据采集接口API八爪鱼采集接口

    实时数据库数据采集接口是针对国内外各种实时数据库系统 PI IP21等 和DCS PLC等数据源之间的进行实时数据通讯的工具 主要包含IOServer服务器和IOClient客户端两个部分 xff1a IO Server运行在实时数据库服务
  • 实时操作系统的任务调度示例之时间片

    摘要 在之前的一篇博文实时操作系统的任务调度示例之抢占中 xff0c 以实验和代码的形式讲解了不同优先级任务同时出在就绪态中 xff0c 高优先级的任务总是先得到运行 这里就留下了一个问题 xff0c 如果多个出于就绪态的任务具有相同优先级
  • 避障算法之3DVFH+

    目录 一 3DVFH 43 论文翻译 摘要 1 引言 2 相关工作 3 八叉树地图 4 3DVFH 43 4 1 第一步 xff1a 八叉图探索 4 2 第二步 xff1a 二维基础极直方图 2D Primary Polar Histogr
  • linux及C++书籍推荐

    盘点一下今年看的书 xff0c 记录下学习历程也向大家分享一些书籍 xff1a Unix编程3剑客 xff1a RichardSteven的大著 Unix网络编程卷1 xff08 套接字联网api xff09 Unix环境高级编程 Unix
  • 机场跑道检测论文阅读笔记

    机场跑道检测论文阅读笔记 A Robust Vision based Runway Detection and Tracking Algorithm for Automatic UAV Landing 来自沙特的KAUST xff0c 20
  • Jetson AGX Xavier使用笔记

    由于毕设的缘故 xff0c 从业无人机相关 xff0c 嵌入式GPU首选Xavier xff0c 撰文记录一下刷机心得 xff0c 欢迎小伙伴们热烈讨论 xff0c 共同学习 1 刷机 网上教程很多 xff0c 但我依然刷了很久才搞定 xf
  • 稀疏编码SparseNet

    大名鼎鼎的稀疏编码 xff0c 源自1996 记录一下使用sparsenet的心得 0 My Prerequisite Windows10matlab 2016bmingw64 为了节省内存 xff0c 我把matlab2016b装在了移动
  • PX4学习笔记5:数据录制及离线处理

    本文内容主要包括 xff0c rosbag的录制以及消息的离线处理 1 rosbag录制 录制双目相机发布的图片话题如下命令 rosbag record O obs5 bag stereo right image raw stereo le
  • PX4学习笔记3: 速度控制

    记录一下PX4在offboard板外模式下用速度控制四旋翼的过程 参考资料如下 PX4板外模式教程youtube速度控制小实验PX4飞行模式offboard模式offboard模式控制例子 注意 必须2Hz以上的频率发布控制消息 否则PX4