此示例演示如何从安装在地面车辆上的传感器生成惯性测量单元 (IMU) 读数。根据传感器的位置,IMU 加速度会有所不同。

一、创建轨迹

指定车辆的航点轨迹并使用计算车辆姿势。

% Sampling rate.
Fs = 100;% Waypoints and times of arrival.
waypoints = [1 1 1; 3 1 1; 3 0 0; 0 0 0];
t = [1; 10; 20; 30];% Create trajectory and compute pose.
traj = waypointTrajectory(waypoints, t, "SampleRate", Fs);
[posVeh, orientVeh, velVeh, accVeh, angvelVeh] = lookupPose(traj, ...t(1):1/Fs:t(end));

二、创建传感器并定义偏移

创建两个由加速度计、陀螺仪和磁力计传感器组成的 9 轴对象。Oneobject 生成安装在车辆原点的 IMU 的读数,另一个生成安装在驾驶员座椅上的 IMU 的读数。接下来,指定车辆原点与安装在驾驶员座椅上的 IMU 之间的偏移量。调用以可视化传感器的位置。

% IMU at vehicle origin.
imu = imuSensor("accel-gyro-mag", "SampleRate", Fs);% IMU at driver's seat.
mountedIMU = imuSensor("accel-gyro-mag", "SampleRate", Fs);% Position and orientation offset of the vehicle and the mounted IMU.
posVeh2IMU = [2.4 0.5 0.4];
orientVeh2IMU = quaternion([0 0 90], "eulerd", "ZYX", "frame");% Visualization.
helperPlotIMU(posVeh(1,:), orientVeh(1,:), posVeh2IMU, orientVeh2IMU);

三、使用车辆轨迹计算 IMU 轨迹

使用该功能计算安装在驾驶员座椅上的 IMU 的地面实况轨迹。此函数使用位置和方向偏移以及车辆轨迹来计算 IMU 轨迹。

[posIMU, orientIMU, velIMU, accIMU, angvelIMU] = transformMotion( ...posVeh2IMU, orientVeh2IMU, ...posVeh, orientVeh, velVeh, accVeh, angvelVeh);

四、生成传感器读数

为安装在车辆原点的 IMU 和安装在驾驶员座椅上的 IMU 生成 IMU 读数。

% IMU at vehicle origin.
[accel, gyro, mag] = imu(accVeh, angvelVeh, orientVeh);% IMU at driver's seat.
[accelMounted, gyroMounted, magMounted] = mountedIMU( ...accIMU, angvelIMU, orientIMU);

五、比较加速度计读数

比较两个 IMU 的加速度计读数。请注意,由于偏离中心位置,x 轴加速度不同。

figure('Name', 'Accelerometer Comparison')
subplot(3, 1, 1)
plot([accel(:,1), accelMounted(:,1)])
legend('Aligned with Vehicle', 'Off-centered')
title('Accelerometer')
ylabel('x-axis (m/s^2)')
subplot(3, 1, 2)
plot([accel(:,2), accelMounted(:,2)])
ylabel('y-axis (m/s^2)')
subplot(3, 1, 3)
plot([accel(:,3), accelMounted(:,3)])
ylabel('z-axis (m/s^2)')

六、比较陀螺仪读数

比较两个 IMU 的陀螺仪读数。

figure('Name', 'Gyroscope Comparison')
subplot(3, 1, 1)
plot([gyro(:,1), gyroMounted(:,1)])
ylim([-0.22 0.1])
legend('Aligned with Vehicle', 'Off-centered')
title('Gyroscope')
ylabel('x-axis (rad/s)')
subplot(3, 1, 2)
plot([gyro(:,2), gyroMounted(:,2)])
ylabel('y-axis (rad/s)')
subplot(3, 1, 3)
plot([gyro(:,3), gyroMounted(:,3)])
ylabel('z-axis (rad/s)')

七、比较磁力计读数

比较两个 IMU 的磁力计读数。

figure('Name', 'Magnetometer Comparison')
subplot(3, 1, 1)
plot([mag(:,1), magMounted(:,1)])
legend('Aligned with Vehicle', 'Off-centered')
title('Magnetometer')
ylabel('x-axis (\muT)')
subplot(3, 1, 2)
plot([mag(:,2), magMounted(:,2)])
ylabel('y-axis (\muT)')
subplot(3, 1, 3)
plot([mag(:,3), magMounted(:,3)])
ylabel('z-axis (\muT)')

八、程序

使用Matlab,点击打开。

打开下面的“GenerateOffcenteredIMUReadingsExample.mlx”文件,点击运行,就可以看到上述效果。

程序下载链接:https://download.csdn.net/download/weixin_45770896/87429178

