- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
碰撞检测接口
头文件:include/tl_interface.h
相关示例代码:examples\cpp\ex_collision_detect.cpp
1. set_collision - 设置碰撞防护参数
方法:Result set_collision(SOCKETFD socketFd, CollisionPara& param);
功能描述:设置碰撞防护参数(24.03 版本新增接口)。可将各轴碰撞检测系数写入控制器;指令位置响应时间(position_delay_time_ms_value)影响碰撞保护实时性,不建议手动修改,建议沿用查询到的原值。
参数:
- socketFd:已连接的句柄。
- param:输入参数,CollisionPara 结构体主要成员:
- collisionDetection_run:碰撞检测阈值(指令),第几位为第几轴,参数范围 [1,10000]
- collisionDetection_teach:碰撞检测阈值(点动),第几位为第几轴,参数范围 [1,10000]
- position_delay_time_ms_value:指令位置响应时间,参数范围 (0,99] ms
- error_enable_time_ms_value:误差允许时间,参数范围 [0,99] ms
- axisum:机器人轴数,默认为六轴(6)
返回值:
- 0:成功。
- 非0:失败。
使用示例:
C++
// 查询当前碰撞参数,基于原值修改后写回,避免覆盖无关配置
tl::CollisionPara cur_param;
auto ret = tl::get_collision(sock, cur_param);
if (ret != tl::Result::SUCCESS || cur_param.collisionDetection_run.empty()) {
std::cerr << "[ERROR] 查询碰撞参数失败(当前固件可能不支持 get_collision)" << std::endl;
return -1;
}
tl::CollisionPara set_param = cur_param;
// 演示: 所有轴碰撞检测系数统一设为 98(系数无量纲)
set_param.collisionDetection_run.assign(set_param.collisionDetection_run.size(), 98.0);
set_param.collisionDetection_teach = set_param.collisionDetection_run; // 点动阈值同步
// 指令位置响应时间建议沿用查询原值,不手动设置
ret = tl::set_collision(sock, set_param);
if (ret != tl::Result::SUCCESS) {
std::cerr << "[ERROR] 设置碰撞参数失败(当前固件可能不支持 set_collision)" << std::endl;
return -1;
}
std::cout << "[信息] 设置碰撞参数成功(系数=98)" << std::endl;
2. get_collision - 获取碰撞防护参数
方法:Result get_collision(SOCKETFD socketFd, CollisionPara& param);
功能描述:获取碰撞防护参数(24.03 版本新增接口)。
说明:与 get_collision_detection_param 功能相同,为推荐使用的查询接口。
参数:
- socketFd:已连接的句柄。
- param:输出参数,CollisionPara 结构体,成员同 1.
返回值:
- 0:成功。
- 非0:失败。
使用示例:
C++
// 查询当前碰撞防护参数
tl::CollisionPara collision_param;
auto ret = tl::get_collision(sock, collision_param);
if (ret == tl::Result::SUCCESS) {
std::cout << " 碰撞检测阈值(指令): ";
for (const auto& val : collision_param.collisionDetection_run) {
std::cout << val << " ";
}
std::cout << std::endl;
std::cout << " 碰撞检测阈值(点动): ";
for (const auto& val : collision_param.collisionDetection_teach) {
std::cout << val << " ";
}
std::cout << std::endl;
std::cout << " 指令位置响应时间: " << collision_param.position_delay_time_ms_value << " ms" << std::endl;
std::cout << " 误差允许时间: " << collision_param.error_enable_time_ms_value << " ms" << std::endl;
std::cout << " 机器人轴数: " << collision_param.axisum << std::endl;
}
