PlotJuggler é um visualizador de séries temporais rápido, poderoso e intuitivo, desenvolvido em C++ com Qt e OpenGL. A ferramenta permite carregar arquivos, conectar a streams de dados em tempo real e salvar layouts de visualização para reutilização posterior. Seu foco está em oferecer uma experiência fluida tanto para análise exploratória quanto para monitoramento de sistemas embarcados e robóticos.

Interface
- Drag & Drop: basta arrastar arquivos CSV ou logs para a janela principal e os dados são exibidos instantaneamente.
- Layout persistente: a configuração de gráficos, cores e eixos pode ser salva em arquivos de projeto e recarregada a qualquer momento.
- Editor de transformações: permite aplicar operações como derivada, média móvel ou integral diretamente na interface, sem necessidade de scripts externos.

Fontes de dados
PlotJuggler aceita múltiplas origens, tanto estáticas quanto dinâmicas:
| Tipo | Exemplos suportados |
|---|---|
| Arquivo | CSV, ULog (PX4) |
| Streaming | MQTT, WebSockets, ZeroMQ, UDP |
| Formatos | JSON, CBOR, BSON, MessagePack |
| ROS | rosbag, tópicos ROS 1 e ROS 2 |
| LSL | Lab Streaming Layer |

A arquitetura baseada em plugins facilita a adição de novos conectores ou formatos personalizados.
Transformação e análise
Além da visualização, o programa inclui recursos avançados de análise:
- Editor de Transformações: interface gráfica para aplicar funções matemáticas a séries temporais.
- Editor de Funções Customizadas: permite escrever funções multi‑entrada/saída em Lua. Mesmo quem nunca programou em Lua costuma aprender o básico em poucos minutos.
Essas ferramentas tornam o PlotJuggler útil tanto para inspeção rápida quanto para cálculos mais elaborados.
Desempenho
A renderização é feita com OpenGL, o que garante alta taxa de quadros mesmo com milhares de séries e milhões de pontos. Testes mostram que a aplicação mantém interatividade fluida ao lidar com grandes logs de voo de drones ou simulações robóticas complexas.
Extensibilidade
Plugins oficiais e de terceiros ampliam a funcionalidade:
- MQTT DataStreamer
- Lab Streaming Layer DataStreamer
- Plugins ROS (disponíveis em https://github.com/PlotJuggler/plotjuggler-ros-plugins)
- CAN .dbg DataLoader
Um repositório de exemplo (plotjuggler-sample-plugins) demonstra como criar novos plugins.
Instalação
Distribuições oficiais estão disponíveis nas páginas de Release:
- Linux: AppImage, pacotes Debian (bookworm, trixie) e Snap (
sudo snap install plotjuggler). - macOS: instalador .dmg.
- Windows: instalador .exe.
Para usuários de ROS, o pacote pode ser instalado via apt:
sudo apt install ros-$ROS_DISTRO-plotjuggler-ros
ros2 run plotjuggler plotjuggler
Compilar a partir do código‑fonte é suportado; instruções detalhadas estão em COMPILE.md no repositório.
Pontos positivos
- Interface drag‑and‑drop extremamente simples.
- Suporte nativo a ROS 1 e ROS 2, ideal para desenvolvedores de robótica.
- Performance robusta com OpenGL.
- Sistema de plugins bem documentado e fácil de estender.
- Licença Mozilla Public License 2.0 permite desenvolvimento de plugins proprietários.
Pontos negativos
- A curva de aprendizado de Lua pode ser um obstáculo para usuários que não desejam programar.
- Algumas funcionalidades avançadas (ex.: integração completa com ROS 2) ainda dependem da versão Snap, que possui limitações.
- Falta de documentação em português pode dificultar a adoção por comunidade local.
Comparação rápida
| Ferramenta | Suporte a ROS | Visualização em tempo real | Extensibilidade |
|---|---|---|---|
| PlotJuggler | Sim (ROS 1/2) | Sim (MQTT, UDP, LSL…) | Plugins C++/Lua |
| rqt_plot | Apenas ROS 1 | Limitado | Não há plugins externos |
| Grafana | Não específico | Sim (via InfluxDB) | Plugins ricos, mas complexo para logs locais |
PlotJuggler destaca‑se por combinar a simplicidade de uso com um ecossistema de plugins focado em robótica e sistemas embarcados.
Público-alvo
- Engenheiros de robótica que trabalham com ROS 1/2.
- Pesquisadores que precisam analisar grandes volumes de dados de sensores.
- Desenvolvedores de sistemas embarcados que desejam monitorar streams em tempo real.
- Usuários que buscam uma ferramenta open‑source, sem dependência de serviços cloud.