===== 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|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|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: * [[:logging_tutlesim|Logging turtlesim data]]