INTRODUCTION Overview Download and Install Quick Start Documentation Publications NONFRAMEWORK CODE Driver Interfaces Drivers Libraries Utilities FRAMEWORK CODE Interfaces Components Libraries Utilities Full Software Listings DEVELOPER Tutorials Examples Dev Guide Dashboard PEOPLE Contributors Users Project Download Mailing lists
|
Logging interface data in text format
In this tutorial we will demonstrate the use of the Orca data logging utility. The system diagram is shown below (IceGrid Registry and IceStorm are not shown). Start up Orca and Player/StageRepeat the start up instructions of Driving a robot simulated with Player/Stage -- but this time IceStorm is not optional, it has to run. Create a new system directory and copy Orca sample files. $ mkdir -p ~/sys/tutelogtxt; cd ~/sys/tutelogtxt $ cp [ORCA-INSTALL]/share/orca/cfg/robot2d.cfg . $ cp [ORCA-INSTALL]/share/orca/cfg/teleop.cfg . $ cp [ORCA-INSTALL]/share/orca/cfg/logrecorder.cfg . Robot componentRun the Robot2d component. $ robot2d Make sure that you can move the robot with Teleop (same as described in Driving a robot simulated with Player/Stage). Odometry logrecorderThe sample config file for the LogRecorder contains a sample line for each supported interface. Most of them need to be deleted because we will log a single interface: orca::Odometry2d. The resulting config file is shown below. # Component LogRecorder.Platform=local LogRecorder.Component=logrecorder # Required Interfaces LogRecorder.Requires.Odometry2d0.Proxy=odometry2d@local/robot2d # Configuration Options # Valid values: {'auto', 'local', 'remote'} LogRecorder.Config.Driver=auto LogRecorder.Config.FactoryLibNames=libOrcaLogFactory.so LogRecorder.Config.FilenameTimestamp=0 LogRecorder.Config.Odometry2d0.Format=ascii A couple of things to note about this configuration:
Run the logrecorder. $ logrecorder Command the robot to move around. After a few seconds stop the logrecorder and list the newly created log files. $ ls *.log master.log odometry2d0.log Examining log filesLets examine the log files and compare their contents with the log file format described in the documentation of the LogRecorder component.
The data section contains the list of data messages from all interfaces (in our case there's only one with ID=0). The time stamps here are the time when the message was received. #data 1185086269 26512 0 0 1185086269 234753 0 1 1185086269 541920 0 2
The data section consists of 2-line segments, one for each data message. A typical one is shown below: 601 899999 1.3562 -0.236412 -34.8 0.25 0 -12 To understand it, we have to examine the documentation for orcalogfactory::Odometry2dLogger (there is a link to it from LogRecorder documentation under the heading "Details for specific interfaces"). Now we can interpret the segment above. This data point was collected at the time 601 seconds and 899999 microseconds (this is Stage simulation time, not processor time). At that time, the odometric position of the robot was x=1.3562m, y=-0.236412m, theta=-34.8deg. The robot was moving with speed vx=0.25m/s, no cross speed, and turnrate=-12deg/s.
As noted in the LogRecorder documentation, there's a simple Matlab parsing function for this interface in |
Webmaster: Tobias Kaupp (tobasco at users.sourceforge.net)