假设有一台带六个关节的工业机器人臂。只要一个关节稍稍转动,后面连着的整段手臂就会一起动,最末端的手会移到完全不同的位置。要计算这种连锁运动,必须先用约定好的方式写下每个关节和杆件的形状。如果人人自定基准,同一台机器人也会写出不同的公式。用每个关节仅四个数字就把这些关系整理清楚的约定,就是‘德纳维特-哈滕贝格约定(Denavit-Hartenberg Convention)’。
简单来说,德纳维特-哈滕贝格约定是指‘按固定规则给串联机器人臂的每个关节附上坐标系,并用四个参数表示相邻两个坐标系关系的方法’。1955年,雅克·德纳维特(Jacques Denavit)与理查德·哈滕贝格(Richard Hartenberg)为了标准化机械联接装置的坐标系而首次提出。常简称为DH约定、DH参数,至今仍是机器人学教科书中最先学习的工具之一。
本资料将依次说明这一约定为何必要、四个数字各自含义、如何把数字串起来求出末端位置,以及经典型与修正型分叉的来龙去脉。
用四个数字写下机器人臂的约定
德纳维特-哈滕贝格约定为何出现?

机器人臂是刚体杆件由关节一节节连成的链条。要知道末端在哪里,必须把每一节的长度与方向、关节转过的角度都算进去。问题在于:在空间中表示一个物体的位置与姿态,本来需要六个量。
(1) 各不相同的坐标系
约定定着之前,研究者各自选取坐标轴的方式不同。即便分析同一台机器,公式形态也不同,结果难以比较或核对。
(2) 1955年的提案
德纳维特与哈滕贝格在美国机械工程师学会应用力学期刊的论文中提出了用矩阵表示机构的记法。核心在于:一旦规定好坐标轴的附着规则,相邻杆件之间的关系就能从六个量减到四个。
(3) 进入机器人领域的时期
起初这是面向一般机械联接装置的方法。1981年理查德·保罗(Richard Paul)在机器人操作器教材中把该约定正式用于机器人臂分析,它便成为机器人学的标准工具。
每个关节附上的四个数字

规则意外地简单。把每个关节的转轴或滑动方向取为z轴,把同时垂直于相邻两关节轴的公共法线取为x轴。轴对齐之后,从一个坐标系走到下一个所需的量就只剩四个。
- 关节角(Joint Angle):绕前一个z轴,x轴转过的角度。
- 连杆偏置(Link Offset):沿前一个z轴到下一条公共法线的距离。
- 连杆长度(Link Length):两关节轴之间公共法线的长度。
- 连杆扭角(Link Twist):绕公共法线,两根z轴彼此扭转的角度。
若是转动关节,关节角随电机变化,其余三个由机械外形固定。若是移动关节,则反过来,连杆偏置是变化的量。结果是每个关节带着一个运动的数字和三个定形的数字。

把表串起来找到末端

按关节顺序写下四个数字,就得到一行一个关节、容纳整条机器人臂的简明表格。有了这张表,求末端位置的计算就变成机械步骤。
(1) 一格一格跨过去的变换
每一行的数字变成一次坐标变换:先沿z轴转动并平移,再沿x轴平移并转动,共四步。该变换整理成同时容纳旋转与位置的4行4列矩阵。
(2) 依次相乘即可
把从基座到第一关节、第一到第二关节的矩阵依次相乘,就得到基座到末端的单一矩阵。只要代入关节角,末端的位置与姿态立刻算出。这就是正运动学的基本框架。
(3) 其他计算的起点
同一张表也直接用于从期望末端姿态反求关节角的逆运动学,以及处理速度与力的动力学。许多机器人仿真程序以这张表为输入,原因也在于此。
经典型与修正型:两种约定

用得越广,混淆也越多。同一名称下并存两种做法。翻开教材或程序时,先确认它遵循哪一边,正是为此。
(1) 经典型约定
按原先的方式,把每节杆件的坐标系附在该节远端的关节上。许多教材与公开资料以这种方式为基准讲解。
(2) 修正型约定
约翰·克雷格(John Craig)的教材《机器人学导论(Introduction to Robotics)》等采用的方式,把坐标系附在杆件近端的关节上,并改变变换顺序。参数名称相近,填入的位置却不同,混用两种方式会得到错误结果。
(3) 局限与替代
当相邻两关节轴接近平行时,公共法线位置不确定,小小误差也会让数值大幅摇摆。因此在需要精密标定的领域,也一直研究其他表示法。尽管如此,因为它简单、便于手算跟随,仍是最先学习的方法。
再复杂的机器人臂,也按每个关节四个数字一步步写下来——那就是理解德纳维特-哈滕贝格约定的第一步。