头文件: cpp/interface/nrc_interface.h
1. robot_movej - 关节空间运动到目标位姿
方法: int robot_movej(SOCKETFD socket_fd, const MoveCmd& move_cmd);
功能描述: 立即下发关节角度数据,驱动机械臂实时运动到目标位置(在线点对点控制)。不依赖作业文件。
参数:
socket_fd:已连接的机械臂控制器句柄,整型格式(int)
move_cmd:需设置以下成员:
- coord:固定0(关节坐标系)
- targetPosValue:需要resize到7维(前6轴角度,第7轴为外部扩展轴,填0)
- velocity、acc、dec、pl
返回值:
使用示例:
C++
bool test_move_joint(const std::vector<double>& angles, int vel = 20, int acc = 50, int dec = 50) {
if (socket_fd_6001_ <= 0) return false;
// 实例化并初始化 MoveCmd 运动命令结构体
MoveCmd cmd;
cmd.coord = 0; // 指定参考坐标系(0通常代表关节坐标系)
cmd.velocity = vel; // 设置实时运动速度百分比
cmd.acc = acc; // 设置实时加速百分比
cmd.dec = dec; // 设置实时减速百分比
cmd.pl = 0; // 设置平滑过渡等级(0代表精准到位,不拐弯)
// 初始化目标位置向量(这里固定预留7维空间以兼容6轴或7轴机器人),并将传入的关节角度安全地复制进去
cmd.targetPosValue.resize(7, 0.0);
for (size_t i = 0; i < angles.size() && i < cmd.targetPosValue.size(); ++i) {
cmd.targetPosValue[i] = angles[i];
}
// 传入控制端口句柄和配置好的指令结构体,调用底层接口驱动机器人立即执行关节运动
int ret = robot_movej(socket_fd_6001_, cmd);
CHECK_RET(ret, "实时关节运动");
return ret == SUCCESS;
}
完整关节空间运动到目标位姿测试代码见使用示例3
2. robot_movel - 笛卡尔空间直线运动到目标位姿
方法: int robot_movel(SOCKETFD socket_fd, const MoveCmd& move_cmd);
功能描述: 立即下发直角坐标数据,驱动机械臂末端沿直线运动到目标位姿。
参数:
socket_fd:已连接的句柄
move_cmd:需设置以下成员:
- coord = 1(直角坐标系)
- targetPosValue 7维:[X(mm), Y(mm), Z(mm), RX(rad), RY(rad), RZ(rad), 0]
- velocity、acc、dec、pl
返回值:
使用示例:
C++
bool test_move_linear(const std::vector<double>& coords, int vel = 20, int acc = 50, int dec = 50) {
if (socket_fd_6001_ <= 0) return false;
// 实例化并初始化 MoveCmd 运动命令结构体
MoveCmd cmd;
cmd.coord = 1; // 指定参考坐标系(1通常代表基坐标系/直角坐标系)
cmd.velocity = vel; // 设置实时运动速度
cmd.acc = acc; // 设置实时加速百分比
cmd.dec = dec; // 设置实时减速百分比
cmd.pl = 0; // 设置平滑过渡等级(0代表精准到位,不拐弯)
// 初始化目标位置向量(预留7维空间),并将传入的直角坐标数据[X, Y, Z, RX, RY, RZ]安全地复制进去
cmd.targetPosValue.resize(7, 0.0);
for (size_t i = 0; i < coords.size() && i < cmd.targetPosValue.size(); ++i) {
cmd.targetPosValue[i] = coords[i];
}
// 传入控制端口句柄和配置好的指令结构体,调用底层接口驱动机器人立即执行直角坐标直线运动
int ret = robot_movel(socket_fd_6001_, cmd);
CHECK_RET(ret, "实时直线运动");
return ret == SUCCESS;
}
完整笛卡尔空间直线运动到目标位姿测试代码见使用示例4