- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
基础状态查询接口
头文件:include/tl_interface.h
相关示例代码:examples\cpp\ex_info_query.cpp
1. get_current_position - 获取机械臂当前坐标信息
方法:Result get_current_position(SOCKETFD socketFd, Coord coord, std::vector< double >& pos);
功能描述:获取机械臂当前在指定坐标系下的位置数据。
参数:
- socketFD:已连接的句柄。
- coord 坐标系 Coord::JOINT / Coord::BASE / Coord::TOOL / Coord::USER(分别对应关节,直角,工具,用户)。
- pos:输出参数,存储位置数据(长度自动适配);需要说明,当坐标系为直角坐标系时,返回 [X,Y,Z,RX,RY,RZ](mm, rad),姿态角统一为弧度,与运动指令的弧度契约一致。
返回值:
- 0:成功。
- 非 0:失败。
使用示例:
// ----获取机械臂当前坐标----
std::cout << "[INFO] **********获取机械臂当前坐标**********" << std::endl;
tl::Coord coord = tl::Coord::JOINT;
std::vector<double> current_position;
auto ret = tl::get_current_position(socket_fd, coord, current_position);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取机械臂当前坐标失败,程序退出!" << std::endl;
return -1;
}
std::cout << "[INFO] 机械臂当前坐标: ";
for (const auto& pos : current_position) {
std::cout << pos << " ";
}
std::cout << std::endl;
std::cout << std::endl;
2. get_robot_running_state - 获取机器人运行状态
方法:Result get_robot_running_state(SOCKETFD socketFd, RunState& status);
功能描述:获取当前作业文件的运行状态,执行前需要延时0.1秒。
参数:
- socketFd:已连接的句柄。
- status 输出:RunState::STOP(停止)/ RunState::PAUSE(暂停)/ RunState::RUNNING(运行)
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// ----获取机械臂运行状态----
std::cout << "[INFO] **********获取机械臂运行状态**********" << std::endl;
tl::RunState status;
ret = tl::get_robot_running_state(socket_fd, status);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取机械臂运行状态失败,程序退出!" << std::endl;
return -1;
}
switch (status)
{
case tl::RunState::STOP:
std::cout << "[INFO] 机械臂处于停止状态 (status = " << static_cast<int>(status) << ")" << std::endl;
break;
case tl::RunState::PAUSE:
std::cout << "[INFO] 机械臂处于暂停状态 (status = " << static_cast<int>(status) << ")" << std::endl;
break;
case tl::RunState::RUNNING:
std::cout << "[INFO] 机械臂处于运行状态 (status = " << static_cast<int>(status) << ")" << std::endl;
break;
default:
break;
}
std::cout << std::endl;
3. get_servo_state - 获取伺服状态
方法:Result get_servo_state(SOCKETFD socketFd, ServoState& status);
功能描述:获取机械臂当前伺服状态信息。
参数:
- socketFd:已连接的句柄。
- status 输出:ServoState::STOP / READY / ALARM / RUNNINGstatus (分别对应停止状态, 就绪状态, 报警状态, 运行状态)
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 2. 检查伺服状态
tl::ServoState state;
auto ret = tl::get_servo_state(socket_fd, state);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取伺服状态失败: " << ret << std::endl;
return;
}
std::cout << " [信息] 当前伺服状态: " << static_cast<int>(state)
<< " (STOP=停止 READY=就绪 ALARM=报警 RUNNING=运行)" << std::endl;
if (state == tl::ServoState::ALARM) {
std::cerr << "[ERROR] 伺服处于报警状态,无法上电,请排查报警原因后重试" << std::endl;
return;
}
if (state == tl::ServoState::RUNNING) {
std::cout << "[INFO] 机械臂已在使能上电状态" << std::endl;
return;
}
// 3. 上电流程
if (state == tl::ServoState::STOP) {
std::cout << " [信息] 伺服处于停止状态,设置就绪..." << std::endl;
ret = tl::set_servo_state(socket_fd, tl::ServoState::READY);
if (ret != tl::Result::SUCCESS && ret != tl::Result::OPERATION_NOT_ALLOWED) {
std::cerr << "[ERROR] 设置伺服就绪失败: " << ret << std::endl;
return;
}
std::this_thread::sleep_for(std::chrono::milliseconds(500));
}
4. get_current_mode - 获取机器人当前模式
方法:Result get_current_mode(SOCKETFD socketFd, RobotMode& mode);
功能描述:获取机械臂当前模式。
参数:
- socketFd:已连接的句柄。
- mode 输出:RobotMode::TEACH(示教)/ RobotMode::REMOTE(远程)/ RobotMode::RUN(运行)
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 先获取当前模式
tl::RobotMode current_mode;
tl::Result ret = tl::get_current_mode(sock, current_mode);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取当前模式失败: " << ret << std::endl;
tl::disconnect_robot(sock);
return -1;
}
std::cout << " [信息] 当前模式: " << static_cast<int>(current_mode) << " (RobotMode::TEACH/REMOTE/RUN)" << std::endl;
5. get_robot_dh_param - 获取机械臂DH参数
方法:Result get_robot_dh_param(SOCKETFD socketFd, RobotDHParam& param);
功能描述:获取机械臂当前的 DH 几何参数(运动学标定数据)。
参数:
- socketFd:已连接的句柄。
- param:输出参数,RobotDHParam 结构体,主要成员:
- alpha[6]:1-6 轴 DH 参数 alpha,单位 deg
- a[6]:1-6 轴 DH 参数 a,单位 mm
- theta[6]:1-6 轴 DH 参数 theta,单位 deg
- d[6]:1-6 轴 DH 参数 d,单位 mm
- eulerAngle:欧拉角模式
- mountingAngle:机器人安装角度,单位 deg
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取机械臂DH参数
std::cout << "[INFO] **********获取机械臂DH参数**********" << std::endl;
tl::RobotDHParam dh_params;
auto ret = tl::get_robot_dh_param(socket_fd, dh_params);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取机械臂DH参数失败,程序退出!" << std::endl;
return -1;
}
std::cout << "[INFO] 机械臂DH参数: ";
std::cout << "alpha=[";
for (int i = 0; i < 6; ++i) std::cout << (i ? "," : "") << dh_params.alpha[i];
std::cout << "], a=[";
for (int i = 0; i < 6; ++i) std::cout << (i ? "," : "") << dh_params.a[i];
std::cout << "], theta=[";
for (int i = 0; i < 6; ++i) std::cout << (i ? "," : "") << dh_params.theta[i];
std::cout << "], d=[";
for (int i = 0; i < 6; ++i) std::cout << (i ? "," : "") << dh_params.d[i];
std::cout << "], eulerAngle=" << dh_params.eulerAngle
<< ", mountingAngle=" << dh_params.mountingAngle << std::endl;
std::cout << std::endl;
6. get_library_version - 读取机械臂软件信息
方法:std::string get_library_version();
功能描述:获取 SDK 库版本信息。
参数:
- 无
返回值:
- 非空字符串:成功,返回版本信息字符串,格式 "<sdk版本>(Base:<base版本>)",如 "V2.5.1-0-gabc1234-20260916(Base:2.0.4-20260914-6cf4a3b)"。
- 空字符串:失败(库未正确加载)。
使用示例:
// 获取 SDK 版本
std::string version = tl::get_library_version();
std::cout << "[INFO] SDK 版本: " << version << std::endl;
7. get_robot_joint_param - 获取指定关节配置参数
方法:Result get_robot_joint_param(SOCKETFD socketFd, int id, RobotJointParam& param);
功能描述:获取指定关节的运动与硬件参数(减速比、编码器分辨率、限位、转速等)。
参数:
- socketFd:已连接的句柄。
- id:关节编号,取值范围 [1,6](6 轴,对应 J1~J6);7 轴为 [1,7](对应 J1~J7)。
- param:输出参数,RobotJointParam 结构体,主要成员:
- reduceRatio:减速比
- encoderResolution:编码器分辨率数值
- maxAcc:最大加速度
- maxDec:最大减速度
- maxPos:正向软限位
- minPos:负向软限位
- maxRotSpeed:最大转速
- ratedRotSpeed:电机额定转速
- motorDirection:电机方向
- axisDirection:关节轴正方向
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 获取指定关节参数
std::cout << "[INFO] **********获取指定关节参数**********" << std::endl;
int joint_id = 1; // J1 轴
tl::RobotJointParam joint_param;
ret = tl::get_robot_joint_param(socket_fd, joint_id, joint_param);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取关节" << joint_id << "参数失败,错误码: " << ret << std::endl;
return -1;
}
std::cout << "[INFO] 关节" << joint_id << "参数:" << std::endl;
std::cout << " 减速比=" << joint_param.reduceRatio
<< ", 额定转速=" << joint_param.ratedRotSpeed
<< ", 最大加速度=" << joint_param.maxAcc
<< ", 电机方向=" << joint_param.motorDirection
<< ", 正向软限位=" << joint_param.maxPos
<< ", 负向软限位=" << joint_param.minPos << std::endl;
std::cout << std::endl;
8. query_joint_software_version - 查询指定关节(轴)的软件版本号
方法:Result query_joint_software_version(SOCKETFD socketFd, int axisNum, std::string& version_string);
功能描述:查询指定关节(轴)的软件版本号(SDO 0x100A)。
参数:
- socketFd:已连接的句柄。
- axisNum:轴编号。
- version_string:输出参数,用于接收查询到的软件版本号字符串。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 查询关节软件版本号
std::cout << "[INFO] **********查询关节软件版本号**********" << std::endl;
{
int query_axis = 1; // 查询 J1 轴
std::string joint_version;
auto ret = tl::query_joint_software_version(socket_fd, query_axis, joint_version);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 查询关节" << query_axis << "软件版本号失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 关节" << query_axis << "软件版本号: " << joint_version << std::endl;
}
}
std::cout << std::endl;
9. get_nexmotion_lib_version - 获取底层 nexmotion 库版本信息
方法:Result get_nexmotion_lib_version(SOCKETFD socketFd, std::string& version);
功能描述:获取底层算法库(nexmotion)版本号。
参数:
- socketFd:已连接的句柄。
- version:输出参数,算法库版本号字符串。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// ----获取底层 nexmotion 库版本----
std::cout << "[INFO] **********获取底层 nexmotion 库版本**********" << std::endl;
{
std::string nexmotion_version;
auto ret = tl::get_nexmotion_lib_version(socket_fd, nexmotion_version);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取 nexmotion 库版本失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] nexmotion 库版本: " << nexmotion_version << std::endl;
}
}
std::cout << std::endl;
10. get_robot_state - 获取机器人整体状态
方法:Result get_robot_state(SOCKETFD socketFd, RobotState param);
功能描述:通过 7000 端口查询机器人整体状态。需要连接 7000 端口。
参数:
- socketFd:已连接的句柄(7000 端口)。
- param:RobotState 结构体(输入配置),主要成员:
- channel:查询的通道,最多 9 个通道
- stop:为 true 时停止持续发送
- mode:0-查询只回复一次,1-查询持续回复
- interval:仅 mode=1 时有效,回复时间范围 [10,60000] ms
- ioState:查询 IO
- position:0-关节坐标,1-基坐标
- dataildmotionpos:机械臂的运动点位
- programRunStatus:运行状态
- servoStatus:伺服状态
- operationMode:操作模式
- globalSpeed:全局速度
- syncPosition:外部轴坐标
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 回调函数:收到控制器状态时被调用(在独立线程中触发,不能做耗时操作)
void on_robot_state(const char* message)
{
if (message != nullptr) {
std::cout << "[回调] 收到状态: " << message << std::endl;
}
}
// ----查询机器人状态与注册状态回调(7000 端口,需先连接)----
std::cout << "[INFO] **********查询机器人状态(7000 端口)**********" << std::endl;
{
std::string port_7000 = "7000";
auto sock_7000 = tl::connect_robot(ip, port_7000);
if (sock_7000 < 0) {
std::cerr << "[ERROR] 连接 7000 端口失败,错误码: " << sock_7000 << std::endl;
} else {
std::cout << "[INFO] 7000 端口连接成功 (socket=" << sock_7000 << ")" << std::endl;
// 注册状态回调(回调在独立线程触发,不能做耗时操作)
ret = tl::robot_state_callback(sock_7000, on_robot_state_message);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 注册状态回调失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 状态回调注册成功" << std::endl;
}
// 查询机器人状态(单次回复)
tl::RobotState robot_state;
robot_state.channel = 1;
robot_state.stop = false;
robot_state.mode = 0; // 0-查询只回复一次 1-持续回复
robot_state.interval = 1000;
robot_state.position = 0; // 0-关节坐标 1-直角坐标
robot_state.servoStatus = true;
robot_state.programRunStatus = true;
ret = tl::get_robot_state(sock_7000, robot_state);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 查询机器人状态失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 状态查询请求已发送,等待回调..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1));
}
// 停止持续推送并断开 7000
tl::RobotState stop_param;
stop_param.channel = 1;
stop_param.stop = true;
tl::get_robot_state(sock_7000, stop_param);
tl::disconnect_robot(sock_7000);
std::cout << "[INFO] 7000 端口已断开" << std::endl;
}
}
std::cout << std::endl;
11. get_robot_type - 获取机器人类型
方法:Result get_robot_type(SOCKETFD socketFd, RobotType& type);
功能描述:获取机器人类型(枚举重载)。返回 RobotType 枚举,标识机器人机械结构类型。
参数:
- socketFd:已连接的句柄。
- type:输出参数,RobotType 枚举,完整取值如下表:
RobotType 枚举说明:
| 枚举值 | 数值 | 说明 |
|---|---|---|
| SIX_AXIS_SERIAL | 1 | 六轴串联多关节 |
| FOUR_AXIS_SCARA | 2 | 四轴 SCARA |
| FOUR_AXIS_PALLETIZING | 3 | 四轴码垛 |
| FOUR_AXIS_SERIAL | 4 | 四轴串联多关节 |
| SINGLE_AXIS | 5 | 单轴 |
| FIVE_AXIS_SERIAL | 6 | 五轴串联多关节 |
| SIX_AXIS_COLLABORATIVE | 7 | 六轴协作 |
| TWO_AXIS_SCARA | 8 | 二轴 SCARA |
| THREE_AXIS_SCARA | 9 | 三轴 SCARA |
| THREE_AXIS_CARTESIAN | 10 | 三轴直角 |
| THREE_AXIS_SPECIAL | 11 | 三轴异形 |
| SEVEN_AXIS_SERIAL | 12 | 七轴串联多关节 |
| SCARA_SPECIAL | 13 | SCARA 异形一 |
| FOUR_AXIS_PALLETIZING_LEAD | 14 | 四轴码垛丝杆 |
上表与
include/tl_types.h的tl::RobotType一致,数值即get_robot_type的 int 重载返回值。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// ----查询机器人类型----
std::cout << "[INFO] **********查询机器人类型**********" << std::endl;
{
tl::RobotType robot_type;
ret = tl::get_robot_type(socket_fd, robot_type);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取机器人类型失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 机器人类型编号: " << static_cast<int>(robot_type) << std::endl;
}
}
std::cout << std::endl;
12. get_current_line_speed_and_joint_speed - 获取当前线速度与关节速度
方法:Result get_current_line_speed_and_joint_speed(SOCKETFD socketFd, double& line_speed, std::vector< double >& joint_speed, std::vector< double >& joint_speed_sync);
功能描述:获取当前末端线速度和关节速度。
参数:
- socketFd:已连接的句柄。
- line_speed:输出参数,末端线速度,单位 [mm/s]。
- joint_speed:输出参数,关节速度,长度 7,单位 [度/s]。
- joint_speed_sync:输出参数,外部轴关节速度,长度 5,单位 [度/s]。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// ----查询当前末端线速度和关节速度----
std::cout << "[INFO] **********查询当前末端线速度和关节速度**********" << std::endl;
{
double line_speed = 0;
std::vector<double> joint_speed;
std::vector<double> joint_speed_sync;
ret = tl::get_current_line_speed_and_joint_speed(socket_fd, line_speed, joint_speed, joint_speed_sync);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取当前末端线速度和关节速度失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 末端线速度: " << line_speed << " mm/s" << std::endl;
std::cout << "[INFO] 关节速度: ";
for (const auto& val : joint_speed) {
std::cout << val << " ";
}
std::cout << std::endl;
std::cout << "[INFO] 外部轴关节速度: ";
for (const auto& val : joint_speed_sync) {
std::cout << val << " ";
}
std::cout << std::endl;
}
}
std::cout << std::endl;
13. get_pos_reachable - 查询点位可达性
方法:Result get_pos_reachable(SOCKETFD socketFd, std::vector< double > pos, std::string movetype, bool& result);
功能描述:检测目标点位是否可达。
参数:
- socketFd:已连接的句柄。
- pos:目标点位坐标数据,vector 长度 14:
- [0] 坐标系 0:关节 1:直角 2:工具 3:用户
- [1] 单位 0:角度 1:弧度
- [2] 形态
- [3] 工具手坐标序号
- [4] 用户坐标序号
- [5][6] 备用
- [7-13] 点位信息
- movetype:移动方式,"MOVJ" 或 "MOVL"。
- result:输出参数,点位是否可达(true=可达)。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// ----查询点位是否可达(示例点位,可自行修改)----
std::cout << "[INFO] **********查询点位是否可达**********" << std::endl;
{
// 目标点位 14 位: [0]坐标系 0关节 1直角 2工具 3用户 [1]0角度制 1弧度制 [2]形态 [3]工具号 [4]用户坐标号 [5][6]备用 [7-13]点位值
std::vector<double> pos(14, 0);
pos[0] = 0; // 关节坐标系
pos[1] = 0; // 角度制
pos[7] = 0.0; // J1
pos[8] = 0.0; // J2
pos[9] = 0.0; // J3
pos[10] = 0.0; // J4
pos[11] = 0.0; // J5
pos[12] = 0.0; // J6
std::string movetype = "MOVJ";
bool reachable = false;
ret = tl::get_pos_reachable(socket_fd, pos, movetype, reachable);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 查询点位是否可达失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 点位 " << movetype << " 是否可达: " << (reachable ? "可达" : "不可达") << std::endl;
}
}
std::cout << std::endl;
14. robot_state_callback - 注册机器人状态回调
方法:Result robot_state_callback(SOCKETFD socketFd, void (*function)(const char* state));
功能描述:注册 7000 端口状态返回的回调函数。需要连接 7000 端口。
参数:
- socketFd:已连接的句柄(7000 端口)。
- function:回调函数指针,签名 void (const char* state),收到控制器状态时在独立线程中触发。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 回调函数:收到控制器状态时被调用
void on_robot_state(const char* message)
{
if (message != nullptr) {
std::cout << "[回调] 收到状态: " << message << std::endl;
}
}
// 注册回调(7000 端口)
auto ret = tl::robot_state_callback(sock_7000, on_robot_state);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 注册回调失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 回调注册成功" << std::endl;
}
15. get_speed - 获取速度
方法:Result get_speed(SOCKETFD socketFd, int& speed);
功能描述:获取当前全局速度倍率。
参数:
- socketFd:已连接的句柄。
- speed:输出参数,当前速度百分比。
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// 查询当前速度
int speed = -1;
auto ret = tl::get_speed(sock, speed);
if (ret == tl::Result::SUCCESS) {
std::cout << " [信息] 当前全局速度: " << speed << "%" << std::endl;
} else {
std::cerr << "[ERROR] 获取速度失败,错误码: " << ret << std::endl;
}
16. get_cartesian_params - 获取笛卡尔参数
方法:Result get_cartesian_params(SOCKETFD socketFd, CartesianParam& param);
功能描述:获取笛卡尔空间运动参数。
参数:
- socketFd:已连接的句柄。
- param:输出参数,CartesianParam 结构体,主要成员:
- maxSpeed{1000}:最大线速度 (mm/s)
- maxAcc{3}:最大线加速度 (mm/s²)
- maxDec{-3}:最大线减速度 (mm/s²)
- maxAttitudeVel{500}:最大姿态角速度 (deg/s)
- speedLimitMode{0}:速度限制方式 0:位姿 1:位置
- posResolution{0.01}:绝对位置分辨率,范围 [0.0001, 0.1]
- maxJerk{10000}:最大线加加速度 (mm/s³)
- interpType{0}:插补方式 0:S型 1:梯形
- minAccTime{100}:最小加速时间 (ms)
- minDecTime{100}:最小减速时间 (ms)
返回值:
- 0:成功。
- 非0:失败。
使用示例:
// ----查询笛卡尔空间参数----
std::cout << "[INFO] **********查询笛卡尔空间参数**********" << std::endl;
{
tl::CartesianParam cartesian_param;
ret = tl::get_cartesian_params(socket_fd, cartesian_param);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 获取笛卡尔空间参数失败,错误码: " << ret << std::endl;
} else {
std::cout << "[INFO] 笛卡尔空间参数:" << std::endl;
std::cout << " 最大线速度: " << cartesian_param.maxSpeed << " mm/s" << std::endl;
std::cout << " 最大线加速度: " << cartesian_param.maxAcc << " mm/s^2" << std::endl;
std::cout << " 最大线减速度: " << cartesian_param.maxDec << " mm/s^2" << std::endl;
std::cout << " 最大姿态角速度: " << cartesian_param.maxAttitudeVel << " deg/s" << std::endl;
std::cout << " 速度限制方式: " << cartesian_param.speedLimitMode << " (0-位姿 1-位置)" << std::endl;
std::cout << " 绝对位置分辨率: " << cartesian_param.posResolution << std::endl;
std::cout << " 最大线加加速度: " << cartesian_param.maxJerk << " mm/s^3" << std::endl;
std::cout << " 插补方式: " << cartesian_param.interpType << " (0-S型 1-梯形)" << std::endl;
std::cout << " 最小加速时间: " << cartesian_param.minAccTime << " ms" << std::endl;
std::cout << " 最小减速时间: " << cartesian_param.minDecTime << " ms" << std::endl;
}
}
std::cout << std::endl;
