PlotJuggler - ZMQ - Python minimal data source example

The following example serves as a starting point of how to develop a custom data source for PlotJuggler using Python and ZeroMQ.

In order to use it, configure PlotJuggler like this

PlotJuggler streaming

PlotJuggler config

plotjuggler_zmq_producer.py
import zmq
import time
import json
import math

# ZeroMQ setup
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5555")  # Bind to a port PlotJuggler will connect to

# Generate and send data
time_start = time.time()
try:
    while True:
        elapsed_time = time.time() - time_start
        value = {
            "timestamp": elapsed_time,  # Zeit in Sekunden seit Scriptstart
            "variables": {
                "sin": math.sin(elapsed_time),  # Sinuswelle
                "cos": math.cos(elapsed_time),  # Kosinuswelle
            },
        }

        # Sende Daten als JSON mit dem Thema "sincos"
        socket.send_string("sincos", zmq.SNDMORE)
        socket.send_string(json.dumps(value))
        time.sleep(0.01)  # 100 Hz Update-Rate
except KeyboardInterrupt:
    print("Datenstrom unterbrochen.")
finally:
    socket.close()
    context.term()

Now click Start in the streaming tab and don’t forget to drag the sin and cos variables to the plot.

PlotJuggler add curves

Output example

PlotJuggler Python ZMQ example


Check out similar posts by category: Python, ZeroMQ