This is a simple example to show logging of pose and velocity information from running the turtlesim
node.
Start the turtlesim and log all the topics using the following sets of commands
rosrun turtlesim turtlesim_node rosrun turtlesim turtle_teleop_key # for keyboard teleop to get changing data rosrun mongodb_log mongodb_log -a # for all topics. check help for more options # use Ctrl + C to stop
The data that has been logged can be accessed via may ways, directly using terminal mongo client or via the language APIs. These are each shown below;
This is installed when you get the mongodb package installed on the system.
mongo # alternatively, use the ros version with rosrun mongodb mongo # you should see an interface like the following MongoDB shell version: 2.0.4 connecting to: test # change to the ros database using > use roslog switched to roslog # see a list of databases using > show dbs local (empty) roslog 0.203125GB # see the list of items stored using the following > db.getCollectionNames() [ "system.indexes", "turtle1_color_sensor", "turtle1_command_velocity", "turtle1_pose" ] # further commands are given in standard mongo cheatsheets >
The full documentation of the python API is available online at http://api.mongodb.org/python/current/. Below is a simple example usage:
import pymongo mclient = pymongo.Connection() db = mclient['roslog'] # get the collections db.collection_names() [u'turtle1_color_sensor', u'system.indexes', u'turtle1_pose', u'turtle1_ command_velocity'] # show all the data in the database docs = db['turtle1_pose'].find() for d in docs: print d # this displays a long list with elements like these {u'__topic': u'/turtle1/pose', u'linear_velocity': 0.0, u'theta': 1.9824 440479278564, u'y': 8.26992130279541, u'x': 4.029432773590088, u'_id': O bjectId('51c98fcca6c646570b000901'), u'angular_velocity': 0.0, u'__recor ded': 1372164044.44448} {u'__topic': u'/turtle1/pose', u'linear_velocity': 0.0, u'theta': 1.9824 440479278564, u'y': 8.26992130279541, u'x': 4.029432773590088, u'_id': O bjectId('51c98fcca6c646570b000902'), u'angular_velocity': 0.0, u'__recor ded': 1372164044.460494} # querying can be done directly on these. e.g. q = db['turtle1_pose'].find({'__recorded':{'$gt' : 1372164044.44448}}) q.count() 1 # which is exactly the last recording as shown in the data snippet above