了解imu以及imu的标定

了解imu以及imu的标定,第1张

因为实验室项目原因,需要用到imu,所以以前从来没有听说过,所以这一段时间都在鼓捣这么个小东西。关于它的一些定义就不说了,网上一大堆,也不是很重要。就说一些自己有用到的东西吧。

imu中文叫做惯性测量单元,它能够获取自身的加速度、角速度信息,有的imu还能够获得地磁量。实验室中使用的是BNO055 Xplained Pro。它有3个加速度计,3个陀螺仪,3个地磁计,能够测量x,y,z方向的信息。因为还在初步学习阶段,没有去了解地磁计,所以只使用了加速度计和陀螺仪获得的加速度和角速度信息。(这里有一个点我要吐槽一下,实验的时候自己烧坏了两个imu和一个usb,原因是BNO055 Xplained Pro这个模块它的管脚不是完全被焊锡包住的,安装在实验室的小车上时管脚直接与小车的金属壳体接触就给烧了,真是蠢哭了- -)l

imu在使用之前一般都要标定,加速度计和陀螺仪的标定是分开的,因为加速度计获得的加速度值飘忽不定,不是一个常量,所以不能直接在结果上减去一个值来完成标定,常用的方法有最小二乘法,具体的方法及原理可以参考这里。陀螺仪获得的信息是一个不变的常量,所以可以直接在结果上减去这个常量就可以完成标定。

本来是打算写一个程序来对加速度计进行标定的,写到后面解其次方程的时候没想到要怎么解,结果发现有用于imu标定的包,于是打算直接用 这个 。按照它的REAME.md来进行,应该是能够得到标定参数的。但是它这里面安装Ceres Solver的链接失效了,可以参考 这里 来安装。

因为写这篇文章的时候在外出差,手边没有imu采集数据,没有办法来做实验,等到回学校了再来验证是否可行吧~

Copyright © 1999-2020, CSDN.NET, All Rights Reserved

matlab

打开APP

liang890319

关注

Matlab各版本对比 原创

2021-11-14 09:43:52

11点赞

liang890319

码龄13年

关注

官方文档主页

文档主页 - MathWorks 中国

各版本对比

MathWorks - Archived MathWorks Documentation - MathWorks 中国

​​​​​​发行说明: MATLAB- MATLAB &Simulink- MathWorks 中国

基本原则还是使用最新版的,如果硬件资源有限可参考主要变化选择合适的版本 建议2020b以及以后版本

几个关键版本变化

1,支持实时脚本和实时函数.mlx文件

MATLAB® 实时脚本和实时函数是交互式文档,它们在一个称为实时编辑器的环境中将 MATLAB 代码与格式化文本、方程和图像组合到一起。此外,实时脚本可存储输出,并将其显示在创建它的代码旁。

什么是实时脚本或实时函数?- MATLAB &Simulink- MathWorks 中国

MATLAB R2016a - MATLAB 支持 R2016a 及更高版本中的实时脚本,以及 R2018a 及更高版本中的实时函数。

*** 作系统 - 从 R2019b 开始,在 MATLAB 支持的所有 *** 作系统中,MATLAB 都支持实时编辑器。有关详细信息,请参阅系统要求。

对于 MATLAB 版本 R2016a 至 R2019a,MATLAB 支持的 *** 作系统中有几个不支持实时编辑器。

不支持的 *** 作系统包括:

Red Hat Enterprise Linux 6。

Red Hat Enterprise Linux 7。

SUSE Linux Enterprise Desktop 版本 13.0 及更早版本。

Debian 7.6 及更早版本。

此外,一些 *** 作系统需要额外的配置才能在 MATLAB 版本 R2016a 到 R2019a 中运行实时编辑器。如果您无法在系统中运行实时编辑器,请联系技术支持以了解有关如何配置系统的信息。

2,串口通信新的api

2019b新的串口通信api

串行端口接口有一组新的函数和属性。现有功能仍可运行,但推荐使用新的函数名称和属性。新接口提高了性能。

通过使用 serialportlist 查看计算机上所有串行端口的列表,来开始使用新接口。list = serialportlist

list =

1×4 string array

"COM1""COM3""COM4""COM8"

然后,创建一个 serialport 对象,将数据写入设备,并从中读取数据。

s = serialport("COM8",115200)

write(s,1:5,"uint32")

read(s,5,"uint32")

3,tcpip通信新的api

R2020b 优化了tcpip和串口通信

TCP/IP 客户端接口有一组新的函数和属性。

您仍可以使用现有函数执行以下 *** 作:

使用 tcpclient 函数创建一个与 TCP/IP 服务器的 TCP/IP 客户端连接。

