zoukankan      html  css  js  c++  java
  • ROS tf-数据类型

    博客参考:https://www.ncnynl.com/archives/201702/1305.html

    ROS与C++入门教程-tf-数据类型

    说明:

    • 介绍roscpp的Data Types(数据类型)及使用

    数据类型

    • 数据类型定义在tf/transform_datatypes.h

    基本数据类型

    • 基本数据类型有:(Quaternion, Vector, Point, Pose, Transform)
    • ROS Fuerte后,TF已经定义了自己的数据类型。关于如何迁移pre-Fuerte代码到更新的ROS版本,查阅geometry/bullet_migration
    • 基本类型:

    Type

    tf

    Quaternion

    tf::Quaternion

    Vector

    tf::Vector3

    Point

    tf::Point

    Pose

    tf::Pose

    Transform

    tf::Transform

    tf::Stamped 模板

    • tf::Stamped 对上述数据类型做模板化(除了tf::Transform),并附带元素frame_id_和stamp_ 。
    • 定义代码:
    template <typename T>
    class Stamped : public T{
     public:
      ros::Time stamp_;
      std::string frame_id_;
    
      Stamped() :frame_id_ ("NO_ID_STAMPED_DEFAULT_CONSTRUCTION"){}; //Default constructor used only for preallocation
    
      Stamped(const T& input, const ros::Time& timestamp, const std::string & frame_id);
      
      void setData(const T& input);
    };
    

    tf::StampedTransform

    • tf::StampedTransform 是tf::Transforms的特例,它要求frame_id 、stamp 、child_frame_id.
    • 定义代码:
    /** rief The Stamped Transform datatype used by tf */
    class StampedTransform : public tf::Transform
    {
    public:
      ros::Time stamp_; ///< The timestamp associated with this transform                                                                                                                                                                                                                                                        
      std::string frame_id_; ///< The frame_id of the coordinate frame  in which this transform is defined                                                                                                                                                                                                                       
      std::string child_frame_id_; ///< The frame_id of the coordinate frame this transform defines                                                                                                                                                                                                                              
      StampedTransform(const tf::Transform& input, const ros::Time& timestamp, const std::string & frame_id, const std::string & child_frame_id):
        tf::Transform (input), stamp_ ( timestamp ), frame_id_ (frame_id), child_frame_id_(child_frame_id){ };
    
      /** rief Default constructor only to be used for preallocation */
      StampedTransform() { };
    
      /** rief Set the inherited Traonsform data */
      void setData(const tf::Transform& input){*static_cast<tf::Transform*>(this) = input;};
    
    };
    

    辅助函数

    • 函数:tf::Quaternion createIdentityQuaternion()
    • 作用:返回四元数句柄
    • 函数:tf::Quaternion createQuaternionFromRPY(double roll,double pitch,double yaw)
    • 作用:返回从固定轴的Roll, Pitch and Yaw(滚动,俯仰和偏转)构造的tf::Quaternion四元数
    • 函数:geometry_msgs::Quaternion createQuaternionMsgFromRollPitchYaw(double roll,double pitch,double yaw)
    • 作用:返回从固定轴的Roll, Pitch and Yaw(滚动,俯仰和偏转)构造的geometry_msgs::Quaternion四元数

    数据类型转换

  • 相关阅读:
    火狐黑客插件
    使用POI对EXCEL 读入写出
    使用spring quartz实现定时任务
    toad for oracle 快捷键总结
    Oracle查询性能优化
    2.C语言中文网学习Python
    1.编程基础(C语言中文网)
    一键打开ASP.NET WEB网站项目
    解决VS2010无法添加Sql Server数据库的问题
    VS2010 的一个小Bug(已报告给Microsoft Connect并得到确认)
  • 原文地址:https://www.cnblogs.com/flyinggod/p/10810123.html
Copyright © 2011-2022 走看看