Giter Site home page Giter Site logo

visualization_tutorials's People

Contributors

agoudar avatar ahcorde avatar bmagyar avatar davetcoleman avatar dhood avatar garaemon avatar hdfssk avatar hersh avatar hershwg avatar jon-weisz avatar jvgomez avatar k-okada avatar kwc avatar mabelzhang avatar mikeferguson avatar rhaschke avatar seanyen avatar sloretz avatar tobias-fischer avatar victorlamoine avatar vrabaud avatar wjwwood avatar zchen24 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  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  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  avatar  avatar

visualization_tutorials's Issues

TeleopPanel wiki/source code has documentation on how to draw in 3D Scene

According to the wiki page for the TeleopPanel plugin, "but it could show things in the 3D scene" but there is nothing obvious/semi-obvious in the source to how this plugin could be adapted to render in the 3D scene. I have tried digging through the API/documentation but can't find anything helpful that

I do assume that this comment means to draw in the "main" 3D scene in rviz, not some other 3D scene. If not can you clarify?

undefined reference to `rviz::RobotModelDisplay::RobotModelDisplay()` in Librviz Tutorial

Hello,

I am trying to add a robot model in Librivz tutorial.

By referring to rviz source code and rviz API document, I come up with the following code:

#include "rviz/default_plugin/robot_model_display.h"
rviz::RobotModelDisplay* robot_model_;
robot_model_ = new RobotModelDisplay();
manager_->addDisplay(robot_model_, true);

But when I executed catkin_make, I came across the following error:

