直观理解机器人零空间
统计 阅读时间大约4分钟(1572字)

5小时前 直观理解机器人零空间

来源:豆包
出品:机器人技术笔记零空间在机器人控制里应用很广。冗余机器人控制、HQP分层二次规划优化等问题,都会碰到它。零空间,可以先理解成这样:系统内部在变化,我们关心的...

出品:机器人技术笔记

零空间在机器人控制里应用很广。冗余机器人控制、HQP 分层二次规划优化等问题,都会碰到它。

零空间,可以先理解成这样:系统内部在变化,我们关心的输出却没有变化。放到机械臂上,就是一些关节仍在转动,但末端的位置和朝向可以保持不变。机器人可以利用这部分额外的运动,调整自身姿态,同时继续完成原来的任务。

可这个词听着就很专业。查资料,迎面而来的往往是线性代数、子空间和一串高维矩阵。这些定义没有错,只是很难在脑中形成画面。

其实事情没这么复杂。想象一个三维空间里的物体,怎样投影到二维平面就够了。

桌面投影,丢掉了哪个方向

把一支笔放在桌面上方,只看笔尖向桌面的垂直投影。笔尖在空间里有三个坐标 x、y、z,投影点在桌面上只有 x、y 两个坐标。

e3f4ccc18369bb16d5c6ddb4171396bc.png

图 1:笔尖的三维位置被映射为桌面上的二维投影点。

这里说的是一个理想的正交投影:保留 x、y,丢掉高度 z。这就是从三维空间到二维空间的映射。

如果笔尖沿着桌面方向运动,它的 x 和 y 变了,桌面上的投影点也会跟着动。空间里的动作,这时可以在低一维的桌面上看见。

5ce9fce2762e66d52b8bacfebe2f73b0.png

图 2:笔尖沿桌面方向运动,投影点也发生位移。

那么,有没有一种动作,笔尖明明在三维空间里运动,桌面上的投影点却始终不动?

有。让笔尖垂直桌面上下运动。

此时笔尖的高度 z 在变,x、y 没变。三维空间中的速度不为零,可映射到二维桌面之后,投影速度正好是零。

b444e25f3f3cf956a694ae7da6f0e197.png

图 3:笔尖在空间中有速度,桌面投影速度为零,这个垂直方向就是投影映射的零空间。

零空间最直观的理解就在这里:输入在动,映射结果却不动。所有能产生这种结果的运动方向,放在一起就是这个映射的零空间。

3 维到 2 维,公式里是什么样?

把刚才的动作写成速度映射,只需要一个 2×3 的矩阵:

5d7acff4e9afd1647ac60bc35d94624b.png

矩阵 P 把三维速度变成二维投影速度。它保留前两个分量,对第三个分量完全没有反应。

当 ẋ、ẏ 为零,但 ż 不为零时,左边仍然是零。因此,这个投影矩阵的零空间是:

d4a0ab2edcb4c9117abb3d7580331049.png

它是三维空间里的一条直线,就是垂直桌面的方向。矩阵 P 的秩是 2,输入维数是 3,所以零空间的维数是 3−2=1。

到这一步,高维子空间已经有了一个可以看见的样子。

换成 7 关节机械臂,这个画面还能沿用

机器人末端在空间中的瞬时运动通常用 6 个分量表示:3 个平动速度,再加 3 个转动速度。像 Franka Research 3 和 KUKA LBR iiwa 这类常见的上肢操作平台,机械臂有 7 个关节轴。[4][5]

于是,它面对的是一个很像笔尖投影的问题:输入是 7 维关节速度,输出是 6 维末端速度。

3d916269015708f942d074275260bf6d.png

图 4:7 维关节速度通过雅可比矩阵映射为 6 维末端速度(3 平动+3 转动)。

这个速度映射由雅可比矩阵表示:[1]

e823e00e33678e8263c1c548c9dfab7e.png

其中,q̇ 是 7 个关节速度,V 是末端的 6 维速度,J(q) 是当前机械臂姿态下的雅可比矩阵。它有 6 行、7 列。

如果关节在动,但末端的 6 维速度为零,就有:

865209bf51ea17c88ffa8507d2a13745.png

这句话和笔尖垂直桌面运动是一回事。机械臂的关节在动,可映射到末端任务空间后,速度消失了。这些关节速度就属于雅可比矩阵的零空间。

注意,零空间位于 7 维关节速度空间里,不是位于 6 维末端速度空间里。在雅可比满行秩的普通姿态下,它的零空间维数是:

2f5f6bf0f3e316b0c16c8f3a6fcdfc64.png

这个多出来的一维自由度,让机械臂在末端保持不动时,仍然可以调整内部姿态。你自己的手臂也能做出类似动作:把手掌的位置和朝向尽量保持不变,肘部还能在一定范围内绕动。[2]

b11c1421a4beaba36bb12befc0b67a18.png

图 5:末端位置和朝向保持不变时,7 关节机械臂仍可沿零空间调整内部姿态。

这多出来的一维不是摆设。末端继续跟踪目标时,机械臂可以利用它远离关节限位、躲避障碍,或者把肘部调到更合适的姿态。在任务优先级控制里,这就是让低优先级动作不干扰高优先级任务的基本思路。

用伪逆把它写成通用的关节速度解,可以看得更清楚:

aa23961ef46e064e0888e966c3b5a84d.png

前一项让末端完成期望速度 V_d;后一项把任意关节速度 z 投到零空间里。因为 JN=0,后一项不会改变末端的瞬时速度。

还有一个容易忽略的边界。零空间运动说的是当前姿态下的瞬时速度;关节一动,雅可比矩阵也会变,控制器需要不断重新计算。关节限位、自碰撞和奇异姿态还会继续压缩实际可用的动作。在奇异姿态下,雅可比的秩降低,零空间的维数可能增加,但这不代表机器人变得更灵活;它同时也失去了某些末端运动方向。[2]

回到开头那支笔,零空间就是竖直于桌面的那个方向:笔尖在动,投影不动。放到机器人上,只是把三维换成了七维,把桌面投影换成了六维末端速度而已。这样理解,零空间就可以脱离抽象的数学推导,成为直观的概念。

推荐阅读
{{item.author_display_name}}
{{item.author_display_name}}
{{item.author_user_occu}}
{{item.author_user_sign}}
×
右键可直接复制图片
×