PlotJuggler如何安装和使用
官网和Github地址
https://plotjuggler.io/
https://github.com/facontidavide/PlotJuggler
简介
plotJuggler是一个数据可视化神器,支持离线,在线(ROS/MQTT/ZMQ/WebSocket)的数据源。并且可以记录实时的数据,以及将当前的数据作为ROS2的Topic再RePublic出去。也可以使用Lua语言处理接受到的数据,达到二次分析的效果。
如何安装
# 在Ubuntu2004上
sudo snap install plotjuggler-ros# 在Ubuntu2204上
sudo snap install plotjuggler
使用介绍
File栏:
进行离线数据的导入,以及布局文件的导入和导出
Streaming栏:
实时数据输入流的设置
Publishers栏:
导出数据或用ROS2话题将当前的数据再发布出去
Timeseries List栏:
数据源中的所有数据项
图形窗口说明
配合代码如何使用
Python代码
# pip install pyzmq
import zmq
import time
import math
import jsoncontext = zmq.Context()
socket = context.socket(zmq.PUB)
socket.bind("tcp://*:5556")x = 0.0
while True:y = math.sin(x)data = {"x": round(x, 4),"y": round(y, 4),"timestamp": time.time()}json_msg = json.dumps(data)socket.send_string(json_msg)print("Sent:", json_msg)x += 0.1time.sleep(0.1)
C++代码
# 使用前需要安装
sudo apt install nlohmann-json-dev# 在https://github.com/zeromq/cppzmq 下载zmq.hpp至当前工程的include文件夹中
#include <zmq.hpp>
#include <nlohmann/json.hpp>
#include <iostream>
#include <cmath>
#include <chrono>
#include <thread>int main() {zmq::context_t context(1);zmq::socket_t publisher(context, zmq::socket_type::pub);publisher.bind("tcp://*:5555");double x = 0.0;while (true) {double y = std::sin(x);double timestamp = std::chrono::duration<double>(std::chrono::system_clock::now().time_since_epoch()).count();nlohmann::json j;j["x"] = x;j["y"] = y;j["timestamp"] = timestamp;std::string msg = j.dump();zmq::message_t message(msg.begin(), msg.end());publisher.send(message, zmq::send_flags::none);std::cout << "Sent: " << msg << std::endl;x += 0.1;std::this_thread::sleep_for(std::chrono::milliseconds(100));}return 0;
}
# 编译
g++ src/01.cpp -o pub -lzmq -Iinclude
plotjuggler设置
左侧出现对应的数据,将对应的数据拖入右侧界面,即可看到对应的数据图形
如何给Plot窗口添加标题
如何限制Y轴最大值和最小值
再指定的窗口中右键,edit curves,还可以修改曲线颜色,以及删除图形窗口的数据(一个窗口是可以有多个数据的)
如何进行分栏
当我们将鼠标放置标题栏的时候,会出现分栏按钮,点击进行分栏即可。对应经常使用的布局,也可以将布局保存起来进行复用。