全局路点管理接口

头文件:include/tl_interface.h
相关示例代码:examples\cpp\ex_global_position.cpp

1. set_global_position - 新增/设置全局路点

方法:Result set_global_position(SOCKETFD socketFd, std::string posName, std::vector<double> pos);

功能描述:创建或修改一个持久化的全局位置变量(路点),可通过名称直接调用。

参数:

  • socketFd:已连接的句柄。
  • posName:全局位置名,如 "GP0001"。
  • pos:14 位点位数组,含义如下:
    • [0]:坐标系,0:关节 1:基坐标 2:工具 3:用户
    • [1]:0 角度制 / 1 弧度制
    • [2]:形态
    • [3]:工具手坐标序号
    • [4]:用户坐标序号
    • [5] [6]:备用
    • [7-13]:点位信息

返回值:

  • 0:成功。
  • 非0:失败。

使用示例:

C++
    // 设置全局路点
    std::string posName = "GP_test0";
    std::vector<double> posInfo {0, 1, 2, 3, 4, 5, 6};
    auto ret = tl::set_global_position(socket_fd, posName, posInfo);
    if (ret != tl::Result::SUCCESS) {
        std::cerr << "[ERROR] 设置全局路点失败,错误码: " << ret << std::endl;
        return -1;
    }
    std::cout << "[信息] 设置全局路点成功" << std::endl;

2. get_global_position - 查询全局 GP 点位

方法:Result get_global_position(SOCKETFD socketFd, std::string posName, std::vector<double>& pos);

功能描述:查询指定名称的全局 GP 点位。

参数:

  • socketFd:已连接的句柄。
  • posName:全局位置名,如 "GP0001"。
  • pos:输出,全局点位数组,长度 14;前 7 位为点位的坐标、姿态等信息,后 7 位为机器人位置。

返回值:

  • 0:成功。
  • 非0:失败。

使用示例:

C++
    // 查询全局路点
    std::vector<double> queriedPos;
    auto ret = tl::get_global_position(socket_fd, posName, queriedPos);
    if (ret != tl::Result::SUCCESS) {
        std::cerr << "[ERROR] 查询全局路点失败,错误码: " << ret << std::endl;
        return -1;
    }
    std::cout << "[信息] 查询全局路点成功,位置为:";
    for (const auto& pos : queriedPos) {
        std::cout << " " << pos;
    }
    std::cout << std::endl;

3. set_global_string - 设置全局字符串变量

方法:Result set_global_string(SOCKETFD socketFd, const std::string& varName, const std::string& varValue);

功能描述:设置全局字符串变量的值。

参数:

  • socketFd:已连接的句柄。
  • varName:变量名,如 "GS001"。
  • varValue:字符串变量值。

返回值:

  • 0:成功。
  • 非0:失败。

使用示例:

C++
    // 设置全局字符串变量
    auto ret = tl::set_global_string(socket_fd, "GS001", "hello");
    if (ret != tl::Result::SUCCESS) {
        std::cerr << "[ERROR] 设置全局字符串变量失败,错误码: " << ret << std::endl;
        return -1;
    }
    std::cout << "[信息] 设置全局字符串变量成功" << std::endl;

4. get_global_string - 获取全局字符串变量

方法:Result get_global_string(SOCKETFD socketFd, const std::string& varName, std::string& value);

功能描述:查询全局字符串变量的值。

参数:

  • socketFd:已连接的句柄。
  • varName:变量名,如 "GS001"。
  • value:输出,变量值。

返回值:

  • 0:成功。
  • 非0:失败。

使用示例:

C++
    // 获取全局字符串变量
    std::string value;
    auto ret = tl::get_global_string(socket_fd, "GS001", value);
    if (ret != tl::Result::SUCCESS) {
        std::cerr << "[ERROR] 获取全局字符串变量失败,错误码: " << ret << std::endl;
        return -1;
    }
    std::cout << "[信息] 全局字符串变量 GS001 = " << value << std::endl;

5. get_global_sync_position - 获取全局同步位置

方法:Result get_global_sync_position(SOCKETFD socketFd, const std::string& posName, std::vector<double>& pos);

功能描述:查询全局 GE 点位(含外部轴)。

参数:

  • socketFd:已连接的句柄。
  • posName:全局位置名,如 "GE0001"。
  • pos:输出,全局点位数组,长度 21;前 7 位为点位的坐标、姿态等信息,中间 7 位为机器人位置,后 7 位为外部轴位置。

返回值:

  • 0:成功。
  • 非0:失败。

使用示例:

C++
    // 获取全局同步位置(GE 点)
    std::vector<double> pos;
    auto ret = tl::get_global_sync_position(socket_fd, "GE0001", pos);
    if (ret != tl::Result::SUCCESS) {
        std::cerr << "[ERROR] 获取全局同步位置失败,错误码: " << ret << std::endl;
        return -1;
    }
    std::cout << "[信息] GE0001 位置(共 " << pos.size() << " 位):" << std::endl;
    for (size_t i = 0; i < pos.size(); ++i) {
        std::cout << "  [" << i << "] " << pos[i] << std::endl;
    }

6. get_global_variant - 获取全局变量

方法:Result get_global_variant(SOCKETFD socketFd, const std::string& varName, double& value);

功能描述:查询全局变量的值。

参数:

  • socketFd:已连接的句柄。
  • varName:全局变量名,支持形式如 "GI001" / "GD001" / "GB001"。
  • value:输出,变量值。

返回值:

  • 0:成功。
  • 非0:失败。

使用示例:

C++
    // 获取全局变量
    double value = 0.0;
    auto ret = tl::get_global_variant(socket_fd, "GD001", value);
    if (ret != tl::Result::SUCCESS) {
        std::cerr << "[ERROR] 获取全局变量失败,错误码: " << ret << std::endl;
        return -1;
    }
    std::cout << "[信息] 全局变量 GD001 = " << value << std::endl;