【Tello无人机】使用Matlab完成控制器的设计—建模

模型辨识篇

  在实际的无人机系统中,控制器的设计至关重要,它直接影响无人机的稳定性和响应能力。然而,要设计出高效、可靠的控制器,首先必须准确理解无人机的动态行为,这就需要通过收集输入输出数据来辨识其运动学模型。运动学模型是描述无人机在空间中运动规律的数学模型,它通常包含了无人机的位置、速度、加速度以及与之相关的控制输入等参数。通过辨识运动学模型,能够理解无人机在受到不同控制输入时的响应方式,这对于控制器设计极为重要。具体来说,这个过程包括以下几个步骤:

  1. 数据采集:在实际飞行测试中,通过无人机上的传感器收集关于其位置、速度、姿态等的数据,同时记录下相应的控制输入信息,如推力、方向控制等。

  2. 模型假设:在数据分析之前,需要先建立运动学模型的基本形式。这通常涉及到选择合适的数学结构来描述无人机的运动,如线性模型、非线性模型或是混合模型等。

  3. 参数辨识:使用统计或机器学习方法,如最小二乘法、神经网络等,根据收集到的数据来估计模型的参数。这一步的目标是找到一组参数,使得模型能够尽可能准确地预测无人机的实际行为。

  4. 模型验证:通过将模型预测的结果与实际飞行数据进行对比,评估模型的准确性和可靠性。如果模型表现不佳,可能需要返回上一步调整模型结构或参数,或者收集更多数据进行分析。

完成运动学模型的辨识后就可以基于该模型设计控制器。

1.数据采集

期望速度输入:

desv_{x}= 0.3\cdot cos(\theta )

desv_{y}= 0.2\cdot sin(\theta )

input_data = [desv_x, desv_y]

位置差分得到速度输出:

output_{data}=[\underset{\Delta t}{real_{x}- lastreal_{x}},\underset{\Delta t}{real_{y}- lastreal_{y}}]

output_data = np.array([real_x - last_real_x, real_y - last_real_y]) / 0.001

其中0.001为采样时间

仿真环境中运动轨迹:

这样得到了无人机的输入输出速度,可进行下一步的模型辨识。

2.模型辨识

2.1数据查看

将保存的数据导入Matlab,x,y方向的输入输出速度关系如下:

2.2辨识工具箱

打开系统辨识工具箱:【System ldentification】

导入数据:选择时域

选择要导入的数据名称

成功导入:

点击Time plot查看导入的数据是否正确:

数据预处理:Matlab系统辨识工具箱提供了一系列数据预处理功能,我们这里选择去均值

  1. Select channels…:选择数据通道功能允许用户从多通道数据中选择特定的通道进行分析。适用于处理多变量系统时,当用户仅对系统中的部分变量感兴趣或需要排除某些变量的干扰时使用。
  2. Select experiments…:选择实验功能用于从数据集中选择特定的实验或数据批次进行分析。这在处理包含多个实验条件或批次的数据集时特别有用,允许用户专注于特定条件下的系统行为。
  3. Merge experiments…:合并实验功能允许用户将来自不同实验或数据批次的数据合并为一个单一数据集。这对于增加数据量以提高系统模型的鲁棒性和泛化能力特别有用。
  4. Select range…:选择范围功能使用户能够指定数据集中的特定时间范围或数据点范围进行分析。这适用于专注于特定事件或系统响应阶段的分析。
  5. Remove means:去除均值功能用于从数据中去除平均值,通常用于消除静态偏置或将数据中心化,有助于突出数据的动态变化。
  6. Remove trends:去除趋势功能用于消除数据中的线性或非线性趋势。这对于处理具有时间相关趋势的数据非常有用,可以帮助揭示系统的内在动态行为。
  7. Filter…:滤波功能允许用户应用各种滤波器来处理数据,以去除噪声或提取感兴趣的信号频段。这在数据含有高频噪声或需要分析特定频率内容时非常有用。
  8. Resample…:重采样功能用于改变数据的采样率,通过插值或降采样来适应不同的分析需求。适用于处理采样率不一致的数据或优化处理速度。
  9. Transform data…:数据转换功能提供了多种数据转换方法,如对数变换、幂律变换等,用于改善数据的统计特性或适应特定的分析方法。
  10. Quick start:快速开始指南为用户提供了一个简易的操作流程,帮助用户快速开始数据预处理,尤其适用于初学者或需要快速处理数据的场景。