使用 read 函数从远程主机读取数据。

使用 write 函数将数据写入远程主机。

现在,您可以使用新函数执行以下 *** 作:

使用 echotcpip 函数启动 TCP/IP 回显服务器。

使用 readline 函数从远程主机读取一行 ASCII 字符串数据。

使用 writeline 函数向远程主机写入一行 ASCII 字符串数据。

使用 configureTerminator 函数为与远程主机的 ASCII 字符串通信设置终止符。

使用 configureCallback 函数为与远程主机的通信设置回调函数和触发条件。

使用 flush 函数刷新缓冲区,以便与远程主机通信。

通过创建一个连接到 TCP/IP 回显服务器的 tcpclient 对象、向其写入数据和从中读取数据,开始使用 TCP/IP 客户端接口。

echotcpip("on",3030)

t = tcpclient("localhost",3030)

write(t,1:5,"uint8")

read(t,5)

有关详细信息,请参阅 TCP/IP 通信。

串行端口接口:改进了性能

serialport 接口的性能优于 serial 接口。例如,在使用 9600 的默认波特率时,以下代码中使用 serialport 对象写入和读取数据的速度大约是使用 serial 对象写入和读取数据速度的 1.1 倍。

% s is a serial object

function timingTest(s,bytecount)

fwrite(s,1:bytecount,"uint8")

fread(s,bytecount,"uint8")

end

% s is a serialport object

function timingTest(s,bytecount)

write(s,1:bytecount,"uint8")

read(s,bytecount,"uint8")

end

不同波特率条件下大致执行时间如下:

s.BaudRate

9600 19200 56000 115200

serial 120 毫秒 68 毫秒 31 毫秒 23 毫秒

serialport 109 毫秒 55 毫秒 21 毫秒 11 毫秒

代码是在运行 Windows 10 的 Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60 GHz 测试系统上使用 timeit 函数进行计时的:

bytecount = 100

timeit(@()timingTest(s,bytecount))

测试是使用串行环回连接器完成的。

有关详细信息,请参阅串行端口设备。

4,对python的支持

2021b 支持python3.9

2021a 支持3.8 停止支持3.6

2020b停止支持3.5

2019a MATLAB 现在除支持 CPython 2.7、3.5 和 3.6 之外,还支持 CPython 3.7。

2018b Python 接口:在 MATLAB 和 Python 之间传递多维数值或逻辑数组

2018a Python 版本 3.4:已停止支持

支持的 Python 版本 - 3.5 或 3.6 版。

5,git的支持

2020a 工程 API:以编程方式获取最新 Git 修订版

2019b 比较 Git 分支:显示差异并保存副本

2019a 源代码管理集成:将 MATLAB Git 状态与外部 Git 客户端同步

2021b新功能

1,实时编辑器任务

帮助使用者自动生成代码并用用户界面进行参数调整

实时编辑器任务是可以添加到实时脚本中以执行一组特定 *** 作的 App。您可以将任务添加到实时脚本中,以探查参数并自动生成代码。使用任务可缩短开发时间、减少错误并缩短在绘图上花费的时间。

任务代表一系列 MATLAB® 命令。您可以采用内嵌方式或在右侧显示其输出。

文档

将交互式任务添加到实时脚本中- MATLAB &Simulink- MathWorks 中国

视频

What Are Live Editor Tasks? Video - MATLAB

2,项目和版本管理

MATLAB and Simulink Projects Video - MATLAB

3,验证函数输入

在 MATLAB ® 中使用函数参数验证来声明对函数输入参数的特定限制。您可以约束函数输入值的类、大小和其他方面,而无需在函数体中编写代码来执行这些测试。

Validating Function Inputs Video - MATLAB

新产品

RF PCB Toolbox - 对印刷电路板进行电磁分析

Signal Integrity Toolbox - 对高速串行和并行链路进行仿真和分析

重要更新

Lidar Toolbox - 使用激光雷达查看器,以交互方式可视化、分析和预处理激光雷达点云

Simulink Code Inspector - 使用 Code Inspector 上下文选项卡,检查兼容性、检查代码并直接在模型中查看结果

Simulink Control Design - 设计模型参考自适应控制器

Symbolic Math Toolbox - 在 MATLAB 实时编辑器中提供下一步 *** 作建议,引导用户完成符号工作流

Wavelet Toolbox - 使用小波分析处理和提取信号和图像的特征,以用于 AI 工作流

R2021b - MATLAB 和 Simulink 产品系列发布更新 - MATLAB &Simulink

Release Notes- MATLAB &Simulink- MathWorks 中国

其他

编辑器代码:自动显示代码建议和完成

编辑器重构:自动将选定的代码转换为函数

