Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程

news2025/1/11 10:48:13

这个是篇学习 Handsfree_ros_imu 传感器的博客记录

官方教程链接见:

https://docs.taobotics.com/docs/hfi-imu/

产品功能

IMU 内有 加速度计陀螺仪磁力计这些传感器,通过固定 imu 到物体上后,可以获取物体在运动过程中的一些信息,如物体的三轴加速度信息,三轴角速度信息,三轴角度信息,三轴磁场信息。通过这些信息,可以得知物体运动过程中的状态。

产品型号

  • A9:可获取三轴加速度信息,三轴角速度信息,三轴角度信息,三轴磁场信息

A9 型号

  • 9 轴 IMU。
  • 9 轴融合算法。
  • 自主研发滤波算法。
  • 自主研发抗磁干扰算法,有效防止磁场的干扰。上电初始化成功后生效。
  • 输出频率 150 HZ。
  • yaw 值为 0 时, x 轴会指向北方。
  • 上电后会有10 秒左右的时间进行初始化,期间会将周围的磁场数据初始化到模块内,所以不一定会指向正北方,跟模块所在环境的磁场有一定关系。
  • IMU 模块需要静置启动 ,否则模块会自动切换到动态启动,零飘会采用到 flash 中的存储值,一般会有产生较大的偏差。
  • 静态精度 0.1 动态精度 0.5

IMU 是惯性测量单元(英文:Inertial measurement unit)的简称,是测量物体三轴姿态角(或角速率)以及加速度的装置。

一般情况,一个 IMU 包含了三个单轴的加速度计和三个单轴的陀螺仪,加速度计检测物体在载体坐标系统独立三轴的加速度信号,而陀螺仪检测载体相对于导航坐标系的角速度信号,测量物体在三维空间中的角速度和加速度,并以此解算出物体的姿态。

陀螺仪和加速度计是 IMU 的主要元件,其精度直接影响到惯性系统的精度。在实际工作中,由于不可避免的各种干扰因素,而导致陀螺仪及加速度计产生误差,从初始对准开始,其导航误差就随时间而增长,尤其是位置误差,这是惯导系统的主要缺点。

一般 xx 轴 IMU区别。

  1. 6 轴 imu:三个单轴的加速度计,三个单轴的陀螺仪
  2. 9 轴 imu:三个单轴的加速度计,三个单轴的陀螺仪,三个单轴磁力计
  3. 10 轴 imu:三个单轴的加速度计,三个单轴的陀螺仪,三个单轴磁力计,一个气压计

常见名称解析

三轴陀螺仪: 三轴陀螺仪是惯性导航系统的核心敏感器件,其最大的作用就是“测量角速度,以判别物体的运动状态,所以也称为运动传感器“

三轴加速度计: 是测量运载体线加速度的仪表

磁力计: 用于测试磁场强度和方向

气压计: 通过测量大气压强,来计算出高度

6 轴融合算法: 加速计对机体振动非常敏感,稍有扰动,加速度方向就会偏移(外力与重力的合力),但是长期运行时,经过平滑滤波算法之后的加速计数据就比较可信。相比而言,陀螺仪则对外部扰动不敏感,反而是长时间积分后会出现角度漂移。因此实际应用中,都是将二者采集的数据进行融合,相互取长补短。

9 轴融合算法: 由于机体水平时,加速度计无法测量绕 Z 轴的旋转量,即偏航角 yaw,并且磁力计也同样无法测得z轴的旋转量。所以使用加速度计和磁力计同时对陀螺仪进行校正。

全姿态角: 全姿态角(All attitude angle)用来描述对象在空间中的方位姿态,有飞机(导弹)姿态角和卫星姿态角之分。飞机姿态角是按欧拉概念定义的,故亦称欧拉角 。飞机姿态角是由机体坐标系与地理坐标系之间的关系确定的,用航向角俯仰角横滚角 三个欧拉角表示。不同的转动顺序会形成不同的坐标变换矩阵,通常按航向角、俯仰角和横滚角的顺序来表示机体坐标系相对地理坐标系的空间转动。

