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.2.tar.gz (30.5 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.2-py3-none-any.whl (38.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: RedisROS-0.0.2.tar.gz
  • Upload date:
  • Size: 30.5 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.2.tar.gz
Algorithm Hash digest
SHA256 042898c90bc920919ebeb2a7783ba3b1f7254b20f5d64e56a877afa687a409a8
MD5 8c78134ab03748a339bc56d29dab266c
BLAKE2b-256 27e8bec2b97501b7ab274c5d088901173fb7e92ce8dc2a32d92063bb4db64ae9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: RedisROS-0.0.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f61939b028843105e07283b4dcf221cfdde74df5593b875296609b700dc81953
MD5 484001b63466d506209717631d19e2c7
BLAKE2b-256 0768fd193149bc9052e078335d05d61539ea117fe38f18953a588e573a3d48eb

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