chore: rename package to robonix.primitive.linkerbot.linker_hand_o6.hand Mirror the published repository’s model segment (linker_hand_o6), matching the catalog naming convention and every sibling entry, which keep ‘_’ inside hardware model names.
chore: rename package to robonix.primitive.linkerbot.linker_hand_o6.hand
Mirror the published repository’s model segment (linker_hand_o6), matching the catalog naming convention and every sibling entry, which keep ‘_’ inside hardware model names.
English
robonix.primitive.linkerbot.linker_hand_o6.hand —— 面向 LinkerBot LinkerHand O6 五指灵巧手 (六轴)的 Robonix 原语。经 SocketCAN 直接驱动灵巧手,不依赖 ROS。
robonix.primitive.linkerbot.linker_hand_o6.hand
LinkerHand 的 CAN 后端已 vendored 进本包(linkerhand_o6/vendor/,来自官方 linkerhand-python-sdk)。 该 SDK 没有发布到 PyPI,vendoring 让本包自洽,rbnx build 无需联网拉取。复制了 哪些文件、改了什么、如何同步上游,见 linkerhand_o6/vendor/README.md。
linkerhand_o6/vendor/
rbnx build
linkerhand_o6/vendor/README.md
robonix/primitive/hand/driver
CMD_INIT
ACTIVATE
DEACTIVATE
SHUTDOWN
robonix/primitive/hand/info
robonix/primitive/hand/move_joint
robonix/primitive/hand/set_joint_speed_limits
robonix/primitive/hand/set_joint_torque_limits
robonix/primitive/hand/get_state
手指级契约(move_finger / set_finger_*)与 state_joint / state_finger 流 (topic_out,需要本部署未运行的 ROS 后端)目前暂未支持。消费者从 info 读取 轴与手指的映射,再驱动 move_joint。
move_finger
set_finger_*
state_joint
state_finger
topic_out
info
move_joint
六个轴,按固件顺序排列(也就是 info 的返回顺序,以及任何 6 维向量的解释顺序):
thumb_cmc_pitch
thumb_cmc_yaw
index_mcp_pitch
middle_mcp_pitch
ring_mcp_pitch
pinky_mcp_pitch
按 robonix 手部契约,所有跨 gRPC 边界的数值都归一化到 [0, 1]:
0
1
O6 固件本身用每轴 0–255 的原始值,而且位置的极性是反的(255 = 完全张开)。 换算只发生在 linkerhand_o6/hand.py 一处,并已对照上游 SDK 自带的预设姿态校验 (其”张开”姿态为全 255)。
linkerhand_o6/hand.py
字段、单位与默认值见 config.spec。要点:
config.spec
hand_type
right
left
0x27
0x28
can_iface
can0
baudrate
1000000
每个字段都可回退到对应的 O6_HAND_* 环境变量。
O6_HAND_*
Python 3.8+,需 python-can、numpy 与 robonix_api。
python-can
numpy
robonix_api
CAN 权限。原语在 init 时执行 ip link set … 拉起接口。要么事先拉起 ——
ip link set …
sudo ip link set can0 up type can bitrate 1000000
—— 要么导出 PREFLIGHT_SUDO_PASS 让内部的 sudo -S 生效。推荐事先拉起:这样 本包完全不需要提权。
PREFLIGHT_SUDO_PASS
sudo -S
注意与上游 SDK 不同,本包不会从提交进仓的 yaml 文件里读取 sudo 密码。
scripts/start.sh 默认使用 $HOME/miniconda3/envs/bb_d1_robonix/bin/python3, 可用 LINKERHAND_O6_PYTHON 覆盖。
scripts/start.sh
$HOME/miniconda3/envs/bb_d1_robonix/bin/python3
LINKERHAND_O6_PYTHON
bash scripts/build.sh # rbnx codegen,生成 gRPC stub bash scripts/start.sh # 或由 rbnx boot 从部署清单启动 rbnx caps -v | grep hand # 确认 6 个能力已注册且 provider 处于 ACTIVE
关停由 Driver 的 CMD_SHUTDOWN 处理(on_shutdown 张开灵巧手并释放 CAN 句柄), 除此之外没有额外清理,因此不提供 scripts/stop.sh。关停时有意保持 CAN 接口 处于 up —— 总线上可能还挂着别的设备。
CMD_SHUTDOWN
on_shutdown
scripts/stop.sh
get_state
set_joint_torque_limits
package_manifest.yaml config.spec README.md README_CN.md scripts/{build.sh, start.sh} linkerhand_o6/ __init__.py main.py # robonix 契约层 hand.py # 归一化 [0,1] 封装 vendor/ # vendored LinkerHand SDK —— 见其 README linker_hand_o6_can.py color_msg.py can_iface.py UPSTREAM_COMMIT
MulanPSL-2.0。vendored 文件保留其上游许可 —— 见 linkerhand_o6/vendor/README.md。
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
primitive-linkerbot-linker_hand_o6-hand-rbnx
English
robonix.primitive.linkerbot.linker_hand_o6.hand—— 面向 LinkerBot LinkerHand O6 五指灵巧手 (六轴)的 Robonix 原语。经 SocketCAN 直接驱动灵巧手,不依赖 ROS。LinkerHand 的 CAN 后端已 vendored 进本包(
linkerhand_o6/vendor/,来自官方 linkerhand-python-sdk)。 该 SDK 没有发布到 PyPI,vendoring 让本包自洽,rbnx build无需联网拉取。复制了 哪些文件、改了什么、如何同步上游,见linkerhand_o6/vendor/README.md。能力契约
robonix/primitive/hand/driverCMD_INIT/ACTIVATE/DEACTIVATE/SHUTDOWN)robonix/primitive/hand/inforobonix/primitive/hand/move_jointrobonix/primitive/hand/set_joint_speed_limitsrobonix/primitive/hand/set_joint_torque_limitsrobonix/primitive/hand/get_state手指级契约(
move_finger/set_finger_*)与state_joint/state_finger流 (topic_out,需要本部署未运行的 ROS 后端)目前暂未支持。消费者从info读取 轴与手指的映射,再驱动move_joint。轴布局
六个轴,按固件顺序排列(也就是
info的返回顺序,以及任何 6 维向量的解释顺序):thumb_cmc_pitchthumb_cmc_yawindex_mcp_pitchmiddle_mcp_pitchring_mcp_pitchpinky_mcp_pitch量纲
按 robonix 手部契约,所有跨 gRPC 边界的数值都归一化到 [0, 1]:
0= 张开(伸直),1= 闭合(屈曲);thumb_cmc_yaw的0= 中立,1= 完全对掌。0= 最小,1= 最大。O6 固件本身用每轴 0–255 的原始值,而且位置的极性是反的(255 = 完全张开)。 换算只发生在
linkerhand_o6/hand.py一处,并已对照上游 SDK 自带的预设姿态校验 (其”张开”姿态为全 255)。配置
字段、单位与默认值见
config.spec。要点:hand_type(right|left,默认right)—— 决定灵巧手的 CAN 仲裁 ID (右手0x27,左手0x28)。取错则灵巧手不会应答,init 会在回读状态时失败。can_iface(默认can0)—— 灵巧手接入的 SocketCAN 接口。baudrate(默认1000000)—— CAN 波特率;O6 固件工作在 1 Mbps。每个字段都可回退到对应的
O6_HAND_*环境变量。依赖与权限
Python 3.8+,需
python-can、numpy与robonix_api。CAN 权限。原语在 init 时执行
ip link set …拉起接口。要么事先拉起 ———— 要么导出
PREFLIGHT_SUDO_PASS让内部的sudo -S生效。推荐事先拉起:这样 本包完全不需要提权。注意与上游 SDK 不同,本包不会从提交进仓的 yaml 文件里读取 sudo 密码。
scripts/start.sh默认使用$HOME/miniconda3/envs/bb_d1_robonix/bin/python3, 可用LINKERHAND_O6_PYTHON覆盖。构建与运行
关停由 Driver 的
CMD_SHUTDOWN处理(on_shutdown张开灵巧手并释放 CAN 句柄), 除此之外没有额外清理,因此不提供scripts/stop.sh。关停时有意保持 CAN 接口 处于 up —— 总线上可能还挂着别的设备。安全
info/get_state),再下发move_joint。set_joint_torque_limits降低上限,避免夹伤手指或损坏指节。CMD_SHUTDOWN时停止硬件输出。目录结构
许可
MulanPSL-2.0。vendored 文件保留其上游许可 —— 见
linkerhand_o6/vendor/README.md。