Re: [ros-users] Rosbag Code API and Topic Names

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: User discussions
Date:  
To: User discussions
Subject: Re: [ros-users] Rosbag Code API and Topic Names
On Thu, Dec 2, 2010 at 9:31 PM, Chad Rockey <> wrote:

> So it appears the Rosbag Code API does not handle the topic names like the
> other ROS tools regarding the first '/'.
>


odom and /odom are different Graph Resource
Names<http://www.ros.org/wiki/ROS/Concepts#Names.Graph_Resource_Names>.
The rosbag code API doesn't require you to initialize a node before reading
the bag. Thus, relative topic names (such as 'odom') aren't resolved when
they're read from a bag.

For example, if you ran the following launch file:

<launch>
  <group ns="my_ns">
    <node pkg="rosbag" type="record" name="record" args="-O odom.bag odom
/odom"/>
  </group>
</launch>



and then published to the two topics, /my_ns/odom and /odom:

$ rostopic pub /my_ns/odom std_msgs/String foo
$ rostopic pub /odom std_msgs/String bar


then the bag file would contain two separate topics:

$ rosbag info odom.bag
path:        odom.bag
version:     2.0
duration:    5.9s
start:       Dec 02 2010 21:46:02.39 (1291355162.39)
end:         Dec 02 2010 21:46:08.30 (1291355168.30)
size:        5.3 KB
messages:    2
compression: none [1/1 chunks]
types:       std_msgs/String [992ce8a1687cec8c8bd883ec73ca41d1]
topics:      /odom   1 msg     : std_msgs/String
             odom    1 msg     : std_msgs/String



and the rosbag Python API recognizes that distinction:

$ rospython rosbag
>>> import rosbag
>>> with rosbag.Bag('~/.ros/odom.bag') as b:

...     print b.read_messages(topics=['odom']).next()[1]
...     print b.read_messages(topics=['/odom']).next()[1]
...
data: foo
data: bar



Tim