What does this library do?

This library computes and visualizes the "continuum" kinematics of robots such as the "Bionic Handling Assistant" (BHA), for which you can see a use case on youtube.
The kinematics are computed based on the constant curvature assumption, i.e. that the physical bending occurs homogeneously within each robot segment.
Yet, an arbitrary number of segments can be stacked. This technique, some computational tricks therein, and its usefulness on the BHA are described in this paper that appeared at the IROS 2012 conference.

More information can be found in this blog article.

Using the example binaries

Example 1: The ContinuumSegmentDemo (3D visualization)

This didactic example shows the geometric model underlying the simulated continuum kinematics, i.e. that each segment of a continuum robot behaves
like a torus segment. The example shows an animated movement of such a segment. Press Alt-T(orus), Alt-G(eometry) to toggle various visualization modes.
The code shows how to use the basic class ContinuumSegmentDrawable, which takes take of the 3D rendering.

Example 2: The ContinuumRobotDemo (3D visualization)

Example 3: The BhaTrajectoryPrediction

Predict and visualize the end-effector trajectory for the "Bionic Handling Assistant" morphology given a posture-trajectory.
In the 3D visualization, press N to generate a new trajectory.

Windows binaries

In order to execute the examples, you need some "Microsoft Visual C++" libaries:

Linux Debian packages

There are debian-packages for "Ubuntu Linux Oneiric". Get them by adding the line

deb http://packages.cor-lab.de/ubuntu/ oneiric testing

to your /etc/apt/sources.list file. Then type
sudo apt-get install continuumkinematics-bin

The example binaries will be installed to /usr/bin/examples.

ToDo: Make Public key public https://support.cor-lab.org/projects/ciserver/wiki/RepositoryUsage


Install and use from source


  • Required: NemoMath
    • Which requires: Eigen 2
    • Which requires: Boost (header-only parts)
  • Required: CMake
  • Optional: libqglviewer-qt4-dev, in case you want to use the visualization. The pure kinematics part can be built and deployed without this dependency.
    • Which requires: Qt 4

Building from source

  • Get the source from https://code.cor-lab.org/svn/continuumkinematics, e.g.
    svn co https://code.cor-lab.org/svn/continuumkinematics
  • Build it under Linux or MacOS
    cd continuumkinematics/build
    make install
  • Build it under Windows/MSVC
    cd continuumkinematics
    call project\build_vs.bat


  • During configuration, cmake says Qt qmake not found!. Simply check out where the qmake binary is located in your filesystem and put this in your cmake call:
  • If you get linking errors like undefined reference to `QGLViewer::***', you are probably linking against libqglviewer-qt3 instead of qt4
    • If you don't have the right version of qglviewer around, install it.
    • If cmake still does not configure the correct library, you can manually chose the correct path by setting the variables "QGLVIEWER_*":
      make install
  • When running the example binaries, you get the error message QWidget: Must construct a QApplication before a QPaintDevice
    • An annoying problem that is currently only observed under Windows/MSVC: It seems to happen when QGLViewer is built in release mode, but you build the continuumkinematics code in debug mode, or vice versa.
    • Solution: find out how QGLViewer was built (most likely as release) and set the build-configuration accordingly in the cmake call:

Platform/Compiler support

Currently, the following combinations are explicitly supported and known to work:
  • Ubuntu Linux/GCC with Ubuntu version from 10.04 LTS (Lucid Lynx) and newer, and GCC>=4.3, 32bit as well as 64bit
  • MacOS/CLang3.0
  • Windows 7/MSVC2010, 32bit
The following platforms are known not to work:
  • GCC 4.2 or older
  • MSVC 2008 or older

corcoki.rar (3.86 MB) M. Rolf, 01/13/2012 02:14 PM