using rosbag in callback
For my project I am interested in many frames of reference contained in a list called frame_list, each with Pose messages published to their own topic e.g. 'frame_transform'. I am trying to subscribe to all of these topics and use rosbag to save the Poses as they are published. The code below creates the .bag file, but does not write any data into it even though messages are being published to the topics. Is this a good way to achieve what I want? Can anybody spot where I am going wrong? Thanks.
#!/usr/bin/env python
import roslib
import rospy
import rosbag
from geometry_msgs.msg import Pose
def callback(data, args):
bag = rosbag.Bag('data.bag', 'w')
bag.write(str(args), data)
if __name__ == '__main__':
if rospy.has_param('init_complete'): #check if initialisation is complete
rospy.init_node('rosbag_writer') #initiate node
frame_list = rospy.get_param('frame_list') #import list of frames from rosparam
for frame in frame_list:
rospy.Subscriber(str(frame) + '_transform', Pose, callback, frame) #check for frame transforms
rospy.spin()
Why are you using the
rosbag
Python API instead of just usingrosbag
from the command line?My project is to create a robot task-learning program which is accessible to those with no knowledge of ros or Python, therefore stuff like this must be done using the Python API to minimise user input.