跳到主要内容

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 轴的欧拉角