Giter Site home page Giter Site logo

rqt_common_plugins's People

Contributors

130s avatar ablasdel avatar adwilson10 avatar cottsay avatar dirk-thomas avatar dlaz avatar dlu avatar dorianscholz avatar eric-wieser avatar forouher avatar forrestv avatar garaemon avatar jspricke avatar kalectro avatar martonmiklos avatar mikaelarguedas avatar mikeferguson avatar mrdanbrooks avatar rhaschke avatar rossctaylor avatar rsinnet avatar samuelba avatar sloretz avatar stonier avatar suryaambrose avatar tkruse avatar trainman419 avatar vrabaud avatar wjwwood avatar zklapow 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

rqt_common_plugins's Issues

rqt_py_common: Standardized ROS message selector interface

A number of plugins want to refer to topic/services/actions.

It would be nice to have a widget in rqt_py_common that any plugin could easily use to select one of these items.

examples of ways it has been done:
rqt_msg, rqt_srv, rqt_action, rqt_publish, rqt_graph

rqt_console can't add filters when using pyside

Run rqt -b pyside ; load console plugin

Creating filters fails with the following stacktrace:

Traceback (most recent call last):
File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_console/console_widget.py", line 299, in _add_exclude_filter
newfilter = self.filter_factory[filter_index]1
File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_console/filters/node_filter.py", line 44, in init
super(NodeFilter, self).init()
File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_console/filters/base_filter.py", line 46, in init
self._timer = QTimer(self)
RuntimeError: 'init' method of object's base class (NodeFilter) not called.

rqt_console 0.2.10, qt_gui_core 0.2.12, pyside 1.1.0-1; ROS Groovy on Ubuntu Precise.

Needs document to create executable of rqt plugins

I see for only some packages listed below, their binaries are generated at /opt/ros/groovy/bin/.

rqt, rqt_bag, rqt_console, rqt_graph, rqt_logger_level, rqt_plot

How to create executable needs to be documented (unless the pkgs above are special ones that are permitted to have binary).


Following is what I've tried so far.

As far as I noticed, the difference between those with binary and those without is scripts line in setup.py.

Example

d = generate_distutils_setup(
    packages=['rqt_reconfigure'],
    package_dir={'': 'src'},
    scripts=['scripts/rqt_reconfigure']
)

I tried to add scripts line to rqt_reconfigure whose binary wasn't created yet (in 5330252) but so far I don't see what I wanted.

ros-groovy-rqt-reconfigure amd64 0.2.7-0precise-20130104-0035-+0000

(new plugin idea) GPS plotter

Plot GPS msgs on real-world map realtime. Message format can be:

(looks like the ones in sensor_msgs are official?)

Opinions (esp. is this going to be useful or not. If useful then what features are needed) are welcomed.

This idea is tech-driven -- I found Qt-Google API client. http://www.ics.com/technologies/qt_google_apis/. I'm asking the company about license, which is missing in their downloadable. But we're open to any possible technology.

Google Earth might be also possible by using its API.

Note that a single rqt plugin should better be minimal -- for example, integrating with other large tool like RViz should be considered as separate plugin (as rqt_pr2_dashboard does)).

(rqt_msg, rqt_srv, rqt_action) IndexError: list index out of range

Traceback (most recent call last):
  File "~/ROS/groovy_quantal/catkinws_sandb/src/rqt_common_plugins/rqt_msg/src/rqt_msg/messages_widget.py",
line 110, in _handle_mouse_press
    self._rightclick_menu(event)
  File "~/ROS/groovy_quantal/catkinws_sandb/src/rqt_common_plugins/rqt_msg/src/rqt_msg/messages_widget.py",
line 125, in _rightclick_menu
    selected_type = selected[1].data()
IndexError: list index out of range

To reproduce,

  1. On rqt_msg for example, choose actionlib/TestAction and press "+"
  2. Traverse the tree to the leaf on action_goal --> header
  3. Right click and choose either "View Text" or "View Raw".

1 & 2 could be other msg / attribute. Same thing happens on rqt_srv, rqt_action.

Sometimes at unknown timing, this stops happening. But the period until then ranges from 10 secs to a few minutes.

Machines

  • 2 Quantal 64b machines
  • 1 Precise 64b (virtual machine, no src installed)

pkg

  • debian pkg 0.2.10
  • source rqt_msg a367d16

rqt_logger_levels: a node is missing

migrated from ros-visualization/rqt#60


With PR2, I just happened to find a node /localization_saver is not shown on "Nodes" pane on rqt_logger_levels. Not sure if this happens with any other nodes.

Because rxloggerlevel doesn't show this node either, it's also possible that this might be an issue in ROS level.

By the way, rqt_console shows the output from /localization_saver node. No idea if they are correlated or not.

