移动机器人(四)四轴飞行器

2023-05-16

四轴飞行控制原理

四轴飞行器在空间上有6个自由度,分别是沿3个坐标轴进行平动和转动,通过对四个旋翼的转速控制来实现,6个自由度方向的运动姿态分别为:垂直升降、俯仰角度、前后飞行、横滚角度、左右侧向飞行。
四轴飞行器机体结构有“X”型和“+”型两种,我们通过“X”型进行飞行控制的讲解
请添加图片描述

类似麦克纳姆轮,螺旋桨转动产生的力除了垂直向上的升力,还有一个切向的空气的反作用力如图红色箭头),通过组合每一个螺旋桨的切向力,我们可以实现飞行器在空间中的运动。M1 和 M3 的螺旋桨物理结构上是相同的,M2 和 M4 相同(和前者是手性对称的,如果都相同机体不出意外也会跟着旋转),它们的旋转方向也是相反的。
在这里插入图片描述

(1)垂直升降:当四个电机输出平衡时飞行器垂直运动,这点我们通过设置相同的 PWM 值可能无法实现,因为电机的物理状况有所差异。为此我们引入 PID 闭环控制,并通过姿态传感器进行姿态的观测。
(2)俯仰/前后运动:M1 和 M2 电机输出更大,机体会出现如图的翻转,并且向后运动。
在这里插入图片描述

(3)横滚/左右运动类同(2),M1 和 M4 获得更大输出。
(4)偏航角度:M1 和 M3 获得更大输出,此时航向逆时针偏转。

动力分配

可以发现,机体的运动和机体姿态密切相关,机体向哪边倾斜,也会同时向哪边运动。因此,飞四轴时我们很大程度是通过控制姿态来控制它怎么飞。结合 code ,电机除了 thr_temp(throttle) 的一个基本动力分配外,还有结合姿态输出分配的控制量,约定输出为正时,绕相应坐标轴逆时针旋转。(代码和上面图片对电机的编号有出入)

	int16_t thr_temp;
	thr_temp = Remote.thr - 1000;	// 从遥控处接收油门值

	if (Remote.thr < 1020) // 油门过低
	{
		MOTOR1 = MOTOR2 = MOTOR3 = MOTOR4 = 0;
		break;
	}
	MOTOR1 = MOTOR2 = MOTOR3 = MOTOR4 = LIMIT(thr_temp, 0, 900); // 基本动力分配(垂直运动)

	MOTOR1 += +pidRateX.out - pidRateY.out - pidRateZ.out; // 结合姿态输出分配各个电机的控制量
	MOTOR2 += +pidRateX.out + pidRateY.out + pidRateZ.out;
	MOTOR3 += -pidRateX.out + pidRateY.out - pidRateZ.out;
	MOTOR4 += -pidRateX.out - pidRateY.out + pidRateZ.out;

IIC

在这里插入图片描述
I2C 属于两线式串行总线,由飞利浦公司开发用于 MCU 和外围设备进行通信的一种总线,属于一从多主的总线结构。总线上的每个设备都有一个特定的设备地址,以区分同一 I2C 总线上的其它设备。I2C 接口有串行时钟线(SCL)和串行数据线(SDA)组成,可用于发送和接收数据。通信均由主设备发起,从设备被动响应。

串级PID

在这里插入图片描述
PID 控制器属于无模型控制(十分神奇)。(仿真实验比较难模拟物理世界的“反馈”)
串级 PID是由两个 PID 模型“串联”而成,角度环(又称外环)的输出作为角速度环(又称内环)的输入。角速度由陀螺仪直接测出,不易受到干扰,相比角度通过多重传感器融合计算得到,反应更加迅速,解决飞行器失衡和跟随滞后问题。

参考

https://zhuanlan.zhihu.com/p/503219395 IIC通信(软硬件实现)

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

