机械臂运动链
改进 DH 参数
PRO630 改进 DH 参数表(厂商资料)
PRO630 为六旋转关节串联机械臂,采用改进 DH(modDH)模型。
改进 DH 变换约定
按 Robotics Toolbox 的改进 DH 实现,对于未设置关节反向的旋转关节,offset 在计算变换前加到关节变量上。令 为第 行的 offset,则实际参与旋转的角度为 ,相邻坐标系的变换可写为:
其中 、 表示绕相应坐标轴旋转,、 表示沿相应坐标轴平移;第 行的 a、alpha 分别对应公式中的 、。控制器读数应按后文换算为 ,再由本公式加一次 offset。
在上述未设置关节反向的约定下,完整运动链为:
坐标系图与参考姿态
PRO630 尺寸与坐标系示意图
厂商的 PRO630 坐标系示意图 标出了底座坐标系 0、各关节坐标系及末端坐标系 6;图示竖直姿态显式标注 、。
图中的 、、 表示同一箭头上标出的两组轴名。
控制器关节角与位姿约定
DH 与 RoboFlow 的逐轴换算
令 为 RoboFlow 以度表示的关节角,。机械臂控制器上运行的运动学模块 pandakins 将六个输入角统一由度转换为弧度;对其 kinematicsForward 和 forward 的静态公式解析得到:
与本文 DH 链逐项对应,可得 。因此六轴均同向,第二、四轴的 DH 零位偏置各为 :
| 关节 |
DH 正方向相对 RoboFlow |
时的 RoboFlow 角度 (°) |
控制器角度转 DH 变量(rad) |
| 1 |
同向 |
0 |
|
| 2 |
同向 |
-90 |
|
| 3 |
同向 |
0 |
|
| 4 |
同向 |
-90 |
|
| 5 |
同向 |
0 |
|
| 6 |
同向 |
0 |
|
逆解结果转回控制器角度时使用:
例如 对应 ,再加 DH 表中的 后,实际旋转角仍为 。
第六轴符号可由控制器公式直接辨认:在 时,令 ,控制器输出的旋转矩阵为
它等于该参考姿态的 DH 末端旋转右乘 ,故 ,没有反向项。
关节软限位
下表来自机械臂控制器运行时的 joint.0 至 joint.5 的 neg-limit、pos-limit,与 RoboFlow 的 myCobotPro630.ini 配置一致。DH 列为 的范围,求解器使用时再转换为 rad。
| 关节 |
RoboFlow 下限(°) |
RoboFlow 上限(°) |
DH 下限(°) |
DH 上限(°) |
| 1 |
-180 |
180 |
-180 |
180 |
| 2 |
-270 |
90 |
-180 |
180 |
| 3 |
-150 |
150 |
-150 |
150 |
| 4 |
-260 |
80 |
-170 |
170 |
| 5 |
-168 |
168 |
-168 |
168 |
| 6 |
-360 |
360 |
-360 |
360 |
厂商机械结构手册 中第六轴为 ,与现场当前生效的 不同;前五轴一致。选解时应保留实际关节角所在的转数分支,再应用限位与接近当前姿态的选解规则。
末端姿态表示
官方 SDK 工具坐标换算实现 将末端位姿后三项 、、 作为度制欧拉角,换算为弧度后构造旋转矩阵。采用列向量表示坐标时,其旋转顺序为:
公式中的旋转函数使用换算后的弧度值。现场 kinematicsForward 也将旋转矩阵转换为此 RPY 约定,三个角不能作为轴角形式的旋转向量使用。
控制器当前 pandakins.TCPen=FALSE,TCPx/TCPy/TCPz 均为 0;运行状态中的 g5x_offset、g92_offset、tool_offset 及 rotation_xy 均为 0。因此控制器读出的原生位姿对应底座系中的法兰,不含相机光心补偿。按本文采用的名义底座与法兰定义,、。
AGV 到机械臂底座的安装变换
机械臂在 AGV 顶板上的安装位置
机械臂与顶板中央内侧安装圆同心、直立安装,直接固定在车身顶板上;底座方形接线面朝向 AGV 接线端。本文采用以下名义坐标定义。
| 坐标系 |
原点 |
轴方向 |
| AGV 几何坐标系 |
车身几何中心在地面上的投影 |
从接线端指向另一端, 为面向 时的左侧, 向上 |
| 机械臂安装底座系 |
轴线与底座安装面的交点 |
名义上与 同向,沿用机械臂坐标系图所推定的底座轴方向 |
| 安装参数 |
名义值 |
依据 |
| 纵向偏移 |
|
官方 STEP 中车身中心与安装圆心的位置差 |
| 横向偏移 |
|
安装圆心位于车身纵向中线上 |
| 离地高度 |
|
底盘顶板高度,直接安装,无额外垫高 |
| 相对旋转 |
单位矩阵 |
上述名义安装方向与坐标定义 |
纵向偏移沿用 官方 STEP 模型 的几何计算结果:CAD 中车身中心为 ,安装圆心为 ,按本文纵向正方向得到 。高度取自底盘尺寸图。
以下统一用 表示将 系坐标转换为 系坐标的齐次变换,采用列向量。因此:
位置换算为 。按本文名义安装模型, 与控制器原生底座系、DH 坐标系 0 重合,。
导航 base_link 到机械臂底座
令 表示导航 base_link。固定安装变换 由底座原点在 中的位置及底座三根轴的方向确定:平移为安装圆心的位置,旋转矩阵的三列分别为 的 、、 在 中的方向。
对照 AGV 实际使用的 agv_pro_description/urdf/agv_pro.urdf 与 meshes/base_link.stl。可以看到模型网格相对 base_link 没有额外平移或旋转;顶板内侧安装圆上两个相对孔的中心约为 、,其中点给出安装圆心 。顶板轮廓的纵向中心为 ,因此安装圆心相对车身中心仍为前文采用的 。
模型中雷达所在端为 ,与安装照片中远离接线端的 一致;两坐标系均向上取 ,故名义旋转取 。导航固定关节定义及现场运行配置将 base_link 定在 base_footprint 上方 。
本文以 base_footprint 为地面投影,沿用图纸的底座离地高度 ,因此安装高度取 。据此采用的名义安装变换为:
对应 ROS 的米制平移为 ,rpy 为 。在同一名义模型中, 的平移为 ,且 。
当前 STL 顶板在 中的高度约为 ,与上述按图纸和地面基准计算的 相差约 。本文统一采用后者,使安装变换与后文按离地高度构造的目标一致。该变换属于按模型与图纸确定的名义值,后续若在 ROS 中发布机械臂安装 TF,可直接使用这组数。
法兰到相机的工具变换
相机通过支架固定在法兰前方
安装照片显示,摄像头通过金属支架固定在机械臂末端法兰前方。没有做手眼标定之前,只能根据实测尺寸粗略估算光心位置与安装朝向,供名义逆解使用。
| 参数 |
采用值 |
依据或估算方法 |
| 法兰表面到相机镜头一侧前表面的距离 |
|
现场确认距离量到前表面 |
| 相机沿光轴方向的前后厚度 |
|
现场估计约 3 cm |
| 后表面距法兰 |
|
|
| 厚度中心距法兰 |
|
|
| 光心距法兰的前向距离 |
|
将光心取在厚度中心向前 处,即前表面后方 |
| 光心向上偏移 |
|
沿用正常安装参考姿态的现场估计 |
| 光心左右偏移 |
|
采用左右居中的近似 |
令 为控制器原生法兰坐标系,名义原点取法兰表面中心,轴方向与 DH 末端坐标系 6 一致。本文约定相机光学坐标系 的原点在光心, 沿光轴指向被拍摄物, 向图像右侧, 向图像下方。
在参考关节姿态 下, 向上、 向法兰前方。估算取相机光轴与 平行、横幅图像上沿朝 ,不计支架倾角。因此 、、,完整工具变换取为:
即 、;ROS 米制平移为 ,rpy 为 。这组平移和旋转均是估算模型,不是手眼标定结果,精度要求高时应以标定值替换。 已包含机身厚度所在的距离,不再额外加上 。
给定底座系中的目标相机位姿 ,所需法兰位姿为:
完整向量随法兰姿态旋转,不能在所有姿态中固定沿底座竖直方向加减 。
相机视场角
视场角决定了相机离机器多远才能把目标拍全。根据相机规格,标称视场角如下,水平与垂直方向以相机横幅拍摄时为准:
| 参数 |
截图标记 |
标称值 |
| 水平视场角 |
H |
|
| 垂直视场角 |
V |
|
| 对角视场角 |
D |
|
截图中的 D 表示对角视场角,本文公式中的 表示光心到机器表面的拍摄距离。计算画面宽、高覆盖范围时使用水平与垂直视场角即可。
全景拍摄时,相机绕光轴旋转 成为竖幅,画面在机器表面上的水平方向对应 ,竖直方向对应 。按光轴垂直于机器表面、拍摄模式保留上述视场角的理想透视模型估算,竖幅覆盖宽度为 ,高度为 。在名义距离 处,覆盖范围约为宽 、高 ;对居中的 高目标,上、下各留约 余量。
现场目标位姿输入
有了上面的变换,就可以把巡检任务翻译成逆解目标。下面是构造目标所需的现场参数。机器表面按竖直、与车身纵向平行处理;AGV 停车时使机械臂底座与目标纵向对齐。
| 参数 |
取值或约定 |
| AGV 纵向中线到机器表面的横向距离 |
,范围为 |
| 机器所在侧 |
侧为 , 侧为 |
| 目标在 中的纵向坐标 |
与底座对齐, |
| 全景目标中心离地高度 |
(目标全高约 ) |
| 铭牌中心离地高度 |
名义 ,随实际位置在 内调整 |
| 光心到表面的距离 |
全景名义 ;铭牌名义 ,均为目标设置 |
相机正对机器表面、光轴穿过目标点时,底座系中的目标光心位置为:
按 构造的名义目标如下,实际求解时应采用本次目标位置。
| 任务 |
目标光心位置 ,底座系(mm) |
姿态要求 |
| 机器正面或背面全景 |
|
相机转为竖幅,图像长边沿竖直方向 |
| 铭牌 |
|
相机保持横幅,铭牌中心位于画面中心 |
两类目标的光轴方向均为 。为给出完整的目标姿态,本文将横幅图像上沿取为底座 方向,竖幅取在此基础上绕相机光轴按右手定则旋转 :
令纵向误差 。将上述姿态和估算的 代入法兰换算,可直接得到适用于本节表面与朝向约定的目标法兰位姿。横幅铭牌目标为:
竖幅全景目标为:
这两组位姿已包含相机工具补偿,可以直接作为法兰逆解目标。取 、 及各任务的名义拍摄距离后,得到:
| 任务 |
目标法兰位置 ,底座系(mm) |
目标法兰旋转 |
| 机器正面或背面全景,竖幅 |
|
|
| 铭牌,横幅 |
;名义高度为 |
|
竖幅姿态中原先向上的 偏移转到沿底座 的方向,因此全景法兰的纵向坐标需要补偿 ,高度不再减去 。
完整名义求解链
从安装底座系到相机光心的完整运动学关系为:
按已确定的控制器名义坐标定义,,因此 。 已计入 DH 运动链,不应再作为额外工具长度重复叠加。
给定目标相机位姿 后,逆解的目标应转换为:
然后求满足 且不超出换算后关节限位的 。直接以物理法兰为目标时,使用 ,无需相机工具变换。
若目标相机位姿在导航 map 系 中给出,停车后读取该时刻的 ,结合本次采用的固定安装变换,可得:
对任意输入坐标系 ,定义 ,可将目标转换统一写为:
其中:
输入目标应具有有效的旋转矩阵,满足 、,并使用统一的毫米制平移;ROS 的米制平移应先乘以 。RPY 输入按前文约定转换为旋转矩阵后参与求解。
至此,名义模型所需的固定参数均已有采用值,其中相机外参为估算值,底盘安装变换按模型与图纸推导。解析枚举候选解只需要目标位姿;按当前姿态选解还需要当前关节角,导航目标还需要实时导航位姿。目标是否存在满足限位的逆解,由下文的分支求解与筛选确定。
解析逆运动学
求解变量与等价正运动学
解析求解直接使用实际参与各轴旋转的角度 :
求解后转换为:
使用 构造运动链时不再额外加偏置;使用 DH 变量 时,仍由 DH 公式加一次 。
为避免连杆标记与 DH 表格行号混淆,下文将两段主要臂长记为:
其余长度参数为:
将参数代入改进 DH 链,可得等价的显式乘积:
第二、第三、第四轴平行,定义它们的角度和为:
下文保留 、、 的完整影响。该结构的后三轴不构成三轴共点的球腕,不能仅按末端轴向减去一个工具长度后,将位置和姿态完全独立求解。
非奇异解析逆解
将已转换到机械臂底座系的法兰目标记为:
其中 、、 分别为目标法兰 、、 轴在底座系中的单位方向;加粗的 是方向向量,与 DH 表中的长度参数 无关。
1. 求第一轴
沿法兰轴向去除 ,得到坐标系 5 原点在底座系中的位置:
第一轴满足:
若 ,目标无几何逆解。否则,对 :
对每个第一轴候选,定义底座系中的单位向量:
2. 求第五轴与角度和
由正运动学可得法兰轴向:
因此:
在 的非奇异情况下:
其中 为方向向量 的底座系竖直分量。
3. 求第六轴
定义:
该方向为坐标系 5 的 轴方向,正运动学满足:
因此:
4. 求第二、第三轴
去除 后的位置满足:
补偿第五轴偏移,定义平面二连杆目标:
于是:
由余弦定理:
若 ,舍弃当前第一轴、第五轴组合对应的分支。否则,对 :
5. 求第四轴并汇总分支
枚举 、、,非奇异情况下最多得到 组模 的几何解。关节转数展开、限位筛选和当前姿态选解在后续统一处理。
浮点实现应为可达性判断设置与量纲相符的数值容差。仅当越界来自容差内的舍入误差时,才将根号内的微小负值截断为零,或将 、 截断到 ;实际不可达的分支应舍弃。
奇异解与分支合并
当 时,不能使用上述除以 的角度和公式。第五轴当前限位为 ,因此允许范围内需要处理的这类奇异情况只有:
若 ,则第五轴角为 模 ,所有转数分支均超出当前限位,可直接舍弃。
对于 分支,姿态只能确定:
其中:
可将 作为一维自由参数,并取:
对每个 ,使用非奇异求解第 4 步中的 、 及平面二连杆公式求 、,再计算:
由此得到连续候选集合,在满足关节限位的可行集合上按下文目标函数选解。当前第六轴角可作为选解偏好,但不能通过任意固定 来替代整个连续解族。单个固定 或有限采样未命中可行解,也不能证明整个连续解族无解。
当 接近零但不为零时,逆解对姿态误差敏感。数值处理应保留原始目标,通过当前姿态保持分支连续,并用正运动学残差判断候选是否有效,不能直接将第五轴强制置零后接受不满足目标的解。
当 时,两组第一轴分支合并;当 时,两组肘部几何分支合并。对应公式仍可使用,汇总时去除重复解。
候选解约束与选择
转数展开与关节限位
解析公式给出的角度按模 理解。对每组几何解 ,应按各轴实际限位枚举:
令 、 为前文 RoboFlow 软限位乘以 后的弧度值。注意这里使用的是控制器角度范围,而非带零位偏置的 DH 变量范围。允许的整数范围为:
任一轴的整数范围为空时,舍弃该组几何解;否则保留各轴允许转数的组合。第六轴范围为 ,不能将所有候选统一压缩到 。重复解应按展开后的实际关节角去重,不能将相差整圈的控制器角度合并。
正运动学残差
将目标法兰位姿记为 。将每个候选转换为 ,代回完整正运动学,记所得法兰位姿为 。候选应满足:
其中 使用 mm, 使用 rad,分别为位置与旋转残差容差,应按求解精度要求设置。正运动学复核使用未舍入的候选角度。这些残差反映名义模型内的求解误差,不包含安装尺寸、相机外参及设备标定误差。
接近当前姿态的选解
记通过限位和残差约束的候选集合为 ,其中包含奇异情况下的可行连续解。将当前控制器角度换算为:
可按加权关节位移选择:
没有轴间偏好时可取 。这里使用展开后的实际角度差,不对差值取模,以正确计入跨转数分支的关节位移。若 为空,则目标在当前名义模型与限位下无解;若未提供当前关节角,则可返回全部候选,奇异时以参数化解族表示,不据此指定执行分支。
完整求解顺序为:
- 统一输入单位和姿态表示,将目标转换为底座系中的法兰位姿。
- 枚举第一轴、第五轴和肘部分支;第五轴奇异时求解对应的连续可行集合。
- 展开各轴允许的转数,按现场生效的软限位筛选。
- 用完整正运动学检查位置与姿态残差,去除实际角度相同的重复候选。
- 根据当前关节角选解,输出 或 RoboFlow 角度 。