rqt 46ee6dd
ros-groovy-rosservice/precise uptodate 1.9.34-0precise-20121207-0912-+0000
ros-groovy-rosnode/precise uptodate 1.9.34-0precise-20121207-0844-+0000

rqt plugins take a long time to load in a complex system (PR2)

When used with a PR2, the rqt_reconfigure plugin takes 30-60 seconds to load, and is completely unresponsive during that time.

The PR2 has 217 dynamic reconfigure services available, and it looks like the plugin is interrogating all of them before it displays an interface.

It would be preferable if the plugin displayed an interface right away, and didn't block the UI thread while interrogating nodes; this lets the user know that the plugin is working in the background, and avoids collecting extra button presses while the user tries to figure out what is going on.

The topic introspection plugin appears to have a similar problem; it takes a long time to load (minutes) and blocks the UI thread while doing so; I suspect this is caused in part by the 903 topics present on a running PR2.

I suspect other RQT plugins have similar problems as well, but I haven't had time to test them.

rqt_reconfigure crashes if it can't contact a node

If a node dies but doesn't deregister from the ROS master (common if a node segfaults), rqt_reconfigure appears to crash when trying to contact that node.

[INFO] [WallTime: 1361385850.907533] rqt_reconfigure loading #2/17 node=/rviz_btn_29901_2061969137853317103/currentrobot_planning_scene_monitor
PluginManager._load_plugin() could not load plugin "rqt_reconfigure/Param":
Traceback (most recent call last):
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_handler.py", line 89, in load
    self._load()
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_handler_direct.py", line 54, in _load
    self._plugin = self._plugin_provider.load(self._instance_id.plugin_id, self._context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_gui_py/ros_py_plugin_provider.py", line 66, in load
    return super(RosPyPluginProvider, self).load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_gui/ros_plugin_provider.py", line 95, in load
    return class_ref(plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/param_plugin.py", line 50, in __init__
    self._widget = ParamWidget(context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/param_widget.py", line 77, in __init__
    nodesel = NodeSelectorWidget()
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/node_selector_widget.py", line 88, in __init__
    self._update_nodetree()
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/node_selector_widget.py", line 203, in _update_nodetree
    ParameterItem.NODE_FULLPATH)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/parameter_item.py", line 71, in __init__
    self._dynreconf_client = self._create_paramclient(node_name)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/parameter_item.py", line 94, in _create_paramclient
    rospy.logerr("Could not connect to %s" % node)
NameError: global name 'node' is not defined

rqt_reconfigure: Search/filter feature is not yet available

Current spec of this feature:

  1. User can search/filter by typing query that consists of either param or node name
  2. User's query can be fragment as long as it's length s longer than 2
  3. System shows filtering result immediately when user typed in (we call this as "filtering is on")
  4. On nodes tree pane (Righthand pane or R pane), system shows nodes that either contain query as a part of its name, or contain parameter(s) of which name contains the query.
  5. On parameter editor pane (L pane) where parameters per node are displayed as a group, only correspondent nodes are shown.
  6. Nodes on L pane can be de-selectable. De-selection deletes the corresponding node from R pane.

rqt_bag: Implement Horizontal Overview section

Currently horizontal scrolling is painful in rqt_bag. The main way being middle mouse dragging.

A good improvement would be a visualization of the entire bag across the top of the graphicsview.
It should allow for clicking to jump to any point in the bag file.
It should show the current viewport position on the entire visualization.
If you click the viewport and drag it then the viewport should re-position to the desired location.

pyside, rqt_launch) segfault upon boot

This doesn't occur with PyQt. Ubuntu Quantal, python-pyside 1.1.1-3. rqt_common_plugins 8416fd5

Program received signal SIGSEGV, Segmentation fault.
0x00000000004c79b0 in ?? ()
(gdb) bt
#0  0x00000000004c79b0 in ?? ()
#1  0x00000000004c7719 in ?? ()
#2  0x00000000004a1f66 in ?? ()
#3  0x0000000000498e3d in PyType_GenericAlloc ()
#4  0x0000000000495cbc in ?? ()
#5  0x00000000004aaba8 in ?? ()
#6  0x000000000049629d in PyEval_CallObjectWithKeywords ()
#7  0x0000000000488c81 in PyErr_NormalizeException ()
#8  0x00000000004637f0 in PyEval_EvalFrameEx ()
#9  0x00000000004602b7 in PyEval_EvalFrameEx ()
#10 0x0000000000467209 in PyEval_EvalCodeEx ()
#11 0x00000000004a9fea in ?? ()
#12 0x000000000048249d in ?? ()
#13 0x000000000049629d in PyEval_CallObjectWithKeywords ()
#14 0x00007ffff63a0ed5 in ?? () from /usr/lib/python2.7/lib-dynload/pyexpat.so
#15 0x00007ffff639e090 in ?? () from /usr/lib/python2.7/lib-dynload/pyexpat.so
#16 0x00007ffff615630b in ?? () from /lib/x86_64-linux-gnu/libexpat.so.1
#17 0x00007ffff615754e in ?? () from /lib/x86_64-linux-gnu/libexpat.so.1
#18 0x00007ffff615906e in ?? () from /lib/x86_64-linux-gnu/libexpat.so.1
#19 0x00007ffff615981b in ?? () from /lib/x86_64-linux-gnu/libexpat.so.1
#20 0x00007ffff615b85d in XML_ParseBuffer () from /lib/x86_64-linux-gnu/libexpat.so.1
#21 0x00007ffff639d2fc in ?? () from /usr/lib/python2.7/lib-dynload/pyexpat.so
#22 0x000000000045f912 in PyEval_EvalFrameEx ()
#23 0x00000000004602b7 in PyEval_EvalFrameEx ()
#24 0x0000000000467209 in PyEval_EvalCodeEx ()
#25 0x000000000045ff77 in PyEval_EvalFrameEx ()
#26 0x0000000000467209 in PyEval_EvalCodeEx ()
#27 0x00000000004a9fea in ?? ()
#28 0x000000000048249d in ?? ()
#29 0x0000000000491bb4 in ?? ()
#30 0x00000000004aac6e in ?? ()
#31 0x00000000004600be in PyEval_EvalFrameEx ()
#32 0x00000000004602b7 in PyEval_EvalFrameEx ()
#33 0x00000000004602b7 in PyEval_EvalFrameEx ()
#34 0x00000000004602b7 in PyEval_EvalFrameEx ()
#35 0x00000000004a9adf in ?? ()
#36 0x000000000045fdca in PyEval_EvalFrameEx ()
#37 0x00000000004602b7 in PyEval_EvalFrameEx ()
#38 0x0000000000467209 in PyEval_EvalCodeEx ()
#39 0x00000000004a9fea in ?? ()
#40 0x000000000048249d in ?? ()
#41 0x0000000000491bb4 in ?? ()
#42 0x00000000004aac6e in ?? ()
#43 0x00000000004600be in PyEval_EvalFrameEx ()
#44 0x0000000000467209 in PyEval_EvalCodeEx ()
#45 0x00000000004a9fea in ?? ()
#46 0x000000000048249d in ?? ()
---Type <return> to continue, or q <return> to quit---
#47 0x0000000000491bb4 in ?? ()
#48 0x00000000004aac6e in ?? ()
#49 0x00000000004600be in PyEval_EvalFrameEx ()
#50 0x0000000000467209 in PyEval_EvalCodeEx ()
#51 0x00000000004a9fea in ?? ()
#52 0x000000000048249d in ?? ()
#53 0x0000000000491bb4 in ?? ()
#54 0x00000000004aac6e in ?? ()
#55 0x00000000004600be in PyEval_EvalFrameEx ()
#56 0x00000000004602b7 in PyEval_EvalFrameEx ()
#57 0x00000000004602b7 in PyEval_EvalFrameEx ()
#58 0x00000000004602b7 in PyEval_EvalFrameEx ()
#59 0x00000000004602b7 in PyEval_EvalFrameEx ()
#60 0x00000000004602b7 in PyEval_EvalFrameEx ()
#61 0x00000000004602b7 in PyEval_EvalFrameEx ()
#62 0x0000000000467209 in PyEval_EvalCodeEx ()
#63 0x000000000045ff77 in PyEval_EvalFrameEx ()
#64 0x0000000000467209 in PyEval_EvalCodeEx ()
#65 0x000000000045ff77 in PyEval_EvalFrameEx ()
#66 0x0000000000467209 in PyEval_EvalCodeEx ()
#67 0x000000000045ff77 in PyEval_EvalFrameEx ()
#68 0x00000000004602b7 in PyEval_EvalFrameEx ()
#69 0x0000000000467209 in PyEval_EvalCodeEx ()
#70 0x000000000045ff77 in PyEval_EvalFrameEx ()
#71 0x00000000004602b7 in PyEval_EvalFrameEx ()
#72 0x0000000000467209 in PyEval_EvalCodeEx ()
#73 0x00000000004a9fea in ?? ()
#74 0x000000000048249d in ?? ()
#75 0x000000000049629d in PyEval_CallObjectWithKeywords ()
#76 0x00007ffff3b1a51a in PySide::SignalManager::callPythonMetaMethod(QMetaMethod const&, void**, _object*, bool) ()
   from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
#77 0x00007ffff3b1a97a in PySide::SignalManager::qt_metacall(QObject*, QMetaObject::Call, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
#78 0x00007ffff309b123 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libQtCore.so.4
#79 0x00007ffff3b1aaf8 in PySide::SignalManager::qt_metacall(QObject*, QMetaObject::Call, int, void**) ()
   from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
#80 0x00007ffff3b22a02 in ?? () from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
#81 0x00007ffff3b1a4c0 in PySide::SignalManager::emitSignal(QObject*, char const*, _object*) ()
   from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
#82 0x00007ffff3e42470 in ?? () from /usr/lib/python2.7/dist-packages/PySide/QtCore.so
#83 0x000000000049629d in PyEval_CallObjectWithKeywords ()
#84 0x00007ffff3b23484 in ?? () from /usr/lib/x86_64-linux-gnu/libpyside-python2.7.so.1.1
#85 0x000000000045f912 in PyEval_EvalFrameEx ()
#86 0x0000000000467209 in PyEval_EvalCodeEx ()
#87 0x000000000045ff77 in PyEval_EvalFrameEx ()
#88 0x0000000000467209 in PyEval_EvalCodeEx ()
---Type <return> to continue, or q <return> to quit---
#89 0x000000000045ff77 in PyEval_EvalFrameEx ()
#90 0x0000000000467209 in PyEval_EvalCodeEx ()
#91 0x000000000045ff77 in PyEval_EvalFrameEx ()
#92 0x0000000000467209 in PyEval_EvalCodeEx ()
#93 0x000000000045ff77 in PyEval_EvalFrameEx ()
#94 0x0000000000467209 in PyEval_EvalCodeEx ()
#95 0x000000000045ff77 in PyEval_EvalFrameEx ()
#96 0x0000000000467209 in PyEval_EvalCodeEx ()
#97 0x00000000004d0242 in PyEval_EvalCode ()
#98 0x00000000005102bb in ?? ()
#99 0x000000000044a466 in PyRun_FileExFlags ()
#100 0x000000000044a97a in PyRun_SimpleFileExFlags ()
#101 0x000000000044b6bc in Py_Main ()
#102 0x00007ffff6f0576d in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#103 0x00000000004ce0ad in _start ()
(gdb) info threads
  Id   Target Id         Frame 
  7    Thread 0x7fffc9b3f700 (LWP 28660) "python" 0x00007ffff7bcc04d in accept ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
  6    Thread 0x7fffca340700 (LWP 28657) "python" 0x00007ffff6fd1023 in select () from /lib/x86_64-linux-gnu/libc.so.6
  5    Thread 0x7fffcab41700 (LWP 28656) "python" 0x00007ffff6fd1023 in select () from /lib/x86_64-linux-gnu/libc.so.6
  4    Thread 0x7fffde169700 (LWP 28599) "pool" 0x00007ffff7bc90fe in pthread_cond_timedwait@@GLIBC_2.3.2 ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
  3    Thread 0x7fffdef9e700 (LWP 28598) "gdbus" 0x00007ffff6fcc303 in poll () from /lib/x86_64-linux-gnu/libc.so.6
  2    Thread 0x7fffdf79f700 (LWP 28597) "dconf worker" 0x00007ffff6fcc303 in poll () from /lib/x86_64-linux-gnu/libc.so.6
* 1    Thread 0x7ffff6ccc700 (LWP 28596) "python" 0x00000000004c79b0 in ?? ()

rosrun rqt_reconfigure rqt_reconfigure crashes

version 0.2.9. Imported module does not exist (trivial to see in trunk):

RosPluginProvider.load(rqt_reconfigure/Param) exception raised in __builtin__.__import__(rqt_reconfigure.param_plugin, [ParamPlugin]):
Traceback (most recent call last):
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_gui/ros_plugin_provider.py", line 78, in load
    module = __builtin__.__import__(attributes['module_name'], fromlist=[attributes['class_from_class_type']], level=0)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/param_plugin.py", line 38, in <module>
    from .param_widget import ParamWidget
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/param_widget.py", line 44, in <module>
    from .paramedit_widget import ParameditWidget
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_reconfigure/paramedit_widget.py", line 47, in <module>
    from .node_delegate import NodeDelegate
ImportError: No module named node_delegate

PluginManager._load_plugin() could not load plugin "rqt_reconfigure/Param":
Traceback (most recent call last):
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_handler.py", line 89, in load
    self._load()
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_handler_direct.py", line 54, in _load
    self._plugin = self._plugin_provider.load(self._instance_id.plugin_id, self._context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_gui_py/ros_py_plugin_provider.py", line 66, in load
    return super(RosPyPluginProvider, self).load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
    instance = plugin_provider.load(plugin_id, plugin_context)
  File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_gui/ros_plugin_provider.py", line 84, in load
    raise e
ImportError: No module named node_delegate

(rqt launch) Launch plugin does not show command lines

It would be very useful if the full command line for each node (including absolute pathname) is shown in a copy/paste-able field. This would allow all the other nodes to be launched (by clicking their run buttons) and the node in question to be run by copy-pasting the command line to a terminal.

WHY: this is useful for running one node in debugger (gdb). Also useful to see the console output of just the one node in its own terminal window. Also useful to modify (or add) some arguments on the command line

rqt_py_common) Need common widget for printing important message, and showing progress of long process

Based on a discussion with @dirk-thomas. We need 2 widgets that can be used from other plugins.

  • Console output widget that other widgets or whatever components in the same plugin can print out texts. No user interaction needed.

    Example usecase: roslaunch plugin rqt_launch often can't launch nodes that depend on a pkg that's not installed on the filesystem. Currently error is only printed on terminal, which is hard for users to know what's going on.

    This could be substituted by opening rqt_console but user does not always open it in addition to the 1st plugin you're working with.

  • Progress bar widget that runs in a separate from plugin's main thread. Related Issue: #20, #21, #42

Ideally these widgets enables to shrink itself (QSplitter equivalent), to give users option not to show these info.

These widgets may not be ideal solution to the problem from framework maturity point of view (developer of each plugin is still responsible for utilizing these widgets), but at this moment this is a reasonable consensus and we'd like to see how this works.

rqt_reconfigure: can't open the same node's param window after having opened it

To reproduce, repeat (opening node-a, open other arbitrary node else) multiple times.

That results in not updating the param pane (the one on the right) with the error :

[INFO] [WallTime: 1357339407.296248] EDITOR widget.name=allow_unsafe_settings
Traceback (most recent call last):
  File "~/ROS/groovy_precise/catkin_ws/src/rqt_common_plugins/rqt_reconfigure/src/rqt_reconfigure/paramedit_widget.py", line 86, in show_reconf
    self._dynreconf_client.close() #Close old GUI client.
  File "~/ROS/groovy_precise/catkin_ws/src/rqt_common_plugins/rqt_reconfigure/src/rqt_reconfigure/dynreconf_client_widget.py", line 90, in close
    self.deleteLater()
RuntimeError: underlying C/C++ object has been deleted

This may depend on certain condition that I haven't determined yet. Maybe after some nodes go offline for whatever the reasons.

rqt_launch) some nodes remain running after closing the plugin or even rqt_gui