myviz.cpp:(.text+0x926): undefined reference to rviz::RobotModelDisplay::RobotModelDisplay() make[1]: *** [visualization collect2: error: ld returned 1 exit status

I want to ask how could I modify the CMakeList.txt to make it find RobotModelDisplay. Thanks!

Update schedule for ros2 rviz tutorial?

Hi @mabelzhang

Can I ask about the schedule for the ROS2 support for this repository? I am working on creating a GUI with RViz panel in it and there has been a change in the API I need to use in ROS2 (ros2/rviz#664) If it will take time to update tutorials or this work is not a high priority, can I get help with finding the way to use only that specific function?

Thank you in advance,
Jaehyun

rviz PySide not working

I am trying to run rviz via python pyside (because of the better licence).

import rospy
import sys

setattr(sys, 'SELECT_QT_BINDING', 'pyside')
import rviz

from PySide2 import QtCore, QtGui, QtWidgets
app = QtWidgets.QApplication(sys.argv)
frame=rviz.VisualizationFrame()
frame.setSplashPath("")
frame.initialize()

I get:
>>> import rviz Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/opt/ros/melodic/lib/python2.7/dist-packages/rviz/__init__.py", line 17, in <module> from . import librviz_shiboken

Part of this: #51
Part of this: #52

I am using:
Ubuntu 18.04. melodic
Pyqt4/5 installed
PySide and Pyside2 installed

Imu visualization is missing a scale parameter

In ROS Indigo's RViz, subscribing to a sensor_msgs/Imu topic (of e.g. the xsens_driver) yields a display of (in my case) /imu/data with a much too large arrow, as described here.

This display should have a scale parameter to reduce the arrow size.

Teleop_panel standalone

I am trying to develop a GUI for AGV robots. For the teleop mode, I wanted to add a teleop_panel for it. After seeing the original tutorial, I am still confused on how to build the teleop_gui as a standalone ros pkg (since it is docked with rviz). So far, I managed to build it but it is not running (error: Segmentation fault (core dumped)). It's been difficult for me to find a reference of gui_teleop panel that is separated from rviz. Do you have any ideas or suggestions? thank you
I am using Qt and C++ with catkin_make to build my GUI project.

rviz_plugin_tutorials build failed with boost 1.57 on OS X Yosemite

I'm trying to build rviz_plugin_tutorials on OS X Yosemite, and fails the message:

Call Stack (most recent call first):
/Users/install_isolated/share/urdf/cmake/urdfConfig.cmake:165 (find_package)
/Users/install_isolated/share/rviz/cmake/rvizConfig.cmake:165 (find_package)
/Users/install_isolated/share/catkin/cmake/catkinConfig.cmake:75 (find_package)
CMakeLists.txt:7 (find_package)
This warning is for project developers. Use -Wno-dev to suppress it.

-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - not found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - found
-- Looking for QT_MAC_USE_COCOA
-- Looking for QT_MAC_USE_COCOA - found
-- Found Qt4: /usr/local/bin/qmake (found version "4.8.6")
-- Configuring done

CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.

MACOSX_RPATH is not specified for the following targets:

rviz_plugin_tutorials

This warning is for project developers. Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/build_isolated/rviz_plugin_tutorials
==> make -j4 -l4 in '/Users/build_isolated/rviz_plugin_tutorials'
[ 7%] [ 15%] [ 23%] [ 30%] Generating src/moc_teleop_panel.cxx
Generating src/moc_drive_widget.cxx
Generating src/moc_imu_display.cxx
Generating src/moc_plant_flag_tool.cxx
usr/local/Cellar/boost/1.57.0/include/boost/type_traits/detail/has_binary_operator.hp:50: Parse error at "BOOST_JOIN"
make[2]: *** [src/moc_imu_display.cxx] Error 1
make[1]: *** [CMakeFiles/rviz_plugin_tutorials.dir/all] Error 2
make: *** [all] Error 2
<== Failed to process package 'rviz_plugin_tutorials':
Command '/Users/install_isolated/env.sh make -j4 -l4' returned non-zero exit status 2

Import Error

I'm facing the error:

Traceback (most recent call last):
File "/home/ircbarros/Desktop/LaserGUI/main/librviz.py", line 23, in
import rviz
File "/opt/ros/indigo/lib/python2.7/dist-packages/rviz/init.py", line 19, in
import librviz_shiboken
ImportError: No module named librviz_shiboken

When i try to run the rviz_python_tutorial

Segmentation Fault in rviz_python_tutorial/myviz.py

I'm getting a Segmentation Fault (core dumped) whenever I try to run myviz.py.

I've done roscd rviz_python_tutorial followed by rosrun rviz_python_tutorial myviz.py
I've also tried simply python myviz.py

The problem happens on line 58: self.frame.initialize()
Debugger shows self.frame is an instance of librviz_sip.VisualizationFrame object, as expected.

I'm using Python 2.7.12 and PyQt5 5.5.1
I believe everything should be set up properly (dir under catkin_ws/src and catkin_make succeeded).

Here is the gbd backtrace:

(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00007fffb2c43c09 in ?? () from /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL.so.1.9.0
#2 0x00007fffb2c0e27f in Ogre::GLStateCacheManager::switchContext(long) () from /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL.so.1.9.0
#3 0x00007fffb2bff04d in Ogre::GLRenderSystem::initialiseContext(Ogre::RenderWindow*) () from /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL.so.1.9.0
#4 0x00007fffb2c07b13 in Ogre::GLRenderSystem::_createRenderWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char,std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*) () from /usr/lib/x86_64-linux-gnu/OGRE-1.9.0/RenderSystem_GL.so.1.9.0
#5 0x00007fffe258888c in Ogre::Root::createRenderWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int, bool, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*) () from /usr/lib/x86_64-linux-gnu/libOgreMain.so.1.9.0
#6 0x00007fffe5348c1a in rviz::RenderSystem::tryMakeRenderWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsi---Type <return> to continue, or q <return> to quit--- gned int, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::STLAllocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, Ogre::CategorisedAllocPolicy<(Ogre::MemoryCategory)0> > > const*, int) () from /opt/ros/kinetic/lib/librviz.so
#7 0x00007fffe534a3de in rviz::RenderSystem::makeRenderWindow(unsigned long, unsigned int, unsigned int, double) () from /opt/ros/kinetic/lib/librviz.so
#8 0x00007fffe534c8b5 in rviz::RenderSystem::RenderSystem() () from /opt/ros/kinetic/lib/librviz.so
#9 0x00007fffe534ca15 in rviz::RenderSystem::get() () from /opt/ros/kinetic/lib/librviz.so
#10 0x00007fffe5347dd1 in rviz::QtOgreRenderWindow::QtOgreRenderWindow(QWidget*) () from /opt/ros/kinetic/lib/librviz.so
#11 0x00007fffe536e959 in rviz::RenderPanel::RenderPanel(QWidget*) () from /opt/ros/kinetic/lib/librviz.so
#12 0x00007fffe53ba300 in rviz::VisualizationFrame::initialize(QString const&) () from /opt/ros/kinetic/lib/librviz.so

Thanks! Let me know if I can provide anything else that might be of use.

Compilation fails with Ogre 1.9 on Arch Linux

Here's the kind of errors we get with rviz_plugin_tutorials:

/opt/ros/hydro/include/rviz/mesh_loader.h:33:22: fatal error: OgreMesh.h: No such file or directory
 #include <OgreMesh.h>
                      ^
/opt/ros/hydro/include/rviz/properties/parse_color.h:35:29: fatal error: OgreColourValue.h: No such file or directory
 #include <OgreColourValue.h>
                             ^

Indeed, in parse_color.h, we find:

#include <OgreColourValue.h> 

However, headers are in /usr/include/OGRE, as explained in /usr/lib/pkgconfig/OGRE.pc:

Cflags: -I${includedir} -I${includedir}/OGRE -pthread

Thus, those C/C++ flags should be taken into account when compiling these tutorials. Since Ogre checking does not seem to be done, this should be fixed while adding pkg-config support.

This may also happen in the other tutorials.

Cmake problem

I have a rviz_plugin project, that's used catkin_make build it and can add it in rviz.
But now I have a new need which put the rviz_plugin project in a cmake project. And I used cmake build all project successfully, but when I use the plugin in rviz, it give a bug back.
Bug info like that:
The class required for this panel, 'graph_rviz_plugin/Line graph', could not be loaded. Error: Could not find library corresponding to plugin graph_rviz_plugin/Line graph. Make sure the plugin description XML file has the correct name of the library and that the library actually exists.
How can I resolve it? Please give some advices, thanks!

qt5 not supported for rviz_python_tutorial

This probably hasn't worked since kinetic

It will give:

$ rosrun rviz_python_tutorial myviz.py 
Traceback (most recent call last):
  File "/opt/ros/kinetic/lib/rviz_python_tutorial/myviz.py", line 26, in <module>
    class MyViz( QWidget ):
NameError: name 'QWidget' is not defined

Release into Melodic

All of the dependencies for this package are available in Melodic, so it would be great to get it released. Thanks in advance!

interactive_marker_tutorials fail with "Error getting time of latest transform between /base_link and base_link"

Starting any example from the interactive_marker_tutorials fails with an error:

Error getting time of latest transform between /base_link and base_link

Seemingly link name comparison in rviz doesn't ignore a leading slash anymore: All the examples in the tutorial register a marker to the frame "/base_link" while rviz removes the leading slash in the global fixed frame. Removing the leading slash in the examples fixes the issue. However, eventually, the problem should be fixed on rviz side (#918).

tested on ROS Indigo.

Lunar Release

Hi @wjwwood and visualization_tutorials maintainers!

We are reaching the beta testing phase of ROS Lunar in a few days ๐ŸŽ‰ and this package is one of the last one blocking the release of desktop_full. Please consider making a release as soon as possible and if you don't have time to make a release you can release the current kinetic version by running bloom-release visualization_tutorials -r lunar -t lunar -n

Port tutorials to ROS 2

This issue is a tracker for porting the remaining tutorials to ROS 2:

  • librviz_tutorial
  • rviz_plugin_tutorials
  • visualization_marker_tutorials
  • visualization_tutorials

The rviz_python_tutorial will not be updated because RViz2 doesn't support python.

Tutorials for RQT plugins

Hi.

I am currently struggling with very simple tasks like topic subscription in a custom RQT plugin.
Is there a chance we could get basic tutorials for simple RQT plugins and include them in this repository?

I was able to work through SRV communications, creating a button and space for a response, so it is one thing I could write about.

rviz_plugin_tutorials: Linkedit errors for Hydro on OS X

When building the Hydro version on OS X I get:

==> Processing catkin package: 'rviz_plugin_tutorials'
==> Creating build directory: 'build_isolated/rviz_plugin_tutorials'
==> Building with env: '/Users/william/hydro/install_isolated/env.sh'
==> cmake /Users/william/hydro/src/rviz_plugin_tutorials -DCATKIN_DEVEL_PREFIX=/Users/william/hydro/devel_isolated/rviz_plugin_tutorials -DCMAKE_INSTALL_PREFIX=/Users/william/hydro/install_isolated in '/Users/william/hydro/build_isolated/rviz_plugin_tutorials'
-- The C compiler identification is Clang 4.2.0
-- The CXX compiler identification is Clang 4.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Using CATKIN_DEVEL_PREFIX: /Users/william/hydro/devel_isolated/rviz_plugin_tutorials
-- Using CMAKE_PREFIX_PATH: /Users/william/hydro/install_isolated
-- This workspace overlays: /Users/william/hydro/install_isolated
-- Found PythonInterp: /usr/bin/python (found version "2.7.2")
-- Using default Python package layout
-- Found PY_em: /Library/Python/2.7/site-packages/em.pyc
-- Using CATKIN_ENABLE_TESTING: ON
-- Using CATKIN_TEST_RESULTS_DIR: /Users/william/hydro/build_isolated/rviz_plugin_tutorials/test_results
-- Found gtest: gtests will be built
-- catkin 0.5.70
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - not found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - found
-- Looking for QT_MAC_USE_COCOA
-- Looking for QT_MAC_USE_COCOA - found
-- Found Qt4: /usr/local/bin/qmake (found version "4.8.4")
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/william/hydro/build_isolated/rviz_plugin_tutorials
==> make -j4 -l4 in '/Users/william/hydro/build_isolated/rviz_plugin_tutorials'
[  7%] [ 15%] [ 23%] [ 30%] Generating src/moc_teleop_panel.cxx
Generating src/moc_drive_widget.cxx
Generating src/moc_plant_flag_tool.cxx
Generating src/moc_imu_display.cxx
Scanning dependencies of target rviz_plugin_tutorials
[ 38%] [ 46%] [ 53%] [ 61%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/drive_widget.cpp.o
Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/imu_visual.cpp.o
Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/imu_display.cpp.o
Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/plant_flag_tool.cpp.o
[ 69%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/teleop_panel.cpp.o
[ 76%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/moc_drive_widget.cxx.o
[ 84%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/moc_imu_display.cxx.o
[ 92%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/moc_plant_flag_tool.cxx.o
[100%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/moc_teleop_panel.cxx.o
Linking CXX shared library /Users/william/hydro/devel_isolated/rviz_plugin_tutorials/lib/librviz_plugin_tutorials.dylib
Undefined symbols for architecture x86_64:
  "class_loader::class_loader_private::AbstractMetaObjectBase::addOwningClassLoader(class_loader::ClassLoader*)", referenced from:
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::AbstractMetaObjectBase::setAssociatedLibraryPath(std::string)", referenced from:
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::AbstractMetaObjectBase::AbstractMetaObjectBase(std::string const&, std::string const&)", referenced from:
      class_loader::class_loader_private::AbstractMetaObject<rviz::Display>::AbstractMetaObject(std::string const&, std::string const&) in imu_display.cpp.o
      class_loader::class_loader_private::AbstractMetaObject<rviz::Tool>::AbstractMetaObject(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      class_loader::class_loader_private::AbstractMetaObject<rviz::Panel>::AbstractMetaObject(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::AbstractMetaObjectBase::~AbstractMetaObjectBase()", referenced from:
      class_loader::class_loader_private::AbstractMetaObject<rviz::Display>::AbstractMetaObject(std::string const&, std::string const&) in imu_display.cpp.o
      class_loader::class_loader_private::AbstractMetaObject<rviz::Tool>::AbstractMetaObject(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      class_loader::class_loader_private::AbstractMetaObject<rviz::Panel>::AbstractMetaObject(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::getFactoryMapForBaseClass(std::string const&)", referenced from:
      std::map<std::string, class_loader::class_loader_private::AbstractMetaObjectBase*, std::less<std::string>, std::allocator<std::pair<std::string const, class_loader::class_loader_private::AbstractMetaObjectBase*> > >& class_loader::class_loader_private::getFactoryMapForBaseClass<rviz::Display>() in imu_display.cpp.o
      std::map<std::string, class_loader::class_loader_private::AbstractMetaObjectBase*, std::less<std::string>, std::allocator<std::pair<std::string const, class_loader::class_loader_private::AbstractMetaObjectBase*> > >& class_loader::class_loader_private::getFactoryMapForBaseClass<rviz::Tool>() in plant_flag_tool.cpp.o
      std::map<std::string, class_loader::class_loader_private::AbstractMetaObjectBase*, std::less<std::string>, std::allocator<std::pair<std::string const, class_loader::class_loader_private::AbstractMetaObjectBase*> > >& class_loader::class_loader_private::getFactoryMapForBaseClass<rviz::Panel>() in teleop_panel.cpp.o
  "class_loader::class_loader_private::getCurrentlyActiveClassLoader()", referenced from:
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::getCurrentlyLoadingLibraryName()", referenced from:
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::getPluginBaseToFactoryMapMapMutex()", referenced from:
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "class_loader::class_loader_private::hasANonPurePluginLibraryBeenOpened(bool)", referenced from:
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "console_bridge::log(char const*, int, console_bridge::LogLevel, char const*, ...)", referenced from:
      (anonymous namespace)::ProxyExec0::ProxyExec0() in imu_display.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::ImuDisplay, rviz::Display>(std::string const&, std::string const&) in imu_display.cpp.o
      (anonymous namespace)::ProxyExec0::ProxyExec0() in plant_flag_tool.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::PlantFlagTool, rviz::Tool>(std::string const&, std::string const&) in plant_flag_tool.cpp.o
      (anonymous namespace)::ProxyExec0::ProxyExec0() in teleop_panel.cpp.o
      void class_loader::class_loader_private::registerPlugin<rviz_plugin_tutorials::TeleopPanel, rviz::Panel>(std::string const&, std::string const&) in teleop_panel.cpp.o
  "message_filters::Connection::disconnect()", referenced from:
      void tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::connectInput<message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > > >(message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
  "message_filters::Connection::Connection(boost::function<void (message_filters::Connection const&)> const&, boost::signals::connection)", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::registerFailureCallback(boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> const&) in imu_display.cpp.o
  "message_filters::Connection::Connection(boost::function<void ()> const&)", referenced from:
      message_filters::Connection message_filters::SimpleFilter<sensor_msgs::Imu_<std::allocator<void> > >::registerCallback<boost::_bi::bind_t<void, boost::_mfi::mf1<void, rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >*>, boost::arg<1> > > >(boost::_bi::bind_t<void, boost::_mfi::mf1<void, rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&>, boost::_bi::list2<boost::_bi::value<rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >*>, boost::arg<1> > > const&) in imu_display.cpp.o
      message_filters::Connection message_filters::SimpleFilter<sensor_msgs::Imu_<std::allocator<void> > >::registerCallback<boost::_bi::bind_t<void, boost::_mfi::mf2<void, rviz::FrameManager, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, rviz::Display*>, boost::_bi::list3<boost::_bi::value<rviz::FrameManager*>, boost::arg<1>, boost::_bi::value<rviz::Display*> > > >(boost::_bi::bind_t<void, boost::_mfi::mf2<void, rviz::FrameManager, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, rviz::Display*>, boost::_bi::list3<boost::_bi::value<rviz::FrameManager*>, boost::arg<1>, boost::_bi::value<rviz::Display*> > > const&) in imu_display.cpp.o
      message_filters::Connection message_filters::SimpleFilter<sensor_msgs::Imu_<std::allocator<void> > >::registerCallback<tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >, ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&>(void (tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::*)(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&), tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >*) in imu_display.cpp.o
  "tf::Transformer::addTransformsChangedListener(boost::function<void ()>)", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::init() in imu_display.cpp.o
  "tf::Transformer::removeTransformsChangedListener(boost::signals::connection)", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
  "ros::NodeHandle::advertise(ros::AdvertiseOptions&)", referenced from:
      ros::Publisher ros::NodeHandle::advertise<geometry_msgs::Twist_<std::allocator<void> > >(std::string const&, unsigned int, bool) in teleop_panel.cpp.o
  "ros::NodeHandle::subscribe(ros::SubscribeOptions&)", referenced from:
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe(ros::NodeHandle&, std::string const&, unsigned int, ros::TransportHints const&, ros::CallbackQueueInterface*) in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe() in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe(ros::NodeHandle&, std::string const&, unsigned int, ros::TransportHints const&, ros::CallbackQueueInterface*) in moc_imu_display.cxx.o
  "ros::NodeHandle::NodeHandle(ros::NodeHandle const&)", referenced from:
      rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >::onInitialize() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::MessageFilter(tf::Transformer&, std::string const&, unsigned int, ros::NodeHandle, ros::Duration) in imu_display.cpp.o
  "ros::NodeHandle::NodeHandle(std::string const&, std::map<std::string, std::string, std::less<std::string>, std::allocator<std::pair<std::string const, std::string> > > const&)", referenced from:
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::Subscriber() in imu_display.cpp.o
      rviz_plugin_tutorials::TeleopPanel::TeleopPanel(QWidget*) in teleop_panel.cpp.o
  "ros::NodeHandle::~NodeHandle()", referenced from:
      rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >::onInitialize() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::MessageFilter(tf::Transformer&, std::string const&, unsigned int, ros::NodeHandle, ros::Duration) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::~Subscriber() in imu_display.cpp.o
      rviz_plugin_tutorials::TeleopPanel::TeleopPanel(QWidget*) in teleop_panel.cpp.o
      rviz_plugin_tutorials::TeleopPanel::~TeleopPanel() in moc_teleop_panel.cxx.o
  "ros::NodeHandle::operator=(ros::NodeHandle const&)", referenced from:
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe(ros::NodeHandle&, std::string const&, unsigned int, ros::TransportHints const&, ros::CallbackQueueInterface*) in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe(ros::NodeHandle&, std::string const&, unsigned int, ros::TransportHints const&, ros::CallbackQueueInterface*) in moc_imu_display.cxx.o
  "ros::Subscriber::shutdown()", referenced from:
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::unsubscribe() in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::unsubscribe() in moc_imu_display.cxx.o
  "ros::Subscriber::~Subscriber()", referenced from:
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe(ros::NodeHandle&, std::string const&, unsigned int, ros::TransportHints const&, ros::CallbackQueueInterface*) in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::~Subscriber() in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe() in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::Subscriber() in imu_display.cpp.o
      message_filters::Subscriber<sensor_msgs::Imu_<std::allocator<void> > >::subscribe(ros::NodeHandle&, std::string const&, unsigned int, ros::TransportHints const&, ros::CallbackQueueInterface*) in moc_imu_display.cxx.o
  "ros::DurationBase<ros::Duration>::fromSec(double)", referenced from:
      ros::Duration::Duration(double) in imu_display.cpp.o
  "ros::serialization::throwStreamOverrun()", referenced from:
      void ros::serialization::Serializer<double>::read<ros::serialization::IStream>(ros::serialization::IStream&, double&) in imu_display.cpp.o
      void ros::serialization::ArraySerializer<double, 9ul, void>::read<ros::serialization::IStream>(ros::serialization::IStream&, boost::array<double, 9ul>&) in imu_display.cpp.o
      void ros::serialization::Serializer<std::string>::read<ros::serialization::IStream>(ros::serialization::IStream&, std::string&) in imu_display.cpp.o
      void ros::serialization::Serializer<unsigned int>::read<ros::serialization::IStream>(ros::serialization::IStream&, unsigned int&) in imu_display.cpp.o
      void ros::serialization::Serializer<double>::write<ros::serialization::OStream>(ros::serialization::OStream&, double) in teleop_panel.cpp.o
      void ros::serialization::Serializer<unsigned int>::write<ros::serialization::OStream>(ros::serialization::OStream&, unsigned int) in teleop_panel.cpp.o
      void ros::serialization::Serializer<double>::read<ros::serialization::IStream>(ros::serialization::IStream&, double&) in moc_imu_display.cxx.o
      ...
  "ros::ok()", referenced from:
      rviz_plugin_tutorials::TeleopPanel::sendVel() in teleop_panel.cpp.o
  "ros::Time::now()", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
  "ros::Timer::~Timer()", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::MessageFilter(tf::Transformer&, std::string const&, unsigned int, ros::NodeHandle, ros::Duration) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::init() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
  "ros::console::initialize()", referenced from:
      rviz_plugin_tutorials::ImuDisplay::processMessage(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::add(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessages() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::clear() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
      ...
  "ros::console::g_initialized", referenced from:
      rviz_plugin_tutorials::ImuDisplay::processMessage(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::add(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessages() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::clear() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
      ...
  "ros::console::setLogLocationLevel(ros::console::LogLocation*, ros::console::levels::Level)", referenced from:
      rviz_plugin_tutorials::ImuDisplay::processMessage(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::add(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessages() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::clear() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
      ...
  "ros::console::initializeLogLocation(ros::console::LogLocation*, std::string const&, ros::console::levels::Level)", referenced from:
      rviz_plugin_tutorials::ImuDisplay::processMessage(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::add(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessages() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::clear() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
      ...
  "ros::console::checkLogLocationEnabled(ros::console::LogLocation*)", referenced from:
      rviz_plugin_tutorials::ImuDisplay::processMessage(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::add(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessages() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::clear() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
      ...
  "ros::console::print(ros::console::FilterBase*, log4cxx::Logger*, ros::console::levels::Level, char const*, int, char const*, char const*, ...)", referenced from:
      rviz_plugin_tutorials::ImuDisplay::processMessage(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::add(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessages() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::clear() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
      ...
  "ros::Publisher::shutdown()", referenced from:
      rviz_plugin_tutorials::TeleopPanel::setTopic(QString const&) in teleop_panel.cpp.o
  "ros::Publisher::~Publisher()", referenced from:
      rviz_plugin_tutorials::TeleopPanel::TeleopPanel(QWidget*) in teleop_panel.cpp.o
      rviz_plugin_tutorials::TeleopPanel::setTopic(QString const&) in teleop_panel.cpp.o
      rviz_plugin_tutorials::TeleopPanel::~TeleopPanel() in moc_teleop_panel.cxx.o
  "boost::signals::connection::connection(boost::signals::connection const&)", referenced from:
      message_filters::Connection::getBoostConnection() const in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
  "boost::signals::connection::~connection()", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::registerFailureCallback(boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::disconnectFailure(message_filters::Connection const&) in imu_display.cpp.o
      boost::signals::detail::slot_base::data_t::~data_t() in imu_display.cpp.o
      message_filters::Connection::~Connection() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::MessageFilter(tf::Transformer&, std::string const&, unsigned int, ros::NodeHandle, ros::Duration) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::init() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o
      ...
  "boost::signals::connection::operator=(boost::signals::connection const&)", referenced from:
      message_filters::Connection::operator=(message_filters::Connection const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::init() in imu_display.cpp.o
  "boost::signals::detail::signal_base::signal_base(boost::function2<bool, boost::signals::detail::stored_group, boost::signals::detail::stored_group> const&, boost::any const&)", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::signal2(boost::last_value<void> const&, std::less<int> const&) in imu_display.cpp.o
  "boost::signals::detail::signal_base::~signal_base()", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::~signal2() in imu_display.cpp.o
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::signal2(boost::last_value<void> const&, std::less<int> const&) in imu_display.cpp.o
  "boost::signals::detail::named_slot_map::end()", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::operator()(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason) in imu_display.cpp.o
  "boost::signals::detail::named_slot_map::begin()", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::operator()(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason) in imu_display.cpp.o
  "boost::signals::detail::signal_base_impl::connect_slot(boost::any const&, boost::signals::detail::stored_group const&, boost::shared_ptr<boost::signals::detail::slot_base::data_t>, boost::signals::connect_position)", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::connect(boost::slot<boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> > const&, boost::signals::connect_position) in imu_display.cpp.o
  "boost::signals::detail::call_notification::call_notification(boost::shared_ptr<boost::signals::detail::signal_base_impl> const&)", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::operator()(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason) in imu_display.cpp.o
  "boost::signals::detail::call_notification::~call_notification()", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::operator()(boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason) in imu_display.cpp.o
  "boost::signals::detail::slot_base::create_connection()", referenced from:
      boost::slot<boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::slot<boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >(boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> const&) in imu_display.cpp.o
  "boost::signals::trackable::~trackable()", referenced from:
      boost::signal2<void, boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason, boost::last_value<void>, int, std::less<int>, boost::function<void (boost::shared_ptr<sensor_msgs::Imu_<std::allocator<void> > const> const&, tf::filter_failure_reasons::FilterFailureReason)> >::~signal2() in imu_display.cpp.o
  "tf::Transformer::canTransform(std::string const&, std::string const&, ros::Time const&, std::string*) const", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
  "tf::Transformer::getLatestCommonTime(std::string const&, std::string const&, ros::Time&, std::string*) const", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
  "ros::NodeHandle::createTimer(ros::Duration, boost::function<void (ros::TimerEvent const&)> const&, bool, bool) const", referenced from:
      ros::Timer ros::NodeHandle::createTimer<tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > > >(ros::Duration, void (tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::*)(ros::TimerEvent const&), tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >*, bool, bool) const in imu_display.cpp.o
  "ros::DurationBase<ros::Duration>::operator==(ros::Duration const&) const", referenced from:
      ros::DurationBase<ros::Duration>::operator!=(ros::Duration const&) const in imu_display.cpp.o
  "ros::TimeBase<ros::Time, ros::Duration>::operator==(ros::Time const&) const", referenced from:
      ros::TimeBase<ros::Time, ros::Duration>::operator!=(ros::Time const&) const in imu_display.cpp.o
  "ros::TimeBase<ros::Time, ros::Duration>::operator>=(ros::Time const&) const", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
  "ros::TimeBase<ros::Time, ros::Duration>::operator<(ros::Time const&) const", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
  "ros::TimeBase<ros::Time, ros::Duration>::operator+(ros::Duration const&) const", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::testMessage(ros::MessageEvent<sensor_msgs::Imu_<std::allocator<void> > const> const&) in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::checkFailures() in imu_display.cpp.o
  "ros::Publisher::Impl::isValid() const", referenced from:
      ros::Publisher::operator void*() const in teleop_panel.cpp.o
      void ros::Publisher::publish<geometry_msgs::Twist_<std::allocator<void> > >(geometry_msgs::Twist_<std::allocator<void> > const&) const in teleop_panel.cpp.o
  "ros::Publisher::publish(boost::function<ros::SerializedMessage ()> const&, ros::SerializedMessage&) const", referenced from:
      void ros::Publisher::publish<geometry_msgs::Twist_<std::allocator<void> > >(geometry_msgs::Twist_<std::allocator<void> > const&) const in teleop_panel.cpp.o
  "boost::signals::connection::disconnect() const", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::disconnectFailure(message_filters::Connection const&) in imu_display.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [/Users/william/hydro/devel_isolated/rviz_plugin_tutorials/lib/librviz_plugin_tutorials.dylib] Error 1
make[1]: *** [CMakeFiles/rviz_plugin_tutorials.dir/all] Error 2
make: *** [all] Error 2

I will have a fix soon.

build errors on OSX

Building rviz_plugin_tutorials on OS X 10.8.3 is yielding a linking error, it would seem. (Note: I actually run rosmake -a --pre-clean, having successfully followed the instructions on http://www.ros.org/wiki/groovy/Installation/OSX/Homebrew/Source#Installation_Instructions_for_Groovy_in_OSX).

Undefined symbols for architecture x86_64:
  "message_filters::Connection::disconnect()", referenced from:
      rviz::MessageFilterDisplay<sensor_msgs::Imu_<std::allocator<void> > >::onInitialize() in imu_display.cpp.o
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::~MessageFilter() in imu_display.cpp.o

full log: http://pastie.org/pastes/7360215/text

Adding <depend package="message_filters"/> to the manifest.xml file for visualisation_tutorials/rviz_plugin_tutorials then gives the following.

Undefined symbols for architecture x86_64:
  "tf::Transformer::addTransformsChangedListener(boost::function<void ()>)", referenced from:
      tf::MessageFilter<sensor_msgs::Imu_<std::allocator<void> > >::init() in imu_display.cpp.o

full log: http://pastie.org/pastes/7360257/text

Now, also adding <depend package="tf"/> to the same manifest.xml file gives the following.

Undefined symbols for architecture x86_64:
  "Ogre::Quaternion::IDENTITY", referenced from:
      rviz_plugin_tutorials::ImuVisual::ImuVisual(Ogre::SceneManager*, Ogre::SceneNode*) in imu_visual.cpp.o
      rviz_plugin_tutorials::PlantFlagTool::onInitialize() in plant_flag_tool.cpp.o
      rviz_plugin_tutorials::PlantFlagTool::makeFlag(Ogre::Vector3 const&) in plant_flag_tool.cpp.o

full log: http://pastie.org/pastes/7360289/text

In all of the above cases this is the only package that fails to build (running rosmake -a) and the tail of the output looks something like this in each case:

[ rosmake ] Output from build of package rviz_plugin_tutorials written to:
[ rosmake ]    /Users/alex/.ros/rosmake/rosmake_output-20130408-050334/rviz_plugin_tutorials/build_output.log
[rosmake-0] Finished <<< rviz_plugin_tutorials [FAIL] [ 76.76 seconds ]                             
[ rosmake ] Halting due to failure in package rviz_plugin_tutorials. 
[ rosmake ] Waiting for other threads to complete.
[ rosmake ] Output from build of package turtle_actionlib written to:... [ 2 Active 85/88 Complete ]
[ rosmake ]    /Users/alex/.ros/rosmake/rosmake_output-20130408-050334/turtle_actionlib/build_output.log
[rosmake-1] Finished <<< turtle_actionlib [PASS] [ 56.78 seconds ] [ 3 warnings [ 1 deprecated ]  ] 
[ rosmake ] Output from build of package actionlib_tutorials written to: [ 1 Active 86/88 Complete ]
[ rosmake ]    /Users/alex/.ros/rosmake/rosmake_output-20130408-050334/actionlib_tutorials/build_output.log
[rosmake-5] Finished <<< actionlib_tutorials [PASS] [ 91.02 seconds ] [ 5 warnings  ]               
[ rosmake ] Results:                                                                                
[ rosmake ] Cleaned 88 packages.                                                                    
[ rosmake ] Built 88 packages with 1 failures.                                                      
[ rosmake ] Summary output to directory                                                             
[ rosmake ] /Users/alex/.ros/rosmake/rosmake_output-20130408-050334

I am unable to get rid of this last issue with "undefined symbols" however, and am not even sure my previous attempted fixes are the right way to go about it. Any help would be appreciated.

Switching between two sets of interactive_marker

Thank you for this great tutorial. I have a question about the concept of interactive marker servers.

Problem description:
I have two sets of interactive markers, for example one set consists of 10 spheres and the other set consists of 10 cubes. Now I want to switch between these two sets. Is there a smart way or should I create a second server instance and then make all interactive markers of a set invisible.

[ROS2] Unable to move camera in librviz tutorial

I am running on Ubuntu 22.04 with ROS Humble installed.

While the rest of the components in the librviz tutorial works (changing grid spacing, grid line thickness), I am completely unable to move the camera.

I've attempted to enable mouse tracking of the render_panel_ via render_panel_->setMouseTracking(true); but this had no effect.

I can confirm QMouseEvents are triggering on the main window widget using qDebug, which to me strikes as a sign it's not a Qt installation issue.

Aside from the mouse tracking being enabled, the code is exactly as it is in the ros2 branch of MyViz under librviz_tutorial.

It's worth noting that I was able to move the camera programmatically using the following:

rviz_common::ViewController * controller_ = manager_->getViewManager()->getCurrent();
controller_->getCamera()->moveRelative(Ogre::Vector3(1,1,1));`

But would prefer to use the Orbit controller the render_panel_ already has for controlling the camera with a mouse if possible.
Anyone been able to get specifically the ROS2 branch of this code to work with camera mouse controls?

Memory leak in panel example?

Hello,

Thanks for the tutorials! They've been super helpful for me trying to learn how to create a plugin. I've noticed some code in the panel tutorial which I believe may be causing a memory leak e.g. here. The class has no destructor, so it seems like we're dynamically allocating memory and never freeing it.

It's been a while since I've used Qt, so unsure if it would be handling the memory management under the hood? Figured it'd be a good opportunity to learn either way ๐Ÿ˜„

rviz_plugin_tutorials fails to compile on OS X

See:

http://answers.ros.org/question/56553/rosmake-fails-on-os-x/
http://pastie.org/pastes/6368348/text

The failure:

{-------------------------------------------------------------------------------
  -- Looking for Q_WS_MAC
  -- Looking for Q_WS_MAC - found
  -- Looking for QT_MAC_USE_COCOA
  -- Looking for QT_MAC_USE_COCOA - found
  -- Found Qt4: /usr/local/bin/qmake (found version "4.8.4") 
  [rosbuild] Couldn't find source file /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/build/src/moc_drive_widget.cxx; assuming that it is in /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials and will be generated later
  [rosbuild] Couldn't find source file /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/build/src/moc_imu_display.cxx; assuming that it is in /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials and will be generated later
  [rosbuild] Couldn't find source file /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/build/src/moc_plant_flag_tool.cxx; assuming that it is in /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials and will be generated later
  [rosbuild] Couldn't find source file /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/build/src/moc_teleop_panel.cxx; assuming that it is in /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials and will be generated later
  -- Configuring done
  -- Generating done
  -- Build files have been written to: /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/build
  cd build && make -j -l8
  Scanning dependencies of target rospack_genmsg_libexe
  [  0%] Built target rospack_genmsg_libexe
  Scanning dependencies of target rosbuild_precompile
  [  0%] Built target rosbuild_precompile
  [  7%] Generating src/moc_teleop_panel.cxx
  [ 15%] Generating src/moc_plant_flag_tool.cxx
  [ 23%] Generating src/moc_imu_display.cxx
  [ 30%] Generating src/moc_drive_widget.cxx
  Scanning dependencies of target rviz_plugin_tutorials
  [ 38%] Building CXX object CMakeFiles/rviz_plugin_tutorials.dir/src/drive_widget.cpp.o
  /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/src/drive_widget.cpp:113:23: error: variable length array of non-POD element type 'QPointF'
      QPointF left_track[ step_count ];
                        ^
  /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/src/drive_widget.cpp:114:24: error: variable length array of non-POD element type 'QPointF'
      QPointF right_track[ step_count ];
                         ^
  In file included from /Users/alex/ros_ws/visualization_tutorials/rviz_plugin_tutorials/src/drive_widget.cpp:34:
  In file included from /usr/local/Cellar/qt/4.8.4/include/QtGui/QMouseEvent:1:
  In file included from /usr/local/Cellar/qt/4.8.4/include/QtGui/qevent.h:52:
  /usr/local/Cellar/qt/4.8.4/include/QtGui/qmime.h:119:10: warning: private field 'type' is not used [-Wunused-private-field]
      char type;
           ^
  1 warning and 2 errors generated.
  make[3]: *** [CMakeFiles/rviz_plugin_tutorials.dir/src/drive_widget.cpp.o] Error 1
  make[2]: *** [CMakeFiles/rviz_plugin_tutorials.dir/all] Error 2
  make[1]: *** [all] Error 2
-------------------------------------------------------------------------------}
[ rosmake ] Output from build of package rviz_plugin_tutorials written to:
[ rosmake ]    /Users/alex/.ros/rosmake/rosmake_output-20130302-173409/rviz_plugin_tutorials/build_output.log
[rosmake-3] Finished <<< rviz_plugin_tutorials [FAIL] [ 25.69 seconds ]

I do not have the full error log, but perhaps someone could update the ticket with that.

How to have mouse interaction after setViewController?

I've modified myviz.cpp here https://github.com/lucasw/visualization_tutorials/tree/set-view-controller-test and using a custom view controller appears to work as far as rendering the grid from a default location, but the mouse is unable to rotate or translate the view.

Is there something else I need to do to hook up the mouse? Is it still owned by the old default view controller somehow?

Also on answers: http://answers.ros.org/question/256100/rviz-setviewcontroller-doesnt-hook-up-mouse-events

Header Frame ID

Hi, my goal is to control a robot arm by placing interactive markers over the joints. I'd like to express each interactive markers w.r.t. the parent joint, instead of the base_link but I got the following error from Rviz:

Cannot get tf info for init message with sequence number 1. Error: "J1" passed to lookupTransform argument target_frame does not exist. 

ImportError: No module named librviz_shiboken

When I am trying to run myviz.py file inside rviz_python_tutorial package using
rosrun rviz_python_tutorial myviz.py command, I am getting below error:
ImportError: No module named librviz_shiboken.

Do I have to install some libraries in order to import librviz_shiboken? You help/guidance will be much appreciated. Thanks!

rviz_python_tutorial myviz.py segmentation fault

I was starting to get myself familiar with librviz from python and trying the example in rviz_python_tutorial just crashes with segmentation fault.

I do:

roscd rviz_python_tutorial

(To be in the folder where config.myviz is, which will be loaded.)

Then:

rosrun rviz_python_tutorial myviz.py

And I get the output:

[ INFO] [1437573701.223369341]: Stereo is NOT SUPPORTED
[ INFO] [1437573701.223440384]: OpenGl version: 3 (GLSL 1.3).
Segmentation fault (core dumped)

After a brief splash of the window.

I tried on two machines with ROS hydro and got the same behaviour. With Rviz 1.10.19. It crashes just after myviz.show().

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.