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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.