Skip to content

四、轨迹记录与回放(nrc_track.h)

功能概述

轨迹记录与回放功能用于手动示教时记录机器人末端运动轨迹,并可按设定速度回放,适用于喷涂、点胶等需要复现人工轨迹的工艺场景。

基本流程: 开始记录 → 手动移动机器人 → 停止记录 → 保存轨迹 → 回放轨迹

步骤接口说明
1. 开始记录track_record_start设置采样点数与采样间隔
2. 手动示教示教器/点动移动机器人到目标轨迹
3. 停止记录track_record_stop结束轨迹采集
4. 保存track_record_save以名称保存轨迹数据
5. 回放track_record_playback按设定速度复现轨迹

所有接口均提供 _robot 后缀版本,用于指定机器人编号(1-4)。


track_record_start / track_record_start_robot

轨迹记录开始。设置采样参数后开始采集机器人末端轨迹。

函数原型:

cpp
Result track_record_start(SOCKETFD socketFd, double maxSamplingNum, double samplingInterval);
Result track_record_start_robot(SOCKETFD socketFd, int robotNum, double maxSamplingNum, double samplingInterval);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
maxSamplingNumdouble最大采样点数,范围 [200, 12000]
samplingIntervaldouble采样间隔(秒),范围 [0.03, 1]

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 以 5000 个采样点、0.05s 间隔开始轨迹记录
Result result = track_record_start(fd, 5000, 0.05);
if (result == SUCCESS) {
    printf("轨迹记录已开始\n");
    // 此时手动移动机器人进行示教...
}

track_record_stop / track_record_stop_robot

轨迹记录关闭,结束轨迹数据采集。

函数原型:

cpp
Result track_record_stop(SOCKETFD socketFd);
Result track_record_stop_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 示教完成后停止记录
Result result = track_record_stop(fd);

get_track_record_status / get_track_record_status_robot

查询轨迹记录开启状态。

函数原型:

cpp
Result get_track_record_status(SOCKETFD socketFd, bool& recordStart);
Result get_track_record_status_robot(SOCKETFD socketFd, int robotNum, bool& recordStart);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
recordStartbool&输出参数,记录状态:true=开启,false=关闭

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
bool isRecording = false;
Result result = get_track_record_status(fd, isRecording);
if (result == SUCCESS && isRecording) {
    printf("轨迹正在记录中\n");
}

track_record_save / track_record_save_robot

轨迹记录保存,将采集到的轨迹数据以指定名称保存。

函数原型:

cpp
Result track_record_save(SOCKETFD socketFd, std::string trajName);
Result track_record_save_robot(SOCKETFD socketFd, int robotNum, std::string trajName);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
trajNamestd::string保存的轨迹名称

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 将记录的轨迹保存为 "paint_path"
Result result = track_record_save(fd, "paint_path");
if (result == SUCCESS) {
    printf("轨迹保存成功\n");
}

track_record_playback / track_record_playback_robot

轨迹回放,按设定速度复现已保存的轨迹。

函数原型:

cpp
Result track_record_playback(SOCKETFD socketFd, int vel);
Result track_record_playback_robot(SOCKETFD socketFd, int robotNum, int vel);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本
velint回放速度(百分比)

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 以 80% 速度回放已保存轨迹
Result result = track_record_playback(fd, 80);
if (result == SUCCESS) {
    printf("轨迹回放开始\n");
}

track_record_delete / track_record_delete_robot

轨迹清除,删除当前保存的轨迹数据。

函数原型:

cpp
Result track_record_delete(SOCKETFD socketFd);
Result track_record_delete_robot(SOCKETFD socketFd, int robotNum);

参数说明:

参数类型说明
socketFdSOCKETFD连接句柄
robotNumint机器人编号 (1-4),仅 _robot 版本

返回值: SUCCESS(0) 表示成功,负数表示失败。

使用示例:

cpp
// 清除轨迹数据
Result result = track_record_delete(fd);