For example, I found this node has been running for long time:

1077 ?        Ssl    0:01 /opt/ros/groovy/lib/joy/joy_node __name:=ps3_joy __log:=/u/isaito/.ros/log/ps3_joy-8.log
2672 ?        Ssl   59:03 /opt/ros/groovy/stacks/audio_common/audio_capture/bin/audio_capture __name:=audio_capture __log:=/u/isaito/.ros/log/audio_capture-6.log

(Even worse, in this example the 2nd process used up 2GB RAM.)

rqt process remains when rqt_gui is closed with rqt_bag open on it

Closing rqt_gui window doesn't kill rqt_bag's error print. Commandline output is below. I see some errors but not sure how it's correlated.

Observed on 2 different Ubuntu Quantal machines.

rqt_common_plugins f27cdc1
qt_gui_core 9cba48199c039cdca013a7ee12a06ef3070f829d

rosguy@rtt:~$ rqt &
[INFO] [WallTime: 1360651873.409372] Recording to ~/data/tmp/rosbag_1_2013-02-11-22-51-13.bag.
Error subscribing to /object_manipulator/object_manipulator_place/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /interactive_object_recognition_result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /image_snapshot/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /detect_outlet/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /object_recognition_popup/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /wiggle_plug/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /run_rcommander_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /create_object_model_server/model_object_in_hand_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /object_detection_user_command/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /l_gripper_controller/gripper_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /l_arm_controller/joint_trajectory_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /pr2_interactive_gripper_pose_action/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /r_arm_ik/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /head_traj_controller/state (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /projector_trigger/waveform (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /head_monitor_action/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /detect_wall_norm/goal (ignoring): topic parameter 'data_class' is not initialized
Traceback (most recent call last):
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 267, in paint
    self._draw_topic_dividers(painter)
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 441, in _draw_topic_dividers
    (x, y, w, h) = self._history_bounds[topic]
KeyError: '/motor_trace/br_caster_rotation_motor'
Error subscribing to /base_odometry/state (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /preplan_head_scan/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /detect_outlet/feedback (ignoring): topic parameter 'data_class' is not initialized
Traceback (most recent call last):
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 267, in paint
    self._draw_topic_dividers(painter)
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 441, in _draw_topic_dividers
    (x, y, w, h) = self._history_bounds[topic]
KeyError: '/head_mount_kinect/rgb/image_rect_color/theora'
Error subscribing to /tf2_web_republisher/feedback (ignoring): topic parameter 'data_class' is not initialized
Traceback (most recent call last):
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 267, in paint
    self._draw_topic_dividers(painter)
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 441, in _draw_topic_dividers
    (x, y, w, h) = self._history_bounds[topic]
KeyError: '/narrow_stereo/right/image_mono/compressed'
Error subscribing to /test_gripper_pose/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /torso_controller/joint_trajectory_action/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /vision_outlet_detection/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /torso_controller/position_joint_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /l_gripper_grasp_posture_controller/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /stow_plug/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /plug_in/feedback (ignoring): topic parameter 'data_class' is not initialized
Traceback (most recent call last):
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 267, in paint
    self._draw_topic_dividers(painter)
  File "~/ROS/groovy_quantal/catkin_ws/src/rqt_common_plugins/rqt_bag/src/rqt_bag/timeline_frame.py", line 441, in _draw_topic_dividers
    (x, y, w, h) = self._history_bounds[topic]
KeyError: '/narrow_stereo/left/image_rect/theora/parameter_updates'
Error subscribing to /head_traj_controller/point_head_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /pr2_interactive_nav_action/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /head_monitor_action/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /r_gripper_grasp_posture_controller/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /tf2_web_republisher/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /vision_outlet_detection/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /test_gripper_pose/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /plan_point_cluster_grasp/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /detect_plug/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /l_arm_controller/joint_trajectory_generator/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /r_arm_ik/goal (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /head_camera_trigger/waveform (ignoring): topic parameter 'data_class' is not initialized
psError subscribing to /prosilica_inhibit_projector_controller/waveform (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /vision_plug_detection/result (ignoring): topic parameter 'data_class' is not initialized
 awxError subscribing to /r_gripper_controller/state (ignoring): topic parameter 'data_class' is not initialized
 |Error subscribing to /create_object_model_server/model_object_in_hand_action/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /base_odometry/odometer (ignoring): topic parameter 'data_class' is not initialized
grep pyError subscribing to /r_arm_controller/joint_trajectory_action/result (ignoring): topic parameter 'data_class' is not initialized

At this moment rqt_gui was terminated, but error hasn't ended

Error subscribing to /database_grasp_planning/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /database_grasp_planning/result (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /l_cart/state (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /point_cloud_server_action/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /r_forearm_cam_trigger/waveform (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /detect_outlet/goal (ignoring): topic parameter 'data_class' is not initialized
rosguy@rtt:~$ Error subscribing to /find_container_action/result (ignoring): topic parameter 'data_class' is not initialized
rosguy@rtt:~$ ps awx |grep rosbag
 6326 pts/5    S+     0:00 grep --color=auto rosbag
10655 pts/5    Sl     0:40 python ~/ROS/groovy_quantal/catkin_ws/devel/bin/rqt
rosguy@rtt:~$ Error subscribing to /l_gripper_controller/gripper_action/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /align_base/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /vision_plug_detection/feedback (ignoring): topic parameter 'data_class' is not initialized
Error subscribing to /l_arm_controller/joint_trajectory_generator/goal (ignoring): topic parameter 'data_class' is not initialized

rqt_reconfigure) to be capable of showing only certain parameters

In the cases where the users know that the parameters they need to interact with, loading the parameters of all available nodes might just drop the usability. Either or all of the following is useful:

  1. Save the nodes selected in the previous run.
  2. Allow the developers who make rqt plugin that depends on rqt_reconfigure to pre-select certain nodes

Particularly, I now start having an impression that the majority of the reconfigure users might already know which nodes & parameters they need.

rqt_bag: timestamp printing issue

rxbag used to print raw timestamp incorrectly so it still does:

In the timeline status bar, rxbag incorrectly prints the nanosecond portion of the raw timestamp. The code currently does this:
'%d.%s' % (self.timeline.playhead.secs, str(self.timeline.playhead.nsecs)[:3])

which will take the 3 highest digits of nanoseconds and print them like a decimal. This is meaningless. A better solution is attached that does this:
'%.3fs' % self.timeline.playhead.to_sec()

which is also used in the same function for printing the elapsed time.

If you were looking at the raw timestamp, it could be non-monotonic because of this bug, falsely indicating that certain topics arrived after other topics even though the visualization is correct.

For more information see the trac ticket.

migration of of trac ticket:
https://code.ros.org/trac/ros/ticket/3824

rqt_bag: skips time when resuming playback

Due to the backend of rqt_bag being the same as rxbag this bug most likely still exists.

Pressing space will resume a paused bag, but it does not resume playback at the right time. Instead, it appears that the time keeps running: If you pause the bag for 1 second, it skips one second when it resumes.

migrated from this trac ticket:
https://code.ros.org/trac/ros/ticket/3490

(rqt_console) (nice-to-have) move filtering classes to common pkgs

I know it wasn't intended when rqt_console was initially written to make all those filter classes to be generic. But it would be very beneficial to have a set of filtering components that provide multiple types of filters and users can select / de-select them on GUI while system aggregates the result from all selected filters (like rqt_console does).

rqt_bag: Ability to annotate bag files

It would be great to be able to annotate/comment log files either as they are recorded or even after they are recorded.

E.g., after I do a run through the white lab to test odometry, I should be able to do

roslog topics.bag --annotate "Run through white lab to test odometry"

Further rosplay --annotate topics.bag should print out all annotation in topics.bag.

to see the attachments for this issue please view trac ticket 634:
https://code.ros.org/trac/ros/ticket/634

changelog from trac (copied on jan 8 2013):
Changed 4 years ago by gerkey

How about a general-purpose comment section at the front of the file? E.g.:

#ROSLOG V1.1
# Free-form comments go here,
# as many you want,
# and we start looking for messages on the first line
# that doesn't start with a '#'.

Changed 4 years ago by sachinc

If we have the annotation on a separate topic, it would be easy to pull out. It would also be great to do something like

rosplay --find_annotation "Interesting odom data" --timestamp -10:10 -f interesting_data

The idea is to find all the interesting events that occur in the log file (using the given annotation) and then print out data within a 10 second range into a set of files in directory interesting_data. The files could be called event0, event1, event2.bag and so on for multiple events.

Changed 3 years ago by kwc

component changed from ros to rosplay/rosrecord
summary changed from ability to annotate log files to ability to annotate bag files
Changed 3 years ago by leibs

component changed from rosplay/rosrecord/rosbagmigration to rosbag
Changed 18 months ago by gerkey

owner changed from leibs to tfield
Changed 18 months ago by kstrabala

attachment rxbag_annotate.zip added
Changed 18 months ago by kstrabala

I created an rxbag plugin (attached) that enables annotation of rosbags. To use it just ensure that the rxbag_annotate folder is in your ROS_PACKAGE_PATH, and then start rxbag as you normally would. The plugin adds an 'Annotate' option to all of the topics in the context menu (right-click).

One of the better features of this plugin is the ability to click on images to automatically fill in Point, Polygon, and RegionOfInterest? messages. Just select 'Annotate' for an Image topic and then in the new window select geometry_msgs/Point and click on the button with the *. An image will pop up and you can click on this image to fill in the Annotate messages.

I would be interested in collaborating on this to make it better. Is there anyone who would be interested in this type of development?

Changed 18 months ago by tfield

priority changed from minor to major
status changed from new to assigned
component changed from rosbag to rxbag
Thanks for the patch, Kyle. I'll take a look at it and get back to you.

If it's only depending on geometry_msgs and sensor_msgs then we could look to include it (or a derivative of it) in rxbag_plugins.

Changed 18 months ago by kstrabala

There are a few issues that we may want to address before adding it to rxbag_plugins.

  1. The rosbag of user-created annotations (/tmp/annotations.bag) doesn't get closed properly and thus needs to be reindexed before read. 2. The annotation messages that are created by the user aren't visible in the timeline. 3. After the Annotate feature is used, the Image feature is no longer visible. 4. Duplicate annotation messages on the same topic and at the same time don't work with the timeline. Probably should not allow the user to make duplicates.

I have tried to fix 1-3, but haven't found a way.

Changed 18 months ago by kstrabala

I forgot to mention that for my plugin to work, I had to minimally modify the rxbag timeline code, as follows.

Find rxbag/timeline.py:Timeline:__init() and move self.load_plugins() to the end of the init() function.

Changed 18 months ago by kstrabala

I've fixed the 4 issues that I noted above and attached the new version. It required some modification of the rxbag and rxbag_plugins code, so I included that in the attachment too. will tell you what I changed, mostly a little rearrangement and code additions.

At this point I feel we can merge rxbag_annotate with rxbag_plugins.

Changed 18 months ago by tfield

cc pantofaru added
status changed from assigned to new
This looks fantastic, Kyle.

I see rxbag_annotate is licensed as "Copyright 2011 Carnegie Mellon University" whereas rxbag_plugins is BSD. Would you object to licensing rxbag_annotate under BSD?

Here are a some small changes I'd like to make before incorporating your code:

save the annotation message with the same timestamp as the message it's annotating
make topic an optional argument to TopicMessageView (best not to change the API if it isn't necessary)
change the text/icon on the * button to make it obvious what it does
display time as a human-readable string
allow annotating with arbitrary message types
allow user to view existing annotations and update display as playhead moves
If you have any thoughts on those changes, Kyle, please let me know.

Changed 18 months ago by kstrabala

attachment rx.zip added
Changed 18 months ago by kstrabala

For the license, I need to fill out some forms and get CMU to release it. I don't expect any problems but it could be several weeks before the code can be shared publicly.

Made all the changes except for allowing annotation with arbitrary message types. I'm not sure how to do that and whatever I do might be an unstable hack. Someone else will have to code that.

Minor: There is some flicker that I would like to get rid of using double buffering as discussed on this webpage. http://wiki.wxpython.org/index.cgi/DoubleBufferedDrawing

I have also added a user questionnaire plugin which may not be useful for anyone else. It essentially shows a user some video and asks them what they thought. Never-the-less, if you want to use it: 1) start rxbag and choose the Feedback plugin on some topic. 2) start the feedback GUI: python ./feedback_gui.py 3) In the Feedback plugin, choose your image topic and settings and then click on Publish. 4) In the feedback GUI, watch the video, rate it, and then click Next. This will save the data in rxbag and go to the next message in the original rxbag topic.

Changed 18 months ago by tfield

Thanks. I can implement the support for arbitrary message types.

There's no rush for releasing this: E-Turtle is feature frozen so this won't land until F-Turtle.

Just let me know once you have agreement to release the code under BSD, and I'll commit your patch.

Changed 10 months ago by tfield

owner changed from tfield to gerkey
Changed 15 seconds ago by ablasdel

status changed from new to closed
resolution set to duplicate
The replacement for rxbag in groovy is rqt_bag. For further discussion of this ticket please see the github issue here:

#8

(rqt launch) nodes do not show up (at first)

When I first start the RQT launch plugin, no nodes show up. I see the dotted tree lines on the left where the 2 nodes should be, but no information about the nodes. If I click on a different launch file and then click back to the original launch file then eventually I see the information about the nodes.

With some launch files, only some of the nodes show up. For example, run rqt, add the launch plugin, and set the package to pr2_moveit_config. The first launch file is demo.launch. I see slots (dotted lines) for 5 nodes, but only the first 2 (static transform publisher and joint state publisher) show up. Click on a different launch file (same problem). Then click on demo.launch again. Now all 5 nodes show up.

rqt_bag: point clouds in rqt_bag

Now that we have the new Point Cloud Library (PCL), it would be great if you could store a cloud to disk by clicking on the some pop up associated with point clouds

To download a rxbag plugin to display point clouds see the trac ticket
https://code.ros.org/trac/ros/ticket/2525

change history from trac (copy pasted on Jan 8 2013):
Changed 3 years ago by tfield

status changed from new to assigned
milestone ROS 1.1 deleted
Sure, that shouldn't be difficult. Can you suggest a good format to dump them to disk?

Changed 3 years ago by tfield

I'm hazarding a guess that pcl's PCD format is what you want. Is that correct?

Changed 3 years ago by tfield

status changed from assigned to closed
resolution set to wontfix
Assuming this is no longer required.

Changed 22 months ago by jcorrea

status changed from closed to reopened
resolution wontfix deleted
Although PCD is the format to save point cloud provided by PCL library, rxbag lacks the ability so save, or view, point clouds. It would be very desirable to have such feature present.

Changed 22 months ago by tfield

This is possible. I wrote code recently to serialize PointCloud2 messages in Python. Theoretically, wxPython includes PyOpenGL but I'd need to check how good it is and its cross-platform support.

Changed 22 months ago by jcorrea

Maybe using VTK for displaying? I may give it a try, but after next week, right now I don't have much time left.

For serializing, I think the best approach would be to try and use PCL, as they already have saving to PCD files.

Changed 22 months ago by tfield

No need to pull in a huge framework like VTK to display point clouds - it's very simple to write a shader to do that.

Also, no need to use PCL - I've already implemented PointCloud2 serialization natively in Python. As far as I'm aware, PCL doesn't have Python bindings anyway.

Changed 10 months ago by tfield

owner changed from tfield to gerkey
status changed from reopened to new
Changed 6 months ago by jcorrea

attachment rxbag_pointcloud_plugin.tar.bz2 added
RxBag? plugin to display pointclouds

Changed 6 months ago by jcorrea

I've attached a plugin for RXBAG that displays pointclouds. It uses matplotlib and probably is not the most optimum approach.

Changed 4 minutes ago by ablasdel

status changed from new to closed
resolution set to duplicate
The replacement to rxbag in groovy is rqt_bag. It is a port of rxbag and has almost the same plugin api. Please see the github ticket created for this issue here for further information:

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.