Personal tools
You are here: Home SLMC Home Research Optimisation and Kinematics

Kinematics & Optimisation



The EXtensible Optimization Toolset (EXOTica) is a library for easy creation of tools for optimisation, planning, and control. This library creates a framework within which the user can define tasks (representations) and task hierarchies in form of a stack of task variables. These are then used within planning algorithms such as iLQG, AICO or RRT for defining the problem. EXOTica makes minimal assumptions about the methods used for motion synthesis. It is modular and easily extensible with novel planning algorithms and representations (e.g. Writhe and Interation Mesh). It is backed by an efficient, batch-query Kinematics computation library  based on the existing Orocos KDL project, extended to suite the more advanced needs of our group (e.g. underactuated and floating-base systems).

EXOTica is intended to be as standalone as possible, with minimal external dependencies. This allows them to be used virtually on any system. However, they are also developed for easy integration within the Robot Operating System (ROS) framework, allowing us to take advantage of the numerous tools developed by the ROS community.



The EXOTica library is a generic Optimisation Toolset for Robotics platforms, written in C++ and with bindings for Python. Its motivation is to provide a more streamlined process for developing algorithms for such tasks as Inverse-Kinematics and Trajectory Optimisation. Its design advocates:
  • Modularity: The library is developed in a modular manner making use of C++’s object-oriented features (such as polymorphism). This allows users to define their own components and ’plug them into’ the existing framework. The end-effect is that an engineer need not implement a whole system whenever he needs to change a component, but rather can re-implement the specific functionality and as long as he follows certain guidelines, retain the use of the other modules.
  • Extensibility: The library is also heavily extensible, mainly thanks to the modular design. In addition, the library makes very minimal prior assumptions about the form of the problem so that it can be as generic as possible.
  • Platform Independence: The toolset is designed to operate on a variety of robotic platforms, and as such is written with platform independence in mind. It is entirely OS-agnostic and the only library dependencies are Eigen and Boost.
  • Integration with ROS: Although it is not necessary, the library is designed to be fully integrated with ROS with minimal effort.


The Library is meant to be used in a wide range of kinematical optimisation problems. This could range from weighted inverse kinematics to interaction meshes. The library should also in theory be extensible to dynamic optimisation.

System Overview

The figure below is a very high-level architectural description of EXOTica.
The library itself (shown with a blue tint) consists of two major specifications, both of which are abstract classes. The first is the Problem Solver which defines the way optimisation should proceed: examples could include iLQG, AICO or simple IK. The other is the Task Definition which describes the task itself by providing two necessary functions to compute the forward map from Configuration space (say joint angles in IK) to Task space (say end-effector positions in IK). The tasks themselves can describe a complete trajectory. In the above diagram, Kinematica (in grey) is also shown to indicate its usage within EXOTica, however, the former is not a necessary component of the latter. Currently all paramaters have to be coded in manually, but work is underway to initialise the whole problem definition from XML. Using the library then involves passing in an initial state and requesting a solution to the problem, which may consist of a single configuration or complete trajectory.


The source code and documentation is hosted on GitHub. EXOTica uses the catkin-tools build system and can be built using any C++11 compatible compiler. We support both ROS Indigo and Kinetic.
Kinematica is EXOTica's batch-query kinematics computation library built on top of KDL. It utilizes the KDL framework to represent robot segments and allow parsing of URDF files. However, it extends this framework through: 
  • Providing a Jacobian and Forward Kinematics solver for arbitrary tree structures rather than just chains, including those with fixed, planar, and floating-base roots.
  • Providing a more efficient Jacobian/Forward Kinematics solver for problems requiring the same set of queries repetitively (while maintaining support for one-off computations).
  • Allowing the arbitrary specification of the root link, which is not necessarily the same as the URDF root.


The Library can be used for any arbitrary kinematic structure, given that one has access to either the urdf-specification or the KDL tree. The possibility to change the root frame greatly increases its applicability, especially for Jacobian computations. In this case and to avoid confusion, the library convention is that whatever the choice of the root frame, the segments:
  1. Always have their origin frame at their base, oriented with the tip of the original parent.
  2. Always point in the same direction as defined by the original URDF/KDL Tree.
  3. Are always defined by the pose of their tip, whether this is in a global or local reference frame.


Dr. Vladimir Ivan (


Document Actions