API 要点¶
最常用的接口。示例为 Python;C++ 接口同名。完整说明可用 help() 查看,例如 help(t.FollowerGripper)。
设备发现¶
多只夹爪时,按左右和主从一起挑出要用的那只,再用它的 mcu_device 打开:
ep = next(e for e in t.scan_grippers()
if e.side == t.Side.Left and e.role == t.Role.Follower)
g = t.FollowerGripper(ep.mcu_device)
只接一只时也可以用 t.find_follower() / t.find_leader()。
扫描会中断其他程序
扫描会停掉其他程序正在使用的夹爪数据流,正在夹持的从夹爪会卸力。在自己的程序里只在启动时扫描一次。
主夹爪:读取¶
g = t.LeaderGripper(ep.mcu_device, normalize_position=True) # ep 按上面的方法挑出主夹爪
g.encoder.on_data(lambda s: print(s.position)) # 0 = 闭合,1 = 张开
g.imu.on_data(lambda s: print(s))
g.start_streaming(imu_hz=100, encoder_hz=100)
# ...
g.stop_streaming()
normalize_position=True 需要主夹爪已完成行程标定,见 标定与自检。
从夹爪:控制¶
从夹爪的控制器、状态读取与示例脚本见 从夹爪 → API 与示例。
电机底层接口不经过控制器的保护,不要直接调用,见电机底层接口。
腕部相机与鱼眼矫正¶
夹爪对象默认不打开腕部相机。需要时:
g = t.FollowerGripper(ep.mcu_device, wrist_video="/dev/v4l/by-id/<相机>-video-index0",
open_cameras=True, undistort_wrist=True)
g.wrist_camera.start(lambda f: print(f.frame_index))
画面默认是 RGB。查看画面可以直接用示例 wrist_camera.py,见 示例。
鱼眼标定读不到时会怎样¶
鱼眼内参存在每只夹爪里。没有标定过的夹爪,SDK 会自动改用一组内置的参考内参并打印告警,矫正不会失败。 读取内参时用:
is_reference 为真表示用的是参考内参。
参考内参只是近似
各台镜头的装配位置略有差异,参考内参只适合看画面。需要在矫正图上按像素测量(手眼标定、视觉伺服等)时,
给这台夹爪写入它自己的标定:python python/examples/fisheye_cal.py set-fisheye right --from-npz cam.npz
(从夹爪加 --follower)。
矫正后画面偏心是正常的
传感器不一定正好装在镜头光心上,矫正后画面可能偏向一侧,而标定是正确的,不要去改内参里的 cx。