零飘: 一些因素导致电路输出端电压偏离原固定值而上下漂动的现象 它又被简称为:零漂。

ROS 坐标系: 请参考 ROS 坐标系 - CSDN

角度精度: 请参考倾角传感器中的精度是指什么 - CSDN

 

linux + ROS 下使用安装软件包(需要安装好 ROS)

我使用的是 ubuntu 20.04,ROS Noetic,python3 ,所以终端运行:

sudo apt-get install ros-noetic-imu-tools ros-noetic-rviz-imu-plugin

pip3 install pyserial

下面以官方安装为例,你也可以根据自身使用的情况来安装:

sudo apt-get install git -y
mkdir -p ~/handsfree/handsfree_ros_ws/src/
cd ~/handsfree/handsfree_ros_ws/src/
git clone -b new https://gitee.com/HANDS-FREE/handsfree_ros_imu.git
cd ~/handsfree/handsfree_ros_ws/
catkin_make
cd ~/handsfree/handsfree_ros_ws/src/handsfree_ros_imu/scripts/
sudo chmod 777 *.py
echo "source ~/handsfree/handsfree_ros_ws/devel/setup.sh" >> ~/.bashrc
source ~/.bashrc

Python 驱动测试

以 Ubuntu20.04,A9,python3 为例:

注意:先不要插 IMU 的 USB ,在终端输入 ls /dev/ttyUSB* 来检测一下,然后将 USB 插入电脑,再在终端输入 ls /dev/ttyUSB* 来检测一下,多出来的 ttyUSB 设备就是 IMU 的串口

 我检查出的USB端口为ttyUSB0,这个在后续修改文件时会用到。

进入脚本目录,修改对应的 python 脚本中 /dev/ttyUSB0(脚本默认用的 /dev/ttyUSB0) 为你电脑识别出来的数字:

 接着,可通过 cd 命令到脚本所在的目录,也可以在脚本所在的目录打开终端,然后通过 python 命令运行脚本,下面开始演示:

hfi_a9.py 驱动运行成功后的截图

在Linux的终端输入:

python3 hfi_a9.py

 

hfi_a9_ui.py 驱动运行成功后的截图

在Linux的终端输入:

python3 hfi_a9_ui.py

 

 

ROS 驱动和可视化

以 Ubuntu20.04,A9,python3 为例:

先不要插 IMU 的 USB ,在终端输入 ls /dev/ttyUSB* 来检测一下,然后在将 USB 插入电脑,再在终端输入 ls /dev/ttyUSB* 来检测一下,多出来的 ttyUSB 设备就是 IMU 的串口。

随后进入脚本目录,修改对应的 launch 文件中的 /dev/ttyUSB0(脚本默认用的 /dev/ttyUSB0)为你电脑识别出来的数字:

 打开终端,运行 imu 驱动:

roslaunch handsfree_ros_imu handsfree_imu.launch imu_type:=a9

imu 启动成功的截图如下:

 打开两个新终端输入分别输入下面两行命令:

rostopic echo /handsfree/imu

 rostopic echo /handsfree/mag

 同理,如需要运行其他 launch 文件,需要先确保 launch 文件中的 /dev/ttyUSB 设备修改对

  • 相关文件说明

    • display_and_imu.launch,打开打开 IMU 驱动节点和用 visual 编写的可视化模型。(仅支持 ubuntu 16.04)
    • handsfree_imu.launch,打开用 IMU 驱动节点。
    • rviz_and_imu.launch,打开 IMU 驱动节点和 Rviz 可视化。
    • view_display .launch,单独打开用 visual 编写的可视化模型。
    • view_rviz.launch,单独打开Rviz 可视化。

下面继续运行测试:

新开一个终端,运行 rviz_and_imu.launch:

