Table of Contents

Data logging with mongodb

There is a tool for loggin data into mongodb for later processing. The data is fetched from selected topics or all topics when running a ROS process. The logging tool is from the package mongodb_log.

Installing the logger

Using a properly set up ros environment (rosws set command working), get the patched sources using instructions below;

* Install roslua as shown below

rosws set roslua --git https://github.com/timn/roslua.git
rosws update roslua
# source bashrc/zshrc
roscd roslua
# install the ubuntu dependencies specified on the rosdep.yaml file in the roslua package
rosmake roslua

* Install mongodb package from ROS as shown below

rosws set warehouse-hg --hg http://kforge.ros.org/warehousewg/warehouse-hg
rosws update warehouse-hg
# source bashrc/zshrc
# install dependencies (scons and v8) as given below
sudo apt-get install scons
sudo apt-get install libv8-dev
rosmake mongodb

* Install the mongodb logger package;

rosws set mongodb_log --git https://github.com/makokal/ros-mongodb_log.git
rosws update
# source bashrc/zshrc
# Install the logger system dependencies (given for ubuntu)
sudo apt-get install python-pymongo python-pyrrd mongodb
rosmake mongodb_log

Logging with mongodb_log

Run the logger node

rosrun mongodb_log mongodb_log -a # record all topics or specify required ones
# use the tool mongodb_rdd to check

Querying the log database

The data from the database can be retrieved using any of the mongo clients APIs. For cram, the cl-mongo client is recommended but there are clients for any popular language around like Python, C++ etc. For mython, the pymongo client has already been wrapped in ROS here http://ros.org/wiki/pymongo and we have wrapped the common lisp version as well. It can be installed using;

rosws set ros_cl_mongo --git https://github.com/makokal/ros_cl_mongo
rosws update ros_cl_mongo
# source bashrc
rosmake ros_cl_mongo # may take some time

The use it from the standard emacs REPL environment as follows;

rosrun roslisp_repl repl
# Now load the ros-cl-mongo package and interact with the database using it

Further usage instructions on cl-mongo are available at https://github.com/fons/cl-mongo

Locating the Database

The database is by default located in /var/lib/mongodb/ where you are able to notice the databases named ``roslog.1`` etc. The mongo client knows about this path so starting mongo from any resonable location will still access this databases. Of course this path can be changed using the –dbpath flag on mongo to change where to read or write. In summary the database features of importance are;

Examples of usage

We have compiled simple example of logging with this tool and querying the data using either lisp or python. The examples are in the links below:

* Logging turtlesim data