实时编辑器控件:设置滑块、下拉列表、复选框和编辑字段的默认值

实时编辑器动画:将动画导出为电影或动画 GIF

实时编辑器:提高保存实时脚本或函数时的性能

比较工具:比较和合并具有改进的可用性、外观和语法突出显示的文本文件

sftp 功能:连接SFTP服务器

HDF5 接口:使用新功能支持 HDF5 1.10.7

从 MATLAB 直接调用 Python 功能

除了现有的对 2.7、3.7 和 3.8 的支持之外,MATLAB 现在还支持 CPython 3.9

2021a

实时编辑器动画播放控件:用于控制动画的交互式界面

实时编辑器控件:通过将变量关联到下拉项和滑块值,在实时脚本中创建动态控件

XML 文件:使用 readtable、readtimetable 和其他函数读取、写入和导入 XML 文件

低级文件 I/O 函数和远程数据:对远程存储的文件执行读写 *** 作

save 和 load 函数与远程数据:将数据保存、加载和追加到远程存储的 v7.3 MAT 文件中

读取在线数据:使用 readtable、audioread 和其他读取函数通过 HTTP 和 HTTPS 读取文件

数据压缩函数:改进了 zip/unzip 和 tar/untar 的功能

jsonencode:为 JSON 文本添加缩进

创建绘图实时编辑器任务:以交互方式创建绘图并生成代码

C++ 接口支持下列额外的 C++ 语言功能。

Java 引擎应用程序中使用 MATLAB 值对象

支持的 Python 版本,即 3.7 或 3.8 版

增加了对 IMU 传感器的支持

现在,MATLAB Support Package for Raspberry Pi™ Hardware 可为下列 IMU 传感器提供代码生成和连接到 Raspberry Pi 函数的 IO 支持:

HTS221

LPS22HB

LSM303C

LSM6DSL

LSM9DS1

MPU-6050

MPU-9250

2020b

比较工具:在 MATLAB Online 中比较文本文件

readstruct 和 writestruct 函数:在 XML 文件中读取和写入结构化数据

readlines 函数:以字符串数组形式读取文本文件中的行

HDF5 文件和基于 Web 的数据:使用现有 HDF5 函数读取和写入远程存储的 HDF5 文件

HDF5 文件:读取和写入使用 Unicode 字符编码的文件名

音频文件和基于 Web 的数据:使用 audioread、audiowrite 和 audioinfo 读取和写入远程存储的音频文件

TCP/IP 客户端接口:新的函数和属性

TCP/IP 客户端接口有一组新的函数和属性。

您仍可以使用现有函数执行以下 *** 作:

使用 tcpclient 函数创建一个与 TCP/IP 服务器的 TCP/IP 客户端连接。

使用 read 函数从远程主机读取数据。

使用 write 函数将数据写入远程主机。

现在,您可以使用新函数执行以下 *** 作:

使用 echotcpip 函数启动 TCP/IP 回显服务器。

使用 readline 函数从远程主机读取一行 ASCII 字符串数据。

使用 writeline 函数向远程主机写入一行 ASCII 字符串数据。

使用 configureTerminator 函数为与远程主机的 ASCII 字符串通信设置终止符。

使用 configureCallback 函数为与远程主机的通信设置回调函数和触发条件。

使用 flush 函数刷新缓冲区,以便与远程主机通信。

串行端口接口:改进了性能

serialport 接口的性能优于 serial 接口。例如,在使用 9600 的默认波特率时,以下代码中使用 serialport 对象写入和读取数据的速度大约是使用 serial 对象写入和读取数据速度的 1.1 倍。

源代码管理:改进了设置 Git 源代码管理的工作流

现在,您可以将 nullptr 传递给 C++ 函数。

MATLAB 现在除支持 CPython 2.7、3.6 和 3.7 之外,还支持 CPython 3.8

Java 包将被删除

实时编辑器任务:以交互方式从 USB 网络摄像头捕获图像,并在实时脚本中生成 MATLAB 代码。

2020a

文件编码:默认情况下,将 MATLAB 代码文件 (.m) 和其他纯文本文件保存为 UTF-8 编码文件

switch 函数:更灵活地比较对象

copyfile 和 movefile 函数:访问基于 Web 的存储服务,如 Amazon Web Services 和 Azure Blob 存储

数据存储:使用 writeall 将数据从数据存储写入文件

文本文件和电子表格文件:使用 'WriteMode' 参数追加、覆盖或替换数据

h5create 和 h5write:将字符串数据写入 HDF5 文件

jsonencode:在 MATLAB 类中自定义编码

导入工具不再支持导入 HDF5 文件。要以编程方式导入 HDF4 或 HDF-EOS


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11530306.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存