HI226 HI229 6轴姿态传感器ROS串口例程说明
HI226 HI229 6轴姿态传感器ROS串口例程说明
ROS串口例程
本文档介绍如何在ROS下来读取HI226/HI229的数据,并提供了c++语言例程代码,通过执行ROS命令,运行相应的节点,就可以看到打印到终端上的信息。
测试环境:Ubuntu16.04
ROS版本:ROS Kinetic Kame
测试设备:HI226 HI229
1. 安装USB-UART驱动
Ubuntu 系统自带CP210x的驱动,默认不需要安装串口驱动。将调试版连接到电脑上时,会自动识别设备。识别成功后,会在dev目录下出现一个对应的设备:ttyUSBx
检查USB-UART设备是否被Ubantu识别:
- 打开命令行(ctrl + alt + t)
- 输入 ls /dev 查看是挂载成功USB转串口设备
- 查看是否存在 ttyUSBx 这个设备文件。x表示USB设备号,由于Ubuntu USB设备号为从零开始依次累加,所以多个设备每次开机后设备号是不固定的,需要确定设备的设备号。下图为没有插入HI226/HI229评估板时的dev设备列表,这个时候,dev目录下并没有名为 ttyUSB 文件
- 插入USB线,连接调试板,然后再次执行ls /dev。 dev目录下多了一个设备, 如图:
ttyUSB0 文件就是调试版在ubuntu系统中生成的设备(后面的数字是不固定的,有可能为 ttyUSB1 或 ttyUSB2)
- 打开USB设备的可执行权限:
$ sudo chmod 777 /dev/ttyUSB0
2. 安装ROS serial软件包
本例程依赖ROS提供的serial包实现串口通信.
- 首先执行如下命令,下载安装serial软件包:
$ sudo apt-get install ros-kinetic-serial
- 然后输入
roscd serial
命令,进入serial下载位置,如果安装成功,就会出现如下信息:
$:/opt/ros/kinetic/share/serial
3. 编译serial_imu_ws工作空间
打开终端进入/examples/ROS/serial_imu_ws 目录
执行catkin_make命令,编译成功后出现完成度100%的信息。
4. 修改串口波特率和设备号
在Ubuntu环境中,支持的波特率为115200, 460800, 921600。本例程使用的默认波特率是115200,默认打开的串口名称是/dev/ttyUSB0
如果您需要更高的输出频率,请编辑serial_imu.cpp文件,修改serial_imu.cpp文件中的宏定义,改为其他波特率。
#define IMU_SERIAL "/dev/ttyUSB0"
#define BAUD 115200
注意修改后需要回到serial_imu_ws目录下,重新执行catkin_make命令
5. 显示数据
本例程提供了三种查看数据方式:
- 第一种方式是显示所有的数据信息,通过printf把imu上传的所有的信息都打印到终端上,便于查看数据。
- 打印ROS标准imu_msg 数据
- rviz工具实现可视化
5.1:输出IMU原始数据
- 打开另一个终端,执行
roscore
开启ROS
$ roscore
- 回到serial_imu_ws文件夹下 执行
$ source devel/setup.bash
- 执行启动rosrun 启动接受程序
$ rosrun serial_imu serial_imu
执行成功后,就可以看到所有的信息:
Devie ID: 0Run times: 0 days 3:26:10:468Frame Rate: 100HzAcc(G): 0.933 0.317 0.248Gyr(deg/s): -0.02 0.30 -0.00Mag(uT): 0.00 0.00 0.00Eul(R P Y): 52.01 -66.63 -60.77
Quat(W X Y Z): 0.770 0.066 -0.611 -0.172
Pleaes enter ctrl + 'c' to quit....
5.2:输出ROS标准 Imu.msg
- 在windows系统下进行配置模块,使能四元数输出。
- 使用Window下 Uranus上位机进行配置:先把模块连接到PC机上。然后使用Uranus工具进行 连接对应的com口,点击 工具 —> 配置模块,在协议配置区域,可以选择老协议中单独勾选 四元数 ,或者是选择新协议的 IMU数据集合 。勾选好之后,点击 写入配置 ,接收区最后显示 ok ,说明配置成功。在关闭配置窗口上,看一下数据显示区域,最后确认一下,四元数是否正确输出。执行
roslaunch imu_launch imu_msg.launch
命令。执行成功后,就可以看到ROS定义的IMU话题消息:
header: seq: 595stamp: secs: 1595829903nsecs: 680423746frame_id: "base_link"
orientation: x: 0.0663746222854y: -0.611194491386z: -0.17232863605w: 0.769635260105
orientation_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
angular_velocity: x: 0.0851199477911y: 0.0470183677971z: 0.00235567195341
angular_velocity_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
linear_acceleration: x: 0.93323135376y: 0.317857563496z: 0.247811317444
linear_acceleration_covariance: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
5.3:rviz可视化
- 安装ROS rviz插件
- 同上节,使能模块四元数输出
- 进入serial_imu_ws,执行
roslaunch imu_launch imu_rviz.launch
命令,执行成功后,rviz工具被打开。 - 先点击左下角的Add标签,然后在弹出窗口中,选择 By display type标签,查找rviz_imu_plugin;找到之后,选择它下面的imu标签,点击OK, 这时,我们可以看到rviz的左侧的展示窗口中已经成功添加上了Imu的标签。在FixedFrame中填入base_link 。topic中添加 /IMU_data。这时,可以看到坐标系随传感器改变而改变。
HI226 HI229 6轴姿态传感器ROS串口例程说明相关推荐
- HI226 HI229 6轴姿态传感器STM32串口例程说明
HI226 HI229 6轴姿态传感器STM32串口例程说明 STM32例程 本例程提供了C 语言例程代码,用户接收HI226/HI229及HI221数据. 测试环境:Windows10_x64 ...
- 学习 STM32之九轴姿态传感器(BWT901CL)串口通信读取数据
由于个人应用到3轴传感器,所以买了直接买了一个9轴的,用于学习STM32Core平台串口2连接维特智能串口Normal协议,然后通过串口1直接打印数据,接收传感器数据和与传感器进行通信:需要看产品文档 ...
- stm32 MPU6050 6轴姿态传感器的介绍与DMP的应用
最近应用到三轴姿态传感器,因为之前有MPU6050(6轴传感器,这是6轴的), 进行搭配使用,通过三轴姿态传感器进行舵机的角度调整.(内容来源学习正点原子的教程) 同步B站也已经发布过原子官方教程.让 ...
- MPU6050 6轴姿态传感器的分析与使用(一)
一.MPU6050简介 MPU6050是一个6轴姿态传感器(3轴加速度计和3轴陀螺仪传感器),可以测量芯片自身X.Y.Z轴的加速度.角度参数,通过数据融合,可以得到姿态角. 二.简介分析 1.常见的姿 ...
- 维特智能六轴姿态传感器JY61P_stm32f1xx驱动代码解析
目录 硬件准备/上位机直连 代码驱动 关于官方给出的示例 代码功能及其走位 1.怎样不依托代码验证传感器的某个功能是否有效或者能用? 2.写寄存器的方式 3.为什么不使用WIT私有协议中的关闭上电输出 ...
- 九轴姿态传感器的介绍和应用
总体设计 姿态传感器是基于MEMS技术的高性能三维运动姿态测量系统.它包含三轴陀螺仪.三轴加速度计,三轴电子罗盘等运动传感器,通过内嵌的低功耗ARM处理器得到经过温度补偿的三维姿态与方位等数据.利 ...
- STM32应用(七)JY901九轴姿态模块(串口DMA空闲中断和I2C通信)
文章目录 0.相关基础知识介绍 0.1六轴.九轴传感器有什么区别? 1.JY901模块简介 1.1 产品概述 1.2 性能参数 1.3 实物图和接线 2.软件和使用说明书 3.串口通信JY901 3. ...
- 【合宙ESP32C3】MPU6500六轴姿态传感器
网上好多教程都是MPU6050的,看到有些网友说其实两款传感器读写都差不多,但是对于我这种小小白,只想先用例程上手,读出数据,其他的再慢慢来. 这里提供了一种简单上手的方法: [MPU6500文档]: ...
- arduino调试GY-MPU9250 9DOF九轴/9轴姿态传感器
Arduino UNO测试GY-MPU9250 9DOF 简介 模块引脚说明 GY-MPU9250与Arduino UNO接线 Arduino例程代码 总结 简介 MPU9250是一个QFN封装的复合 ...
最新文章
- VSCODE常见问题(设置为4个空格)
- 7、Java并发性和多线程-如何创建并运行线程
- 百度地图根据经纬度计算瓦片行列号
- SAP云平台里给应用创建自定义环境变量
- ubuntu20.04下安装vmshare tools_Go语言的安装与配置-vscode
- Oracle 使用GSON库解析复杂json串
- MVC的Filter应用小结
- java 对象给对象赋值为空_java中,只声明一个对象不赋值,与声明一个对象并赋为 null 的区别...
- xshell 无法定位输入点_机器人抓取汇总|涉及目标检测、分割、姿态识别、抓取点检测、路径规划...
- 查看磁盘阵列 使用率(简单)
- unity找到特定一个物体的子物体,多个子物体有相同的名称
- 【C语言】11-指针
- ARM汇编程序——加法
- python转义字符:‘\‘
- 注意函数定义和函数调用的顺序
- 从零开始设计一个右键菜单组件
- Java多线程篇--原子包、阻塞队列和并行流
- 通过银联跨行转账、转接的交易手续费用——2358原则
- MQTT跨ip/跨机访问
- 接外包有哪些渠道呢?
热门文章
- (附源码)springboot某高校绩效考核管理 毕业设计 012208
- html5延迟加载效果,网站性能延迟加载图像的五种技巧(小结)
- U8材料出库单的月出库量
- 360公司为什么有名?商业模式不同而已
- 计算机颜色偏蓝,电脑整个屏幕颜色偏蓝如何解决_电脑屏幕显示颜色不正常偏蓝怎么调...
- atoi(argv[1])是什么?
- 声表面波滤波器行业市场未来发展趋势分析及投资规模评估预测咨询
- poj解题报告——2386
- 职业高中计算机基础知识点,提高职业高中计算机应用基础教学能力
- 计算机体系结构 第1-2章 量化设计与分析基础/指令系统原理与示例