Skip to main content

ZeroROS middleware

Project description

Zero-dependency ROS-like middleware for Python

This library is intended to be used for small projects that require a simple middleware for communication between processes. It is not intended to be a replacement for ROS.

PyPI Wheels platforms Downloads License

Why ZeroROS?

See these discussions in ROS Discourse and this one in reddit/ROS.

Installation

Use pip to install the library:

pip install zeroros

Usage

The library is composed of three main classes: Publisher, Subscriber and MessageBroker.

MessageBroker

The MessageBroker class is used to create a message broker that can be used by publishers and subscribers to communicate with each other.

from zeroros import MessageBroker

broker = MessageBroker()

Publisher

The Publisher class is used to publish messages to a topic. The constructor takes two arguments: the topic name and the message type. The topic name is a string, while the message type is a Python class. The message type is used to serialize and deserialize messages.

from zeroros import Publisher

pub = Publisher("topic_name", String)
pub.publish("Hello world!")

Subscriber

The Subscriber class is used to subscribe to a topic and receive messages. The constructor takes two arguments: the topic name and the message type. The topic name is a string, while the message type is a Python class. The message type is used to serialize and deserialize messages.

import time
from zeroros import Subscriber

def callback(msg):
    print(msg)

sub = Subscriber("topic_name", String, callback)
while True:
    # Do something else
    time.sleep(1)

# Stop the subscriber
sub.stop()

Messages

The library comes with a few built-in messages that can be used out of the box. The following messages are available:

  • std_msgs.String
  • std_msgs.Int
  • std_msgs.Float
  • std_msgs.Bool
  • std_msgs.Header
  • geometry_msgs.Vector3
  • geometry_msgs.Vector3Stamped
  • geometry_msgs.Twist
  • geometry_msgs.Quaternion
  • geometry_msgs.Pose
  • geometry_msgs.PoseStamped
  • geometry_msgs.PoseWithCovariance
  • geometry_msgs.TwistWithCovariance
  • nav_msgs.Odometry
  • nav_msgs.Path
  • sensors_msgs.LaserScan
  • More to come...

Logging

This library implements a class called DataLogger that can be used to log data in JSON format. To use the logger, simply create an instance of the class and call the log method with the data to be logged. The data can be any Python object that can be serialized to JSON.

from zeroros import DataLogger
from zeroros.messages import String

logger = DataLogger("log_file.json")

msg = String()
msg.data = "Hello world!"

logger.log(msg, topic_name="/topic_name")

The content of the log file will be:

[
  {
    "class": "String",
    "topic_name": "/topic_name",
    "timestamp": 1622126400.0,
    "message": {
      "data": "Hello world!"
    }
  }
]

In the examples folder you will find a python script to convert JSON logs into CSV files.

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

zeroros-1.0.8.tar.gz (12.3 kB view hashes)

Uploaded Source

Supported by

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