What is Choreonoid?

Choreonoid is an open-source integrated GUI software for robots. It is being developed by Shin’ichiro Nakaoka et al of the National Institute of Advanced Industrial Science and Technology (AIST) in Japan. By default, the tool includes a choreography function and a dynamics simulator. Other functionality can be added, as the tool also functions as a framework for developing GUI applications for robots.

Choreonoid has been in development since 2006. On October 2010, a press release was sent out, and it started being offered to the public in November 2011. This page gives a summary of how Choreonoid works.

Using Choreonoid as a dynamics simulator

Choreonoid offers functionality for use as a dynamics simulator for robots.

The physics engine used is the AIST engine developed by AIST. This is based on a constraint-based method, the same used for research and development of the HRP line of bipedal humanoid robots. Choreonoid is also designed to allow for easily embedding other physics engines, among them the Open Dynamics Engine (ODE), Bullet Physics Library, nVidia PhysX, AGX Dynamics and others. The design also makes ample considerations towards efficiency of executing the simulator as a whole, allowing you to draw out the performance of each engine to the fullest.

Virtual robots and their control programs can be connected in a range of ways. Currently, the software supports connecting via its native controller API by which controller programs are implemented as an shared libraries, RT-Components (RT-middleware), and control programs based on the OpenHRP3 interface. Connections via other control programs can be made by implementing their respective plugins.

The tool contains simulation functionality for visual sensors like cameras and laser range sensors, and it allows for using data from those sensors when simulating the actions of a robot. This functionality is included as an optional part of the simulator; a range of other functions can be added.


An example of simulating the HRP-2 humanoid robot rotating a valve in a plant

Using Choreonoid as a choreographing tool

Choreonoid also contains functionality for choreographing. You can use various features to create movement based on keyframe settings while seeing a 3DCG animated robot model onscreen. This feature works with bipedal robots, with the system automatically correcting balance in order to ensure that the robot does not trip and fall even when conducting routines involving the legs. In this way, the user can control the whole movement of a humanoid robot, including its legs, as though animating a CG character.


A movement sample of the HRP-4C humanoid robot created in Choreonoid

The origins of Choreonoid go back to this feature, which gives the software its eponymous name – the idea of “choreographing humanoid robots.”

The Choreonoid framework

Choreonoid also acts as a framework for developing GUI applications for robots, allowing for a range of functionality beyond that described above. We refer to this set of features as the “Choreonoid Framework.”

Conducting simulations and choreography of robots requires a range of functionality that spans internal processing and through to the GUI.

For example:

  • Computation of geometric, movement, and dynamics data for the robot

  • GUIs for displaying, inputting, and editing robot states and movement data

  • Rendering robot models through the use of 3DCG

  • Integrated administration and file processing of data

  • Establishing a connection with the actual robot

The majority of these functions are also essential in the context of other robot applications like motion planning and remote operation. Furthermore, close integration between simulation, choreography, motion planning, remote operation, and other applications allows for more advanced uses.

However, most existing robot applications implement these functions in a standalone context. This requires considerable effort to augment existing functionality with other peripheral features. This is not necessarily a fundamental aspect of the development of various algorithms implicated in robot hardware and movement of robots, so it can at times be an impediment to the development of the same. Given these reasons, it is conversely common, particularly in the development of robots in academic contexts, to supplement the above functionality with prototypes or simple implementations to bridge the gap. However, this approach is not ideal from the standpoint of focusing on the essential aspects of development and making use of those results in a wider applied context.

We developed Choreonoid not only to create individual functionality like simulations and choreographing, but so that its core features, the GUI included, would serve as a ubiquitous framework for the development of robot applications. The result is that Choreonoid not only has a universal set of core functions, but that it supports the addition of new ones through plugins. The simulation and choreography functionality are also implemented as plugins. Plugins also interact with each other, allowing you to leverage existing functionality while expanding the tool with new features.

As seen with OpenRTM and ROS, there are already active efforts underway to “componentize” individual functionality of these types of tools, a key step in creating frameworks that promote the sharing of robotics software and enabling integration. However, other solutions to this problem do not focus on the higher-ordered level of applications – that is, the GUI. Choreonoid’s express intent is acting as a framework in that space.

Supported platforms

The latest version of Choreonoid supports the following operating systems (OSes).

  • Ubuntu Linux

  • Windows

Please refer to the Choreonoid manual for more details.


Choreonoid is distributed under the MIT License. You can use it freely in accordance with the terms of this license.