【RotorS仿真系列】Ardrone模型介绍

ardrone是rotors仿真框架提供的一款机型,因为该机型与我们实际使用的机型参数相近,所以这里对它的参数做特别整理和记录。

一、模型参数总结

ardrone的gazebo模型如下图所示:
在这里插入图片描述

根据ardrone.yaml,其关键参数如下所示:

# Ardrone vehicle parameters
mass: 1.52
inertia: {xx: 0.0347563, xy: 0.0, xz: 0.0, yy: 0.0458929, yz: 0.0, zz: 0.0977}# angle should be expressed in rad
# direction 1 means counter clockwise, -1 clockwise
# The order of the rotors matters for the calculation of the allocation matrix.
rotor_configuration:'0': {angle: -0.78539, arm_length: 0.18, rotor_force_constant: 8.54858e-06, rotor_moment_constant: 1.6e-2, direction: 1.0}'1': {angle: 2.35619, arm_length: 0.18, rotor_force_constant: 8.54858e-06, rotor_moment_constant: 1.6e-2, direction: 1.0}'2': {angle: 0.78539, arm_length: 0.18, rotor_force_constant: 8.54858e-06, rotor_moment_constant: 1.6e-2, direction: -1.0}'3': {angle: -2.35619, arm_length: 0.18, rotor_force_constant: 8.54858e-06, rotor_moment_constant: 1.6e-2, direction: -1.0}

更详细的参数可以参见ardrone.xacro文件。
其电机标号convention与PX4一致,如下图所示:
在这里插入图片描述

下图是PX4的电机标号和旋向:
在这里插入图片描述

control allocation matrix如下:
[ τ x τ y τ z F ] = [ c f d ⋅ sin θ 0 c f d ⋅ sin θ 1 c f d ⋅ sin θ 2 c f d ⋅ sin θ 3 − c f d ⋅ cos θ 0 − c f d ⋅ cos θ 1 − c f d ⋅ cos θ 2 − c f d ⋅ cos θ 3 n ⋅ c f c m n ⋅ c f c m n ⋅ c f c m n ⋅ c f c m c f c f c f c f ] [ ω 0 2 ω 1 2 ω 2 2 ω 3 2 ] \begin{bmatrix} \tau_x\\ \tau_y\\ \tau_z \\ F \end{bmatrix}= \begin{bmatrix} c_fd\cdot\text{sin}\theta_0 & c_fd\cdot\text{sin}\theta_1 & c_fd\cdot\text{sin}\theta_2 & c_fd\cdot\text{sin}\theta_3 \\ -c_fd\cdot\text{cos}\theta_0 & -c_fd\cdot\text{cos}\theta_1 & -c_fd\cdot\text{cos}\theta_2 & -c_fd\cdot\text{cos}\theta_3 \\ n\cdot c_f c_m & n\cdot c_f c_m & n\cdot c_f c_m & n\cdot c_f c_m \\ c_f & c_f & c_f & c_f \end{bmatrix} \begin{bmatrix} {\omega_0}^2 \\ {\omega_1}^2 \\ {\omega_2}^2 \\ {\omega_3}^2 \end{bmatrix} τxτyτzF = cfdsinθ0cfdcosθ0ncfcmcfcfdsinθ1cfdcosθ1ncfcmcfcfdsinθ2cfdcosθ2ncfcmcfcfdsinθ3cfdcosθ3ncfcmcf ω02ω12ω22ω32
其中 n n n表示旋向(逆时针为1,顺时针为-1), c f c_f cf是拉力系数, c m c_m cm是力矩系数。这里力矩系数与其他文献或某些书籍可能不一致,但是在代码里是与其他参数一起配套使用是没有问题的。下面全权老师的课件,矩阵的第4行,用的是 c M c_M cM,这里 c M = c f c m c_M=c_fc_m cM=cfcm。因此,以后要注意自己用的参数对应的是什么公式。
在这里插入图片描述

二、存在的问题

注意!原始的ardrone.xacroardrone.yaml文件中,arm_length参数是有问题的,github上有网友也提出来了(Ardrone Arm Length And Stability #488)。修改方式有两种,以下二选一即可:

  • ardrone.yamlarm_length改为0.18(比如我上面的代码片)
  • ardrone.yamlarm_length改为0.18ardrone.xacro中的arm_length改为0.18sqrt2(1.4142135623730951, 2 \sqrt{2} 2 )全部替换为sqrt2_inv(0.70710678119, 1 2 \frac{1}{\sqrt{2}} 2 1

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

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

相关文章

Project 1: The Game of Hog(CS61A)

(第一阶段)问题 5a(3 分) 实现该函数,该函数模拟了完整的 Hog 游戏。球员 交替轮流掷骰子,直到其中一名玩家达到分数。playgoal 您现在可以忽略 Feral Hogs 规则和论点; 您将在问题 5b 中实现它。feral_h…

树莓派多串口通信

树莓派多串口通信 串口配置串口通信函数分析串口通信示例代码 参考博文1:树莓派 4 UART 多串口配置通信参考博文2:树莓派wiringPi库详解关于树莓派相关其他环境配置可参考:快速上手树莓派关于wiringPi库初始化与IO口开发可参考:树…

调优--学习笔记

1,Presto调优 数据存储格式 1)合理设置分区 与Hive类似,Presto会根据元信息读取分区数据,合理的分区能减少Presto数据读取量,提升查询性能。 2)使用列式存储 Presto对ORC文件读取做了特定优化&#xff0c…

Qt OpenCV 学习(一):环境搭建

