github源码:https://github.com/FProgrammerLIU/turtle_wit_motion
准备工作
ubuntu16.04 ROS-kinetic 不同版本可能会出现一些问题
ROS内置serial功能包,turtlesim功能包
功能实现
使用serial package,能够操作串口,进行设置,读取写入;
读取原始数据,判断数据类型,数据解析,转换为期望数据类型大小
将转换完的数据存入sensor_msgs/IMU消息,发送到turtlesim节点
实现难点
serial package的使用:设置与读取写入操作,serial liabray:http://wjwwood.io/serial/doc/1.1.0/index.html
串口设置:串口打开过程,注意交互过程,询问使用者,是否循环打开串口。
串口名称:使用udev.rules文件,重命名串口。设置链接,放在etc/udev/rules.d/new.rules或/lib/udev/rules.d
串口数据的读取方式:大部分读取(包括网口数据接受),先接收一部分数据放入缓存中,一次校验找到包头,再校验第二位,校验和,接受数据,清除前一部分数据,循环接受,注意最后一包的长度,不够直接扔掉。
数据解析:得到期望数据类型大小,有官方转换方法参照,无官方如何利用数学公式解析
数据解析过程注意数据类型,可能会影响数据转换结构
角度转换为四元数:使用tf下的转换工具 tf/Linear