Coder Social home page Coder Social logo

rock-core / gui-vizkit3d Goto Github PK

View Code? Open in Web Editor NEW
15.0 19.0 26.0 854 KB

Rock (Robot Construction Kit) 3D visualization framework based on OpenSceneGraph and Qt

Home Page: http://rock-robotics.org

License: Other

Ruby 0.24% C++ 99.36% CMake 0.40%

gui-vizkit3d's Introduction

vizkit3d: a lightweight infrastructure to build data display using C++, OpenSceneGraph and Qt

vizkit3d is a lightweight infrastructure to allow the creation of 3D views to display data (and in particular data related to robotic sensing) live. It is used as the core 3D view implementation in Rock, the Robot Construction Kit. Nonetheless, vizkit3d uses only widely accepted libraries (Qt and OSG) and depends on the Rock framework in no way.

Vizkit3D functionality can also be accessed from Ruby by using the vizkit library.

gui-vizkit3d's People

Contributors

2maz avatar annaborn avatar chhtz avatar d-alex avatar doudou avatar g-arjones avatar goldhoorn avatar haider8645 avatar jakobs avatar jmachowinski avatar malgosiag avatar malter avatar marc-hildebrandt avatar pierrewillenbrockdfki avatar planthaber avatar saarnold avatar traversaro avatar vbargsten avatar

Stargazers

 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

gui-vizkit3d's Issues

Error: No such file or directory

Hello,

slam/maps is not building when vizkit3d is on the feature/qt5 branch: maps-build.log. It is not able to find the vizkit3d/GridVisualization.hpp

A possible reason for that could that the GridVisualization.hpp is moved from HEADERS to MOC in the vizkit3d/viz/CMakeLists.txt? You can see the change at the commit with the title: "Make Qts moc look at the headers needing MOCing" on the feature/qt5 branch.

Best,
Haider

Transformer frames not displayed in vizkit3d

Hi,

the transformer frames in vizkit3d are not displayed if I set Orocos::CORBA.name_service.ip to e.g. "localhost". Example:

If I do

require 'vizkit'

Orocos.initialize
widget = Vizkit.vizkit3d_widget
widget.show
Vizkit.exec

the frames show up properly. If I do

require 'vizkit'

Orocos::CORBA.name_service.ip = "localhost"
Orocos.initialize
widget = Vizkit.vizkit3d_widget
widget.show
Vizkit.exec

the frames cannot be seen in the display and they are neither available in the dropdown menus. The transformer seems to work properly, since the transforms are listed in rock-display. I am on the master branch of vizkit3d. Ubuntu 12.04.

Best,
Dennis

QtPropertyBrowser and osgQt not found

When trying to build vizkit3d from the feature/qt5 branch as a standalone package without rock, the process fail because two Qt related packages are not found.

The first package that cannot be found is the QtPropertyBrowser. Installing libqtpropertybrowser5 and libqtpropertybrowser-dev does not resolve the problem for me.

CMake Error at src/CMakeLists.txt:2 (find_package):
  By not providing "FindQtPropertyBrowser.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "QtPropertyBrowser", but CMake did not find one.

  Could not find a package configuration file provided by "QtPropertyBrowser"
  with any of the following names:

    QtPropertyBrowserConfig.cmake
    qtpropertybrowser-config.cmake

  Add the installation prefix of "QtPropertyBrowser" to CMAKE_PREFIX_PATH or
  set "QtPropertyBrowser_DIR" to a directory containing one of the above
  files.  If "QtPropertyBrowser" provides a separate development package or
  SDK, be sure it has been installed.

When ignoring this error, the other package that cannot be found is osgQt. Building the osgQt repo does not resolve the problem. I have also found the gui-osg_qt4 package, but not one for Qt5.

CMake Error at src/CMakeLists.txt:12 (message):
  Could not find osgQt or openscenegraph-osgQt5 with pkg-config

Vizkit3DWidget tries to swapBuffers on non-exposed windows, resulting in message on stderr

