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 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 dynamics engine used is the AIST engine developed by AIST. This is based on a constrained 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 dynamics engines, among them the Open Dynamics Engine (ODE), Bullet Physics Library, nVidia PhysX, 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.

../_images/hrp2-plant-simulation.png

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.

../_images/kickmotionsample.jpg

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 (1.5) supports the following operating systems (OSes).

  • Ubuntu Linux
  • Windows

The versions of the above OSes that we have confirmed as working are Ubuntu Linux 14.04 and 16.04 and Windows 7, 8 (8.1), and 10. Both 32-bit and 64-bit versions of these operating systems work.

Choreonoid’s source code is built with portability in mind, so it may also run on other OSes. Choreonoid has been confirmed working up to version 1.4 on Mac OS, but versions thereafter are not working. We believe some adjustments must be made in order to get it working on Mac.

In terms of hardware, modern-day computers should generally not have a problem running the software. The exact hardware requirements depend on your intended objectives, but a basic sample rubric follows.

  • CPU
You should not have any difficulty running a range of features if you have an Intel Core i Series or equivalent multi-core CPU. In order to run the simulator more quickly, the faster your CPU is, the better performance will be. The more cores you have, the greater the likelihood of processing being faster, but some functions do not make full use of multiple cores, so this does not apply to all cases.
  • RAM
While the desired amount of RAM differs based on the models, simulations, and motion data you plan to use, provided they are not exceedingly large in scale, having enough memory to run your OS smoothly should suffice. If you are running larger projects, you will need more RAM.
  • GPU
You will need a GPU that supports OpenGL through hardware acceleration. Your video card or OpenGL drivers may cause the 3DCG rendering and animation of robot models to not be as smooth as intended. Recent Intel Core i Series processors with embedded GPUs have sufficient graphics rendering capability, so these should generally not be a problem.

License

Choreonoid is being developed as open-source software under the MIT License. (Versions through 1.4 were based on LGPL, but since 1.5, we have changed to the MIT License for its more flexible terms.)

Generally speaking, you can use, distribute, and modify the software free of charge. The sale and distribution of modified versions is acceptable provided you comply with the license and display copyright terms, in which case you need not disclose the source code. In this way, the license allows for a great degree of flexibility.