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

本文主要是介绍Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个是篇学习 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

这篇关于Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596424

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p