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_数据。
网友评论