Formation of OpenHRP

OpenHRP is a software that formed as a distributed network system which consists of following server group. However, all the operations correspond to these servers are handled by GrxUI, the standard front-end GUI of OpenHRP. Therefore noramlly users won't have to worry about the existance of these servers.



The DynamicsSimulatorr calculates the forward dynamics of the link system, integrates the obtained acceleration of the joint,and updates the joint speed and joint value. It can handle arbitrary open-link-mechanisms and close-link-mechanicsms. Moreover, when it detects a collision between links, and if there is relative velocity between the links, first it adjust the relative velocity to zero via collision calculation, and then calculates the necessary contact-power not to develope relative acceleration. A part of the result of dynamics calculation can be taken out as sensor output.


The CollisionDetector server detects contact between the robot and the environment using e geometric model expressed as triangle mesh. It is called from the DynamicsSimulator server during the simulation execution. OPCODE is used as the collision detection algorithm. User of DynamicsSimulator server does not need to call the CollisionDetector server directly, but it is called from the DynamicsSimulator if necessary. Then the CollisionDetector calculates the contacts and the vector of the reaction-force.


ModelLoader server loads model files which contain robot shape(link structure) and mechanism. It goes through the text based model file and convert the data structure in to manageable format upon programming environment. ModelLoader can be used all over the system.


The VisionSimulator server simulates the visual sensor(camera) attached to the robot.


The Controller used to mount the control program of the robot. It links with each robot and manipulate the robot behavior during the simulation. Developing a Controller allows the user to simulate an original user-defined control program.


OpenHRP has a distributed object system implementation developed based on CORBA (Common Object Request Broker Architecture). Because all the servers are implemented as CORBA objects in OpenHRP, it is possible to run each server on separate machines and distribute the calculation load. Since the communication between servers is done by CORBA, OpenHRP has a platform independent system configuration. Therefore we succeeded with developing each server on most appropriate programming language and OS, and finally connecting them together. Currently, Windows and Linux versions of OpenHRP are available.

The IDL files which describe the interface of each server, is necessary to use a server. In OpenHRP, these IDL files are placed in "idl/OpenHRP" directory. When IDL files are given to IDL compiler, it can generate the stubs and skeletons for each programming language.

About running simulation

The following three elements are necessary to run the simulation on OpenHRP.


The model expresses dynamics parameters and the shape of the robot and the environment on the simulator, by using VRML file. For more details about file format, please refer "Robot, Environmental Model Define Format" and about building models, refer "Building Models using GrxUI".


The program that operates the robot represents by model, is controller. The operation-control rules/regulations are defined here. In OpenHRP, the controller is created using OpenRTM. For more details on this procedure, please refer "Controller Building Guide (Walking Pattern)".


As described above, GrxUI controls models and controllers by becoming a client of various servers. Then, the script that directs this control is called "Project". Project script is edited by GrxUI. For more details about projects, please refer "Creating Simulation Project".


The Simulation allows to configure the simulation environment settings such as duration of simulation execution, gravity settings, etc.


The WorldState sets up the time interval which records a result.


This refers to the same model we explained above. But here you decide which model to use, whether to set as environment-model or robot-model and set joint angles, etc.


The collision-pair specifies the collision calculation. You can select, between which models or which links the collision calculation to be done with.