JY901模块
JY901模块简介
- JY901 是一个外接的九轴传感器模块(三轴陀螺仪+三轴加速度计+三轴地磁计),我们将其通过 USB 转 TTL 模块外接到机器人上,从而获取更精确的九轴IMU数据。
模块安装
波特率配置 将新的jy901模块接入机器人之前,需要确保使用配套软件配置模块的波特率为
115200
,并配置回传频率在200Hz以上。模块安装位置 模块中一般会印有坐标定义: 将jy901与usb转ttl模块焊接起来后,插入机器人背后的USB口中,注意需要将模块的坐标系与机器人坐标系进行对齐,机器人坐标定义如下:
- 往前为x+
- 往左为y+
- 往上为z+
节点信息
节点名称
- /jy901Module_node
- 该节点的作用是:读取jy901的数据,然后转换为ros消息发布出去
功能包路径
- ~/robot_ros_application/catkin_ws/src/jy901_module
消息名称
- /jy901Module_node/jy901Data
消息类型
- std_msgs/Float64MultiArray
消息类型定义
std_msgs/MultiArrayLayout layout
std_msgs/MultiArrayDimension[] dim
string label
uint32 size
uint32 stride
uint32 data_offset
float64[] data
节点启动与imu数据获取
终端启动 jy901 节点
source ~/robot_ros_application/catkin_/devel/setup.bash
rosrun jy901_module jy901_module_node- 节点运行后不要关闭终端,因为 jy901 的数据依靠这个节点发布
终端获取jy901数据 在插入jy901模块并通过执行上述指令启动jy901节点之后,可以通过终端查询是否正常读取到jy901的数据。 新开一个终端执行以下指令:
rostopic echo /jy901Module_node/jy901Data
终端将会输出
订阅imu数据-Python实现
#!/usr/bin python
# -*- coding: utf-8 -*-
import rospy
from std_msgs.msg import Float64MultiArray
JY901_TOPIC = "/jy901Module_node/jy901Data"
class JY901Data:
def __init__(self):
self.jy901_data = []
rospy.Subscriber(JY901_TOPIC, Float64MultiArray, self.jy901_callback, queue_size=1)
def jy901_callback(self, msg):
self.jy901_data = msg.data
def show_data(self):
while not rospy.core.is_shutdown_requested():
rospy.loginfo(self.jy901_data)
rospy.sleep(0.5) # 隔 0.5s 打印一次 jy901 的数据
if __name__ == "__main__":
rospy.init_node("get_jy901")
jy901 = JY901Data()
jy901.show_data()
数据含义
我们可以用 python 代码订阅 jy901 的数据并查看到实时的数据。取其中一条数据如下:
(0.0, 0.0, 0.0, -0.9013671875, -0.13037109375, -0.26513671875, -153.863525390625, 71.8505859375, 31.5802001953125)
这是由 9 个数值组成的数据
前三个分别代表的是绕 x,y,z 轴方向的角速度
中间三个分别代表的是 x,y,z 轴方向的加速度
最后三个分别代表的是绕 x,y,z 轴的欧拉角