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.
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.
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.
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:
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:
At the top of each file, spot the line containing BOOST_ENABLE_ASSERT_HANDLER and replace it by:
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:
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