基于Matlab生成车辆传感器惯性测量单元读数(附源码)相关推荐

  1. 基于Matlab的合成孔径雷达模拟陆地场景(附源码)

    目录 一.生成模拟地形 二.指定搜救系统和场景 三.定义地表反射率 四.配置雷达收发器 4.1 生成数据多维数据集 4.2 可视化 SAR 数据 五.总结 六.程序 合成孔径雷达(SAR)系统使用平台 ...

  2. 基于Matlab的激光雷达机场地面监控仿真(附源码)

    目录 一.设置方案 ​编辑 二.设置扩展对象跟踪器和性能衡量指标 2.1 扩展对象跟踪器 2.2 指标 三.运行方案和跟踪器 四.结果 五.总结 六.程序 停机坪是机场的一个特定区域,旨在容纳飞机,用 ...

  3. 基于Matlab的山区监视场景建模仿真(附源码)

    目录 一.创建场景并添加地形 二.创建可视化并模拟场景 三.结论 四.程序 此示例演示如何对山区的监视场景进行建模,在该区域,地形可能会遮挡监视雷达的地面和飞行器.可以使用数字地形高程数据 (DTED ...

  4. 基于matlab使用主动声纳系统进行水下目标检测(附源码)

    一.前言 此示例演示如何模拟具有两个目标的主动单基地声纳方案.声纳系统由各向同性投影仪阵列和单个水听器元件组成.投影仪阵列呈球形.反向散射信号由水听器接收.接收到的信号包括直接和多路径贡献. 二.水下 ...

  5. 基于matlab使用被动声纳系统定位声学信标(附源码)

    一.前言 此示例演示如何模拟被动声纳系统.固定的水声信标由浅水通道中的拖曳无源阵列检测和定位.声信标以每秒 10.37 千赫兹的速度传输 5 毫秒脉冲,并建模为各向同性投影仪.定位器系统在表面下方拖曳 ...

  6. MATLAB应用实战系列(四十四)-基于matlab的支持向量机分类、回归问题(附源码解析)

    Part.1 支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解. 对于 ...

  7. 针对大量数据,MATLAB生成EXCEL文件并进行排版处理的源码

    #MATLAB生成EXCEL文件并进行排版处理的源码 项目要求:给定某海洋站潮位数据在一年之年的每分钟潮位数据(一共有24×60×365=525600个数),txt格式,要求制作出海洋站该年份的潮汐表 ...

  8. 基于JAVA智能化车辆管理综合信息平台计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA智能化车辆管理综合信息平台计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA智能化车辆管理综合信息平台计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  9. 基于OpenPose和Human segmentation的游戏人物解析(附源码)

    基于OpenPose和Human segmentation的游戏人物解析(附源码) --基于PaddleHub的真人街霸游戏 Github AI studio 街霸(Street Fighter)是大 ...

最新文章

  1. 会计科目登错怎么更正
  2. Spark学习之路 (五)Spark伪分布式安装
  3. 如何安装sshd服务用于远程登录
  4. 用户 'IIS APPPOOL\***' 登录失败(转载)
  5. Java笔记-重写JsonSerializer中serialize方法使Json中时间戳/1000
  6. matlab在运筹学,MATLAB在运筹学(单纯形法)教学中的应用
  7. eclipse快捷键大全---分操作归纳
  8. 拓端tecdat|Python信贷风控模型:梯度提升Adaboost,XGBoost,SGD, GBOOST, SVC,随机森林, KNN预测金融信贷违约支付和模型优化
  9. about HashMap
  10. Java垃圾回收(GC)机制
  11. ISO-国际标准化组织
  12. 树莓派开机自动运行python程序的方法
  13. ubuntu20禁止hdmi显示器音频输出
  14. docker update修改内存/cpu
  15. 为什么阿里,腾讯,百度和京东都是在开曼岛注册的?
  16. Gradle剔除依赖
  17. 【统计】时间序列预测之 Holt-Winters 指数平滑模型
  18. 企业文档管理难题,云盒子来解决!
  19. 华清远见嵌入式培训_第六周回顾与反思
  20. 《Python 黑帽子》学习笔记 - Python3 实现 netcat - Day 8

热门文章

  1. 腾讯云GPU游戏服务器/云主机租用配置价格表出炉!
  2. 25Hz相敏轨道电路调整方法
  3. 软件需求分析案列_软件需求分析案例资料-共29页
  4. 【题解】- AcWing - 753.平方矩阵 I
  5. 网站刷点击量工具(JS)
  6. 【仿旅游网站】Ajax封装
  7. 创新工场汪华:对新媒体创业团队的几个务实建议
  8. html 表格 底部加统计,简单的统计表格 单式统计表一般统计1 项内容;
  9. 服装企业品牌怎么在网络上做好软文推广?
  10. 公司网络营销设计方案范文