[ros-users] GenericPublisher using ShapeShifter and SerializedMessage
Felix Messmer
felix.messmer at ipa.fraunhofer.de
Mon Dec 12 12:43:37 UTC 2011
Hi there,
I want to write a generic publisher that is able to publish ros-topics
where each instance of this class publishes topics of different message
types (e.g. pub_1 publishes std_msg::Int32, pub_2 publishes
sensor_msgs::PointCloud2,...).
I work with serialized messages, i.e.:
ros::serialization::IStream i_stream((u_int8_t*) testArray.data(),
m_genericRosTopic.SerializedMessageSize);
contains my serialized message which I want to publish. I also know the
message type and the topic_name, that I want to publish on.
How can I do this in a generic way? I saw that the ros::Publisher class
has a publish() function that is able to publish a
ros::SerializedMessage.
Thus, I made a SerializedMessage from the IStream:
boost::shared_array<uint8_t> buf(i_stream.getData());
ros::SerializedMessage msg(buf, i_stream.getLength());
My generic publisher class has a ros::Publisher as a member. For
advertising, I found:
m_genericRosTopic_publisher = m_shapeShifter.advertise(n,
m_genericRosTopic.TopicName, 10);
After that I would like to publish the topic somehow:
m_genericRosTopic_publisher.publish(msg);
Publishing like this doesn't work. I guess there is still something
missing. But it seems that everything I need is already there (somewhere
in roscpp), but I am not able to put the puzzle together.
Can someone help me out here, by clarifying the correct usage of
topic_tools::ShapeShifter, ros::SerializedMessage and ros::Publisher?
Thanks for your help!
More information about the ros-users
mailing list