ROS-I simple_message 源码分析:JointData

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 源码分析:JointData)