Klepsydra Community Edition GitHub Page

Overview

This is the GitHub page for Klepsydra Community. The goal of this is page is to provide information for the list of repositories that comprises Klepsydra Community and their documentation.

For further information about Klepsydra Technologies products, please visit our main website klepsydra.com.

List of repositories

Klepsydra Community comprises of two main repositories:

Besides these two, there are another two tutorial repositories:

Repository inter-dependencies

These repositories are dependent on each other as per the following graph:

Repositories Deps

Installation

Klepsydra Core.

The first repository to install is kpsr-core:

git clone https://github.com/klepsydra-technologies/kpsr-core.git

Then follow the installation instruction provided in the readme file.

This repository contains:

Further API and example documentations can be found in this link.

The API of Klepsydra is split into two:

This approach of two APIs is reflected in the API docs. It is based in the concepts of:

Some of our code was inspired in the Spring Framework for Java.

Klepsydra Robotics.

This repository provides ROS-independent and high-performance enhancements to applications using ROS, MAVROS and specially OpenCV.

git clone https://github.com/klepsydra-technologies/kpsr-robotics.git

Then follow the installation instruction provided in the readme file.

This repository contains:

Further API and example documentations can be found in this link.

Klepsydra ROS 2 executor.

Our own ring buffer lock-free executor for ROS 2 is based on Klepsydra’s main product, the SDK. This performance has never been seen in an executor before.

Klepsydra is based in lock-free programming. This kind of programming is the high-level wrapper of the atomic operations in the processor, in particular the so-call compare-and-swap or CAS operation. It was invented back in the 70s, but it didn’t really become popular until the early 90s, when it was implemented in higher-level languages and then it really took off when Java included it in the early 2010s.

Lock-free programming consists of attempting repeatedly to write data in a small piece of memory until the data is in a consistent state. This is usually depicted as a plane trying to land in a busy airport. If the runway is busy, it flies away and then tries it once and again until success.

Our first lock free executor implementation for ROS 2 is built on top of the event loop. Every ROS 2 publisher, also called advertiser, is connected to a ring-buffer producer. The timers are connected as well to the schedulers in the event loop. Lastly, the ROS 2 subscribers are connected to the single threaded consumers.

image

Our event loop follows a similar design pattern to NodeJS Event Emiter. Although Klepsydra implementation is completely different, the behaviour is the same as all the events happen in one thread. Since the timers and subscriptions are single threaded, there is no need to use any locks.

Find more information about ROS2 in this link.

Klepsydra Tutorial.

This repository contains a comprehensive tutorial of Klepsydra for ROS and for DDS. It can be used as a template project for new Klepsydra development projects.

git clone https://github.com/klepsydra-technologies/kpsr-tutorial.git

Then follow the installation instruction provided in the readme file.

This repository contains:

Step-by-step guides can be found in this link.

Klepsydra High Performance Vision Tutorial.

This repository contains a step-by-step guide to build high performance vision applications based on Klepsydra and OpenCV.

git clone https://github.com/klepsydra-technologies/kpsr-vision-ocv-tutorial.git

Then follow the installation instruction provided in the readme file.

This repository contains:

License

© Copyright 2019-2020, Klepsydra Technologies, all rights reserved. Licensed under the terms in LICENSE.md

This software and documentation are Copyright 2019-2020, Klepsydra Technologies Limited and its licensees. All rights reserved. See license file for full copyright notice and license terms.

Contact

https://www.klepsydra.com support@klepsydra.com