/**

\page SequencePlayer

\section introduction Overview

This component plays motion patterns.

\subsection interpolation1 Interpolation
This component interpolates motion patterns between key frames in hoff-arbib interpolation or linear interpolation (\ref OpenHRP::SequencePlayerService::interpolationMode). 

\subsection interpolation2 Partial interpolation
This component can interpolate motion patterns at specific joint groups. 

\subsection inversekinematics Simple inverse kinematics
Simple inverse kinematics is implemented (\ref OpenHRP::SequencePlayerService::setTargetPose). 

\subsection loadpattern LoadPattern
This component can output reference motion sequence from input motion
sequence files using (\ref OpenHRP::SequencePlayerService::loadPattern). <br>
Input files should be <code>[basename].[extensions]</code>. Not all files are
required, for example, users can use loadPattern just for <code>.pos</code>. <br>
All files includes timestamp in seconds and data sequence. If 
the differences between timestamps <code>dt</code>, data sequence is interpolated.<br>
Basically, all data corresponds to Output Ports. To learn more about
this, please see Output Ports in this page.
<table>
  <tr><td>Extention</td><td>Description</td><td>Data
  length</td><td>Data format</td><td>unit of data sequence</td></tr>
  <tr><td>.pos</td><td>Reference joint angles</td><td>Length of joint angles</td><td>TimeStamp JointAngle1 ... JointAngleN</td><td>[rad]</td></tr>
  <tr><td>.zmp</td><td>Reference ZMP in the base frame</td><td>3</td><td>TimeStamp ZMPx ZMPy ZMPz</td><td>[m]</td></tr>
  <tr><td>.gsens</td><td>Reference acceleration in the sensor frame</td><td>3</td><td>TimeStamp AccelX AccelY AccelZ</td><td>[m/^2]</td></tr>
  <tr><td>.hip</td><td>Reference base link RPY in the world frame</td><td>3</td><td>TimeStamp Roll Pitch Yaw</td><td>[rad]</td></tr>
  <tr><td>.waist</td><td>Reference base link 3D pos and RPY in the world frame</td><td>6</td><td>TimeStamp X Y Z Roll Pitch Yaw</td><td>[m] and [rad]</td></tr>
  <tr><td>.torque</td><td>Reference joint torques</td><td>Length of joint torques</td><td>TimeStamp JointTorque1 ... JointTorqueN</td><td>[Nm]</td></tr>
  <tr><td>.wrenches</td><td>Reference force/torque in the sensor frame</td><td>6 x [force/torque sensor number]</td><td>TimeStamp Fx0 Fy0 Fz0 Tx0 Ty0 Tz0 ... </td><td>[N] and [Nm]</td></tr>
  <tr><td>.optionalData</td><td>Optional data</td><td></td><td>TimeStamp Data1 ... DataN </td><td></td></tr>
</table>
<br>

<table>
<tr><th>implementation_id</th><td>SequencePlayer</td></tr>
<tr><th>category</th><td>example</td></tr>
</table>

\section dataports Data Ports

\subsection inports Input Ports

<table>
<tr><th>port name</th><th>data type</th><th>unit</th><th>description</th></tr>
<tr><td>qInit</td><td>RTC::TimedDoubleSeq</td><td>[rad]</td><td>initial joint angles</td></tr>
<tr><td>basePosInit</td><td>RTC::TimedPoint3D</td><td>[m]</td><td>initial position of the base link</td></tr>
<tr><td>baseRpyInit</td><td>RTC::TimedOrientation3D</td><td>[rad]</td><td>initial Roll-Pitch-Yaw angles of the base link</td></tr>
<tr><td>zmpRefInit</td><td>RTC::TimedPoint3D</td><td>[m]</td><td>initial ZMP reference</td></tr>
</table>

\subsection outports Output Ports

<table>
<tr><th>port name</th><th>data type</th><th>unit</th><th>description</th></tr>
<tr><td>qRef</td><td>RTC::TimedDoubleSeq</td><td>[rad]</td><td>reference joint angles</td></tr>
<tr><td>tqRef</td><td>RTC::TimedDoubleSeq</td><td>[Nm]</td><td>reference joint torques</td></tr>
<tr><td>zmpRef</td><td>RTC::TimedPoint3D</td><td>[m]</td><td>reference ZMP in the base link frame</td></tr>
<tr><td>accRef</td><td>RTC::TimedAcceleration3D</td><td>[m]</td><td>reference acceleration of the sensor in the sensor frame </td></tr>
<tr><td>basePos</td><td>RTC::TimedPoint3D</td><td>[m]</td><td>reference position of the base link in the world frame</td></tr>
<tr><td>baseRpy</td><td>RTC::TimedOrientation3D</td><td>[rad]</td><td>reference Roll-Pitch-Yaw angles of the base link in the world frame</td></tr>
<tr><td>name of force/torque sensor defined in a VRML model + "Ref", such as "rhsensorRef"</td><td>RTC::TimedDoubleSeq</td><td>[N],[Nm]</td><td>reference force/torque in the sensor frame</td></tr>
<tr><td>optionalData</td><td>RTC::TimedDoubleSeq</td><td></td><td>optional data sequence</td></tr>
</table>

\section serviceports Service Ports

\subsection provider Service Providers

<table>
<tr><th>port name</th><th>interface name</th><th>service type</th><th>IDL</th><th>description</th></tr>
<tr><td>SequencePlayerService</td><td>service0</td><td>SequencePlayerService</td><td>\ref OpenHRP::SequencePlayerService</td><td></td></tr>
</table>

\subsection consumer Service Consumers

N/A

\section configuration Configuration Variables

<table>
<tr><th>name</th><th>type</th><th>unit</th><th>default value</th><th>description</th></tr>
<tr><td>debugLevel</td><td>int</td><td></td><td>0</td><td>debug level</td></tr>
</table>

\section conf Configuration File

<table>
<tr><th>key</th><th>type</th><th>unit</th><th>description</th></tr>
<tr><td>dt</td><td>double</td><td>[s]</td><td>sampling time</td></tr>
<tr><td>model</td><td>std::string</td><td></td><td>URL of a VRML model</td></tr>
</table>

 */