roslaunch handsfree_ros_imu rviz_and_imu.launch imu_type:=a9

 

官方文档中的一个比较有趣的点是视觉SLAM 和 IMU 融合

        视觉 SLAM 容易受图像遮挡,光照变化,运动物体干扰弱纹理场景等影响,单目视觉无法测量尺度,深度信息往往无法直接获取,仅通过单张图像无法获得像素的深度信息,需要通过三角测量的方法来估计地图点的深度。此外单目纯旋转运动无法估计,快速运动时易丢失。

        视觉与 IMU 融合之后会弥补各自的劣势,可利用视觉定位信息来估计 IMU 的零偏,减少IMU由零偏导致的发散和累积误差。IMU 可以为视觉提供快速运动时的定位,IMU 可以提供尺度信息,避免单目无法测尺度。

         最后指出,IMU 设计的应用领域广泛,在军航空航天、航海、军事、医疗、娱乐、机器人、车辆等领域都有这重要的作用。

 

IMU的数据文本记录

        上述操作运行下来,IMU的数据已经可以实时的输出了,如果想要将这些数据保存一段下来,可以继续看下面的内容:

 打开终端,运行 imu 驱动:

roslaunch handsfree_ros_imu handsfree_imu.launch imu_type:=a9

接着新开一个终端,输入:

rostopic echo-b xxx.bag-p/handsfree/imu>data_record.txt

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

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

相关文章

登录模块的实现

一.前期的准备工作 1.页面的布局 (1)表单的校验: 利用element-ui提供的文档绑定rules规则后实现校验 (2)跨域的配置 : 利用proxy代理来解决跨域的问题 (3)axios拦截器的配置 两个点:1. 在请求拦截的成功回调中,如果token,因为调用其它的接口需要token才能调取。 在请…

锤科HandShaker修改版,支持安卓14、澎湃OS

如今几乎各家手机厂商都在布局生态,但PC端往往是最容易被忽略的一环,哪怕是很强的华为鸿蒙、小米澎湃,想要做到手机和电脑互联,也限制了笔记本机型 虽然我一直致力于解锁非小米电脑安装小米电脑管家,比如前几天刚刚更…

在WindowsServer2012中部署war项目

目录 前言 一.jdk安装 二.Tomact安装 三.MySQL安装 ​编辑​编辑​编辑​编辑​编辑​编辑​编辑 四.开放端口号 MySQL开放端口号 Tomact开放端口号 ​编辑 五.项目部署 1.将war放置在tomact中 2.配置项目sql脚本 3.最终效果 前言 安装Java开发工具包&#xff08…

【设计模式-02】Strategy策略模式及应用场景

一、参考资料 Java 官方文档 Overview (Java SE 18 & JDK 18)module indexhttps://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 & JDK 18)declaration: module: java.base, pa…

构建免费的Dokan和WooCommerce构建线上课程市场在线销售数字课程

我们知道创建良好的学习说明和材料很困难。但当涉及到销售时,就变得更加困难。如果您无法出售您的课程,那么没有什么比这更令人沮丧的了。 幸运的是,如果您使用的是 WordPress 网站,那么您可以非常轻松且免费地完成此操作。借助L…

java SSM物业管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM物业管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和 数据库,系统主要采用B/…

2024.1.11 Kafka 消息队列,shell命令,核心原理

目录 一 . 消息队列 二. Kafka 三 . 启动命令 四 . Kafka的Shell 命令 五 . Kafka的核心原理 1. Topic的分区和副本机制 2 . 消息存储机制 和 查询机制 3. Kafka中生产者数据分发策略 六 . Kafka 之所以具有高速的读写性能,主要有以下几个原因 七. 笔记…

指导AI进行推理:提示工程如何弥补RAG系统中的差距

