美文网首页
ROS-I simple_message 源码分析:JointD

ROS-I simple_message 源码分析:JointD

作者: play_robot | 来源:发表于2019-03-20 13:36 被阅读0次

    JointData类继承自SimpleSerialize,封装了机器人关节数据,比如位置、速度、加速度、力矩等信息。

    namespace industrial
    {
    namespace joint_data
    {
    
    class JointData : public industrial::simple_serialize::SimpleSerialize
    {
    public:
    
      JointData(void);
      ~JointData(void);
      void init();
      bool setJoint(industrial::shared_types::shared_int index, industrial::shared_types::shared_real value);
      bool getJoint(industrial::shared_types::shared_int index, industrial::shared_types::shared_real & value) const;
      industrial::shared_types::shared_real getJoint(industrial::shared_types::shared_int index) const;
      void copyFrom(JointData &src);
    
      int getMaxNumJoints() const
      {
        return MAX_NUM_JOINTS;
      }
    
      bool operator==(JointData &rhs);
    
      // Overrides - SimpleSerialize
      bool load(industrial::byte_array::ByteArray *buffer);
      bool unload(industrial::byte_array::ByteArray *buffer);
      unsigned int byteLength()
      {
        return MAX_NUM_JOINTS * sizeof(industrial::shared_types::shared_real);
      }
    
    private:
      static const industrial::shared_types::shared_int MAX_NUM_JOINTS = 10;
      industrial::shared_types::shared_real joints_[MAX_NUM_JOINTS];
    
    };
    }
    }
    

    这个类是比较简单的,私有成员joints_是一个real类型的固定大小的数组,数组长度由静态常量MAX_NUM_JOINTS定义,默认值为10,即最大关节数目

    该类提供了setJoint方法,用于填充joints_中的某一个index对应的关节数据,提供了getJoint方法,用于获取joints_中的某一个index对应的关节数据。

    copyFrom方法用于从一个JointData对象拷贝关节数据至本对象。重载的==运算符用于比较两个JointData对象中的每一个关节数据是否相等。而load和unload则是重写了SimpleSerialize中的虚方法:

      bool load(industrial::byte_array::ByteArray *buffer);
      bool unload(industrial::byte_array::ByteArray *buffer);
    

    load方法中会依次加载JointData对象中的joints_数据至buffer指向的ByteArray,unload方法则是依次从buffer指向的ByteArray卸载数据,填充至JointData对象的joints_数据。

    相关文章

      网友评论

          本文标题:ROS-I simple_message 源码分析:JointD

          本文链接:https://www.haomeiwen.com/subject/apezmqtx.html