Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

L25 灵巧手

快速开始

from linkerbot import L25

with L25(side="left", interface_name="can0") as hand:
    # 设置角度
    hand.angle.set_angles([50.0] * 16)

    # 读取角度
    data = hand.angle.get_blocking(timeout_ms=500)
    print(data.angles)

构造参数

参数类型说明
side"left" | "right"左手或右手
interface_namestrCAN 接口名,如 "can0"
interface_typestrCAN 接口类型,默认 "socketcan"。Windows 用法参考 CAN 总线 文档

关节说明

L25 灵巧手拥有 16 个自由度,分布在 5 根手指上。

索引名称标识
0拇指侧摆thumb_abd
1拇指旋转thumb_yaw
2拇指根部thumb_root1
3拇指指尖thumb_tip
4食指侧摆index_abd
5食指根部index_root1
6食指指尖index_tip
7中指侧摆middle_abd
8中指根部middle_root1
9中指指尖middle_tip
10无名指侧摆ring_abd
11无名指根部ring_root1
12无名指指尖ring_tip
13小指侧摆pinky_abd
14小指根部pinky_root1
15小指指尖pinky_tip

功能模块

模块说明
hand.angle关节角度控制与读取
hand.speed速度控制与读取
hand.torque扭矩控制与读取
hand.temperature温度读取
hand.force_sensor力传感器数据
hand.fault故障读取与清除
hand.version设备版本信息

统一流式读取

L25 提供统一的事件流接口,通过 hand.stream()hand.start_polling() 获取所有传感器数据。初始化时会自动以默认间隔启动轮询(角度 60 Hz、力传感器 30 Hz),无需手动调用 start_polling()

from linkerbot import L25
from linkerbot.hand.l25 import SensorSource, AngleEvent, TemperatureEvent

with L25(side="left", interface_name="can0") as hand:
    # 可同时指定多个传感器及各自的轮询间隔(秒)
    # 再次调用 start_polling() 会覆盖之前的设置
    hand.start_polling({SensorSource.ANGLE: 0.05, SensorSource.TEMPERATURE: 1.0})

    for event in hand.stream():
        match event:
            case AngleEvent(data=ad):
                print(f"角度:{ad.angles.to_list()}")
            case TemperatureEvent(data=td):
                print(f"温度:{td.temperatures.to_list()}")

    hand.stop_polling()
    hand.stop_stream()

start_polling 参数

参数类型默认值说明
intervalsdict[SensorSource, float]全部默认值每个传感器的轮询间隔(秒)

SensorSource 可选值及默认频率

说明默认频率
SensorSource.ANGLE角度60 Hz
SensorSource.SPEED速度不默认轮询
SensorSource.TORQUE扭矩不默认轮询
SensorSource.TEMPERATURE温度不默认轮询
SensorSource.FAULT故障不默认轮询
SensorSource.FORCE_SENSOR力传感器30 Hz

快照

获取所有传感器最新缓存数据:

snap = hand.get_snapshot()
print(snap.angle)  # AngleData | None
print(snap.speed)  # SpeedData | None
print(snap.torque)  # TorqueData | None
print(snap.temperature)  # TemperatureData | None
print(snap.fault)  # FaultData | None
print(snap.force_sensor)  # AllFingersData | None