移动机器人(四)四轴飞行器 的相关文章

  • [TM4C123单片机实践] 配置SSI并驱动DAC7811显示正弦波

    这几天做电赛学习了TM4C123 单片机 总得来说 结合官方例程与参考手册 加上一个好的示波器 效率会高很多 TI的SSI 实际上就是SPI 我门先熟悉一下SPI SPI 就是在主机与从机之间用来传输数据的 通过TX RX传输数据 通过CS
  • 压力BMP180传感器时序详解

    BMP180是一种高精度数字压力传感器 xff0c BMP180的超低功耗 xff0c 低电压电子元件经过优化 xff0c 适用于移动电话 xff0c PDA xff0c GPS导航设备和户外设备 UP 61 压力数据 xff08 16到1
  • C3D行为识别(一):UCF101视频数据集预处理

    行为识别 xff08 一 xff09 xff1a UCF101视频数据集预处理 文章目录 行为识别 xff08 一 xff09 xff1a UCF101视频数据集预处理1 数据集介绍1 1 UCF101 2 UCF101预处理2 1 划分t
  • Linux学习-坑多就慢慢填

    Linux学习 坑多就慢慢填 刚开始想找个资料丰富的开发板学习Linux xff0c 那时正点原子和野火都上架了NXP芯片的开发板 xff0c 因为经常用正点原子的硬件 教程和论坛 xff0c 毅然选择了正点原子的NAND版 xff0c 实
  • 树莓派 I2C通信,控制多个I2C从设备

    1 需要安装 i2c tools工具 在黑框输入 xff1a sudo apt get install i2c tools 2 后续编程使用python库 在黑框输入 xff1a sudo apt get install python sm
  • 软件框架详解

    软件框架至少包含以下组成部分 xff1a xff08 1 xff09 一系列完成计算的模块 xff0c 在此称为构件 xff08 2 xff09 构件之间的关系与交互机制 xff08 3 xff09 一系列可变点 xff08 也称热点 xf
  • oauth2四种模式的流程图

    参照https www ruanyifeng com blog 2019 04 oauth grant types html 以下为自己的理解整理 xff0c 授权码和密码模式是用户使用第三方平台账号授权给客户端应用 xff0c 来获取受第
  • Linux 应用开发 - 必须掌握的 5 个底层 IO 函数

    底层输入输出 xff08 Low Level Input Output xff09 这篇博客主要介绍 Linux 原生的 IO 操作 xff08 Low IO xff09 xff0c 你可能会想不是有跨平台的 ANSI C 可以使用么 xf
  • 为什么选择嵌入式方向

    本文出自 同济大学软件学院院长谈 嵌入式 方向选择 xff0c 个人感觉不错 xff0c 故转之 嵌入式系统无疑是当前最热门最有发展前途的 IT应用领域之一 嵌入式系统用在一些特定专用设备上 xff0c 通常这些设备的 硬件资源 xff08
  • 关于Apache的目录浏览功能

    近日 xff0c 公司有个需求需要使用到Apache的目录浏览功能 但是遇到了一点问题 xff0c 所以出现了这篇文章 linux安装Apache很简单 xff0c 使用yum安装即可 命令 xff1a yum y install http
  • Linux 下的make命令与Makefile

    概述 博客内容包含linux下make命令的使用与makefile的书写规则等 xff0c 希望通过本文档使读者对make命令makefile文件有进一步了解 xff0c 由于鄙人经验学识有限文档中会有描述不准确以及理解偏差 xff0c 欢
  • 人工智能会取代程序员吗?

    多亏了人工智能 xff08 AI xff09 xff0c 软件将在未来自行编写 至少 xff0c 这就是谷歌首席执行官桑达尔 皮查伊 xff08 Sundar Pichai xff09 对软件开发未来的看法 他是对的 xff01 这并不能使
  • 人工智能和5G在无人机技术中的作用

    技术为我们提供了许多引人入胜的设备和发明 xff0c 无人机就是其中之一 无人机 xff0c 在技术术语中也称为无人机 xff08 UAV xff09 xff0c 自2007年首次出现以来越来越受欢迎 这些小工具最初是手动和远程控制的 无人
  • 惠普暗影精灵笔记本开机自动打开小键盘,冷热启动均支持

  • STM32F4 使用结构体配置功能

    1 IIC配置 void IIC Mode Config void I2C InitTypeDef I2C InitStructure I2C InitStructure I2C Mode 61 I2C Mode I2C IIC模式 I2C
  • 执行 sudo apt-get update 报错:仓库 xxx 没有release文件 / 不再含有release文件

    输入命令 sudo apt get update 报错 这里可以看到有两个问题 xff0c 一个是 ubuntu自己的源连不上了 第二三个红框框 xff0c 一个是 vmware 这个软件 第一个红框框 首先解决第一个问题 archive
  • C++ 发送HTTP请求

    HTTPRequest HTTPRequest是一个用于发出HTTP请求的单头C 43 43 库 您可以将它包含在项目中并使用它 HTTPRequest在macOS Windows Haiku BSD和GNU Linux上进行了测试 xff
  • 小程序、公众号开发报code been used(40163)或invalid code(40029)错误,解决方案--之--搞清楚微信的登录机制,保存登录状态!!!

    x1f4d6 前言 做微信小程序或公众号开发 xff0c 有时我们为了管理用户 xff0c 需要获取用户的openid xff0c unionId等信息 这时会用到微信提供的接口 xff1a code2Session code2Sessio
  • 使用git在vscode中进行版本控制

    版本控制是一件非常cool的事 xff0c 可以将我们的代码按照版本存储 1 首先我们选择一个版本控制工具 xff0c 这里我们选择git xff0c 点击下载安装 xff0c 安装时选择vscode编辑器 2 安装好了之后打开vscode
  • 2.3.1 参数服务器理论模型

    ROS入门 2 3 1 参数服务器理论模型 ROS入门 理论与实践 视频教程镇楼 参数服务器实现是最为简单的 xff0c 该模型如下图所示 该模型中涉及到三个角色 ROS Master 管理者 Talker 参数设置者 Listener 参

