问题标签 [imu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
254 浏览

c++ - 如何进行转换以从线性加速度 IMU 数据中获得正确的线速度?

我有 IMU 传感器,它可以为我提供原始数据,例如方向、角度和线性加速度。我正在使用 ROS 并做一些 Gazebo UUV 模拟。此外,我想从原始 IMU 数据中获得线速度。如果我随着时间的推移进行积分,则会累积误差,并且在机器人转弯时会不准确。所以如果我使用

所以集成线性加速度是非常糟糕的,

因为集成加速度而不考虑传感器的任何可能旋转,这意味着如果传感器完全旋转,结果可能会很糟糕。所以我需要一些 ROS 包来考虑所有这些转换并给我最准确的线速度估计。有什么帮助吗?谢谢

0 投票
1 回答
70 浏览

ros - 如何将 IMU 获得的 3D 角速度数据积分得到线速度的误差最小化?

有 IMU 传感器,它可以为我提供原始数据,例如方向、角度和线性加速度。我正在使用 ROS 并做一些 Gazebo UUV 模拟。此外,我想从原始 IMU 数据中获得线速度。

所以朴素积分方法如下: IMU状态估计最简单的方法是对测量数据进行朴素积分。我们通过整合 IMU 获得的 3D 角速度数据来估计姿态。假设时间步长Δ较小,则可以增量计算每个时间步长的姿态。

如果我随着时间的推移进行积分,则会累积误差,并且在机器人转弯时会不准确。因此,我正在寻找一些可以纠正该错误的方法(ROS 包或外部 ROS 框架)或代码。

有什么帮助吗?

0 投票
1 回答
77 浏览

c - GPS + IMU 融合过滤器

我有个问题。我有一艘双引擎船,我想在里面安装一个自动驾驶仪。单独使用 GPS,我的船像正弦波一样到达目的地,不幸的是 300m。就像下图一样。 在此处输入图像描述

我使用 RadioLink M8N GPS SE100 ( http://radiolink.com.cn/doce/UploadFile/ProductFile/SE100Manual.pdf ) 和 STM32。它有一个内置的地磁传感器HMC5983。是否可以使用此传感器和 GPS 让我的船直行?

我对所有那些卡尔曼滤波器、Fusion 等都不太了解。我的问题是,除了 GPS 本身,我应该使用什么传感器和滤波器才能使我的船在直线上航行。

提前感谢您的提示和提示。

0 投票
0 回答
52 浏览

ros - 使用仅带有 IMU 传感器的 robot_localization 包时 TF 损坏

我使用这个robots_lokalization包来获得线速度。因为在我的情况下只有传感器输入是 IMU。我配置参数并设置帧如下

启动文件如下

机器人 base_link 框架是thrbot/base_linkIMU 是thrbot/imu_link

这是TF没有使用包装的照片

无包机器人TF. 可以看出TF很好。但是当使用这个包时,我的 TF 坏了,可以在这里看到破碎的TF。任何帮助如何解决它?

谢谢

0 投票
1 回答
54 浏览

ros - 如何在 hector_localization 堆栈中设置参数以融合 IMU 和气压计(压力传感器)?

我正在检查hector_localization堆栈,它提供了机器人或平台的完整 6DOF 姿势。它使用各种传感器源,这些传感器源使用扩展卡尔曼滤波器进行融合。惯性测量单元 (IMU) 的加速度和角速率用作主要测量值,也支持气压传感器。我检查了这是这个的发射

但是找不到热设置hector_pose_estimation节点和启动文件以获取IMU和压力(气压计)数据作为输入的方式。有什么帮助吗?

谢谢

0 投票
0 回答
47 浏览

c++ - (ROS 节点)用于欧拉积分以估计知道加速度的速度

我有一个 IMU 读数,想使用基于来自 IMU 的线性加速度的 Euler 方法估计线速度。知道累积的误差。所以我需要一个 C++ (python) 代码(可能是一个 ROS 节点),它从 IMU 传感器读取 IMU 数据并使用欧拉积分给出估计的线速度。

我知道加速度 a 是a=dv/dt

这将是功能。然后dv/dt = f(t) . i.e. v(n+1) = v(n) + f(n) * dt

那么步数是怎么计算的呢?我有来自 ros 主题的时间戳。那么对 C++(ROS 节点)代码有什么帮助吗?

0 投票
1 回答
24 浏览

python - 如何可视化绘图中的积分漂移?

我正在尝试实现以下图像: 在此处输入图像描述

其中红色是ground truth circle(车辆在一个圆圈内行驶),绿色是Integration Drift(积分时出现的数值错误)。

我从绘制圆圈开始,并且在使用 python 绘制积分漂移时遇到了困难。

注意:我正在尝试在某些地方使用 scipy 的 integration.cumtrapz 而不是乘法,但这对我没有帮助。

这些是我认为应该添加和工作的地方:

我相信代码中唯一的问题是变量xA1idxA2id到目前为止,一切看起来都很好。

目前的结果是: 在此处输入图像描述

我写的代码是:

方程来自:

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
35 浏览

ros - BNO055 通过 rosserial 用 a4988 驱动器控制 Nema 17 步进电机

我的目标是根据 BNO055 惯性测量单元的欧拉角来控制 Nema 17 步进电机的位置和速度。我正在使用 ESP32 通过 WIFI 将代码刷新到 rosserial。我使用 12V 电源为 Nema 17 供电,使用小型外部 5V 电池组为 BNO055 供电。

总之,步进电机应在 0-4100 步之间移动,这将映射到 BNO055 y 轴的 -90 度和 90 度。

为此,我需要尽可能多地读取 BNO055 传感器的输出,并且仅在 BNO055 相对于映射改变位置时才改变 Nema 17 的方向。

我遇到的问题是,当我在代码中读取传感器时,我的电机开始抖动并且旋转不顺畅。我想知道如何让这两件事同时工作(读取传感器和移动 nema 17)。

PS:我将通过使用 BNO055 传感器计算 PI 控制并相应地调整 delayMicroseconds() 来控制速度……但首先要使读数和电机运动平稳。

下面是我用来调试这个问题的代码片段:

我已经尝试过 AccelStepper.h 库,但在位置控制和速度更新方面没有获得所需的输出。

0 投票
1 回答
49 浏览

c++ - 在 ROS 订阅者节点上集成角速度

我正在尝试读取和计算两个量的积分,即线速度和角速度。但是由于某种原因,方向积分有很大的偏移量,大约为 6000000。鉴于仅在发布数据时(大约 50Hz)才调用循环并且 Imu 数据的大小在 0.05 的量级之外偏移量不能漂移。

阅读部分还可以。问题在于Integral的实施。 在此处输入图像描述

0 投票
0 回答
30 浏览

c - 如何从原始 IMU 数据中获取航向?

我有一些在每个轴(x,y,z)上加速和旋转的原始数据。但我不知道重力方向是什么轴。取决于每个对象,我无法弄清楚 IMU 的安装方向。有时 x 轴是重力方向,有时是 y 轴,有时是 z 轴,有时不是全部。

我需要找出物体(安装了 IMU)何时在航向方向上以 1m/s^2 的速度移动。如果Z轴是重力方向,x轴是运动方向,IMU需要找一个Ax值为1m/s^2或更大的值(如果IMU安装方向如下图) .

在此处输入图像描述

-img1

但我不知道哪个方向是运动方向,哪个是重力方向。因此,我想通过3个加速度信号和3个陀螺信号找出哪个方向是运动方向。

在此处输入图像描述

即使传感器以图 2 所示的角度安装,如何才能发现传感器在移动方向上以 1m/s^2 的加速度移动?我需要用 C 编写代码。由于我的嵌入式环境中没有足够的计算余量,因此实现应该尽可能简单。有什么好的解决办法吗?