有多少人工,就有多少智能

Robotics-机器人建模中的原点选取

引言

在机器人建模中,"坐标系原点该放在哪里"是一个看似基础、却极易混淆的问题。有人说是质心,有人说是几何中心,有人说是关节交点——这些答案其实都对,但都只对了一半。

真正的问题是:你在做哪一层建模?

本文试图把机器人建模中坐标系建立的完整逻辑讲清楚,包括 D-H 法则的强制约定、运动学与动力学坐标系的分离、以及 ROS 中的工程实践。

 

一、坐标系建立的三个层次

在讨论原点选取之前,必须先分清三个层次:

位姿描述与建模
│
├── 一、位姿表示层(一个位姿怎么用数字写出来)
│   ├── 旋转:旋转矩阵 R / 欧拉角 / RPY / 四元数
│   └── 平移:位置向量 p
│
├── 二、统一运算层(多个变换怎么连乘)
│   └── 齐次变换矩阵 T = [ R  p ]
│                        [ 0  1 ]
│
└── 三、机器人建模层(串联连杆的 T 怎么系统化生成)
    ├── D-H 法则(θ, d, a, α)
    ├── 旋量 / POE
    └── URDF(ROS 工程格式)

 

这三个层次的关系是:

  • 表示层回答"一个位姿长什么样"。

  • 运算层回答"多个变换怎么算"。

  • 建模层回答"从机械结构到矩阵怎么生成"。

坐标系原点的选取,主要发生在建模层,并受到运算层的约束。不同的建模方法,对原点的约定完全不同。

二、D-H 法则:原点由关节轴线强制决定

2.1 D-H 包含位置关系吗?

包含。D-H 的四个参数中,两个管姿态,两个管位置:

image

 

 D-H 用 4 个参数描述 6 自由度位姿变换,靠的是利用串联连杆的几何约束进行压缩。

2.2 原点选取规则

D-H 坐标系的原点既不是质心,也不是几何中心,而是由关节轴线决定。

image

 

image

 

三、不用 D-H 时,原点由目的决定

一旦离开 D-H 体系,原点选取就不再唯一,而是由建模目的驱动:

image

四、运动学与动力学坐标系:通常不一致

4.1 为什么不一致

image

 

4.2 两者如何关联

连杆是刚体,质心相对关节坐标系的位置固定,所以两者之间是一个常数齐次变换:

image

 

4.3 动力学建模的处理方式

牛顿-欧拉递推:

  1. 在 D-H 坐标系做运动学递推。

  2. 在质心坐标系算惯量力和力矩。

  3. 用固定变换把力/力矩搬回关节坐标系。

image

 

4.4 什么情况下会一致

  • 简化模型:连杆当质点,质心在关节轴线上。

  • 人为约定:动力学系也建在 D-H 原点,质心偏移写进惯量张量(平行轴定理)。

  • 单一刚体:怎么建都行。

多连杆实际系统中,两套坐标系通常分开。

五、ROS 中的工程实践

5.1 ROS 用 URDF,不直接用 D-H

ROS 中描述机器人运动学结构的是 URDF,通过 link 和 joint 构建运动学树。URDF 描述物理连接关系,原点可灵活定义,不强制遵循 D-H。

这种方式对用户更友好,也避免了 D-H 在某些构型下的奇异问题。

 

5.2 D-H 在 ROS 中的两个角色

角色一:作为建模输入

DH2URDF 等工具可以把 D-H 参数表自动转成 URDF。UR 机器人的 ROS 驱动包底层使用 D-H 参数,但通过转换算法最终生成 URDF。

 

角色二:作为算法参考

许多经典运动学算法基于 D-H 推导。研究者会实现基于 D-H 的 ROS 节点,或从 URDF 反向推导 D-H 参数。

5.3 DH → URDF 的转换逻辑

核心思想是拆解:把每个 D-H 段(theta, d, a, alpha)拆成多个 joint 和 link 的组合。

例如 UR 驱动包把每个 D-H 段拆成两个物理连杆:一个负责 d 和 theta(旋转部分),另一个负责 a 和 alpha(被动位移部分)。

5.4 URDF 如何同时容纳运动学和动力学

<link name="link1">
  <!-- 运动学:视觉/碰撞几何 -->
  <visual>...</visual>
  <collision>...</collision>
  <!-- 动力学:质心、质量、惯量 -->
  <inertial>
    <origin xyz="0.01 0 0.05"/>  <!-- 质心相对 link 原点的偏移 -->
    <mass value="1.5"/>
    <inertia ixx="..." ixy="..." .../>
  </inertial>
</link>
  • link 原点由 joint 决定,是运动学坐标系。

  • <inertial> 里的 origin 描述质心相对 link 原点的偏移,即两套坐标系之间的固定变换。

      ROS 的做法:统一用 link 坐标系做运动学,质心偏移和惯量作为附加参数写在 <inertial> 里。

 

image

 

6.2 核心结论

  1. D-H 同时包含姿态和位置关系:θ,αθ,α 管姿态,d,ad,a 管位置。

  2. D-H 原点由关节轴线强制决定,与质心、几何中心无关。

  3. 不用 D-H 时,原点由建模目的决定:动力学选质心,仿真选几何中心,旋量法可不选。

  4. 运动学和动力学坐标系通常不一致,靠固定变换关联。

  5. ROS 用 URDF 建模,D-H 作为输入或算法参考,通过转换工具集成。

  6. 齐次变换矩阵是统一运算载体,所有表示法最终都要转成它。

 

image

 

结语

坐标系选取看似是细节,实则决定了整个建模流程的清晰度与可维护性。

原点放在哪里,不取决于习惯,而取决于你在回答哪个问题。

  • 回答"末端在哪" → 运动学坐标系,由关节轴线决定。

  • 回答"转起来多费劲" → 动力学坐标系,由质心决定。

  • 回答"怎么在 ROS 里跑起来" → URDF,原点由结构决定。

理解了这几套坐标系的层次关系和转换逻辑,"原点放哪里"就不再是困惑,而是一个有明确答案的工程决策。

posted @ 2026-09-19 13:53  lvdongjie-avatarx  阅读(18)  评论(0)    收藏  举报