README.md
Go to the documentation of this file.
00001 Roboception Dynamics API
00002 ========================
00003 
00004 The rc_dynamics_api provides an API for easy handling of the dynamic-state data
00005 streams provided by Roboception's [rc_visard](http://rc-visard.com) stereo
00006 camera with self-localization.
00007 
00008 Dynamic-state estimates of the rc_visard relate to its self-localization and
00009 ego-motion estimation. These states refer to rc_visard's current pose,
00010 velocity, or acceleration and are published on demand via several data streams.
00011 For a complete list and descriptions of these dynamics states and the
00012 respective data streams please refer to rc_visard's user manual.
00013 
00014 Compiling and Installing
00015 ------------------------
00016 
00017 This package is based on some open source projects that are listed below. All
00018 dependencies are provided as submodules that are optionally used if the
00019 packages cannot be found on the system:
00020 
00021 - **[C++ Requests](https://github.com/whoshuu/cpr) (version 1.3.0):**
00022 Requesting and deleting data streams is done via rc_visard's REST-API. This
00023 library provides an easy-to-use interface for doing REST-API calls.
00024 
00025 - **[Google Protocol Buffers:](https://developers.google.com/protocol-buffers/)**
00026 The data sent via rc_visard's data streams is serialized via Google protocol
00027 message definitions (/roboception/msgs). After receiving the data, the
00028 rc_dynamics_api needs these definitions in order to de-serialized it. This
00029 project requires both the `protobuf-compiler` for compiling the protocol buffer
00030 definition files and the `libprotobuf` C++ library.
00031 
00032 After cloning the git repository, the packages described above are cloned as
00033 submodules by:
00034 
00035     git submodule update --init --recursive
00036 
00037 Additionally this packages uses the single header file of
00038 - **[JSON for Modern C++](https://github.com/nlohmann/json) (version v2.0.0):**
00039 A simple and modern C++ JSON parsing library.
00040 
00041 ### Linux
00042 
00043 Building follows the standard cmake build flow.
00044 
00045     cd <main-directory>
00046     mkdir build
00047     cd build
00048     cmake -DCMAKE_INSTALL_PREFIX=<install-directory> ..
00049     make
00050     make install
00051 
00052 ### Windows and Visual Studio
00053 
00054 Building is based on cmake. Therefore, cmake must be downloaded and installed
00055 according to the operating system from https://cmake.org/download/ After
00056 starting the cmake-gui, the path to the main directory as well as the build
00057 directory must be specified. It is common to choose a sub-directory of the
00058 main directory and name it 'build' for the the temporary files that are created
00059 during the build process. After setting both paths, the 'Configure' button must
00060 be pressed. In the up-coming dialog, it can be chosen for which version of
00061 Visual Studio and which platform (e.g. Win64) the project files should be
00062 generated. The dialog is closed by pressing 'Finish'.
00063 
00064 After configuration, the value of the key with the name 'CMAKE_INSTALL_PREFIX'
00065 may be changed to an install directory. By default, the install directory is
00066 set to a path like 'C:/Program Files/...'. The 'Generate' button leads to
00067 creating the project file. Visual Studio can be opened with this project by
00068 pressing the 'Open Project' button.
00069 
00070 By default, a 'Debug' version will be compiled. This can be changed to 'Release'
00071 for compiling an optimized version. The package can then be created, e.g. by
00072 pressing 'F7'. For installing the compiled package, the 'INSTALL' target can be
00073 *created* in the project explorer.
00074 
00075 After installation, the install directory will contain three sub-directories.
00076 The 'bin' directory contains the tools and DLLs. The 'include' sub-directory
00077 contains the sub-directories 'rc_dynamics_api' and 'roboception'. The former
00078 contains the main headers of the library to build own applications. The latter
00079 contains the protobuf headers of the rc_dynamics interface. There may be other
00080 include directories that may be created by the submodules. They can be ignored
00081 or deleted. Finally, the 'lib' sub-directories contains the rc_dynamics_api
00082 link library that is required for building own applications. Other link
00083 libraries may be installed by the submodules. They can be ignored or deleted.
00084 
00085 Tools
00086 -----
00087 
00088 Currently, the rc_dynamics_api comes with the following tool which is also
00089 meant as an example on how to use this API:
00090 
00091 - **rcdynamics_stream**
00092 
00093     Connect with an rc_visard device and request a specific data stream. The
00094     received data messages containing aspects of rc_visard's dynamic state can
00095     be simply printed to std::out or saved as .csv-file.
00096 
00097     Simplest example:
00098 
00099     Connect to rc_visard with specified IP address and request the 'imu' stream.
00100     A certain amount of messages are received and simply print to std::out
00101 
00102         ./tools/rcdynamics_stream -v 10.0.2.99 -s imu
00103 
00104     Different use case with more command line parameters:
00105 
00106     Connect to rc_visard with specified IP address and request the 'pose_rt'
00107     stream for 10 seconds. The client host's network interface to be used to
00108     receive the data is specified as 'eth0'. Messages are stored in the
00109     specified file as .csv-lines.
00110 
00111         ./tools/rcdynamics_stream -v 10.0.2.99 -s pose_rt -i eth0 -a -t10 -o poses.csv
00112 
00113 Links
00114 -----
00115 
00116 - http://www.roboception.com


rc_dynamics_api
Author(s): Heiko Hirschmueller , Christian Emmerich , Felix Endres
autogenerated on Thu May 9 2019 02:13:50