目录
前言
一、先建立一个直觉
二、齐次变换矩阵表示什么
三、最重要的一句话
四、什么是左乘
五、左乘的本质
六、什么是右乘
七、右乘本质
八、一个非常经典的例子
九、机器人开发中最常见的情况
十、最容易记忆的方法
十一、机器人领域最实用的结论
十二、机器人坐标左乘右乘面试高频问题(SLAM / 机械臂 / 自动驾驶通用)
1、基础概念简答题
2、场景区分题
3、SLAM & 李群进阶题
4、计算实例问答题
5、工程踩坑故障题
前言
机器人坐标变换中的左乘和右乘,几乎是所有机器人、视觉、SLAM、机械臂开发人员都会遇到的概念容易搞混,本质原因是:左乘和右乘不仅仅是矩阵放哪边的问题,而是代表了“谁在动”、“在哪个坐标系下动”。
一、先建立一个直觉
假设地面上有:
- 世界坐标系 World
- 机器人底盘坐标系 Base
- 相机坐标系 Camera
- 目标坐标系 Object
例如:
World
│
├── Base
│
├── Camera
│
└── Object
二、齐次变换矩阵表示什么
例如:
表示:Base坐标系相对于World坐标系的位置和姿态
写成矩阵:
三、最重要的一句话
四、什么是左乘
五、左乘的本质
六、什么是右乘
七、右乘本质
八、一个非常经典的例子
九、机器人开发中最常见的情况
十、最容易记忆的方法
十一、机器人领域最实用的结论
绝大多数机器人程序中:
- 机械臂正运动学 → 右乘
- DH参数链 → 右乘
- TF树坐标变换 → 右乘
- 相机外参链 → 右乘
- SLAM位姿累计 → 右乘
- 机器人局部运动控制 → 右乘
因为这些场景本质上都是:
当前坐标系相对于上一级坐标系定义变换。
而左乘通常出现在:
- 世界系修正位姿
- 地图对齐
- 全局坐标重定位
- 用世界坐标定义运动增量
等场景。
你可以记住一句最实用的话:
右乘 = 沿自己的坐标轴运动;左乘 = 沿世界坐标轴运动。
对于机械臂、视觉外参、TF树、手眼标定这类机器人应用,90%以上情况下看到的都是右乘链式变换。
十二、机器人坐标左乘右乘面试高频问题(SLAM / 机械臂 / 自动驾驶通用)
1、基础概念简答题
(1)一句话区分齐次变换矩阵左乘、右乘的几何含义
答:
(2)变换符号怎么读?代表什么转换关系
答:
(3)为什么变换矩阵乘法不满足交换律?举简单例子
答:
(4)什么是内旋、外旋?分别对应左 / 右乘
答:
- 内旋(动轴旋转):每次绕更新后的自身轴旋转 →右乘(机械臂 DH、里程计);
- 外旋(定轴旋转):全程绕不变的世界轴旋转 →左乘(全局轨迹修正、地图对齐)。
2、场景区分题
(1)机械臂 DH 正向运动学为什么全部右乘?
答:
(2)移动机器人里程计位姿更新用左还是右乘?原因
答:
(3)TF 树多传感器外参拼接为什么是右乘链式?
答:
(4)全局重定位、地图对齐修正位姿用左还是右乘?
答:
3、SLAM & 李群进阶题
(1)SLAM 优化中,左扰动、右扰动分别对应左 / 右乘?
答:
(2)ICP 配准迭代更新位姿是左乘还是右乘?为什么?
答:
(3)两帧位姿T1、T2求相对变换,误差变换怎么写,对应哪种乘法?
答:
(4)IMU 预积分累积旋转平移为什么采用右乘?
答:IMU 输出角速度、加速度全部是载体自身坐标系测量值,每一段积分增量都是局部变换,不断右乘累积位姿。
4、计算实例问答题
5、工程踩坑故障题
(1)TF 坐标转换结果坐标完全错乱,大概率左乘右乘搞反,怎么排查?
答:
- 确认变换增量是自身局部还是世界全局;
- 拆分变换链,分步打印矩阵对比理论坐标;
- 区分扰动模型:SLAM 代码统一固定左 / 右扰动,不要混用;
- 检查变换矩阵逆矩阵是否漏乘(相机→底盘和底盘→相机互为逆)。
(2)机械臂末端坐标计算偏差,DH 矩阵左右乘顺序错误如何修正?
答:DH 必须从基座到末端依次右乘;若写成左乘,相当于绕世界轴旋转,末端姿态完全错位,调整矩阵相乘顺序从左到右连杆依次相乘。
(3)里程计长时间累积漂移,左乘 / 右乘选择会加剧漂移吗?
答:不会直接造成漂移,但乘法顺序错误会让每一步增量叠加错误偏移,漂移速度大幅加快;必须严格按局部增量右乘更新。