ROS----roscpp Overview MessagesTraits

  roscpp/Overview/MessagesTraits

1.消息特征MessagesTraits

新的C

消息特征(和message_traits名称空间)允许您查询有关消息的某些信息。它们主要用于允许将C++类型适配到ROS msg类型,但也可用于从消息中检索信息,如数据类型,md5sum或完整的消息定义。
所有特征必须在命名空间ros :: message_traits中定义

1.1广告/订阅所需的特征

切换行号显示

   1template<typenameM>

   2structMD5Sum

   3{

   4  staticconstchar* value();

   5  staticconstchar* value(constM& m);

   6};

   7

   8template<typenameM>

   9structDataType

  10{

  11  staticconstchar* value();

  12  staticconstchar* value(constM& m);

  13};

  14

  15template<typenameM>

  16structDefinition

  17{

  18  staticconstchar* value();

  19  staticconstchar* value(constM& m);

  20};

为了向后兼容,这些默认为返回例如__s_getMD5Sum() / __getMD5Sum()的值。

1.2可选性状Message Traits

  • template<typename M> struct IsSimple;
一个“简单”消息是一个给定一个向量/数组的,可以直接memcpy的。请注意,由于各种编译器的填充规则,您需要非常小心地将结构标记为简单。对于简单的结构A,A必须是POD类型,sizeof(A)必须等于每个成员的序列化长度之和。
  • template<typename M> struct IsFixedSize;
固定大小的消息是始终具有相同大小的消息。用于优化确定M的向量/数组的大小。
  • template<typename M> struct HasHeader;
告诉M是否有头。

要将其更改为true,您只需专门处理您的消息,并从TrueType而不是FalseType继承。

切换行号显示

   1template<typenameM>

   2structHeader

   3{

   4  staticroslib::Header* pointer(M& m);

   5  staticroslib::Headerconst* pointer(constM& m);

   6};

返回指向消息头部的指针。默认情况下,如果HasHeader<M> :: value为true,则返回&m.header;如果为false,则返回NULL。

切换行号显示

   1template<typenameM>

   2structTimeStamp

   3{

   4  staticros::Time* pointer(M& m);

   5  staticros::Timeconst* pointer(constM& m);

   6  staticros::Timevalue(constM& m);

   7};

根据请求返回消息的帧ID,作为指针或值类型。

切换行号显示

   1template<typenameM>

   2structTimeStamp

   3{

   4  staticros::Time* pointer(M& m);

   5  staticros::Timeconst* pointer(constM& m);

   6  staticros::Timevalue(constM& m);

   7};

根据请求返回消息的时间戳,作为指针或值类型。
IsSimple,IsFixedSize和HasHeader可以在编译时使用。他们的默认实现是:

切换行号显示

   1template < typename  M > struct  IsSimplepublic  FalseType {};

FalseType / TrueType提供一个bool整型常量值和一个类型 typedef来支持boostmpl和enable_if的使用
  • FalseType :: value = false
  • FalseType :: type = FalseType
  • TrueType :: value = true
  • TrueType :: type = TrueType

1.3函数访问器Function Accessors

Function

Return Value

md5sum<M>()

MD5Sum<M>::value()

md5sum<M>(const M& m)

MD5Sum<M>::value(m)

datatype<M>()

DataType<M>::value()

datatype<M>(const M& m)

DataType<M>::value(m)

definition<M>()

Definition<M>::value()

definition<M>(const M& m)

Definition<M>::value(m)

hasHeader<M>()

HasHeader<M>::value

isSimple<M>()

IsSimple<M>::value

isFixedSize<M>()

IsFixedSize<M>::value

header<M>(M& m)

Header<M>::pointer(m)

frameId<M>(M& m)

FrameId<M>::pointer(m)

timeStamp<M>(M& m)

TimeStamp<M>::pointer(m)

 

猜你喜欢

转载自blog.csdn.net/cookie909/article/details/79842372
今日推荐