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/LinearMath/Quaternion.h
// quate.setRPY(ang[0], ang[1], ang[2]);// result_imu.orientation.x = quate[0];// result_imu.orientation.z = quate[2];// result_imu.orientation.w = quate[3];turtlesim控制:如何将加速度转换为位移与偏航角,提高控制准确与灵敏度
使用角度控制,orientation的x方向y方向控制蛮方便。
两个节点添加两次即可