매크로 파일 형식
이 섹션에서는 기록된 .hrpr 매크로 파일 형식을 좀 더 자세히 살펴보겠습니다.
기록된 .hrpr 파일을 열면, 먼저 헤더 필드가 나타나고, 그 뒤에 시간 순서대로 정리된 기록 모션 데이터가 이어집니다.
헤더에는 다음 키가 포함됩니다:
FORMAT_VERSION:.hrpr파일 형식의 버전을 지정합니다.PROGRAM_NAME: 파일이 저장된 전체 경로를 지정합니다.\와/구분자가 혼용되거나//이 작업이 반복되더라도 파일 해석에는 영향을 미치지 않습니다.DATE: 기록이 생성된 날짜를 지정합니다.SAMPLE_RATE: 기록 주파수를 지정합니다. HARP에서는 **초당 100 샘플(100 Hz)**로 기록합니다.POSITION_LEADER: 기록 과정에서 위치 리더로 사용된 Inverse3 장치를 식별합니다.ORIENTATION_LEADER: 기록 과정에서 방향 안내자로 사용된 VerseGrip 또는 루코 장치를 식별합니다.FOLLOWERS: 기록에 포함된 팔로워 장치를 나열합니다. 예를 들어cg_0은 대조군 0에 해당하며, 대괄호 안의 값은 해당 컨트롤 그룹 내의 팔로워 슬롯을 식별합니다.DESCRIPTION: 기록과 관련된 선택 사항인 자유 형식 텍스트 설명을 저장합니다.
헤더 다음에는 아래 표에 설명된 형식으로 기록된 모션 데이터가 저장됩니다.
| 필드 | 의미 | 예시 |
|---|---|---|
| N# | 프레임 번호 | N1 N169 |
| 티# | 밀리초 단위의 유닉스 타임스탬프로 표시된 시간 | t1788878409547 |
| {...} | 한 프레임을 포함합니다. 각 팔로워 줄은 쉼표(,)로 끝나며, 파일을 재생하려면 최소한 하나의 완전한 블록이 필요합니다. | {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 |
| 에프#.##### | 선형 속도(이송 속도), 단위 m/s | F0.0010804 F0.0150 |
| 파#.##### | 각속도(피드레이트), 단위 rad/s | Fa0.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 줄에 하나 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 명령을 함께 사용하여 로봇이 해당 두 축을 따라만 이동하도록 하는 방법을 보여줍니다.
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
}