0x00 简介
我们的IMU扩展板是支持通过串口方式来读取IMU数据,现在代码已经开发完成。前面文章介绍的都是将IMU板插在树莓派上,然后使用树莓派的IIC接口来数据通信。
因此不需要额外接线就可以发布imu话题的,若使用串口进行通信的话,若IMU板还是在树莓派上使用。那仍然是可以不用接线的,因为在树莓派排针处也是有串口的,我们可以直接使用该串口进行通信。但是若将imu板使用在其他平台上,例如jetson nano板,我们的x86电脑,这样就需要使用一个USB转串口模块接上线来通信了。
这里需要注意的是两个黄色的跳线帽,他们是IMU模块与外部串口通信的开关。当跳线帽接上去的时候,IMU模块的数据可以通过串口发布出去。如果将跳线帽拔下,那imu模块的信息将无法通过串口发布出来。所以,当只使用IIC通信获取IMU模块数据,不使用串口时,可以将该串口跳线帽取下来,这样就可以防止IMU模块通过串口将数据发布出来。
0x01 ROS代码
首先来看一下launch文件,这是启动IMU板串口通信代码的入口,主要负责启动serial_imu_node节点,代码如下:<launch> <arg name="imu_cfg_file" default="$(find serial_imu_hat_6dof)/cfg/param.yaml" /> <node pkg="serial_imu_hat_6dof" type="serial_imu_node" name="serial_imu_node" output="screen"> <rosparam file="$(arg imu_cfg_file)" command="load" /> node>launch>
在launch文件的第一行,可以看到一个arg参数,这里指定的是serial_imu_node在启动时需要加载的yaml配置文件。该配置文件如下:
################################################# Copyright: 2016-2020 www.corvin.cn ROS小课堂# Description:使用串口进行通信时的配置信息.# imu_dev:指示串口设备挂在点,如果使用usb转串口# 模块,都是写ttyUSB0,1,2等.如果使用树莓派的# GPIO排针处串口,则使用ttyS0.# baud_rate:串口通信波特率# data_bits:数据位#