This happens when running rock-display_bin, using my qt5 branches. Vizkit3DWidget is only changed in minor ways, so the underlying problem imo also exists using qt4.

rock-display does not show() the Vizkit3DWidget by default, but Vizkit3DWidget still does setup its _timer to start calling osgviz::update(), which goes on to osgviz::WindowManager::frame() and then to osgViewer::CompositeViewer::frame(), and finally calling QOpenGLContext::swapBuffers().

Vizkit3DWidget uses an osgviz::Window that extends osgViewer::CompositeViewer with additional data and functionality. The osgviz::Window is created in a way that automatically registers it with the osgviz::WindowManager and cannot be unregistered and registered again without changing its state.

The actual message is

QOpenGLContext::swapBuffers() called with non-exposed window, behavior is undefined

Backtrace from osgviz::WindowManager::frame()

#0  osgviz::WindowManager::frame() (this=0x555555c116d0) at rock/gui/osgviz/src/windows/WindowManager.cpp:68
#1  0x00007ffff55a631e in osgviz::OsgViz::update() (this=0x555555c11640) at rock/gui/osgviz/src/OsgViz.cpp:92
#2  0x00007ffff7067eac in void doActivate<false>(QObject*, int, void**) () at /usr/lib64/libQt5Core.so.5
#3  0x00007ffff706b52a in QTimer::timeout(QTimer::QPrivateSignal) () at /usr/lib64/libQt5Core.so.5
#4  0x00007ffff70605a5 in QObject::event(QEvent*) () at /usr/lib64/libQt5Core.so.5
#5  0x00007ffff62f1c9f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#6  0x00007ffff62fad90 in QApplication::notify(QObject*, QEvent*) () at /usr/lib64/libQt5Widgets.so.5
#7  0x00007ffff70351ee in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at /usr/lib64/libQt5Core.so.5
#8  0x00007ffff7088598 in QTimerInfoList::activateTimers() () at /usr/lib64/libQt5Core.so.5
#9  0x00007ffff7088e5c in idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) () at /usr/lib64/libQt5Core.so.5
#10 0x00007ffff0527e4b in g_main_context_dispatch () at /usr/lib64/libglib-2.0.so.0
#11 0x00007ffff05280f8 in g_main_context_iterate.constprop () at /usr/lib64/libglib-2.0.so.0
#12 0x00007ffff05281af in g_main_context_iteration () at /usr/lib64/libglib-2.0.so.0
#13 0x00007ffff70892a0 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#14 0x00007ffff703409b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib64/libQt5Core.so.5
#15 0x00007ffff703be42 in QCoreApplication::exec() () at /usr/lib64/libQt5Core.so.5
#16 0x000055555555ac64 in main(int, char**) (argc=<optimized out>, argv=0x7fffffffb268) at rock/gui/rock-display/src/Main.cpp:54

A simple solution would be to check for isVisible() before the call to osgviz::update(), but that only works for applications that have no other calls to osgviz::update() and a single Vizkit3DWidget(or all Vizkit3DWidget being shown/hidden at the same time). A more involved solution could stop using osgviz::Window and osgviz::WindowManager and include the necessary bits directly(with -20+23 lines changes; i can try to rebase that patch off of my qt5 work on request).

TransformerGraph clears graph when loop is introduced

We found a special corner case that seems to clear the graph when introducing a loop in the TransformerGraph.

Test case to reproduce:

BOOST_AUTO_TEST_CASE(it_handles_loops_without_breaking)
{
    NodePtr root(TransformerGraph::create("root"));
    
    TransformerGraph::setTransformation(*root, "frame1", "frame2", Identity, Zero);
    TransformerGraph::setTransformation(*root, "frame3", "frame1", Identity, Zero);
    TransformerGraph::setTransformation(*root, "frame3", "frame2", Identity, Zero);

    BOOST_REQUIRE(TransformerGraph::hasFrame(*root, "frame1"));
    BOOST_REQUIRE(TransformerGraph::hasFrame(*root, "frame2"));
    BOOST_REQUIRE(TransformerGraph::hasFrame(*root, "frame3"));
}

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.