Giter Site home page Giter Site logo

eprosima / fast-dds-monitor Goto Github PK

View Code? Open in Web Editor NEW
37.0 9.0 10.0 15.76 MB

eProsima Fast DDS Monitor is a graphical desktop application aimed at monitoring DDS environments deployed using the eProsima Fast DDS library. Looking for commercial support? Contact [email protected]

Home Page: https://eprosima.com

License: GNU General Public License v3.0

CMake 5.63% QML 44.90% QMake 0.55% C++ 48.93%
monitoring monitor fastdds dds ros2 ros2-galactic

fast-dds-monitor's Introduction

Fast DDS Monitor

License Releases Issues Forks Stars test codecov Documentation Status

eProsima Fast DDS Monitor is a graphical desktop application aimed at monitoring DDS environments deployed using the eProsima Fast DDS library. Thus, the user can monitor in real time the status of publication/subscription communications between DDS entities. They can also choose from a wide variety of communication parameters to be measured (latency, throughput, packet loss, etc.), as well as record and compute in real time statistical measurements on these parameters (mean, variance, standard deviation, etc.).

Furthermore, the user can check the status of the deployed DDS network at any time, i.e. see for each DDS Domain which DomainParticipants are instantiated, as well as their publishers and subscribers and the topics under which they publish or to which they subscribe respectively. It is also possible to see the physical architecture of the network on which the DDS applications that use Fast DDS are running.

eProsima Fast DDS Monitor is designed to meet the following criteria:

  • Monitoring: real-time tracking of network status and DDS communication.
  • Intuitive: graphical user interface developed following a user experience design approach.
  • Introspection: easily navigate through the deployed and active DDS entities being able to inspect their configuration and physical deployment.
  • Troubleshooting: detect at a glance the possible issues or anomalous events that may occur in the communication.

NOTE

In order to monitor a DDS network deployed using Fast DDS library, compiling the latter with statistics and explicitly activating the statistics module is required. See Fast DDS with Statistics module for more details.


Documentation

You can access the documentation online, which is hosted on Read the Docs.

fast-dds-monitor's People

Contributors

dependabot[bot] avatar irenebm avatar jesuspoderoso avatar jparisu avatar jsan-rt avatar juanlofer-eprosima avatar miguelcompany avatar rsanchez15 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fast-dds-monitor's Issues

Fast-DDS-monitor ros2 FOXY

HELLO, i want to compile ROS 2 foxy with statistics and monitor a ROS 2 talker and listener with Fast DDS Monitor with these commands:
dds

export FASTDDS_STATISTICS=ON

first terminal
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp

ROS2_DOMAIN_ID=1 ros 2 run demo_nodes_cpp talker

sec terminal
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
ROS2_DOMAIN_ID=1 ros 2 run demo_nodes_cpp listener

