ros-visualization / rqt_robot_monitor Goto Github PK
View Code? Open in Web Editor NEWHome Page: http://wiki.ros.org/rqt_robot_monitor
License: BSD 3-Clause "New" or "Revised" License
Home Page: http://wiki.ros.org/rqt_robot_monitor
License: BSD 3-Clause "New" or "Revised" License
Mind making a new release with 4596ce6 into focal? It looks like ros-noetic-rqt-robot-monitor
is uninstallable at the moment because of the python 2 dependency
executing command [apt-get install -y ros-noetic-rqt-robot-monitor]
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
ros-noetic-rqt-robot-monitor : Depends: python-rospkg but it is not installable
E: Unable to correct problems, you have held broken packages
It looks like all of the dependencies for this package are available in Melodic, so it would be great to get it released there. Thanks in advance.
I suggest to merge dashing-devel
either to master
or to a ros2
branch (depends on how you wish to handle ROS 1 vs. ROS 2 in this repo, I suppose).
Rationale: I tested the robot monitor to also be able to compile and successfully run on ROS 2 foxy (~April), so it should be fairly easy to prepare a release for foxy.
Forgive me if this is a bit of a naive question, but is there a reason pycache isn't .gitignored?
For reasons... I have rqt_robot_monitor
(and the rest of foxy stuff) built from source and added as submodules in a repository. It's somewhat annoying to always see src/rqt_robot_monitor/__pycache__/
show up as "Untracked files" in the rqt_robot_monitor
repo after building.
From @DLu on November 23, 2016 20:3
The package description mentions that stale or error diagnostics are grouped together. However, the current implementation only looks for error or warn
This is easy enough to fix, but I wanted to discuss whether other people thought it was a bug first.
Copied from original issue: ros-visualization/rqt_robot_plugins#118
Opening an inspector window often slows down or sometimes causes crash of this app.
This happens especially when one aggregated message has many statuses and the pause button is NOT pressed.
I'm interested in embedding RobotMonitorWidget
in my own application like this:
import rospy
import rqt_robot_monitor.robot_monitor
import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWidgets import QDialog
from PyQt5.QtWidgets import QVBoxLayout
class ControlPanel(QDialog):
def __init__(self):
QDialog.__init__(self)
rospy.init_node('control_panel', anonymous=False)
self.setWindowTitle('Control Panel')
layout = QVBoxLayout()
layout.addWidget(rqt_robot_monitor.robot_monitor.RobotMonitorWidget('', topic='diagnostics_agg'))
self.setLayout(layout)
self.show()
app = QApplication(sys.argv)
ex = ControlPanel()
sys.exit(app.exec_())
It seems to work somewhat but the status icons don't appear and I can't double click on a status to show the details. I was wondering if it is a good idea to attempt doing something like this or not? Any hints on the top of your head on how to resolve these issues would be appreciated!
It looks like this file has been changed since the melodic release, but here is the error I am getting
Traceback (most recent call last):
File "/opt/ros/melodic/lib/python2.7/dist-packages/rqt_robot_monitor/inspector_window.py", line 106, in message_updated
self.disp.write_status.emit(status)
TypeError: StatusSnapshot.write_status[DiagnosticStatus].emit(): argument 1 has unexpected type 'NoneType'
[robot_monitor-3] process has died [pid 27434, exit code -6, cmd /opt/ros/melodic/lib/rqt_robot_monitor/rqt_robot_monitor __name:=robot_monitor
From @mitchellwills on January 24, 2015 5:6
The robot monitor plugin does not appear to support using UTF8 strings. As shown below trying to send a UTF8 degree symbol (C2 B0) results in the first byte of the UTF8 sequence being treated as a seperate character.
Copied from original issue: ros-visualization/rqt_robot_plugins#79
I tried to launch rqt_robot_monitor
from a launch file as below and I could see 4 instances of rqt_robot_monitor node. Where as launching the node from terminal launches one instance.
<launch>
<node pkg="rqt_robot_monitor" exec="rqt_robot_monitor" name="rqt_robot_monitor" output="screen" />
</launch>
ros2 run rqt_robot_monitor rqt_robot_monitor
ros2 node list
I am using ROS2 Humble on Ubuntu 22.04 and following are the installed ros-humble-rqt-robot-monitor details:
dpkg -s ros-humble-rqt-robot-monitor
Package: ros-humble-rqt-robot-monitor
Status: install ok installed
Priority: optional
Section: misc
Installed-Size: 148
Maintainer: Aaron Blasdel <[email protected]>
Architecture: amd64
Version: 1.0.5-2jammy.20240125.224658
Depends: python3-rospkg-modules, ros-humble-diagnostic-msgs, ros-humble-python-qt-binding (>= 0.2.19), ros-humble-qt-gui, ros-humble-qt-gui-py-common, ros-humble-rclpy, ros-humble-rqt-gui, ros-humble-rqt-gui-py, ros-humble-rqt-py-common, ros-humble-ros-workspace
Description: rqt_robot_monitor displays diagnostics_agg topics messages that are published by diagnostic_aggregator.
rqt_robot_monitor is a direct port to rqt of robot_monitor. All diagnostics are fall into one of three tree panes depending on the status of diagnostics (normal, warning, error/stale). Status are shown in trees to represent their hierarchy. Worse status dominates the higher level status. Ex. 'Computer' category has 3 sub devices. 2 are green but 1 is error. Then 'Computer' becomes error. You can look at the detail of each status by double-clicking the tree nodes. Currently re-usable API to other pkgs are not explicitly provided.
Homepage: http://wiki.ros.org/rqt_robot_monitor
I've run into some trouble in trying to run rqt_robot_monitor
on ros2. After installing and building the ros2-devel branch, rqt freezes the instant I start up rqt_robot_monitor
. Seeing as no one has mentioned this here, I may very well have made some mistake, but thought I'd post an issue just in case.
I'm running ROS2 Foxy.
A quick look with gdb gives this result:
(gdb) where
#0 0x00007ffff77d29f3 in futex_wait_cancelable (private=<optimized out>, expected=0, futex_word=0x7fffc400efd8) at ../sysdeps/unix/sysv/linux/futex-internal.h:88
#1 0x00007ffff77d29f3 in __pthread_cond_wait_common (abstime=0x0, mutex=0x7fffc400efe0, cond=0x7fffc400efb0) at pthread_cond_wait.c:502
#2 0x00007ffff77d29f3 in __pthread_cond_wait (cond=0x7fffc400efb0, mutex=0x7fffc400efe0)
at pthread_cond_wait.c:655
#3 0x00007ffff301a8bc in std::condition_variable::wait(std::unique_lock<std::mutex>&) ()
at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff100b89c in std::condition_variable::wait<rmw_fastrtps_shared_cpp::__rmw_wait(rmw_subscriptions_t*, rmw_guard_conditions_t*, rmw_services_t*, rmw_clients_t*, rmw_events_t*, rmw_wait_set_t*, const rmw_time_t*)::<lambda()> > (__p=..., __lock=..., this=<optimized out>)
at /usr/include/c++/7/condition_variable:99
#5 0x00007ffff100b89c in rmw_fastrtps_shared_cpp::__rmw_wait(rmw_subscriptions_t*, rmw_guard_conditions_t*, rmw_services_t*, rmw_clients_t*, rmw_events_t*, rmw_wait_set_t*, rmw_time_t const*) (subscriptions=<optimized out>, guard_conditions=0x1360440, services=<optimized out>, clients=<optimized out>, events=0x1360488, wait_set=<optimized out>, wait_timeout=0x0)
at /home/frivold/kef_env/warm_dep_ws/src/foxy/core/rmw_fastrtps/rmw_fastrtps_shared_cpp/src/rmw_wait.cpp:176
#6 0x00007ffff3b3f455 in rcl_wait (wait_set=wait_set@entry=0x7fffcc036bf8, timeout=<optimized out>)
at /home/frivold/kef_env/warm_dep_ws/src/foxy/core/rcl/rcl/src/rcl/wait.c:606
#7 0x00007ffff460ec0a in rclpy_wait (_unused_self=<optimized out>, args=<optimized out>)
at /home/frivold/kef_env/warm_dep_ws/src/foxy/core/rclpy/rclpy/src/rclpy/_rclpy.c:3276
#8 0x000000000050a12f in ()
#9 0x000000000050beb4 in _PyEval_EvalFrameDefault ()
#10 0x000000000058e6f9 in ()
#11 0x0000000000513a7f in ()
#12 0x000000000050a12f in ()
#13 0x000000000050beb4 in _PyEval_EvalFrameDefault ()
#14 0x0000000000507be4 in ()
#15 0x0000000000509900 in ()
#16 0x000000000050a2fd in ()
#17 0x000000000050cc96 in _PyEval_EvalFrameDefault ()
#18 0x0000000000507be4 in ()
#19 0x0000000000509900 in ()
#20 0x000000000050a2fd in ()
#21 0x000000000050cc96 in _PyEval_EvalFrameDefault ()
#22 0x0000000000507be4 in ()
#23 0x0000000000509900 in ()
#24 0x000000000050a2fd in ()
#25 0x000000000050beb4 in _PyEval_EvalFrameDefault ()
#26 0x0000000000508cd5 in _PyFunction_FastCallDict ()
#27 0x0000000000594a01 in ()
#28 0x000000000059fd0e in PyObject_Call ()
#29 0x00007fffee685c30 in ()
at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#30 0x00007fffee686108 in ()
at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#31 0x00007fffee686390 in ()
at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#32 0x00007fffee686d07 in ()
at /usr/lib/python3/dist-packages/PyQt5/QtCore.cpython-36m-x86_64-linux-gnu.so
#33 0x00007fffedfbe619 in QMetaObject::activate(QObject*, int, int, void**) ()
at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#34 0x00007fffedfcafc7 in QTimer::timeout(QTimer::QPrivateSignal) ()
at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x00007fffedfcb328 in QTimer::timerEvent(QTimerEvent*) ()
at /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
I somewhat frequently get the following exception, which crashes Rqt:
Traceback (most recent call last):
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rqt_robot_monitor/timeline_view.py", line 195, in _slot_redraw
for i, m in enumerate(self._timeline):
File "/opt/ros/kinetic/lib/python2.7/dist-packages/rqt_robot_monitor/timeline.py", line 158, in __iter__
for msg in self._queue:
RuntimeError: deque mutated during iteration
Googling shows this seems to be a common bug with Python's deque. Despite the docs advertisement that it's "thread-safe", it's not. Iterating over it while another thread adds or removes from it will throw this error.
This SO question explains how to fix it. Alternatively, you could try using a Queue instead, which has proper thread-safe support.
When trying the rqt_robot_monitor
with ros2, I observe that the toplevel diagnostic status is not reflected in the coloring of the timeline at the bottom of the window. To reproduce do:
With ros2 topic echo /diagnostics_toplevel_state
you can see that the toplevel status indeed frequently changes between OK, warning, and error.
Expected:
Actually:
It looks like there hasn't been a release into Melodic since #13 was fixed. Is it possible to release into Melodic?
From @abencz on December 11, 2014 18:35
While running rqt_robot_monitor I get a continuous stream of the following in the parent terminal:
Traceback (most recent call last):
File "/home/alex/ros_rocksteady_gui/src/rqt_robot_plugins/rqt_robot_monitor/src/rqt_robot_monitor/timeline_view.py", line 194, in _slot_redraw
for i, m in enumerate(self._timeline):
File "/home/alex/ros_rocksteady_gui/src/rqt_robot_plugins/rqt_robot_monitor/src/rqt_robot_monitor/timeline.p y", line 158, in __iter__
for msg in self._queue:
RuntimeError: deque mutated during iteration
Looks like the timeline queue is being modified by the ROS message callback in the Timeline
class while at the same time being iterated over by TimelineView
. I'm not what a good fix is, but I'm guessing this is causing more than just annoying error messages because I also see frequent rqt_robot_monitor freezes and crashes - most often when using the inspector window.
Copied from original issue: ros-visualization/rqt_robot_plugins#78
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.