问题标签 [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.
c++ - 如何进行转换以从线性加速度 IMU 数据中获得正确的线速度?
我有 IMU 传感器,它可以为我提供原始数据,例如方向、角度和线性加速度。我正在使用 ROS 并做一些 Gazebo UUV 模拟。此外,我想从原始 IMU 数据中获得线速度。如果我随着时间的推移进行积分,则会累积误差,并且在机器人转弯时会不准确。所以如果我使用
所以集成线性加速度是非常糟糕的,
因为集成加速度而不考虑传感器的任何可能旋转,这意味着如果传感器完全旋转,结果可能会很糟糕。所以我需要一些 ROS 包来考虑所有这些转换并给我最准确的线速度估计。有什么帮助吗?谢谢
ros - 如何将 IMU 获得的 3D 角速度数据积分得到线速度的误差最小化?
有 IMU 传感器,它可以为我提供原始数据,例如方向、角度和线性加速度。我正在使用 ROS 并做一些 Gazebo UUV 模拟。此外,我想从原始 IMU 数据中获得线速度。
所以朴素积分方法如下: IMU状态估计最简单的方法是对测量数据进行朴素积分。我们通过整合 IMU 获得的 3D 角速度数据来估计姿态。假设时间步长Δ较小,则可以增量计算每个时间步长的姿态。
如果我随着时间的推移进行积分,则会累积误差,并且在机器人转弯时会不准确。因此,我正在寻找一些可以纠正该错误的方法(ROS 包或外部 ROS 框架)或代码。
有什么帮助吗?
c - GPS + IMU 融合过滤器
我有个问题。我有一艘双引擎船,我想在里面安装一个自动驾驶仪。单独使用 GPS,我的船像正弦波一样到达目的地,不幸的是 300m。就像下图一样。
我使用 RadioLink M8N GPS SE100 ( http://radiolink.com.cn/doce/UploadFile/ProductFile/SE100Manual.pdf ) 和 STM32。它有一个内置的地磁传感器HMC5983。是否可以使用此传感器和 GPS 让我的船直行?
我对所有那些卡尔曼滤波器、Fusion 等都不太了解。我的问题是,除了 GPS 本身,我应该使用什么传感器和滤波器才能使我的船在直线上航行。
提前感谢您的提示和提示。
ros - 使用仅带有 IMU 传感器的 robot_localization 包时 TF 损坏
我使用这个robots_lokalization包来获得线速度。因为在我的情况下只有传感器输入是 IMU。我配置参数并设置帧如下
启动文件如下
机器人 base_link 框架是thrbot/base_link
IMU 是thrbot/imu_link
这是TF没有使用包装的照片
. 可以看出TF很好。但是当使用这个包时,我的 TF 坏了,可以在这里看到
。任何帮助如何解决它?
谢谢
ros - 如何在 hector_localization 堆栈中设置参数以融合 IMU 和气压计(压力传感器)?
我正在检查hector_localization堆栈,它提供了机器人或平台的完整 6DOF 姿势。它使用各种传感器源,这些传感器源使用扩展卡尔曼滤波器进行融合。惯性测量单元 (IMU) 的加速度和角速率用作主要测量值,也支持气压传感器。我检查了这是这个的发射
但是找不到热设置hector_pose_estimation
节点和启动文件以获取IMU和压力(气压计)数据作为输入的方式。有什么帮助吗?
谢谢
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 节点)代码有什么帮助吗?
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 库,但在位置控制和速度更新方面没有获得所需的输出。
c++ - 在 ROS 订阅者节点上集成角速度
我正在尝试读取和计算两个量的积分,即线速度和角速度。但是由于某种原因,方向积分有很大的偏移量,大约为 6000000。鉴于仅在发布数据时(大约 50Hz)才调用循环并且 Imu 数据的大小在 0.05 的量级之外偏移量不能漂移。
阅读部分还可以。问题在于Integral的实施。 在此处输入图像描述
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 编写代码。由于我的嵌入式环境中没有足够的计算余量,因此实现应该尽可能简单。有什么好的解决办法吗?