对应版本 Qt 5.15.2OpenCV 3.4.9MinGW 8.1.0 32-bit 1. OpenCV 下载 确保安装 Qt 时勾选了 MinGW 编译器 本文使用 MinGW 编译好的 OpenCV 库,无需自行编译 确保下载的 MinGW 和上述安装 Qt 时勾选的 MinGW 编译器位数一致,此处均为 x86/32-bit下载地址…

《微信小程序开发从入门到实战》学习四十

4.2 云开发JSON数据库 4.2.11 更新数据 使用数据库API更新数据有两种方法:一.将记录局部更新的update方法;二.以替换的方式更新记录的set方法 update方法可以局部更新一个记录或一个集合的多个记录,更新时只有指定字段更新,其他…

智能诊疗体验:整合AI技术的互联网医院小程序开发

在科技化的趋势下,互联网医院小程序的开发变得愈发重要,尤其是通过整合人工智能(AI)技术,进一步提升了就医的效率。 一、引言 互联网医院小程序其开发目标是提高医疗服务的效率,同时也也提升了用户的就医…

23种设计模式之C++实践(一)

23种设计模式之C++实践 1. 简介2. 基础知识3. 设计模式(一)创建型模式1. 单例模式——确保对象的唯一性1.2 饿汉式单例模式1.3 懒汉式单例模式比较IoDH单例模式总结2. 简单工厂模式——集中式工厂的实现简单工厂模式总结3. 工厂方法模式——多态工厂的实现工厂方法模式总结4.…

【像素画板】游戏地图编辑器-uniapp项目开发流程详解

嘿,用过像素画板没有哦,相信喜欢绘画的小朋友会对它感兴趣呢,用来绘制像素画非常好看,有没有发现,它是可以用来绘制游戏地图的,是不是很好奇,来一起看看吧。 像素画板,也叫像素画的绘…

c语言-归并排序

目录 1、归并排序基本思想 2、归并排序的实现(递归法) 2.1 代码实现递归法归并排序 3、归并排序的实现(非递归法) 3.1 修正边界问题 3.2 代码实现非递归法归并排序 结语: 前言: 归并排序是一种把数…

Python---格式化输出与%百分号----涉及转义符 \ 反斜杠的使用

相关链接Python--格式化输出中的转义符号----\t 制表符(空格的)和\n(换行的)_唯元素的博客-CSDN博客 Python---字符串(用单、双引号、 三单/双引号定义。反斜杠 \ 转义,单在双内/双在单内 )-CS…

力扣 --- 最后一个单词的长度

题目描述: 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1: 输入:s "Hello World&…

运维02:Linux

Linux安装 VMWare安装:夸克网盘分享(提取码:refg) CentOS安装:Index of /centos/7.9.2009/isos/x86_64/ Xshell安装:百度网盘 请输入提取码(提取码:juau) 环境准备 1、…

在Windows 11中,把iPhone照片和视频导出来又快又简单,无需第三方软件

如果你想将照片和视频从iPhone传输到Windows 11 PC,最快、最简单的方法是插入手机并执行自动导入。以下是操作方法。 如何将照片和视频从iPhone导入Windows 如果你用USB数据线将iPhone插入Windows PC,Windows 11可以像标准数码相机一样连接到它&#x…

react之封装有无Token(路由权限控制)的高阶组件

TOC 前景 有些路由页面内的内容信息比较敏感,如果用户没有经过登录获取到有效Token,是没有权限跳转的,根据Token的有 无控制当前路由是否可以跳转就是路由的权限控制 技术方案 实现步骤 1.在 components 目录中,创建 AuthRoute/in…

solidity实现ERC721代币标准发布NFT

文章目录 1、非同质化货币(NFT)- 维基百科2、IERC1653、IERC7214、IERC721Receiver5、IERC721Metadata6、ERC7217、ERC721 NFT 的实现8、编译部署 1、非同质化货币(NFT)- 维基百科 非同质化代币(英语:Non-F…

Elasticsearch:什么是大语言模型(LLM)?

大语言模型定义 大语言模型 (LLM) 是一种深度学习算法,可以执行各种自然语言处理 (natural language processing - NLP) 任务。 大型语言模型使用 Transformer 模型,并使用大量数据集进行训练 —— 因此规模很大。 这使他们能够识别、翻译、预测或生成文…

时间复杂度为O (nlogn)的排序算法

归并排序 归并排序遵循分治的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解,归并排序的步骤如下: 划分:分解待排序的 n 个元素的…

【c】求一组数据的最大值和第二大的值

我们可以创建数组&#xff0c;利用冒泡排序法把数组进行排序&#xff0c;但是当元素过多时候循环可能过多导致循环超限 所以我们可以换种其他方法&#xff0c;代码附上 #include<stdio.h> int main() {int n,i;puts("输入这组数据的个数");scanf("%d&qu…

进行主从复制时出现的异常FATAL CONFIG FILE ERROR (Redis 6.2.6)Reading the configuration file

错误如下所示&#xff1a; FATAL CONFIG FILE ERROR (Redis 6.2.6) Reading the configuration file, at line 1 >>> include/myredis/redis.conf Bad directive or wrong number of arguments出现错误的原因是.conf文件中命令之间缺少空格&#xff0c;如下所示&…

QML中常见布局方法

目录 引言常见方法锚定&#xff08;anchors&#xff09;定位器Row、ColumnGridFlow 布局管理器RowLayout、ColumnLayoutGridLayoutStackLayout 总结 引言 UI界面由诸多元素构成&#xff0c;如Label、Button、Input等等&#xff0c;各种元素需要按照一定规律进行排布才能提高界…