Repository Summary
Checkout URI | https://github.com/cogsys-tuebingen/csapex.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2021-02-14 |
Dev Status | DEVELOPED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Packages
Name | Version |
---|---|
csapex | 1.0.0 |
csapex_core | 1.0.0 |
csapex_core_test | 1.0.0 |
csapex_qt | 1.0.0 |
csapex_remote | 1.0.0 |
csapex_testing | 1.0.0 |
csapex_util | 1.0.0 |
README
CS::APEX (Algorithm Prototyper and EXperimentor for Cognitive Systems)
CS::APEX is a framework based on synchronous dataflow and event-based message passing that aims to speed up prototyping of new robotic algorithms using visual programming aspects.
Example workflow: (click to show the video)
Dataflow Graph and Core Features
Calculations are represented by a nodes in a directed graph with data flowing on the directed edges.This execution graph is manipulated using a simple graphical user interface that allows spawning and deleting nodes, adding and removing edges and visualizating data in the stream. To speed up the prototyping process, other features like undo/redo mechanisms and profiling are implemented as well. Finally there exists an easy to use parameter system that generates UI controls for each block and allows parameter tuning and optimization.
Functionality via Plug-ins
The framework itself does not provide any predefined computation nodes and does not depend on specific message definitions or node types. These details are instead implemented in plug-in libraries that extend the functionality of the whole system.
Application to Robotics
The framework is targeted toward use in robotics and is fully compatible with ROS. Configurations generated using the GUI can directly be deployed on any ROS-based robotic system.
Tutorials and more Information
For more information, please refer to the Wiki at (https://github.com/cogsys-tuebingen/csapex/wiki
the official website at (http://www.ra.cs.uni-tuebingen.de/forschung/apex
or contact the maintainers via email.
Dependencies
We rely on the catkin build system developed in the ROS ecosystem. The core framework is independent of ROS, however.
Required for a build are:
- Linux system (tested with Ubuntu)
- CMake >= 3.8.2
- C++17 compatible compiler (g++, clang++)
- Qt5 (on Ubuntu: qt5-default libqt5svg5-dev)
- libraries:
- boost (program_options, filesystem, system)
- classloader
- TinyXML (on Ubuntu: libtinyxml-dev)
- yaml-cpp (on Ubuntu: libyaml-cpp-dev)
These dependencies can be installed via rosdep (see below.)
Basic Installation
To get the cs::APEX framework and a set of core plugins, perform the following:
cd ~
mkdir -p ws/csapex/src
cd ws/csapex/src
git clone https://github.com/cogsys-tuebingen/csapex.git
cd csapex/plugins
git clone https://github.com/cogsys-tuebingen/csapex_core_plugins.git
cd ../..
mkdir libs
cd libs
git clone https://github.com/cogsys-tuebingen/cslibs_vision.git
git clone https://github.com/cogsys-tuebingen/cslibs_laser_processing.git
git clone https://github.com/cogsys-tuebingen/cslibs_arff.git
git clone https://github.com/cogsys-tuebingen/cslibs_indexed_storage.git
cd ../..
rosdep install -y -r -i --from-paths src
catkin_make
Creating Documenation
To create the documentation, run
doxygen doc/Doxyfile
This will generate the documentation at
doc/html/index.html
Contributions
All contributions are welcome, please refer to the CONTRIBUTING.md file.
CONTRIBUTING
How to contribute
We are glad about contributions in any way, shape, or form. If you have patches or new features, please consider creating a merge request. We are also always happy to hear about projects in which you have implemented your own plug-ins.
Changes to the Core Framework
On a case-by-case basis we have to decide on whether to merge new branches or whether to create preliminary topic branches for them. Trivial changes are also always welcome.
Plug-Ins
Most contributions to the cs::APEX ecosphere should be in the form of plug-ins that do not need extensions to the main framework. If you see the need for changes anyhow, please consider letting us now early, since the project is still under development and many internals do not yet have a stable API.
Reporting Issues
We appreciate every posted issue for any kind of bug, failed assertion or usability issue, as well as in the form of ideas and suggestions.