(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Introduction to Programming Hiro / NEXTAGE OPEN

Description: Introduction to Various API options to start programming for Hiro (Open) / NEXTAGE OPEN robot.

Keywords: Hiro, NEXTAGE, NXO, dual-arm, industrial robot

Tutorial Level: BEGINNER

Next Tutorial: Programming Hiro/NEXTAGE OPEN in OpenRTM

NOTE: All the tutorials available under the URL http://wiki.ros.org/rtmros_nextage/Tutorials are applicable to the multiple products of Kawada Industries; Hiro (only with the one that opensource software is installed) and NEXTAGE OPEN. To simplify the notation in the rest of the tutorials, we use HiroNXO to appoint the aforementioned robots.

More than five APIs are available via ROS, RTM


  • Fig. (click to magnify) API diagram for Hiro/NEXTAGE OPEN. You can see that there are multiple interfaces, more from ROS than from HIRONX. For both Hiro (open) and NEXTAGE OPEN, HIRONX works as its main RTM-based python API, and it is the most featured interface for this robot among others, but ROS interface is also actively being developed (as of Sep 2014).

There's a tutorial for each interface in the diagram as follows. Numbers correspond:

  1. Programming via NXO RTM Interface (using hrpsys API in python)

  2. Programming via NXO ROS python Interface using joint_trajectory_action interface

  3. Programming via MoveIt Python Interface

  4. Programming via MoveIt C++ Interface (TBA)

  5. Programming via low-level ROS I/F (actionlib, JointTrajectoryAction) (TBA)

  6. Programming via NXO ROS C++ Interface (TBA)

Also general tutorial:

Which API to use

HiroNXO 3D model coordination

Coordinate at end effector

With lack of universal convention for the coordinate axis for the end effectors, HiroNXO employs the following concept (assuming the arms are at goInitial pose): roll axis heads toward above, pitch leftward (looking from the robot) and yaw points toward the robot itself, like the image below.


  • Fig2. Despite that the tf frames in the figure are the links at the tip of both arms, not joints nor EEFs themselves, this should give you an idea of the coordinate direction explained above. Each arrow representation follows RViz convention. That is, Red:Green:Blue = Roll:Pitch:Yaw.

Ref. More info from the original developer.

Confusion with certain commands

HIRONX.setTargetPose takes a tf frame as a reference (as an argument frame_name). By default it is set to WAIST frame, which orients as you see in the image (x+ axis to the front, y+ axis to the left, z+ axis to above).

waist frame

With this in mind, the following setTargetPose commands rotates the right hand about yaw axis w.r.t WAIST frame.

robot.setTargetPose('rarm', [0.32, -0.18, 0.06], [-3, -1.5, 3.0], tm=3)
robot.setTargetPose('rarm', [0.32, -0.18, 0.06], [-3, -1.5, 4.0], tm=3) 

Wiki: rtmros_nextage/Tutorials/Programming (last edited 2016-02-17 01:03:08 by IsaacSaito)