ros publish msg no copy pub sub工作 - maohaihua/ros_study GitHub Wiki
从Nodelet发布
如果希望no-copy pub/sub工作,您必须将消息发布为shared_ptr。
有关更多详细信息,请参阅进程内发布和订阅。
Intraprocess Publishing(进程内发布)
当发布服务器和订阅服务器作用在相同节点的同一个话题,roscpp可以跳过序列化/反序列化步骤(可能节省大量的处理和延迟)。但只有当消息被发布为shared_ptr,才会这样处理。
示例:
ros::Publisher pub = nh.advertise<std_msgs::String>("topic_name", 5); std_msgs::StringPtr str(new std_msgs::String); str->data = "hello world"; pub.publish(str);
注意,当用这种方式发布,你和roscpp之间的隐性契约:你不可以修改你发送后的消息,因为指针会直接传递到用户的任何进程内。如果你想发送另一条消息,你必须分配一个新的。