PARAMETERS
* /rosdistro: jade
* /rosversion: 1.11.16
wiki链接: http://wiki.ros.org/roscpp/Overview/Messages
1、消息生成
和所有ROS客户端库相同,roscpp使用msg文件来生成c++代码。
模式如下: package_name/msg/Foo.msg ->package_name::Foo
相同地,srv文件也生成c++代码,模式如下:
package_name/srv/Foo.srv ->package_name::Foo
生成的源代码文件放在msg_gen/cpp/include/package_name/目录和srv_gen/cpp/include/package_name/目录下,
头文件和msg/srv文件名相同。
我具体看了一下:c++生成的文件存放在 catkin_ws/devel/include/package_name下
python生成的文件存放在 catkin_ws/devel/lib/python2.7/dist-packages/package_name/目录下的msg和srv文件目录下
包含std_msgs程序包下的String消息,使用: #include<std_msgs/String.h>
实例化该消息: std_msgs::String str;
对于不同c++代码导致的不同消息原型,参见msg本页的消息类型定义: http://wiki.ros.org/msg
2、暴露消息给其它程序包使用
在ROS1.1+中,这项自动处理。
为使其它程序包使用本程序包下定义的消息,必须在package.xml文件中添加<expose>标签项。
<export>
<cpp cflags="-I${prefix}/msg/cpp"/>
<cpp cflags="-I${prefix}/srv/cpp"/>
</export>
3、关于消息的一些高级使用
消息特征(traits): http://wiki.ros.org/roscpp/Overview/MessagesTraits
自定义容器分配器[ROS1.1+]: http://wiki.ros.org/roscpp/Overview/MessagesCustomAllocators
序列化和适应类型: http://wiki.ros.org/roscpp/Overview/MessagesSerializationAndAdaptingTypes