每日推荐一篇专注于解决实际问题的外文,精准翻译并深入解读其要点,助力读者培养实际问题解决和代码动手的能力。 欢迎关注公众号(NLP Research) 原文标题:Instructing AI to Reason: How Prompt Engineering Bridges the Gap in RAG Systems 原文地址:https://medium.c…

vscode配置Todo Tree插件

一、在VSCode中安装插件Todo Tree ​​​​ 二、按下快捷键ctrlshiftP,输入setting.jspn 选择相应的配置范围,我们选择的是用户配置 Open User Settings(JSON),将以下代码插入其中。 //todo-tree 标签配置从这里开始 标签兼容大小写字母(很…

MoE模型性能还能更上一层楼?一次QLoRA微调实践

Fine-Tuning Mixtral 8x7B with QLoRA:Enhancing Model Performance 🚀 编者按:最近,混合专家(Mixture of Experts,MoE)这种模型设计策略展现出了卓越的语言理解能力,如何在此基础上进一步提升 MoE 模型的性能成为业界…

React 18中新钩子 useDeferredValue 使用

React是一个流行的用于构建用户界面的JavaScript库,它不断发展以为开发人员提供优化性能的工具。 React 18中引入的此类工具之一是useDeferredValue钩子,它旨在通过优先渲染更新来提高应用程序的性能。 useDeferredValue钩子是什么? useDeferredValue钩子是React性能优化工…

c++析构函数

析构函数的简述 1. 析构函数和构造函数类似,是c规定当对象的生命周期结束时,默认你会调用析构函数。 2. 同理,当我们不写析构函数的时候,编译器会自动生成一个空实现的析构函数。 3. 析构函数只能编译器自己调用,我们…

CSS3中transform2D变形详解

CSS3变形 在CSS3中,动画效果包括3个部分: 变形(transform)过渡(transition)动画(animation) 在实际开发中,有时需要实现元素的各种变形效果,如平移,缩放,旋转,倾斜等。 在CSS3中&#xff0c…

2 快速前端开发

CSS快速入门 1.CSS案例1.1 内容回顾1.2 案例:二级菜单1.2.1 划分区域1.2.2 搭建骨架1.2.3 Logo区域1.2.4 菜单部分 1.3 案例:顶部菜单 二级菜单小结 1.4 案例:推荐区域1.4.1 划分区域1.4.2 搭建骨架1.4.3 案例的实现小结 2. CSS知识点2.1 ho…

Spark on Hive及 Spark SQL的运行机制

Spark on Hive 集成原理 HiveServer2的主要作用: 接收SQL语句,进行语法检查;解析SQL语句;优化;将SQL转变成MapReduce程序,提交到Yarn集群上运行SparkSQL与Hive集成,实际上是替换掉HiveServer2。是SparkSQL…

基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘特图

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 编码与初始化 4.2 适应度函数 4.3 遗传操作 4.4 自适应机制 4.5 终止条件 5.完整程序 1.程序功能描述 基于自适应遗传算法的车间调度matlab仿真,可以任意调整工件数和机器数,输出甘…

java基础之异常练习题

异常 1.Java 中所有的错误/异常都继承自 Throwable类;在该类的子类中, Error 类表示严重的底层错误, 对于这类错误一般处理的方式是 直接报告并终止程序 ; Exception 类表示异常。 2.查阅API,完成以下填空:…

铭文 LaunchPad 平台 Solmash 推出早鸟激励计划

为感谢用户对Solmash的支持,Solmash 特别推出“Solmash早鸟激励计划”,以回馈社区的早期参与者,这是专为已经参与Staking Pool或Honest Pool的用户推出的激励。 Solmash NFT激励 被列入早鸟计划的用户,可通过点击:sol…

文件上传进阶绕过技巧(一)和靶场实战

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 0、环境准备 请移步《文件上传靶场实战:upl…

NLP论文阅读记录 - wos | 01 使用深度学习对资源匮乏的语言进行抽象文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Abstractive text summarization of lowresourced languages usi…