- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
实时运动控制接口
头文件:include/tl_interface.h
相关示例代码:examples\cpp\ex_move_control.cpp
1. robot_movej - 关节空间运动到目标位姿
方法:Result robot_movej(SOCKETFD socketFd, MoveCmd moveCmd);
功能描述:立即下发关节角度数据,驱动机械臂实时运动到目标位置(在线点对点控制)。不依赖作业文件(该功能需要在示教模式下使用)。
参数:
- socketFd:已连接的句柄。
- moveCmd:运动命令结构体,需设置以下成员:
- targetPosType:目标位置类型,PosType 枚举(data / PType / E_TYPE / RP_TYPE / AP_TYPE / GPType / GEType)
- targetPosName:目标位置名称(使用 P 变量模式时可为空)
- coord:坐标系,Coord 枚举(JOINT / BASE / TOOL / USER),范围 0~3
- velocity:速度,范围 0 < velocity ≤ 100,单位 %
- acc:加速度,范围 0 < acc ≤ 100
- dec:减速度,范围 0 < dec ≤ 100
- pl:平滑度(0 表示精确到达)
- targetPosValue:目标位置数据,n 个轴就赋值前 n 位数组,其余置 0;关节坐标下单位为度
返回值:
- 0:成功。
- 非0:失败(如超限位、未使能等)。
使用示例:
C++
// MoveJ 运动控制
tl::MoveCmd cmd;
cmd.targetPosType = tl::PosType::PType;
cmd.targetPosName = "";
cmd.coord = tl::Coord::JOINT; // 关节坐标系
cmd.velocity = 40; // 速度,单位 %
cmd.acc = 10;
cmd.dec = 10;
cmd.pl = 0; // 精确到达
cmd.targetPosValue = std::vector<double>{
20.0, 10.0, -10.0, 0.0, 0.0, 0.0, 0.0}; // 关节坐标下单位为度
auto ret = tl::robot_movej(socket_fd, cmd);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] MoveJ运动控制失败,错误码: " << ret << std::endl;
return -1;
}
// 等待运动到位
wait_motion_done(socket_fd, 30);
std::cout << "[信息] MoveJ运动控制成功" << std::endl;
2. robot_movel - 笛卡尔空间直线运动到目标位姿
方法:Result robot_movel(SOCKETFD socketFd, MoveCmd moveCmd);
功能描述:立即下发直角坐标数据,驱动机械臂末端沿直线运动到目标位姿。
参数:
- socketFd:已连接的句柄。
- moveCmd:运动命令结构体,需设置以下成员:
- targetPosType:目标位置类型,PosType 枚举(data / PType / E_TYPE / RP_TYPE / AP_TYPE / GPType / GEType)
- targetPosName:目标位置名称(使用 P 变量模式时可为空)
- coord:坐标系,Coord 枚举(JOINT / BASE / TOOL / USER),范围 0~3
- velocity:速度,范围 0 < velocity ≤ 1000,单位 mm/s
- acc:加速度,范围 0 < acc ≤ 100
- dec:减速度,范围 0 < dec ≤ 100
- pl:平滑度(0 表示精确到达)
- targetPosValue:目标位置数据,直角坐标下位移单位 mm、旋转单位弧度,如 [X, Y, Z, RX, RY, RZ]
返回值:
- 0:成功。
- 非0:失败(如超限位、未使能等)。
使用示例:
C++
// MoveL 运动控制
tl::MoveCmd cmd;
cmd.targetPosType = tl::PosType::PType;
cmd.targetPosName = "";
cmd.coord = tl::Coord::BASE; // 基坐标系(直角)
cmd.velocity = 40; // 速度,单位 mm/s
cmd.acc = 10;
cmd.dec = 10;
cmd.pl = 0;
cmd.targetPosValue = std::vector<double>{
280, 90.0, 270, 3.14, 0.0, 0.0}; // 直角坐标下位移单位 mm,旋转单位弧度
auto ret = tl::robot_movel(socket_fd, cmd);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] MoveL运动控制失败,错误码: " << ret << std::endl;
return -1;
}
// 等待运动到位
wait_motion_done(socket_fd, 30);
std::cout << "[信息] MoveL运动控制成功" << std::endl;
3. robot_go_home - 机器人回原点(home)
方法:Result robot_go_home(SOCKETFD socketFd);
功能描述:回到设定的零点。
参数:
- socketFd:已连接的句柄。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
C++
// 回到设定的零点
auto ret = tl::robot_go_home(socket_fd);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 回到零点失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 机器人回到零点成功" << std::endl;
4. robot_go_to_reset_position - 机器人回到复位位置
方法:Result robot_go_to_reset_position(SOCKETFD socketFd);
功能描述:回到控制器预设的复位点。
参数:
- socketFd:已连接的句柄。
返回值:
- 0:成功。
- 非0:失败(如控制器未配置复位点)。
使用示例:
C++
// 回到控制器预设的复位点
auto ret = tl::robot_go_to_reset_position(socket_fd);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 回到复位点失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[信息] 机器人回到复位位置成功" << std::endl;