将预处理完成后,需要进行辨识的数据拖入working区域:

点击【Tello无人机】使用Matlab完成控制器的设计—建模——古月居可查看全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/31258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

业务使用redis分布式锁

伴随着业务体量的上升,我们的qps与并发问题越来越明显,这时候就需要用到让代码一定情况下进行串行执行的工具:锁 1.业务场景代码 OverrideTransactional(rollbackFor Exception.class)public Object testBatch(User user) {LambdaQueryWrapp…

Java8的Lambda表达式

Java中的Lambda表达式是Java 8引入的一种新特性,主要用于简化代码,特别是在处理函数式编程和集合操作时。Lambda表达式允许你将功能作为方法参数传递,使代码更加简洁和易读。 1.基本语法 Lambda 的格式由3个部分组成 其标准格式为&#xf…

Go语言 获取服务器资源磁盘Disk情况

1、获取整个磁盘的总量、已使用量、使用率 package mainimport ("fmt""github.com/shirou/gopsutil/disk""log" )func main() {// 获取所有挂载点的磁盘使用率信息partitions, err : disk.Partitions(false)if err ! nil {log.Fatalf("Err…

Java面试八股之Mybatis和JPA的区别

Mybatis和JPA的区别 Mybatis 和 JPA(Java Persistence API)是两种在 Java 应用程序中用于数据持久化的框架,它们各有特点和适用场景。下面是它们之间的一些主要区别: 映射方式: Mybatis 是半自动的 ORM 框架&#xf…

MACER

MACER: A Modular Framework for Accelerated Compilation Error Repair 基本信息 博客贡献人 页禾七 作者 Darshak Chhatbar, Umair Z. Ahmed,Purushottam Kar 摘要 自动编译错误修复,即对无法编译的错误程序提出修复建议的问题&…

Android集成mapbox教程

目录 简介准备工作创建Token系统开发简介 Mapbox是来自美国的一家为开发者提供地图服务和开发工具的开放平台。Mapbox以开源的形式构建了矢量瓦片技术生态,开发了矢量切片工具、瓦片服务传输框架。Mapbox的底图平台非常受欢迎,特别是开发者和学生群体,可以使用免费的开源软…

吊打Unity的角色动画重定向专业版工具FPS手臂武器动画动物动画角色动作微调烘焙20240620

今天发现一款关注已久的Unity插件上架商店了,可以将动画从一个通用/人形角色重新定位到另一个通用角色。 吊打Unity的角色动画重定向专业版工具FPS手臂武器动画动物动画角色动作微调烘焙202406201103 Unity 中任何通用角色的终极解决方案。它没有 Humanoid 系统的限…

C++的智能指针 RAII

目录 产生原因 RAII思想 C11的智能指针 智能指针的拷贝与赋值 shared_ptr的拷贝构造 shared_ptr的赋值重置 shared_ptr的其它成员函数 weak_ptr 定制删除器 简单实现 产生原因 产生原因:抛异常等原因导致的内存泄漏 int div() {int a, b;cin >> a…

生成对抗网络——CGAN(代码+理解)

目录 一、CGAN模型介绍 二、CGAN训练流程 1. 初始化 2. 数据准备 3. 输出模型计算结果 4. 计算损失 5. 反向传播和优化 6. 迭代训练 三、CGAN实现 1. 模型结构 (1)生成器(Generator) (2)判别器…

ShuffleNet系列论文阅读笔记(ShuffleNetV1和ShuffleNetV2)

目录 ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices摘要Approach—方法Channel Shuffle for Group Convolutions—用于分组卷积的通道重排ShuffleNet Unit—ShuffleNet单元Network Architecture—网络体系结构 总结 ShuffleNet V2: Pra…

Vmware与Windows之间复制、粘贴内容、拖拽文件

Vmware17.0Ubuntu20 Vmware正确安装完linux虚拟机之后,这里以Ubuntu为例(其他linux或windows系统也是类似的),如果你使用的默认配置,正常情况下就可以复制、粘贴和拖拽内容的,双方向都是支持的。如果不能复…

nvdiadocker相关配置S3Gaussian

https://download.csdn.net/download/sinat_21699465/89458214 dockerfile文件参考: https://download.csdn.net/download/sinat_21699465/89458214 prework: 显卡驱动决定了cuda版本支持的上限。例如nvdia535驱动最高支持cuda12.2所以显卡驱动版本选…

15.树形虚拟列表实现(支持10000+以上的数据)el-tree(1万+数据页面卡死)

1.问题使用el-tree渲染的树形结构&#xff0c;当数据超过一万条以上的时候页面卡死 2.解决方法&#xff1a; 使用vue-easy-tree来实现树形虚拟列表&#xff0c;注意&#xff1a;vue-easy-tree需要设置高度 3.代码如下 <template><div class"ve-tree" st…

《web应用技术》第12次课后作业

1、了解servlet技术 Servlet(server applet)&#xff1a;运行在服务器的小程序&#xff0c;Servlet就是一个接口&#xff0c;定义了Java类被浏览器访问到的规则。将来我们自定义一个类&#xff0c;实现Servlet接口&#xff0c;复写方法。 Servlet本身不能独立运行&#xff0c…

2024广东省职业技能大赛云计算赛项实战——OpenStack搭建

OpenStack搭建 前言 搭建采用双节点安装&#xff0c;即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…

JaveEE进阶----Spring Web MVC入门

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是 Spring Web MVC&#xff1f;&#xff1f;1.1MVC 定义1.2 什么是Spring MVC ?1.3过浏览器和用户程序交互 二、 RequestMapping 注解三、Postman 前言…

Python中栈的实现与应用

Python中栈的实现与应用 一、引言 栈&#xff08;Stack&#xff09;是一种重要的数据结构&#xff0c;它遵循后进先出&#xff08;LIFO&#xff0c;Last In First Out&#xff09;的原则。栈的基本操作包括入栈&#xff08;push&#xff09;和出栈&#xff08;pop&#xff09…

容器基本概念_从虚拟化技术_到容器化技术_开通青云服务器_并远程连接_容器安装---分布式云原生部署架构搭建007

这一部分,属于以前都会用到的,会快速过一遍,对于关键技术问题会加以说明 https://www.yuque.com/leifengyang/oncloud文档地址在这里,可以看,有些命令可以复制使用 可以看到容器的出现就是 目的就是,让你做的所有的软件,都可以一键部署启动 打包就是docker build 然后: 对于…

关于后端幂等性问题分析与总结

后端幂等性&#xff08;Idempotency&#xff09;是指对系统执行一次操作或多次执行相同的操作&#xff0c;其结果始终如一。在分布式系统和API设计中&#xff0c;这是一个关键概念&#xff0c;因为它能保证用户无论请求被路由到哪个节点&#xff0c;多次执行相同的请求都不会导…

陈晓婚前婚后大变样

陈晓婚前婚后大变样&#xff1f;陈妍希揭秘甜蜜与现实的碰撞在娱乐圈的星光璀璨中&#xff0c;有一对夫妻总是津津乐道&#xff0c;那就是陈晓和陈妍希。他们的爱情故事&#xff0c;从荧幕到现实&#xff0c;一直备受关注。然而&#xff0c;近日陈妍希在节目中透露&#xff0c;…