Troubleshooting OpenRAVE installation

While installing OpenRAVE on Ubuntu 14.04 or on Ubuntu 16.04, you may run into a number of problems as packages get out of sync. I report here on issues I ran into while installing OpenRAVE on new systems.

Setup

What follows assumes that you are trying to install from the latest_stable branch of OpenRAVE's GitHub repository:

git clone --branch latest_stable https://github.com/rdiankov/openrave.git
cd openrave && mkdir build && cd build
cmake ..
make -j4
sudo make install

I could successfully install OpenRAVE with the commit numbers 5cfc7444... for Ubuntu 14.04 and 9c79ea26... for 16.04.

Known issues

Missing field in CollisionReport

Depending on your configuration, you may run into the following error:

openrave/plugins/bulletrave/bulletcollision.h: In member function ‘bool BulletCollisionChecker::CheckCollisionP(btOverlapFilterCallback, OpenRAVE::CollisionReportPtr)’:
openrave/plugins/bulletrave/bulletcollision.h:335:25: error: ‘class OpenRAVE::CollisionReport’ has no member named ‘numCols’

A quickfix is to add the field int numCols; to the class CollisionReport in include/openrave/collisionchecker.h:57. See this issue on GitHub.

Undefined BIND_PER_PRIMITIVE

Newer versions of OpenSceneGraph changed the API, so the commit above (5cfc744410... on branch latest_stable) will not compile directly on a fresh Ubuntu install. Rather, it will fail with the error "‘BIND_PER_PRIMITIVE’ is not a member of ‘osg::Geometry’". You can fix this by updating line 341 of plugins/qtosgrave/Item.cpp into:

geom->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE_SET);

Of course you can also try to compile using more recent commits, however on a fresh Ubuntu install (as of May 12th, 2016) it won't compile either due to the use of the function osg::DrawElementsUInt::resizeElements, which is in the OpenSceneGraph API but not available on the one distributed with Ubuntu.

Undefined symbol for Boost assertions

As documented in this thread, you may run into the following issue with newer versions of Boost:

ImportError: ./convexdecompositionpy.so: undefined symbol: _ZN5boost20assertion_failed_msgEPKcS1_S1_S1_l)

The solution proposed here is to go to python/bindings and update three files:

  • convexdecompositionpy.cpp
  • bindings.cpp
  • pyann.cpp

At the top of each file, spot the line containing BOOST_ENABLE_ASSERT_HANDLER and replace it by:

#define BOOST_DISABLE_ASSERTS

It is dirty (disabling a number of checks in these three modules) but effective.

I don't get the same GUI as in your examples

You are most likely getting the OpenSceneGraph GUI instead of the QtCoin GUI, which is the one I use. Both are compiled as plugins when you build OpenRAVE from source. In Python, the GUI plugin is selected when you call SetViewer() on your Environment object. For the QtCoin interface, do:

env.SetViewer('qtcoin')

If you compiled OpenRAVE from source, you can enable these GUI plugins at the CMake level: run ccmake . in your build folder, and check the following two parameters:

  • OPENRAVE_PLUGIN_QTOSGRAVE: turn it ON to enable OpenSceneGraph
  • OPENRAVE_PLUGIN_QTCOINRAVE: turn it ON to enable QtCoin

Another issue?

If the problem you encounter is not listed above, you can ask your question on the OpenRAVE Users List or on the issue tracker on GitHub. Be sure to provide the first (topmost) error that appears in your logs.

Discussion

Feel free to post a comment by e-mail using the form below. Your e-mail address will not be disclosed.

📝 You can use Markdown with $\LaTeX$ formulas in your comment.

By clicking the button below, you agree to the publication of your comment on this page.

Opens your e-mail client.