Skip to content

Python ​

包名 w6e_sdk。示例在 sdk/python/examples/,面板命令是 python -m w6e_sdk.ui。

安装 ​

在将要运行的电脑上执行:

bash
cd sdk/python
python3 -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e ".[ui]"

也可以 bash scripts/run_ui.sh --no-ui,它会创建虚拟环境并安装。以后启动面板:

bash
cd sdk/python
source .venv/bin/activate
python -m w6e_sdk.ui

窗口里传输选 can_slcan,端口选实际串口,再点连接。不要和网页或 ROS 同时开。

Python 窗口不能手输 can0。要用 SocketCAN 时走命令行:

bash
python examples/encoder_status.py --port can0 --transport socketcan
python examples/set_open_pct.py --port can0 --transport socketcan --pct 0 0 0 0 0 0

串口还空着时:

bash
python examples/encoder_status.py --port /dev/ttyACM0
python examples/set_open_pct.py --port /dev/ttyACM0 --pct 80 0 50 50 50 50

最短示例 ​

python
from w6e_sdk import HandClient
import time

hand = HandClient(ack_timeout_s=1.0)
hand.connect("/dev/ttyACM0", transport="can_slcan")
try:
    print("version:", hand.get_version_string())
    print("sn:", hand.get_serial_number())
    status = hand.get_encoder_status()
    if status.homed_mask != 0x3F:
        hand.home()
        hand.wait_home()

    hand.set_open_pct([100, 100, 100, 100, 100, 100])
    time.sleep(1.5)
    hand.set_open_pct([0, 0, 0, 0, 0, 0])
    time.sleep(1.5)
    hand.set_open_pct([50, 100, 30, 30, 30, 30])
    hand.play_gesture("ok")
    time.sleep(2.0)
    hand.stop_all()
finally:
    hand.disconnect()

把 /dev/ttyACM0 换成 ls 看到的串口。can0 已挂好时,connect("can0", transport="socketcan")。

常用接口 ​

失败时抛出 HandError。set_open_pct 有手指被跳过时返回 False,原因在 last_error。

接口作用
list_ports()列出串口
connect(port, transport="can_slcan", verify=True)打开设备。verify 时会读版本并确认编码器状态可用
disconnect() / connected关闭,或查看是否已连接
set_open_pct(pct)六个整数,0~100,含虎口。255 保持该指
get_positions()按编码器计算开合度。未归零的那一路为 None
get_open_pct()读回板端开合度整数
open_all() / close_all()五指到极限,不含虎口
stop_all()急停
set_finger(lq_idx, open_)单指到开或合的极限。lq_idx 为 0~5
play_gesture(name) / play_fixed(fixed_id)按名字或编号播放手势
get_version_string() / get_serial_number()点分版本和序列号
home() / wait_home()开始归零并等待。期间不要发别的运动指令
get_encoder_status()homed_mask == 0x3F 且 fault_mask == 0 后再定位

六路同时收到闭合目标时,虎口有时会停在张开附近。其余手指到位后再发一次同一组数。

峦启机器人(天津)有限公司