本文へスキップ

マクロファイル形式

このセクションでは、記録された .hrpr マクロファイルの形式について、さらに詳しく見ていきます。

記録された .hrpr ファイルを開くと、まずヘッダーフィールドが表示され、その後に時間順に整理されたモーションデータが続きます。

ヘッダーには、以下のキーが含まれます:

  • FORMAT_VERSION: .hrpr ファイル形式のバージョンを指定します。
  • PROGRAM_NAME: ファイルが保存されている完全なパスを指定します。 \わあ / 区切り文字が混在している場合や //が繰り返されても、ファイルの解析には影響しません。
  • DATE: レコードが作成された日付を指定します。
  • SAMPLE_RATE: 記録周波数を指定します。HARPでは、**1秒あたり100サンプル(100 Hz)**で記録します。
  • POSITION_LEADER: 記録中に位置リーダーとして使用された Inverse3 デバイスを識別します。
  • ORIENTATION_LEADER: 記録の中で方向指示役として用いられた ヴァースグリップ または ルコ デバイスを識別します。
  • FOLLOWERS: 記録に含まれるフォロワーデバイスを一覧表示します。例えば cg_0は 対照群 0に該当し、角括弧内の値は、そのコントロールグループ内のフォロワースロットを識別します。
  • DESCRIPTION: 記録に関連付けられたオプションである自由形式のテキスト説明を保存します。

ヘッダーの後に、以下の表に示された形式で記録されたモーションデータが保存されます。

フィールド意味例
N#フレーム番号N1
N169
t#ミリ秒単位のUnixタイムスタンプで表された時刻t1788878409547
{...}1フレームを格納します。各フォロワー行はコンマ(,)で終わり、ファイルを再生するには少なくとも1つの完全なブロックが必要です。{cg_0::Follower(0): ...
cg_0::Follower(1): ...}
X Y Zメートル単位の工具位置座標X 0.1183887 Y -0.0375092 Z 0.1076392
rW rX rY rZクォータニオンで表したツールの向きrW 0.1575889 rX -0.160 rY 0.973 rZ -0.051
F#.#####線速度(送り速度)、単位 m/sF0.0010804
F0.0150
Fa#.#####角速度(フィードレート)、単位 rad/sFa0.2586200
Fa1.0053328
J6[#,#,#,#,#,#]ラジアン単位の関節角度J6[0.403,0.157,1.000,-0.936,0.214,0.977]
JV6[#,#,#,#,#,#]関節速度JV6[0.000 0.000 0.000 0.000 0.000 0.000]

行単位の解析方式​

  • X、Y、Zコマンドが指定された行は、ロボットを対応する絶対直交座標の位置に移動させます。
  • 座標が 省略された場合は ロボットは、その軸の現在の値を維持します。
    • たとえば、コマンドでXが省略された場合、再生時にはYや Zのように指定された軸のみが更新され、現在のXの位置はそのまま維持されます。
  • このファイル形式は、意図的に柔軟に設計されており、各行には変更が必要な軸や値のみを含めることができます。
  • 従来の .hrpr ファイルを編集する際は 名前を付けて保存を使用して元のファイルを保持し、修正したマクロを別のバージョンとして作成してください。

例​

形式​

次の例は、ヘッダー情報と記録されたモーションサンプルを含む、記録された .hrpr マクロファイルの一部を以下に示します:

(FORMAT_VERSION: 1)
(PROGRAM_NAME: C:\Users\demo\Documents\user\projects\demo\raw//2026-8-14_12-13-19.hrpr)
(DATE: 2026/09/14)
(SAMPLE_RATE: 100)
(POSITION_LEADER: 051D)
(ORIENTATION_LEADER: 1451)
(FOLLOWERS:
cg_0::Follower(0): Mecademic Industrial Robotics SERIAL (arm);
cg_0::Follower(1): Mecademic Industrial Robotics PARALLEL (end_effector);
)
(DESCRIPTION: a story of two machines)
N1 t1789402399210 {
cg_0::Follower(0): X0.1183887 Y0.0375092 Z0.1076392 rW0.1575889 rX-0.160 rY0.973 rZ-0.051 F0.0008606 Fa0.9414008 J6[0.403,0.157,1.000,-0.936,0.214,0.977] JV6[0.000,0.000,0.000,0.000,0.000,0.000] ,
cg_0::Follower(1): J1[4.800] ,
}
...

安全Z高さ​

この例は N4 行に1つ Z軸 コマンドを追加することで、他の軸を変更せずにロボットを指定されたZ位置に移動させる方法を示します。

省略された軸の値は保持されるため、この段階ではZ軸のみが更新されます。

N1 t1 {
0: X0.184 Y0.004 Z0.141 rW0.0498 rX-0.032 rY0.998 rZ-0.024 F0.00200 Fa0.005
}
N2 t10 {
0: X0.184 Y0.022 Z0.141 rW0.0498 rX-0.032 rY0.998 rZ-0.024
}
N3 t20 {
0: X0.184 Y0.022 Z-0.052 rW0.049 rX-0.032 rY0.998 rZ-0.024
}
N4 t31 {
0: Z0.600
}
N5 t41 {
0: X-0.005 Y0.022 Z-0.6 rW0.049 rX-0.032 rY0.998 rZ-0.024 F0.00010 Fa0.400
}
N6 t51 {
0: X-0.005 Y-0.054 Z0.000 rW0.049 rX-0.032 rY0.998 rZ-0.024
}

XY移動​

この例では、XコマンドとYコマンドを組み合わせて使用し、ロボットをこれら2つの軸に沿ってのみ移動させる方法を示しています。

N5 線では、X軸とY軸の値のみが更新されます。省略された軸はすべて、現在の値を維持します。

N1 t1 {
0: X0.184 Y0.004 Z0.141 rW0.0498 rX-0.032 rY0.998 rZ-0.024 F0.00200 Fa0.005
}
N2 t10 {
0: X0.184 Y0.022 Z0.141 rW0.0498 rX-0.032 rY0.998 rZ-0.024
}
N3 t20 {
0: X0.184 Y0.022 Z-0.052 rW0.049 rX-0.032 rY0.998 rZ-0.024
}
N4 t31 {
0: X0.184 Y0.022 Z-0.600 rW0.049 rX-0.032 rY0.998 rZ-0.024 F0.00010 Fa0.400
}
N5 t41 {
0: X-0.005 Y0.022
}
N6 t51 {
0: X-0.005 Y-0.054 Z0.000 rW0.049 rX-0.032 rY0.998 rZ-0.024
}

マクロの最適化​

次の例は、各コマンドで変更が必要な値のみを含む、最適化されたマクロを示しています。

  • ロボットの方向は、シーケンス全体を通じて変わりません。
  • 最初のコマンドは、指定されたフィードレートを使用して、ロボットを目標ポーズ全体まで移動させます。
  • N2は Y軸のみを更新します。
  • N3と N4は Z軸のみを更新します。
  • N5は X軸を更新し、フィードレートを変更します。
  • N6は Y軸と Z軸をすべて更新します。

変更されない値を省略することで、マクロがより簡潔になり、読みやすさや修正しやすさが向上します。

N1 t1 {
0: X0.184 Y0.004 Z0.141 rW0.0498 rX-0.032 rY0.998 rZ-0.024 F0.00200 Fa0.005
}
N2 t10 {
0: Y0.022
}
N3 t20 {
0: Z-0.052
}
N4 t31 {
0: Z-0.600
}
N5 t41 {
0: X-0.005 F0.00010 Fa0.400
}
N6 t51 {
0: Y-0.054 Z0.000
}