随机推荐

  • 4.6.3 编码设置参数

    ROS入门 4 6 3 编码设置参数 ROS入门 理论与实践 视频教程镇楼 编码的方式可以更方便的设置 全局 相对与私有参数 1 C 43 43 实现 在 C 43 43 中 xff0c 可以使用 ros param 或者 ros Node
  • 5.1 TF坐标变换

    ROS入门 5 1 TF坐标变换 ROS入门 理论与实践 视频教程镇楼 机器人系统上 xff0c 有多个传感器 xff0c 如激光雷达 摄像头等 xff0c 有的传感器是可以感知机器人周边的物体方位 或者称之为 坐标 xff0c 横向 纵向
  • 10.1.3 action通信自定义action文件调用(Python)

    ROS入门 10 1 3 action通信自定义action文件调用 Python ROS入门 理论与实践 视频教程镇楼 需求 创建两个ROS 节点 xff0c 服务器和客户端 xff0c 客户端可以向服务器发送目标数据N 一个整型数据 服
  • rosdep

    rosdep 初始化时异常解决方案 rosdep 初始化时异常解决 视频教程 安装构建依赖 在 noetic 最初发布时 xff0c 和其他历史版本稍有差异的是 没有安装构建依赖这一步骤 随着 noetic 不断完善 xff0c 官方补齐了
  • springboot应用集成prometheus监控

    环境参数 xff1a 运行命令 xff1a 1 uname xff0d a xff08 Linux查看版本当前操作系统内核信息 xff09 2 cat proc version xff08 Linux查看当前操作系统版本信息 xff09 3
  • [NVIDIA Jetson Xavier Nx]从刷机烧录到环境配置 记录

    目录 前言一 开机烧录二 环境配置Cuda环境变量配置更新源python环境配置安装Jtop 内存 CPU GPU等等资源监视工具 前言 对进行NVIDIA Jetson Xavier Nx环境配置进行记录 一 开机烧录 参考下面的博客 x
  • 最近处理的报错 -DCMAKE_BUILD_TYPE=Debug

    1 error 39 nullptr 39 was not declared in this scope 解决方法 使用的是QTcreator的pro文件 然后缺少相应关于c 43 43 11的设置 点pro文件中加载的东西如下 QMAKE
  • Halcon 单相机标定

    原文链接 xff1a https blog csdn net weixin 43197380 article details 90438976 comments 13104885 一 理论 为什么要进行单相机标定 xff1f 广义 xff1
  • 将图片嵌入Markdown文档

    将图片嵌入Markdown文档中是一个比较难受的事情 一般大家都会将图片存入本地某个路径或者网络存储空间 xff0c 使用URL链接的形式插入图片 image url to image 将图片放到本地的时候如果想将文档分享给朋友或者换台电脑
  • 自定义的串口通信协议

    自定义的通信协议 自定义一主多从串口通讯 1硬件基础两个从机的 Tx 是相互连接的 xff0c 导致一个从机在需要发送数据时发不出去了 协议思路数据包封装和解封装 树莓派python串口的使用注意更改树莓派串口设备驱动关闭控制台功能pyth
  • Linux串口驱动程序(4)-数据发送

    1 tty数据发送调用关系 怎么样才能找到发送数据所使用的函数呢 xff1f 打开uart register driver函数 xff0c 找到里面的tty register driver xff0c 转到定义 xff0c 这里调用了tty
  • TF 错误:InvalidArgumentError (see above for traceback): Reduction axis 0 is empty in shape [ ]

    Tensorflow python framework errors impl InvalidArgumentError Reduction axis 0 is empty in shape 0 100 Node ArgMax 61 Arg
  • Raspbian安装ROS系统Kinectic|树莓派4B安装ros使用OpenCV(全流程)

    前言 树莓派4B最高拥有4Gb的RAM xff0c 对于承担图像处理任务的嵌入式设计是个性价比很高的选择 众所周知 xff0c ROS系统对Ubuntu系统最友好 xff0c 但是由于树莓派4暂时还无法使用Ubuntu MATE xff0c
  • Ubuntu设置屏幕分辨率及屏幕翻转

    首发于 xff1a yuany3721的WordPress Version Ubuntu 18 04 6 LTS 使用xrandr查看屏幕信息 xrandr Screen 0 minimum 320 x 200 current 1920 x
  • 用美图秀秀换证件照背景颜色

    xff08 JDD KK 原创 xff09 问题描述 xff1a 不会PS xff0c 也没有各种会员 xff0c 怎么为了应急去换证件照背景 xff1f xff08 此方法有局限 xff0c 且质量一般 xff0c 只为应急 xff09
  • 让自己写的程序也有api

    当我们在学习的时候 xff0c 有时候看到别人的api会感觉到蛮高大上的 其实他们的api并不是他们在写完程序之后 xff0c 通过键盘录入的 xff0c 而是通过工具来生生成的 因此我们完全有机会打造属于自己的api api的作用 1 便
  • 记录使用gitlab实现Docker自动化部署

    目录 前言 一 gitlab runner docker安装 二 gitlab runner的注册与使用 1 注册 2 gitlab ci yml 脚本编写 总结 前言 前面搭建了gitlab与harbor xff0c 现在就使用它们来实现
  • ros::ok()

    ros ok 在以下几种情况下会返回false xff1a 按下Ctrl C时 我们被一个同名同姓的节点从网络中踢出 ros shutdown 被应用程序的另一部分调用 所有的ros NodeHandles都被销毁了 一旦ros ok 返回
  • 小觅深度相机标准版 ROS使用

    只写运行起来 xff0c 具体实例运行方法在对应的实例中 系统 xff1a ubuntu16 04 1 安装SDK 下载SDK驱动并解压 xff1a https github com slightech MYNT EYE S SDK 看RE
  • 移动机器人(四)四轴飞行器

    四轴飞行控制原理 四轴飞行器在空间上有6个自由度 xff0c 分别是沿3个坐标轴进行平动和转动 xff0c 通过对四个旋翼的转速控制来实现 xff0c 6个自由度方向的运动姿态分别为 xff1a 垂直升降 俯仰角度 前后飞行 横滚角度 左右