Note: Install procedure received from http://dasl.mem.drexel.edu/drcwiki/index.php/OpenHubo_Introduction on 2013-12-02.
OpenHubo is a collection of models of KAIST / Rainbow humanoid robots. As of release 0.6.x, the collection includes:
- Hubo2 (Torso-base)
- Hubo2 (Right-foot-base)
- Hubo+ (Torso-base)
- Hubo+ (Right-foot-base)
- Hubo+ (No-Shell model)
These models have inertia and mass properties to accurate to within about 1 kg of the physical robot. Masses such as cables are not well represented in CAD, while mechanical components are accurately sized and massed. The result should be accurate enough for simulation though Open Dynamics Engine (ODE) and similar engines.
To use openHubo, you should be familiar with OpenRAVE and Python. OpenHubo is an extension of OpenRAVE that makes extensive use of OpenRAVE plugins and python scripts. For a more in-depth reference on proper practices with python, look at the Hitchhiker's Guide to Python, a simply-written how-to for python programming.
To set up and use OpenHubo, you will need:
- Ubuntu 10.04 or 12.04 (others may work, but sometimes have weird issues with available packages and such)
- Openrave 0.8.0 or later installed setup instructions, preferably built from latest sources.
- Hubo-ach (for integration with Hubo+ hardware): 
Some features such as the PQP collision plugin are only available if you build openrave from sources. Follow the openrave instructions on compiling from sources for detailed step-by-step instructions. Build instructions below are not necessarily complete, but should work for most cases.
Depending on your distribution, you may need to install 3rd party libraries to build all of the plugins. An incomplete list of packages needed to build openrave for Ubuntu 10.04-12.10 is given below. Typically the build system will tell you which packages are missing, so make sure to look carefully through the error messages.
Essential packages for getting source code and building:
sudo apt-get install g++ cmake cmake-curses-gui binutils-dev
GUI and video encoding dependencies:
sudo apt-get install libxml2-dev libavformat-dev libavcodec-dev sudo apt-get install libqt4-dev qt4-dev-tools libcoin60-dev libsoqt4-dev libglew-dev ffmpeg
Boost libraries for OpenRAVE core functionality (threading, etc.)
sudo apt-get install libboost-date-time-dev libboost-thread-dev libboost-python-dev sudo apt-get install libboost-regex-dev libboost-graph-dev sudo apt-get install libboost-wave-dev libboost-serialization-dev sudo apt-get install libboost-filesystem-dev libfparser-dev
Math and miscellaneous libraries:
sudo apt-get install libmpfr-dev libmpfi-dev libode-dev libflann-dev sudo apt-get install libqhull-dev libswscale-dev libpcre3-dev
Once all of the necessary packages are installed, run cmake to generate Makefiles:
If you see no error messages, then run the following commands to build and install. Use the -jX flag on make to build with multiple cores (if available), since openrave can take 5-15 minutes to fully build.
make -j2 sudo make install
OpenRAVE and MATLAB
To compile matlab extensions, make sure that you have mexext available. To create a symlink, follow the below steps, but replace R20XXx with your matlab version. Note that MATLAB might also be installed in a different folder such as /opt/MATLAB.
cd /usr/local/bin sudo ln -s /usr/local/MATLAB/R20XXx/bin/mexext mexext
Now, return to the openrave source folder and run ccmake to ensure that you have selected the MATLAB build flag:
Press "c" to finalize your configuration, then "g" to generate and exit. Finally, run the following commands to build:
make -j2 sudo make install
Rob's OpenRAVE fork
As of March 25th, 2013, the majority of oderave fixes needed to run the openhubo examples have been merged into the master branch of OpenRAVE. Some openhubo-specific tweaks to openrave are still maintained in Rob's fork, however. To use this version instead of the official master branch, follow these instructions:
Case 1: (New installation)
Follow the above instructions, except install openrave from this source:
git clone -b openhubo git://github.com/robEllenberg/openrave.git
Case 2: (Existing OpenRAVE source installation)
If OpenRAVE source files are in $HOME/openrave, follow these instructions to add the openhubo fork of OpenRAVE:
cd ~/openrave git remote add custom git://github.com/robEllenberg/openrave.git git fetch custom git checkout -t custom/openhubo
Then follow the build instructions above.
Case 3: (Existing OpenRAVE apt-get installation)
If you encounter issues building against the correct version of openrave, try removing openrave packages with the following command:
sudo apt-get remove openrave0.8-*
Then follow the instructions for case 2 above.
Clone the repository to a convenient location:
git clone --recursive git://github.com/daslrobotics/openHubo.git
Once the repository is cloned, change into the openHubo folder:
If you would like to work with one of the development branches of openHubo, rather than a release version, use git checkout to get a particular branch. For example, to work with the latest development version, use the following command:
git checkout -t origin/develop
OpenHubo comes bundled with several useful plugins:
- OpenMR, a servo controller for physics simulations
- simForceSensor, a force sensor plugin that acts as a 6-DOF F/T sensor for force control and sensing.
- CoMPS, a collection of plugins to do RRT-based trajectory planning, manipulation, and general-purpose inverse kinematics calculations.
All of these plugins can be downloaded and installed automatically using the included setup script:
This downloads the above plugins as git submodules, and builds/installs the plugins to a local folder. If the process is successful, you should see the following result:
setup lists what plugins are available once everything is built. A common cause of issues with this build script is downloading openHubo as a .zip or .tar file, rather than closing using git. If you have downloaded the source as an archive, the setup program will attempt to detect this and properly clone the source from github.
0.7.0 Update: To force all of the plugins to rebuild, simply add the clean argument:
source setup clean
Building without hubo-ach
If you are interested in only simulation, it is possible to disable the integration with hubo ach. First, make sure you have the cmake-curses-gui installed:
sudo apt-get install cmake-curses-gui
Change into the openmr folder to update the build settings:
cd openmr/build ccmake ../src
The cmake GUI allows you to edit build settings without directly looking at the CMakeLists.txt or similar files.
Move the cursor over the BUILD_ACHCONTROLLER option and hit enter to switch it to OFF. Ach integration is now disabled. To build with ach-integration, simple re-enable this build flag. After changing the flag, press 'c' to reconfigure, and then 'g' to generate the build files.
Once you have updated the build settings, re-build the plugin and install it:
The plugins install to openHubo/plugins by default, so there is no need to use root permissions (i.e. sudo).
0.7.0 Update: There are several python examples that show how to use OpenHubo to simulate simple tasks. To run these examples in the openHubo folder, you can use python syntax like so:
python -i examples/myexample.py
As of the 0.7.0 update, there is now a unified openhubo executable that makes running examples and tweaking settings from the command line easier. Bash tab completion is enabled for options and file names, so typing out the command is very quick:
./openhubo --example myexample.py
Hitting tab after the --example option will autocomplete with one of the following:
- achread.py - Shows a robot without physics that mimics the current state of the hubo-ach channels. The green "ghost" robot shows the current reference position, while the gray opaque robot shows the actual value as read from the encoder.
- basic_planning_cbirrt.py - Planning a reaching motion to a sample ladder using the included COMPS plugins
- center_of_pressure.py - Display center of pressure on a limb using python interface
- servocontrol.py - Basics of controlling servos manually on the Hubo
- servo_crouch.py - A simple crouch motion using the servo controller and python.
- trajectorycontrol.py - How to use the trajectory controller to play back smooth, whole-body motions
- trajectoryexport.py - Exporting trajectories for use outside of OpenHubo
- measure_forces.py - A simple way to extract force data from the physics simulation
- motordata.py - (Only works with feature/motortorque branch of openrave hosted here