Skip to main content

A redis-based event-based ROS2-like library for python

Project description

RedisROS

A Redis-based pure python alternative to ROS2

Installation | Usage | Advanced Topics | About


Warning This library is still in development, and has not been properly tested, use at your own risks


RedisROS is an event-based publisher/subscriber communication framework, aimed at enabling fast development and prototying of event-driven applications. Those include robotics, simulation, and any other application operating on this ethos. It follows a very similar structure to the well established Robot Operating System (ROS), with an emphasis put on minimal development overhead and fast prototyping.

As such, the development of this library has been done according to the following ethos:

  • A pure-python implementation: The goal of RedisROS is not performance as much as it is fast and flexible prototyping. Python was as such selected, given its ease of use and accessibility.

  • An interface similar to that of ROS2: Scripts developed using RedisROS should be portable to ROS2 with minimal modifications if desired (given no RedisROS-specific features are used, more on that later).

  • Minimal development overhead: RedisROS gets rid of all unnecessary steps when possible. There is no more need for compiling, messages definitions, packages etc.

  • Minimal dependencies: To further reduce complexity, dependencies are kept to a minimum. The only major dependency being Redis, and the python-redis-lock library. ROS is not necessary for RedisROS to run.

  • Modular and expandable: RedisROS was coded to be easily expanded. New interfaces can easily be setup, allowing for testing new configurations and ideas.

It should be noted that RedisROS is also capable of communicating with ROS/ROS2. Bridges are under development and will be released soon.

Why Redis?

"Redis is an in-memory data structure store, used as a distributed, in-memory key–value database, cache and message broker, with optional durability."

Redis solves the issue of cross-process comunication, while ensuring performance and reliability in the exchange of information. It can furthermore be deployed on distibuted architecture, making it an interesting choice for scalability purposes.

Installation

Coming soon

Usage

With RedisROS, any python class can be made a node capable of communicating with the communication layer. Similarly to ROS2, the class can inherit from RedisROS's node class, which in turn gives it access to all RedisROS methods.

Alternatively a RedisROS node can be created, which can then be passed around, and interfaced with as needs be.

Coming soon

Core endpoints

To allow for emulating all behaviors desired, three core endpoints are necessary:

  • The publisher: Used to push data to topics
  • The subscriber: Used to monitor, retreive, and react to data being published on topics
  • The shared variable: Used to store a single, cross-process value (somewhat similar to ROS's parameters)

All other behaviors can be achieved through combining the above (more in custom endpoints)

Publisher

Coming soon

Subscriber

Coming soon

Shared_variable

Coming soon

Custom endpoints

The three core endpoints can be combined to emulate most behaviors. RedisROS makes it easy to build on those to achieve the desired behaviors. Currently, the following custom endpoints are being developed

Behavior

  • Service: Allows for request/response pattern

Bridges

  • ROS publisher: Bridge endpoint, allowing for sending messages through ROS
  • ROS subscriber: Bridge endpoint, allowing for sending messages through ROS

From RedisROS to ROS2

Coming soon

Advanced Topics

Coming soon

Custom endpoints

Coming soon

About

RedisROS was developed as part of a larger upcoming project. Stay tunned for more!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

RedisROS-0.0.3.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

RedisROS-0.0.3-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

Details for the file RedisROS-0.0.3.tar.gz.

File metadata

  • Download URL: RedisROS-0.0.3.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.4

File hashes

Hashes for RedisROS-0.0.3.tar.gz
Algorithm Hash digest
SHA256 fc93c9a6b52f0f109e10e546631f0e30ccb437dab7ab174970d876acc217e7a0
MD5 a402a5849021fc2892a78357253eb5e0
BLAKE2b-256 7c47d14998a9deb2669f6e7a3d12849b0bd604082c611f0bb454a63699df392a

See more details on using hashes here.

File details

Details for the file RedisROS-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: RedisROS-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 38.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.4

File hashes

Hashes for RedisROS-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cb4d75c351ea99dff71d97292273a794429323793910d5c38e340e96e4b2a711
MD5 8d60705db4ed7ed192c30c29550da3a8
BLAKE2b-256 988ac96e0fdf6d3f98342c1c495ebca1de5aefc5959adf252d4fcda2b3549fc6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page