1.如题,该贴是想记录本人在实习时编写的一些程序与代码,供大家参考。
2.我们先来看看通过imu得到imu_data话题中的数据类型,在头文件<sensor_msgs/Imu.h>中,声明了以下的数据类型:
Imu_()
: header()
, orientation()
, orientation_covariance()
, angular_velocity()
, angular_velocity_covariance()
, linear_acceleration()
, linear_acceleration_covariance() {
orientation_covariance.assign(0.0);
angular_velocity_covariance.assign(0.0);
linear_acceleration_covariance.assign(0.0);
其中较为重要的就是imu的四元数orientation(),四元数数据格式为(x,y,z,w),网络上某些帖子提供了四元数转换为欧拉角的方法,但没有具体解析,下面笔者阐述一下整个订阅imu数据、转换数据、再通过话题发布的流程。
3.先来看下完整代码:
#include <ros/ros.h>
#include "tf/transform_datatypes.h"//转换函数头文件
#include <sensor_msgs/Imu.h>//imu数据信息
#include <geometry_msgs/Point32.h>//geometry_msgs消息数据类型
double Pi = 3.14;
class Quat_to_angle
{
public:
//创建需要的发布对象
geometry_msgs::Point32 rpy_pt;
//创建发布者
ros::Publisher rpy_publis