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;
- Hostname : localhost (by default)
- Port: 27017 (default)
- Locatation:
/var/lib/mongodb/
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: