- 选型指南
- 概述
- 入门指南
- 机械臂参数
- 示教器使用
-
二次开发
-
API(C++)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
-
API(Python)
- 快速开始
- 接口说明
- 7000端口接口说明
- 使用示例
- 返回值说明
- ROS2开发
-
API(C++)
- 相关下载
六维力传感器查询接口
头文件:include/tl_interface.h
1. set_six_dimensional_force_communication_params - 配置六维力传感器数据
方法:set_six_dimensional_force_communication_params(SOCKETFD socketFd, SixDimensionalForceCommunicationParams& param);
功能描述:配置机械臂末端六维力传感器。
参数:
- socketFd:已连接的句柄。
- commParams:输入参数,用于存储六维力传感器通讯参数。
返回值:
- 0:成功
- 非 0:失败
使用示例:
Python
# 1. 设置六维力传感器通讯参数
commParams = SixDimensionalForceCommunicationParams()
commParams.sensorCommunicationType = 0 # 0: EtherCAT
commParams.startupAutoConnectSensor = True # 启动自动连接传感器
commParams.sensorDragEnable = True # 传感器拖拽使能
commParams.etherCat_mapNum = 1 # EtherCAT 参数
commParams.YDirection = -1 # y反方向
commParams.ZDirection = -1 # z反方向
ret = set_six_dimensional_force_communication_params(socketFd, commParams)
if ret == SUCCESS:
print("设置六维力传感器通讯参数成功!")
else:
print(f"设置六维力传感器通讯参数失败! ret = {ret}")
2. get_six_dimensional_force_communication_params - 获取六维力传感器通讯参数
方法:get_six_dimensional_force_communication_params(socketFd, params);
功能描述:获取六维力传感器通讯参数。
参数:
- socketFd:已连接的句柄。
- params:SixDimensionalForceCommunicationParams 输出参数(sensorCommunicationType 通讯类型;sensorDragEnable 传感器拖拽使能;originDataInitialPara 原始数据初始参数;startupAutoConnectSensor 启动自动连接传感器;YDirection Y 方向;ZDirection Z 方向;etherCat_mapNum EtherCAT 等)。
返回值:
- 0:成功
- 非 0:失败
使用示例:
Python
import tl_interface as tl
socket_fd = tl.connect_robot("192.168.1.13", "6001")
params = SixDimensionalForceCommunicationParams()
ret = tl.get_six_dimensional_force_communication_params(socket_fd, params)
3. get_sensor_base_param - 获取六维力传感器的基础参数
方法:get_sensor_base_param(SOCKETFD socketFd, SensorBaseParam& baseParam);
功能说明:获取六维力传感器的基础参数(质量、质心、标零状态)。
参数:
- socketFd:已连接的句柄。
- baseParam 用于接收传感器基础参数的结构体。
返回值:
- 0:成功
- 非 0:失败
使用示例:
Python
# 查询标定后的基础参数
base_param = SensorBaseParam()
ret = get_sensor_base_param(socket_fd, base_param)
if ret == SUCCESS:
print(" 传感器质量: " + str(base_param.sensorMass))
print(" 质心 - X: " + str(base_param.sensorMassCenterX)
+ ", Y: " + str(base_param.sensorMassCenterY)
+ ", Z: " + str(base_param.sensorMassCenterZ))
4. mark_base_sensor - 执行六维力传感器标定
方法:mark_base_sensor(SOCKETFD socketFd, bool& success);
功能描述:完成六维力传感器零点偏移与正交耦合误差校准,消除自重及安装偏差带来的力信号零漂,保证后续力控采集数据精度。
参数:
- socketFd:已连接的句柄。
返回值:
- 0:成功
- 非 0:失败
使用示例:
Python
# ----标定六维力传感器零位/重心----
# 操作前请确保:
# 1. 机械臂末端无负载或已安装标准负载
# 2. 机械臂处于竖直姿态(关节各轴在合理位置)
# 3. 周围安全,标定过程中机械臂会缓慢运动
print("[INFO]**********标定六维力传感器零位/重心**********")
print("[INFO] 即将执行六维力传感器标定,请确认:")
print(" 1. 机械臂末端无负载(或已安装标准负载)")
print(" 2. 机械臂周围安全无人")
confirm = input(" 是否继续? (y/n): ")
if confirm.lower() == 'y':
success = False
ret, success = mark_base_sensor(socket_fd, success)
if ret != SUCCESS:
print("[ERROR] 标定六维力传感器失败,错误码: " + str(ret))
elif success:
print("[INFO] 标定六维力传感器成功")
# 查询标定后的基础参数
base_param = SensorBaseParam()
ret = get_sensor_base_param(socket_fd, base_param)
if ret == SUCCESS:
print(" 传感器质量: " + str(base_param.sensorMass))
print(" 质心 - X: " + str(base_param.sensorMassCenterX)
+ ", Y: " + str(base_param.sensorMassCenterY)
+ ", Z: " + str(base_param.sensorMassCenterZ))
print(" 标零状态: " + ("已标零" if base_param.saveZero else "未标零"))
else:
print("[ERROR] 标定六维力传感器失败,标定结果为 false")
else:
print(" [信息] 用户取消标定")
print("")
5. get_sensor_6d_data - 获取六维力传感器数据
方法:get_sensor_6d_data(socketFd, sensorData);
功能描述:获取六维力传感器数据。
参数:
- socketFd:已连接的句柄。
- sensorData:输出参数,用于存储力和力矩的结构体。
返回值:
- 0:成功
- 非 0:失败
使用示例:
Python
# 2. 获取六维力传感器数据
sensorData = Sensor6DData()
ret = get_sensor_6d_data(socketFd, sensorData)
if ret == SUCCESS:
print("获取六维力传感器数据成功!")
print(f"传感器连接状态: {'已连接' if sensorData.sensorConnected else '未连接'}")
print("--- 传感器原始数据 ---")
print(f"Fx = {sensorData.fxData:.3f} N")
print(f"Fy = {sensorData.fyData:.3f} N")
print(f"Fz = {sensorData.fzData:.3f} N")
print(f"Mx = {sensorData.mxData:.3f} N·m")
print(f"My = {sensorData.myData:.3f} N·m")
print(f"Mz = {sensorData.mzData:.3f} N·m")
print("--- 去皮后数据 ---")
print(f"Fx = {sensorData.fxDataSubBase:.3f} N")
print(f"Fy = {sensorData.fyDataSubBase:.3f} N")
print(f"Fz = {sensorData.fzDataSubBase:.3f} N")
print(f"Mx = {sensorData.mxDataSubBase:.3f} N·m")
print(f"My = {sensorData.myDataSubBase:.3f} N·m")
print(f"Mz = {sensorData.mzDataSubBase:.3f} N·m")
else:
print(f"获取六维力传感器数据失败! ret = {ret}")
6. get_payload_param_by_sensor - 获取六维力传感器负载参数
方法:get_payload_param_by_sensor(socketFd, param);
功能描述:获取传感器负载参数。
参数:
- socketFd:已连接的句柄。
- param:PayloadParamBySensor 输出参数(payloadMass 负载质量 kg;payloadMassCenterX/Y/Z 负载质心 mm)。
返回值:
- tuple:(ret, param)
- 0:成功
- 非 0:失败
使用示例:
Python
import tl_interface as tl
socket_fd = tl.connect_robot("192.168.1.13", "6001")
param = PayloadParamBySensor()
ret, param = tl.get_payload_param_by_sensor(socket_fd, param)