But the monitor doesn`t show statistics, can you help me ?
Thank you for your attention and I am waiting with enthusiasm your response!

Fast-DDS Monitor crash on ROS 2 Humble based container (Qt, X11 related)

Hi,

I am trying to run the FastDDS monitor v2.0.0 on the same Docker container as my ROS 2 application is running. This container is based on the ros:humble-ros-base-jammy official image. The monitor program crashes with the following error (tried two methods):

With the AppImage runner:

The X11 connection broke: No error (code 0)
XIO:  fatal IO error 0 (Success) on X server ":0.0"
      after 428 requests (428 known processed) with 0 events remaining.

With the fastdds_monitor executable installed with the run script installer:

QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-ros'
The X11 connection broke: No error (code 0)
X connection to :0.0 broken (explicit kill or server shutdown).

The container was created with the following command:

xhost local:root
docker run -it --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ros:humble-ros-base-jammy bash

In the same terminal where the error is seen, I can immediately run graphical applications like rviz with no issue, so the X11 client can communicate correctly in general to run GUI applications.

The FastDDS monitor Docker container does work correctly on this environment, and seems to be based on the same Ubuntu Jammy 22.04 image, so it must be some dependency or configuration issue in the ROS 2 container.

Any pointer is appreciated.

NOTE (context): I first tried running the FastDDS monitor Docker container next to my ROS 2 container, but I only managed to get statistics for a few discovery events that seem to have gone through the Docker network. Since I am relying on shared memory data sharing I guess the /dev/shm from the ROS 2 container must be visible to the monitor, thus I am trying to run the monitor in the same container.

Fast-DDS Monitor did not pick the traffic data.

Hi forum,
I am trying to use Fast-DDS monitor to lay out latency graph and other useful options to check with current traffic over the network I configured the "fastdds-monitor" as follow:

export FASTDDS_STATISTICS="HISTORY_LATENCY_TOPIC;NETWORK_LATENCY_TOPIC;PUBLICATION_THROUGHPUT_TOPIC;
SUBSCRIPTION_THROUGHPUT_TOPIC;RTPS_SENT_TOPIC;RTPS_LOST_TOPIC;
HEARTBEAT_COUNT_TOPIC;ACKNACK_COUNT_TOPIC;NACKFRAG_COUNT_TOPIC;
GAP_COUNT_TOPIC;DATA_COUNT_TOPIC;RESENT_DATAS_TOPIC;SAMPLE_DATAS_TOPIC;
PDP_PACKETS_TOPIC;EDP_PACKETS_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC"

When I try to run following syntax the app fails
./DDSHelloWorld publisher 0 500

Monitor_Did_NOT_record_data

$ ./DDSHelloWorld publisher
Starting
DDSHelloWorld DataWriter created.
DDSHelloWorld DataWriter waiting for DataReaders.
DataWriter matched.
DataWriter matched.
Auto Sent: Message ('q' quit)

NOW Subscriber:
export FASTDDS_STATISTICS="HISTORY_LATENCY_TOPIC;NETWORK_LATENCY_TOPIC;PUBLICATION_THROUGHPUT_TOPIC;
SUBSCRIPTION_THROUGHPUT_TOPIC;RTPS_SENT_TOPIC;RTPS_LOST_TOPIC;
HEARTBEAT_COUNT_TOPIC;ACKNACK_COUNT_TOPIC;NACKFRAG_COUNT_TOPIC;
GAP_COUNT_TOPIC;DATA_COUNT_TOPIC;RESENT_DATAS_TOPIC;SAMPLE_DATAS_TOPIC;
PDP_PACKETS_TOPIC;EDP_PACKETS_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC"

./DDSHelloWorld subscriber

This program run without any issue.

But "fastdds-monitor" fail to gather data. Although messages are flowing across the two PC but not picked up by
"fastdds-monitor" program to plot a graph or make sensible conclusion.

IF you please shed some light on this issue will be much obliged and grateful
Thank you,
IK

latency statistic data is empty

Uploading image.png…

image

step1:
compile fastdds with -DFASTDDS_STATISTICS=ON(default is on)and -DPERFORMANCE_TESTS=ON
step2:
./LatencyTest publisher -f payloads_demands.csv --domain 0 -s 1000000
./LatencyTest subscriber -f payloads_demands.csv --domain 0
step3:
configure fastddsmonitor to introspect FASTDDS LATENCY like picture1, but the graph is always empty.

How to use this tool to analyze Autoware?

Hi, I am tring to use this tool to analyze latency of ros2 (humble) nodes in Autoware planning simulation scenario.
I found that this tool is tend to stuck when I start simulation ros2 launch autoware_launch planning_simulator.launch.xml map_path:=$HOME/autoware_map/sample-map-planning vehicle_model:=sample_vehicle sensor_model:=sample_sensor_kit.
Even if it is not stucked, no topic sub or pub would show in DDS entities, only load_ndoe_xx would be showed in that panel.
Could you help to answer some questions?

  • How powerful the computer should I use. (For now, my pc: CPU i7-12700H, MEM 16GB, GPU 3070Ti laptop 8GB)
  • Does ros2 launch have some influence on this tool
  • Autoware and Fast DDS Monitor running in 2 separated docker container, could I use it in container?
    Thank you.

Monitoring writers and readers with plots (series Ids are different for every run)

I have managed to have compile a simple publisher subscriber program with CMake option -DFASTDDS_STATISTICS=ON

I also installed fast-DDS Monitor.
After exporting statistics topics with

export FASTDDS_STATISTICS="HISTORY_LATENCY_TOPIC;PUBLICATION_THROUGHPUT_TOPIC;ACKNACK_COUNT_TOPIC;;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC;SUBSCRIPTION_THROUGHPUT_TOPIC"

I run the subscriber and publisher
and I run the monitor and I could see the Participant_sub and Participant_pub.
I also could add a plot of Latency

I have the following questions:

  • The main one: Every time I run the publisher and subscriber, new entities appear in the DDS Entities explorer with their datareaders and datawriters with a different ID. This would not be a problem but when I want to make a plot, I have to add series indicating those IDS.
    The problem is that I don't have those IDs before running the entities. So I can not design the plot I want before running the entities. This implies that I have to design the plots in a hurry after the entities started running. This for a plot is problematic but for several plots becomes impossible and error prone.

How can I prepare the plots I want with the series I want to monitor before I run my application?

Update:
It seems that even though the plot's series indicate some ID numbers for readers and writers, when I run them again (and they get different numbers, they still get plotted. Why is this so?

  • The monitoring seems to be going well but when I run the program I got an Error (that does not stop the entity though)
    It says
2023-05-04 19:49:56.377 [STATISTICS_DOMAIN_PARTICIPANT_Error] Topic   is not a valid statistic topic name/alias -> Function enable_statistics_builtin_datawriters

What does this mean?

Thanks

data display interval is not as set and is not consistent in the plot

Helllo,
when using the monitor to display historic or real-time statistics, the time interval is not followed by the monitor: the data interval is not consistent, sometimes the interval can be very large, eg 2 min, even thought i set the time interval to 5s, please see the screenshot. Is it because the network or because of the monitor itself?

捕获

Question on use of Monitor as a post processing tool

Hi, thank you for the nicely deployed real-time tools within the monitor. I was wondering if there is a way i could use this monitor on recordings of a ros2 network running (i.e. how you can post process rclcpp performance info using ros2 trace-analysis). I'm most interested in the latency between dataWriters and dataReaders. If i could get this in some CTF trace format then it'd be possible to match the DDS performance information with the ROS2 information to create a holistic performance analysis.

I guess what I'm asking is, is there a way I can record the information that the monitor uses in real time without having to open the GUI?
edit: If i was to record a rosbag of my system, would i still be able to get the same info from the monitor as if the system was running in real time?

Any thoughts or ideas would be greatly appreciated!

fail to run monitor image (qt related)

Hi,

when I was trying to use monitor by docker run -it --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ubuntu-fastdds-monitor:v1.4.0

docker run -it --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix ce15f448edf4
qt.qpa.xcb: could not connect to display :0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

/root/entrypoint.bash: line 61:    28 Aborted                 /bin/bash -c "$FULL_CMD"

I got this error msg which seems related to gui issue. When looked around others solved this issue by adding --no-ceritfication at the end, which not works for me.

System: Ubuntu 22.04
Monitor version: 1.4.0

FastDDS-monitor fails to run (linux)

I have downloaded the eProsima Fast DDS Monitor 1.3.0 Linux (32&64) installer
After installing in my Ubuntu 18.04.3 LTS system with 15.5Gib Memory and Nvidia GeForce GTX 1060
First I can't find the application in the list of installed applications
and when I go from the terminal to the installation location

cd ~/fastdds_monitor/

I do

./fastdds_monitor
QGLXContext: Failed to create dummy context
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(),depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples -1, swapBehavior QSurfaceFormat::DoubleBuffer, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profiel QSurfaceFormat::NoProfile)
Aborted (core dumped)

How can I run FastDDS Monitor on linux
(note: I am not running it from a container)

Fast DDS monitor - Network Latency

OS: Ubuntu 20.04
ROS 2 distro: Galactic built from source


Hello!

I am trying to use Fast DDS Monitor to monitor network latency between two hosts running in a ROS 2 network. I am able to get Fast DDS running correctly by following your documentation and tutorials.

However in you documentation it says:

For this case, we will choose FASTDDS_LATENCY. This data is called like this because it represents the time elapsed between the user call write function and the reader in the other endpoint receives it in the user callback. For the network latency there is other topic named NETWORK_LATENCY. However our endpoints are not storing neither publishing this type of data, and so it can not be monitored.

I wanted to monitor the NETWORK_LATENCY topic but it does not show up as an option. How can I enable this topic?

No statistics data and missing physical entities when using ROS 2 humble node

I'm experiencing an issue when using the DDS Monitor with a ROS 2 humble node. When I run the HelloWorldExample LINK from the DDS Suites, I can see all the statistics data and the physical entities in the DDS Monitor. However, when I use a ROS 2 humble node, LINK although I can see my publisher and subscriber on the DDS entities, there is no information displayed in the physical entities section, and the statistics data is missing.

Output of DDS HelloWorldExample:
Screenshot from 2023-05-23 13-23-36

Steps to Reproduce:

  • Run the HelloWorldExample from the DDS Suites.
  • Launch the DDS Monitor and observe the physical entities and statistics data.
  • Run a ROS 2 humble node that publishes and subscribes to a topic.
  • Launch the DDS Monitor and notice that the physical entities section is empty, and there are no statistics data displayed.

Expected Behavior:
When using the DDS Monitor with a ROS 2 humble node, I expect to see the publisher and subscriber information in the physical entities section, as well as the statistics data for the node.

Actual Behavior:
The physical entities section is empty, and there are no statistics data displayed when using the DDS Monitor with a ROS 2 humble node.
Output of ros2 humble node:
Screenshot from 2023-05-23 13-28-51

Additional Information:

  • I have verified that the ROS 2 humble node is functioning correctly, as I can see the expected output in the console.

  • I have tried different versions of DDS Monitor, but the issue persists.

  • I have also build the workspace with --cmake-args -DFASTDDS_STATISTICS=ON and exported all the environment variable.

Environment:

ROS 2 version: Humble
DDS Monitor version: 1.3.0
Operating System: Ubuntu 22.04.2 LTS

Fast DDS Monitor and ROS 2 Humble

I struggle to use the Fast DDS Monitor on Humble. I managed to make it work with Vulcanexus Docker image; however, if I follow the guide from 2022 Roscon presentation, I don't see any traffic in the Monitor tool.

To summarize my setup:

  • Humble Docker image

  • Building fastdds from source with
    colcon build --cmake-args -DFASTDDS_STATISTICS=on

  • Sourcing environments:
    source /opt/ros/humble/setup.bas
    source <path to fastdds_ws>/install/setup.bash

  • Enabling Statistics Module

    export FASTDDS_STATISTICS="HISTORY_LATENCY_TOPIC;NETWORK_LATENCY_TOPIC;PUBLICATION_THROUGHPUT_TOPIC;SUBSCRIPTION_THROUGHPUT_TOPIC;RTPS_SENT_TOPIC;RTPS_LOST_TOPIC;HEARTBEAT_COUNT_TOPIC;ACKNACK_COUNT_TOPIC;NACKFRAG_COUNT_TOPIC;GAP_COUNT_TOPIC;DATA_COUNT_TOPIC;RESENT_DATAS_TOPIC;SAMPLE_DATAS_TOPIC;PDP_PACKETS_TOPIC;EDP_PACKETS_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC"

  • Running ros2 run demo_nodes_cpp talker node and the Fast DDS Monitor in a different tab.

The difference in the Monitor's behavior is that while I can list the connected Entities, there's no traffic in the Statistics tab, and I don't see any device under the Physical tab. This, in my opinion, indicated that the talker was not, in fact, launched with the statistics enabled.
Is there anything I'm missing?

Fastdds_monitor shows a black screen

I am trying to do the first example as in here
I am inside the docker as in here and I can run DDSHellosWolrdExample without problem

But when I do fastdds_monitor all I got is a window completely in black
and in the terminal

root@be589ef998c4:/usr/local/eprosima/fastrtps/examples/cpp/dds/HelloWorldExample/bin# fastdds_monitor 
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.
Qt Quick Layouts: Detected recursive rearrange. Aborting after two iterations.

I would appreciate some help as I would really like to try the monitor

Info:
Ubuntu 20.04.2LTS
64-bit
23.3GiB Memory

Installing Fast-DDS-Monitor from source

Tried installing the Fast-DDS-Monitor from source and getting the following error

Fast-DDS-monitor/include/fastdds_monitor/backend/SyncBackendConnection.h:164:33
: error: ‘the_end_of_time’ was not declared in this scope
  164 |             Timestamp time_to = the_end_of_time());
      |                                 ^~~~~~~~~~~~~~~

when running
cmake --build . --target install

Source: Install Fast-DDS-Monitor from source

Long-term testing [14400]

Hi,

I tried using Fast DDS Monitor to monitor ROS2 for 24 hours, but when I came back after 13 hours the application had frozen and all the graphs were empty. I don't think it's a problem with the PC as all the other windows were fine.

Has anyone tested Fast DDS Monitor for longer periods and know if it works or not?
Are there any measures I can do to make it more stable, like disabling some of the visual parts?

I saw on issue #147 about using Fast DDS Statistics Backend, but I'd rather use Fast DDS Monitor if possible since it's much simpler and doesn't need much setup.

latency statistic data is empty

Uploading image.png…

image

step1:
compile fastdds with -DFASTDDS_STATISTICS=ON(default is on)and -DPERFORMANCE_TESTS=ON
step2:
./LatencyTest publisher -f payloads_demands.csv --domain 0 -s 1000000
./LatencyTest subscriber -f payloads_demands.csv --domain 0
step3:
configure fastddsmonitor to introspect FASTDDS LATENCY like picture1, but the graph is always empty.

Update of statistics

I am used a dynamical chartin DATA_COUNT topic with 1 second of update periodand using SUM as Statistical Kind.
However, the data was not updated according to my expectation, so it could not reflect the frequency of data publish well.
The SUM value takes more than 1min to update, but I hope it can be updated quickly (between 1 second and 3second).

The current data publication frequency is 300Hz.

All 10 participants publish data at the same time.

The total amount of data is about 300 bytes.
888

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.