1. 引言
随着机器人技术的不断发展,机器人在工业、医疗、服务等领域得到了广泛应用。为了使机器人能够更好地感知环境、完成复杂的任务,末端力传感器成为了机器人系统中不可或缺的一部分。末端力传感器可以实时测量机器人末端与环境之间的相互作用力,为机器人提供触觉感知能力,从而提高机器人的灵活性和安全性。
2. 力传感器原理
力传感器的工作原理是将力的作用转换成电信号输出。常见的力传感器类型包括应变片式、压电式、电容式等。其中,应变片式力传感器应用最为广泛,其原理是利用应变片将力的作用转换成电阻的变化,再通过测量电路将电阻变化转换成电压或电流信号输出。
3. 硬件方案
目前市面上有多家厂商提供六维力传感器,以下列举几家常见的品牌及产品特点:
厂商 | 产品型号 | 优点 | 缺点 | 市场价格 (人民币) |
---|---|---|---|---|
坤维 | KVF系列 | 高精度、高可靠性、抗干扰能力强 | 价格较高 | 5000-10000 |
ATI | Mini45 | 精度高、体积小巧、易于集成 | 价格昂贵 | 20000-30000 |
Robotiq | FT 300 | 易于使用、编程简单、兼容性强 | 精度略低于ATI | 15000-20000 |
测力 | FTN系列 | 性价比高、多种规格可选 | 精度和可靠性略低于坤维 | 3000-8000 |
OnRobot | HEX 6-Axis Force/Torque Sensor | 易于安装、即插即用、兼容多种机器人 | 价格较高 | 15000-25000 |
4.通讯协议
目前市场上的六维力传感器主要采用以下几种通讯协议:
-
Modbus RTU:
- 这是工业自动化领域最常见的通讯协议之一,基于RS-485串行接口。
- 优点:简单易用、可靠性高、成本低。
- 缺点:传输速度相对较慢,不适合高速数据采集。
- 应用:广泛应用于各种工业传感器,包括六维力传感器,例如坤维、测力等品牌。
-
CANopen:
- 基于CAN总线的高层通讯协议,适用于实时性要求较高的应用。
- 优点:传输速度快、实时性好、抗干扰能力强。
- 缺点:实现较为复杂,成本相对较高。
- 应用:一些高端六维力传感器采用CANopen协议,例如ATI等品牌。
-
EtherCAT:
- 基于以太网的实时工业以太网协议,具有高速、高精度、高同步性的特点。
- 优点:传输速度极快、实时性极佳、拓扑结构灵活。
- 缺点:实现复杂、成本高,需要专门的硬件支持。
- 应用:一些高端的六维力传感器和机器人控制系统采用EtherCAT协议。
-
Ethernet/IP:
- 基于以太网的工业通讯协议,由罗克韦尔自动化公司开发。
- 优点:传输速度快、兼容性好、易于集成。
- 缺点:实时性不如EtherCAT,成本较高。
- 应用:一些欧美品牌的六维力传感器和机器人控制系统采用Ethernet/IP协议。
-
Profinet:
- 基于以太网的实时工业以太网协议,由西门子公司开发。
- 优点:传输速度快、实时性好、功能强大。
- 缺点:实现复杂、成本高,主要应用于西门子自动化系统。
- 应用:一些欧洲品牌的六维力传感器和机器人控制系统采用Profinet协议。
- Modbus RTU 是目前六维力传感器最常用的通讯协议,具有简单易用、成本低的优点。
- CANopen、EtherCAT、Ethernet/IP、Profinet 等协议适用于对实时性和传输速度要求较高的场合,但成本较高。在选择六维力传感器时,需要根据具体的应用需求和控制系统的接口类型选择合适的通讯协议。
5. 技术实现
目前,大多数协作机械臂加装六维力传感器都是通过Modbus RTU通信协议进行数据交互,也有兼容其他通讯协议,举例说明。
(1)演示如何使用 Python 和 Modbus RTU 库读取六轴力传感器的数据:
import minimalmodbus
# 力传感器 Modbus 参数
slave_address = 1 # 从站地址 (默认为 1)
baudrate = 115200 # 波特率 (默认为 115200)
port = "/dev/ttyUSB0" # 串口号 (根据实际情况修改)
# 创建 Modbus 仪表对象
instrument = minimalmodbus.Instrument(port, slave_address)
instrument.serial.baudrate = baudrate
instrument.serial.timeout = 0.1 # 超时时间
while True:
try:
# 读取力数据 (寄存器地址参考力传感器通讯协议)
fx = instrument.read_float(0, functioncode=3) # Fx
fy = instrument.read_float(2, functioncode=3) # Fy
fz = instrument.read_float(4, functioncode=3) # Fz
tx = instrument.read_float(6, functioncode=3) # Tx
ty = instrument.read_float(8, functioncode=3) # Ty
tz = instrument.read_float(10, functioncode=3) # Tz
# 打印力数据
print("Fx: ", fx)
print("Fy: ", fy)
print("Fz: ", fz)
print("Tx: ", tx)
print("Ty: ", ty)
print("Tz: ", tz)
except minimalmodbus.NoResponseError:
print("No response from sensor.")
except Exception as e:
print("Error:", e)
代码说明:
- 首先,需要安装
minimalmodbus
库:pip install minimalmodbus
- 创建
minimalmodbus.Instrument
对象,并设置串口参数 (串口号、波特率、从站地址等)。 - 使用
instrument.read_float()
方法读取力传感器寄存器中的浮点数数据 (力/力矩值)。寄存器地址需要参考力传感器的 Modbus RTU 通讯协议。 - 处理可能出现的异常,例如无响应错误或其他错误。
(2)演示如何通过socket协议使用六轴力传感器获取力数据 (Python):
python
import socket
# 力传感器IP地址和端口号
HOST = "192.168.1.100" # 力传感器IP地址
PORT = 8008 # 力传感器端口号
# 创建socket连接
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while True:
# 接收数据
data = s.recv(1024)
if data:
# 解析数据 (具体解析方式参考力传感器通讯协议)
force_data = parse_data(data)
# 打印力数据
print("Fx: ", force_data["Fx"])
print("Fy: ", force_data["Fy"])
print("Fz: ", force_data["Fz"])
print("Tx: ", force_data["Tx"])
print("Ty: ", force_data["Ty"])
print("Tz: ", force_data["Tz"])
s.close()
代码说明:
首先,需要创建socket连接,连接到力传感器的IP地址和端口号。
然后,循环接收力传感器发送的数据。
接收到数据后,需要根据力传感器的通讯协议解析数据,获取力/力矩值。
最后,可以将力数据用于机器人控制或其他应用。
5. 应用场景实例分析
应用场景:机械臂携带充电头插拔充电 - 力传感器选型分析
该场景中,机械臂需要完成对设备进行充电头的插拔操作,这要求力传感器具备以下特性:
- 中等精度和高重复性: 充电头的插拔需要一定的力和位姿控制精度,避免损坏充电头和设备接口。但相较于高压充电场景,精度要求可以略微降低。
- 合适的量程: 需要根据充电头的重量和插拔所需的力选择合适的量程,确保力传感器能够准确测量插拔过程中的力变化。
- 一定的抗冲击能力: 插拔过程中可能会产生一定的冲击力,需要选择具备一定抗冲击能力的力传感器,保证其稳定性和使用寿命。
- 紧凑的结构: 机械臂末端空间通常有限,需要选择结构紧凑的力传感器,方便安装和使用。
- 良好的防护等级: 工业环境可能存在粉尘、水汽等污染物,需要选择防护等级较高的力传感器,保证其可靠性。
力传感器选型建议:
根据以上分析,推荐选择以下类型的力传感器:
- 小型六维力传感器: 可以同时测量力和力矩,提供更全面的插拔过程信息,例如ATI Nano17、坤维KWR系列小型号等。
- 高精度单轴力传感器: 如果只需要测量插拔力,可以选择高精度的单轴力传感器,例如霍尼韦尔FS系列、MEAS测力等,选择量程较小的型号即可。
通讯协议选择:
考虑到工业环境的可靠性和实时性要求,推荐选择以下通讯协议:
- Modbus RTU: 简单易用、可靠性高,适用于对实时性要求不高的场合。
- CANopen: 实时性好、抗干扰能力强,适用于对实时性要求较高的场合。
- RS-485: 通用性强,成本低,适用于对实时性和通讯速度要求不高的场合。
具体选型需要考虑的因素:
- 充电头的重量和尺寸: 确定力传感器的量程和尺寸。
- 插拔力的范围: 确定力传感器的量程和精度。
- 机械臂的控制系统和接口类型: 确定力传感器的通讯协议。
- 成本预算: 选择性价比合适的力传感器。
建议:
- 可以咨询力传感器厂商,根据具体应用需求进行选型。
- 可以进行实际测试,验证力传感器的性能是否满足要求。
- 非高压充电场景,对力传感器精度和抗冲击能力的要求可以适当降低,可以选择价格更经济的型号。
选择合适的力传感器对于机械臂完成充电头的插拔操作至关重要。需要综合考虑精度、量程、抗冲击能力、结构、防护等级、通讯协议等因素进行选型,并根据实际应用需求和成本预算做出最终决策。
6. 总结
末端力传感器是机器人系统中重要的感知部件,可以显著提高机器人的性能和安全性。在选择力传感器时,需要根据具体的应用场景和需求考虑传感器的精度、量程、响应速度、通信方式等因素。
末端力传感器广泛应用于以下场景:
- 打磨抛光: 力传感器可以帮助机器人控制打磨力度,实现高质量的表面处理。
- 装配: 力传感器可以帮助机器人精确地插入和安装零件,避免损坏零件。
- 力控抓取: 力传感器可以帮助机器人控制抓取力度,实现对易碎物品的抓取。
- 医疗手术: 力传感器可以帮助医生进行微创手术,提高手术精度和安全性。
- 碰撞检测: 力传感器可以检测机器人与环境之间的碰撞,保护机器人和周围环境的安全。
注意:
- 以上代码示例仅供参考,实际应用中需要根据具体的力传感器型号和 Modbus RTU 通讯协议进行修改。
- 在使用力传感器时,需要注意传感器的量程、精度、响应速度等参数,选择合适的传感器型号。
- 需要确保协作机械臂和力传感器之间的 485 通信线路连接正确。