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:
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