- LinkerMCG 三分类:新增标准配置名
motion_type: linkermcg_g7,旧linkermcg保留为兼容别名;LinkerMCG 明确区分为 G7、M7、M11 三种;G7 不支持 O30,O30 仅支持linkerforce与linkermcg_m11。 - 新增 LinkerMCG M11 独立 UDP motion 模块,基于共享 M 系列核心,支持 O20 16 路目标角度协议(
linker.o20.targetpos16.flat.v1)和 O30 行程协议(linker.o30.stroke20.flat.v1)。 - 收敛 LinkerMCG M7 能力:移除 O30 支持,M7/M11 共用 M 系列内核与手部适配,减少重复逻辑和命名歧义。
- 新增 M7/M11 UDP 协议文档(
LinkerHand_UDP_M7&M11.md),明确 M7 的 6/10/20 路行程结构、M11 O20 16 路与 O30 20 路结构及状态报文约定。 - 新增 LinkerForce L30 型号支持,补充 18 路电机映射、左右手 URDF 资源、运行时路由和单元测试。
- O30 型号规范化:原 O30i 硬件统一为公开型号 O30,更新模型资源与 URDF 限位,保留客户 LinkerForce 调参(
o30_config.py参数值不变)。 - 修复 handretarget 启动崩溃:统一
linkerhand导入路径,消除同名枚举被加载成双份导致的 LinkerForce 初始化失败(Retarget缺少lefthand)。 - LinkerForce 输出帧率改为按配置读取,支持通过
motor_output.frame_rate调整运行调度频率。 - 调整 LinkerForce 触觉反馈:新增斜率增益(
slope_gain)放大映射,触觉质量话题更新为*_matrix_touch_mass。 - 修复 UdexReal 启动流程:UDP 初始化失败明确返回失败、成功明确返回成功,避免节点启动后未进入 ROS2 事件循环而直接退出。
- 测试体系完善:O30/触觉反馈测试适配更新后的模型与 URDF 限位,
tests/conftest.py自动配置导入路径(不再依赖手动PYTHONPATH),移除linkerforce_improved死测试,信号处理测试归位集成目录;完整离线单测全绿。 - 稳定性修复:四指中部夹角计算补充除零保护,
yourdfpy数组转标量弃用(NumPy 1.25+)修复。 - 移除过时的自测报告,更新 O30 模型资源与 LinkerForce 反馈配置。
- 新增 LinkerForce 位置报文日志,支持按左右手、日期和小时分文件记录原始报文及解析值。
- 优化 LinkerForce 输出处理,新增运行时间限幅和限幅日志,默认
300 ms,抑制单帧异常脉冲。 - 新增 LinkerForce 位置协议自动识别,
2.1.5及以上自动使用0x05,其余版本沿用0x03。
- 新增 LinkerMCG M7 独立 UDP motion 模块,支持 6/10/20 路行程报文解析、型号 DOF 校验、左右手发布路由和
0..255电机值直通。 - LinkerForce 标定清单逻辑移动到
linkerhand公共模块;本版本各型号固定全部 21 路关节参与标定抖动检测,过滤配置代码和配置入口保留,但发布级开关默认关闭,暂不开放启用。 - 强化 LinkerForce 位置报文校验:21 路原始角度必须全部位于
0..360度,任意关节小于 0 或大于 360 时整帧丢弃,保留上一帧poslist。 - 新增位置错报文日志,记录异常关节索引、角度、原始字节和完整 payload,便于定位第 20 关节等局部报文损坏问题。
- 强化 LinkerForce 位置帧解析:
0x03与0xA6位置帧必须满足 21 路关节数据,长度异常、解包异常或非有限数值将被拒绝,避免异常帧污染poslist。 - 优化 LinkerForce 串口帧重同步:解析到非法命令候选帧时立即丢弃并继续寻找下一个有效帧头,避免数据区中的
0x5D误触发Unknown command: 0x66后吞掉真实0x03位置帧。 - 新增 LinkerForce 异常日志:未知命令帧仅写入本地异常日志,记录命令、长度、校验和完整帧 hex,不再通过 ROS warn 刷屏;发布值检测到
255->0或0->255端点跳变时,记录触发关节的上一值、当前值及对应前后帧原始数据。 - 收敛调试输出:关闭 O6 右手周期性帧率跟踪,取消
0.35 rad原始弧度小跳变日志,避免低价值记录刷屏。 - 统一 LinkerForce 串口写入路径:运行线程周期查询、初始化后的版本查询和力反馈写入通过
ForceSerialReader写锁发送,降低读写线程并发访问串口的风险。 - 统一 O6 LinkerForce 配置与参考项目:多段映射默认状态调整为
original -> fist,保留opose配置开关能力。 - 更新 O6 配置说明和自测记录,明确当前默认标定映射使用张手到握拳的两段状态。
- 调整 O30i 拇指旋转电机输出方向和四指 roll 输出归一化规则,补充 O30i 关节顺序、URDF 归一化和方向相关单元测试。
- 补充 MuJoCo 显示稳定性:双手显示时改为隔离子进程启动以避免 native viewer 崩溃,默认
mujoco.enabled关闭,仍可按配置开启。 - 更新现场测试配置:默认 LinkerForce 配置切换到 O6 左右手,右手串口示例为
/dev/ttyUSB1,启动脚本默认进入标定模式。
- 新增 O20、O30、O30i、L21 机械手型号接入,补齐型号注册、长度映射、运行时路由、手型包装器和 URDF 资源引用。
- 完成 LinkerFFG 的 O20/O30/O30i 映射接入,支持按
original、opose、fist标定锚点输出目标弧度,并按 URDF 上下限截断。 - 优化 O20/O30i 电机输出换算:根据 MuJoCo/URDF 弧度归一化到
0..255,修正拇指 roll/yaw 和四指侧摆方向问题。 - 调整 LinkerFFG 自动标定顺序:启用握拳采集时为
fist -> opose -> open,禁用时为opose -> open,并增强单手连接和标定缓存保护。 - 强化串口连接链路:支持命令行候选串口、配置固定串口和
auto_scan自动扫描,版本查询阶段同步抓包并按VERSION_QUERY_RETRY_COUNT重试;串口扫描和运行期连接采用独占锁,串口写入增加线程锁,避免重复进程抢占端口或并发写入。 - 优化 LinkerFFG 触觉力反馈与运行调度:触觉话题使用独立执行器,五路
0x04力反馈由独立 30 Hz 线程发送,峰值限制在0..500;O6 调试改为发布帧率及force04数据跟踪,并修复退出时重复调用 ROS2 shutdown 导致的清理异常。 - 补充 MuJoCo 显示和依赖说明:支持按已连接手套选择显示模型,新增额外安装清单,并明确 ROS2 运行依赖不写入项目依赖清单。
- 更新 ROS2、LinkerFFG、LinkerMCG 和第三方机械手映射文档,新增 SDK 启动版本号日志,并补充相关回归测试。
- 从混合工作区中拆分为独立 ROS2 仓库。
- 根目录文档简化为仅面向 ROS2 的构建和运行说明。
- 统一所有对外版本号引用为
2.12.4。 - 移除 launch 安装说明,改为
ros2 run。 - 保留 ROS2 包的子树历史。