🦉 猫头鹰都在卷机械臂逆解了,你确定不关注一下?

【机器人学习】小白学习第17讲:移动机器人 Mobile Robots

一句话核心:轮子只能"滚着走、原地转",不能横着平移——这种约束的是速度而不是位置的限制叫非完整约束,它把移动机器人的建模、规划和控制全部改写了一遍。

  • 本讲目标:理解非完整约束的本质,掌握独轮车/自行车运动学模型,知道它从哪来、又会带来什么麻烦

一、为什么需要这个

小讲 1:轮子不许横着走——非完整约束的两句话直觉

轮子给机器人套上了速度约束

前面几讲讲的都是机械臂:底座固定、编码器直接读出每个关节的位置。轮子机器人完全不是这么回事。轮子是移动机器人最常用的行走机构,而**纯滚动(无滑动)**这件事本身就给机器人套上了运动学约束。

不能横着平移,却照样能停进车位(小声:虽然前司某车确实可以横着停车)

开头那句话是最好的引子:**每个司机都知道,汽车不可能一下子横着平移;但只要有地方倒腾,侧方位停车位照样能进去。**这两句话合在一起就是非完整约束的全部直觉:

  • 局部能力下降:每一瞬间,能选的速度方向变少了(少一维)。在任意位形上,轮子的速度必须沿着它自己的朝向,侧向分量为零。
  • 全局能力不变:位形空间照样全可达,只是去不了的地方得"绕"过去,多打几把方向盘。

图 1 "汽车不能横着平移"与"照样能停进车位"

图 1 “汽车不能横着平移"与"照样能停进车位”。左图:每一瞬时只有 2 个自由度(前进 v、转向 ω),侧向速度被纯滚动约束禁止;右图:三段机动(转向 → 滚动 → 回正)合成的净位移恰好落在侧向

模型变成 q̇ = G(q)u:输入比状态少

这一节的结果是:用来描述时刻允许运动的模型,不再是q̇ = u那么简单,而是q̇ = G(q) u;(输入比状态少,且矩阵 G 依赖位形 q。)后面所有的规划和控制,都围着这个形式转。

停下来想一想:非完整约束让每一瞬间能选的速度方向少了几维?位形空间本身又少了几维?

二、核心概念

小讲 2:完整约束与非完整约束的分界,以及可积性判据

1. 完整约束 vs 非完整约束

完整约束(holonomic,可积):能写成只含位置的等式hi(q) = 0,共 k 个。它的作用是把可达空间压到n − k维的一个"面"上,于是可以把 k 个坐标用另外 n−k 个表示出来、直接消掉。(机械臂的转动副/移动副就是这种;关节变量就是那套"压缩过的坐标"。)

运动学约束(kinematic):写成 Pfaffian 形式、对速度线性:AT(q) q̇ = 0。

完整约束一定能导出运动学约束(求导即可),但反过来不一定。若一组 Pfaffian 约束不可积,就叫非完整(nonholonomic)约束。它的后果完全不同:

  • 每一瞬间允许的速度落在n − k维子空间里 → 自由度确实降了;
  • 但一个广义坐标也省不掉,哪怕局部也省不掉→ 位形仍可以用原来的 n 个数描述。

可积性判据:若存在积分因子 γ(q) ≠ 0 使γ a(q)是某个标量函数 h 的梯度,则可积;等价地要求

∂(γak)/∂qj=∂(γaj)/∂qk,j,k=1,…,n,j≠k \partial (\gamma a_{k})/ \partial q_{j} = \partial (\gamma a_{j})/ \partial q_{k}\text{,} j,k = 1, \dots ,n\text{,}j \neq k ∂(γak​)/∂qj​=∂(γaj​)/∂qk​,j,k=1,…,n,j=k

例 11.3 拿滚动圆盘的约束ẋ sin θ − ẏ cos θ = 0代进去,解出唯一的 γ = 0,于是判定它非完整。式(11.9)还有一个立刻能用的推论:系数为常数的 Pfaffian 约束一定是完整的。

2. 运动学模型与"可控 ⟺ 非完整"

取AT(q)零空间的一组基 {g1,…,gm},允许的轨迹就是

q˙=∑gj(q)uj=G(q)u,m=n−k \dot{q} = \sum g_{j}(q) u_{j} = G(q) u\text{,} m = n - k q˙​=∑gj​(q)uj​=G(q)u,m=n−k

它没有漂移项(输入为零则 q̇ = 0),因此叫driftless 系统。输入 u 往往有物理意义(速度),而不是力/力矩,所以叫"运动学模型"。

最漂亮的一条结论:看(11.10)可不可控,就能反过来判定约束是完整还是非完整。

  • 可控 ⟹ 任意两个位形之间都能找到一条满足约束的轨迹 ⟹ 约束(完全)非完整;
  • 不可控 ⟹ 可达空间只剩 ν < n 维 ⟹ 约束部分/完全可积。

怎么查可控?看可达秩条件dim ΔA(q) = n。这里的秘密武器是李括号 [g1, g2]:(先做一段 g1、再 g2、反向 g1、反向 g2,净位移就落在 [g1,g2] 方向上。这正是"打方向盘来回几次,车就横移了一点"的数学。)能用几个输入向量场和它们的李括号张满 n 维,系统就可控。需要的括号层数叫非完整度 κ。

小讲 3:独轮车与自行车模型、链式形式与平坦输出规划

3. 独轮车与自行车(–11.2.2)

独轮车(unicycle)q = [x, y, θ]T:(x, y) 是轮子触地点,θ 是朝向。纯滚动约束ẋ sin θ − ẏ cos θ = 0,通过接触点且垂直于航向的那条直线叫零运动线。运动学模型:

x˙=vcos⁡θ,y˙=vsin⁡θ,θ˙=ω \dot{x} = v \cos \theta\text{,} \dot{y} = v \sin \theta\text{,} \dot{\theta} = \omega x˙=vcosθ,y˙​=vsinθ,θ˙=ω

两个输入:v驱动速度(轮速×半径),ω转向速度。它的李括号 [g1, g2] = [sin θ, −cos θ, 0]T恰好指向侧向,与前两个向量场线性无关 ⟹dim ΔA = 3,可控、非完整度 κ = 2。

差速驱动(两个固定轮,最常见的小车)与独轮车运动学等价,只需换算:v = r(ωR + ωL)/2,ω = r(ωR − ωL)/d。

自行车(bicycle)q = [x, y, θ, φ]T,多了前轮转角 φ。前后轮各有一个滚动约束,两条零运动线交于瞬时转动中心 C,车身每一点瞬时都在绕 C 画圆弧。前轮驱动时θ̇ = (sin φ / ℓ) v;后轮驱动时θ̇ = (tan φ / ℓ) v——注意后者在 φ = ±π/2 处失效(前轮打横,机械上卡死)。自行车要算到三层李括号,非完整度 κ = 3。三轮车、轿车都属于这一类。

图 2 独轮车位形 (x, y, θ) 与速度输入 (v, ω)(对应)

图 2 独轮车位形 (x, y, θ) 与速度输入 (v, ω)(对应)。红色虚线是通过接触点的零运动线:轮子在这一瞬间绝不允许沿这条方向移动

4. 链式形式(Chained Form,)

把运动学模型化成某种"标准样子",规划和控制就有了通用套路。两输入的**(2, n) 链式形式**是:

z˙1=v1,z˙2=v2,z˙3=z2v1,…,z˙n=zn−1v1 \dot{z}_{1} = v_{1}\text{,} \dot{z}_{2} = v_{2}\text{,} \dot{z}_{3} = z_{2} v_{1}\text{,} \dots \text{,} \dot{z}_{n} = z_{n-1} v_{1} z˙1​=v1​,z˙2​=v2​,z˙3​=z2​v1​,…,z˙n​=zn−1​v1​

它像一列"倒下的多米诺":第一个状态被积分一次传给第三个、再传给第四个……正因为这个结构,它对某些输入可以闭式积分(比如 v1取常数、v2取多项式),规划就变成了"解一个线性方程组"。

独轮车用坐标变换z1 = θ、z2 = x cos θ + y sin θ、z3 = x sin θ − y cos θ就能化成 (2,3) 链式形式。(z2、z3是位置在一个"跟着车头走"的动坐标系里的分量。)还指出:对无漂移系统,微分平坦性 ⟺ 能化成链式形式,两者是一枚硬币的两面。

5. 规划:路径 + 时间律、平坦输出、最优轨迹

和机械臂一样,轨迹 =几何路径 q(s)+时间律 s(t)。但非完整系统多一道要求:路径上每一点的切向量都得满足约束A(q) q′ = 0,也就是说路径的切线必须和车头一致——所以切线不连续的折线路径是不允许的,除非车停下来原地转向再走。

平坦输出(flat outputs)是这里最好用的东西:独轮车和自行车的笛卡儿坐标 (x, y) 就是平坦输出。给定一条 (x(s), y(s)),朝向和输入全都能代数地算出来:

θ=Atan2(y′,x′)+kπ,vˉ=±x′2+y′2,ωˉ=(y′′x′−x′′y′)/(x′2+y′2)(−11.47) \theta = Atan2(y', x') + k\pi\text{,} \bar{v} = \pm \sqrt{x'^{2} + y'^{2}}\text{,} \bar{\omega} = (y''x' - x''y')/(x'^{2} + y'^{2})\text{(}-11.47\text{)} θ=Atan2(y′,x′)+kπ,vˉ=±x′2+y′2​,ωˉ=(y′′x′−x′′y′)/(x′2+y′2)(−11.47)

也就是说:只要随手写一条插值 x(s)、y(s) 的曲线(比如三次多项式),并且把两端的切线方向按起止朝向对齐,剩下的 θ、v、ω 自动算出来,而且天然满足非完整约束。这是非完整规划最重要的一条捷径。

但有坑:这条捷径要求 x′、y′ 不同时为零,所以原地纯转向(路径退化成一点)它做不出来;ẋd → 0时后面的跟踪控制器也会发散。

最优轨迹:最有名的是时间最优。Pontryagin 极小值原理推出"充分族"——最优解一定由两种基本弧拼成:圆弧(v = ±vmax、ω = ±ωmax,半径恒为 vmax/ωmax)和直线段(ω = 0)。共 9 组、48 种序列,这就是著名的Reeds–Shepp 曲线。

小讲 4:跟踪与镇定的差别,以及动力学模型与里程计

6. 运动控制:跟踪 ≠ 镇定

通常假定下层已有轮速控制回路(很多移动机器人根本不给你直接指令力矩的接口),所以高层就在运动学模型上设计速度指令 v、ω。两类基本任务:

  • 轨迹跟踪(trajectory tracking):追一条随时间变化的参考轨迹 (xd(t), yd(t))。工业上最重要,因为轨迹是事先规划好的,跟着走最不容易撞。
  • 位姿镇定(posture regulation):开到某个给定位姿 qd。不用预先规划,但接近过程走什么路线由不得你。

停下来想一想

为什么"停到一点"这么难?这是 Brockett 定理的直接后果:对q̇ = G(q)u这类输入少于状态、且输入向量场线性无关的无漂移系统,不存在连续的、只依赖状态的静态反馈能把系统渐近镇定。所以位姿镇定必须用时变的或不连续的反馈律——给的不连续方案就是把问题搬到极坐标 (ρ, γ, δ) 里做。反过来说,跟踪问题不存在这个障碍,光滑反馈有的是。

跟踪做得最顺的一条路子是近似线性化:把误差动力学在参考轨迹附近线性化,然后用教科书式的线性反馈。

7. 动力学模型与里程计定位(、)

动力学:和机械臂一样由拉格朗日方程出发,但多了一项约束反力A(q)λ(λ 是拉格朗日乘子,就是那个"不让你侧滑"的力)。左乘GT(q)可把 λ 消掉,得到降阶模型

M(q)v˙+m(q,v)=GT(q)S(q)τ,M(q)=GT(q)B(q)G(q) M(q) \dot{v} + m(q, v) = G^{T}(q) S(q) \tau\text{,} M(q) = G^{T}(q) B(q) G(q) M(q)v˙+m(q,v)=GT(q)S(q)τ,M(q)=GT(q)B(q)G(q)

再用 τ = (GTS)−1(M a + m) 可以通过反馈部分线性化成q̇ = G(q)v, v̇ = a,于是控制问题又被推回到运动学层。代价是:要知道精确的动态参数,还要能测到完整的 q 和 q̇。

里程计(odometry):移动机器人没有"直接读出位置"的编码器,只有量轮子转角的增量式编码器,只能往前推。一个采样周期内若 v、ω 恒定,车走的是一段圆弧 R = v/ω。三种递推:

  • 欧拉法(11.83):xk+1 = xk + vkTs cos θk,误差来自"假设整个周期内朝向不变",Ts越小越准。
  • 二阶龙格–库塔(11.84):用周期内朝向的平均值,明显改善。
  • 精确积分(11.85):借链式形式可得闭式xk+1 = xk + (vk/ωk)(sin θk+1 − sin θk)。

实际用编码器读数更好:差速驱动有Δs = (r/2)(ΔφR + ΔφL)、Δθ = (r/d)(ΔφR − ΔφL)(之后)。但无论哪种积分,里程计都会随时间漂移:打滑、轮径标定误差、(用近似方法时)数值误差都会累积,而且它给出的估计永远不可能比初始值 q0更准。所以长距离导航必须有主动定位(外部传感器 + 地图,用 EKF 或粒子滤波修正)。

停下来想一想:把滚动圆盘的约束ẋ sin θ − ẏ cos θ = 0代进可积性判据(11.9),解出的积分因子 γ 等于几?独轮车的李括号 [g1, g2] 指向哪个方向?

三、关键公式

小讲 5:三类公式——约束对照、独轮车模型与跟踪误差动力学

1. 两类约束的对照

完整(可积):hi(q)=0,i=1,…,k<n  ⟹  可达空间降到n−k维,坐标可消去运动学(Pfaffian):aiT(q)q˙=0,即AT(q)q˙=0  ⟹  只约束速度非完整(不可积):⟨g1,…,gm,[g1,g2],…⟩张满n维  ⟺  系统可控  ⟺  位形全可达 \begin{aligned} \text{完整(可积):} h_{i}(q) = 0\text{,} i = 1, \dots ,k < n \implies \text{可达空间降到} n-k \text{维,坐标可消去} \\ \text{运动学(}Pfaffian\text{):} a_{i}^{T}(q) \dot{q} = 0\text{,} \text{即} A^{T}(q) \dot{q} = 0 \implies \text{只约束速度} \\ \text{非完整(不可积):} ⟨g_{1}, \dots ,g_{m}, [g_{1},g_{2}], \dots ⟩ \text{张满} n \text{维} \iff \text{系统可控} \iff \text{位形全可达} \end{aligned} 完整(可积):hi​(q)=0,i=1,…,k<n⟹可达空间降到n−k维,坐标可消去运动学(Pfaffian):aiT​(q)q˙​=0,即AT(q)q˙​=0⟹只约束速度非完整(不可积):⟨g1​,…,gm​,[g1​,g2​],…⟩张满n维⟺系统可控⟺位形全可达​

完整约束非完整约束
写了谁位置 h(q)=0速度 AT(q)q̇=0
可积吗是否
位形空间被压到 n−k 维子流形仍是 n 维,全可达
瞬时自由度n − kn − k
举例机械臂的转动副、保持末端位姿不动的冗余机械臂轮子纯滚动、自由漂浮的空间机械臂(角动量守恒)

**直觉:**完整约束是"墙",把你关在一个低维房间里;非完整约束是"单行道",你哪儿都能去,但不能横穿。

2. 独轮车模型

[x˙,y˙,θ˙]T=[cos⁡θ,sin⁡θ,0]Tv+[0,0,1]Tω [ \dot{x} , \dot{y} , \dot{\theta} ]^{T} = [ \cos \theta , \sin \theta , 0 ]^{T} v + [ 0 , 0 , 1 ]^{T} \omega [x˙,y˙​,θ˙]T=[cosθ,sinθ,0]Tv+[0,0,1]Tω

符号含义
x, y接触点(或轮子中心)在世界系中的坐标
θ航向角,相对 x 轴
v驱动速度 = 轮绕自身轴的角速度 × 半径 r
ω转向速度 = 轮绕竖直轴的角速度

**直觉:**三个状态、两个输入——输入比状态少,这就是 Brockett 那条限制的根源。

3. 轨迹跟踪的误差动力学与线性反馈

KaTeX parse error: Undefined control sequence: \zetaa at position 388: …{1} = k_{3} = 2\̲z̲e̲t̲a̲a̲\text{,} k_{2} …

直觉:这正是你在《自动控制原理》二阶系统那一章背过的东西——一个负实根加一对主导共轭复根,ζ 是阻尼比、a 是自然频率。代价是闭环矩阵的 K 里含 ωd(t)、vd(t),是时变的:只有参考轨迹是圆或直线(vd、ωd为常数)时才严格稳定;另外 vd→ 0 时 k2发散,所以这套方案只适用于持续运动的参考轨迹。

还给了两种更强的方案:非线性控制器(–11.72,用 Lyapunov + Barbalat 引理证全局收敛,可以跟踪"会停下来"的轨迹)和输入/输出线性化(把车身前方距离接触点 b 处的点 B 当作被控输出)。

停下来想一想:轨迹跟踪的线性增益 k2在 vd→ 0 时会变成什么样?为什么这套方案只适用于持续运动的参考轨迹?

小讲 6:两张图读非完整约束——瞬时禁止与多步可达

停下来想一想:图 1 右半部分三段机动合成的净位移指向哪个方向,它对应的是哪个数学对象?图 2 里那条红色虚线零运动线,禁止的是哪个速度分量?

四、例题 / 动手

例 1 差速驱动小车:左右轮转速 → 走的圆弧

某差速小车轮半径 r = 0.1 m,两轮间距 d = 0.5 m。右轮 ωR= 2 rad/s,左轮 ωL= 1 rad/s。

**第 1 步:**换算成独轮车的输入:

v=r(ωR+ωL)/2=0.1×3/2=0.15m/sω=r(ωR−ωL)/d=0.1×1/0.5=0.2rad/s \begin{aligned} v = r(\omega_{R} + \omega_{L})/2 = 0.1 \times 3 / 2 = 0.15 m/s \\ \omega = r(\omega_{R} - \omega_{L})/d = 0.1 \times 1 / 0.5 = 0.2 rad/s \end{aligned} v=r(ωR​+ωL​)/2=0.1×3/2=0.15m/sω=r(ωR​−ωL​)/d=0.1×1/0.5=0.2rad/s​

**第 2 步:**由运动学模型知道它将沿着一段圆弧走,半径

R=v/ω=0.15/0.2=0.75m R = v/\omega = 0.15 / 0.2 = 0.75 m R=v/ω=0.15/0.2=0.75m

第 3 步:让它走 T = 2 s(期间 v、ω 恒定),转过的角度 Δθ = ωT = 0.4 rad,弧长 Δs = vT = 0.3 m。若初始 θ0= 0,用精确公式(11.85)算终点:

x1=x0+(v/ω)(sin⁡θ1−sin⁡θ0)=0+0.75×sin⁡0.4=0.2921my1=y0−(v/ω)(cos⁡θ1−cos⁡θ0)=0−0.75×(cos⁡0.4−1)=0.0592m \begin{aligned} x_{1} = x_{0} + (v/\omega)(\sin \theta_{1} - \sin \theta_{0}) = 0 + 0.75 \times \sin 0.4 = 0.2921 m \\ y_{1} = y_{0} - (v/\omega)(\cos \theta_{1} - \cos \theta_{0}) = 0 - 0.75 \times (\cos 0.4 - 1) = 0.0592 m \end{aligned} x1​=x0​+(v/ω)(sinθ1​−sinθ0​)=0+0.75×sin0.4=0.2921my1​=y0​−(v/ω)(cosθ1​−cosθ0​)=0−0.75×(cos0.4−1)=0.0592m​

对照欧拉法会给出 x = Δs cos θ0= 0.3、y = 0 —— 差约 8 mm,这就是"假设周期内朝向不变"付出的代价。

动手建议:把这三条递推写成 20 行 Python,让采样周期 Ts从 0.5 s 缩到 0.01 s,画出终端位置误差随 Ts的变化,你会亲眼看到数值积分误差是一阶/二阶收敛的。

例 2 为什么"不许横着走"却照样能停车:手算李括号

独轮车两个输入向量场:

g1=[cos⁡θ,sin⁡θ,0]⊤(走)g2=[0,0,1]⊤(转) \begin{aligned} g_{1} = [ \cos \theta , \sin \theta , 0 ]^{\top} \text{(走)} \\ g_{2} = [ 0 , 0 , 1 ]^{\top} \text{(转)} \end{aligned} g1​=[cosθ,sinθ,0]⊤(走)g2​=[0,0,1]⊤(转)​

算它们的李括号[g1, g2] = (∂g2/∂q) g1 − (∂g1/∂q) g2:

∂g1/∂q⋅g2=[−sin⁡θ,cos⁡θ,0]⊤⋅1,∂g2/∂q=0  ⟹  [g1,g2]=[sin⁡θ,−cos⁡θ,0]⊤ \begin{aligned} \partial g_{1}/ \partial q \cdot g_{2} = [ -\sin \theta , \cos \theta , 0 ]^{\top} \cdot 1\text{,} \partial g_{2}/ \partial q = 0 \\ \implies [g_{1}, g_{2}] = [ \sin \theta , -\cos \theta , 0 ]^{\top} \end{aligned} ∂g1​/∂q⋅g2​=[−sinθ,cosθ,0]⊤⋅1,∂g2​/∂q=0⟹[g1​,g2​]=[sinθ,−cosθ,0]⊤​

当 θ = 0 时它是 [0, −1, 0]T,即纯侧向。它和 g1、g2线性无关 ⟹ dim ΔA= 3 ⟹可控 ⟹ 约束非完整 ⟹ 侧方位一定停得进去,需要的李括号层数是 2,这就是"非完整度 κ = 2"的含义。自行车要算到第 3 层(κ = 3),所以它的机动比独轮车更"绕"。

停下来想一想:例 1 里欧拉法与精确积分算出的终点差了多少,误差来自哪个假设?例 2 里 κ = 2 说的是要算到第几层李括号?

五、常见误区

非完整约束减的是速度维数,不是位形维数

常见误区

误区 1:“非完整约束和完整约束一样,可以把一个坐标消掉。”

不行。完整约束把可达位形压到 n−k 维,可以换坐标;非完整约束只把每一瞬时的允许速度压到 n−k 维,位形空间一个维度都不减——哪怕局部也不减。所以 q 还得老老实实用 n 个数,还得按q̇ = G(q)u这种"输入比状态少"的模型来分析。

限制的是一步到位,不是能不能到

常见误区

误区 2:“不能横着平移,说明侧向的位置不可达。”

正好相反。回头看图 1 右半部分:先转向 → 再滚动 → 再回正,三步做下来净位移正是侧向的,中途没有一秒钟违反过滚动约束。非完整约束限制的只是"一步到位",不是"能不能到"。

点镇定被 Brockett 条件结构性挡住

常见误区

误区 3:“点镇定无非是 PID 换个数的问题。”

对非完整系统这件事是结构上不可行的。Brockett 必要条件直接否定:对q̇ = G(q)u这种输入少于状态、输入向量场线性无关的无漂移系统,不存在连续、时不变的静态状态反馈能做到渐近镇定。给的可行方法是时变反馈或不连续反馈(如极坐标方案 11.81–11.82)。反过来,跟踪一条持续运动的参考轨迹是完全可以的。

里程计漂移的根源不是积分公式不好

常见误区

误区 4:“里程计误差主要是数值积分误差,换个好点的积分公式就行了。”

不是。说得很清楚:误差来自打滑、运动学参数标定误差(比如轮半径不准、左右轮距不对),这些是"输入本身就不准",再好的积分公式也救不回来,而且误差随路径长度单调累积(漂移)。另外,推出来的估计永远不可能比初始估计 q0更准。所以长时间、长距离导航一定要用主动定位:外部传感器 + 地图 + EKF/粒子滤波去修正。

停下来想一想:为什么q̇ = G(q)u这类系统不存在连续、时不变的静态反馈镇定律?里程计推出来的位姿为什么不可能比初始估计 q0更准?

六、本讲小结

停下来想一想:为什么说非完整约束限制的是速度而不是位置?长距离导航为什么不能只靠里程计?

要点回顾
  1. 轮式机器人的核心是纯滚动非完整约束:约束的是速度不是位置,所以位形空间全可达,只是每个瞬间少一个自由度。
  2. 完整 ⟺ 可积(用积分因子 γ 与判断);非完整 ⟺ 运动学模型(11.10)可控,用李括号和可达秩条件dim ΔA = n判定。
  3. 独轮车ẋ = v cos θ, ẏ = v sin θ, θ̇ = ω:3 状态 2 输入,κ = 2;自行车4 状态 2 输入,κ = 3。差速驱动、同步驱动都与独轮车运动学等价。
  4. 链式形式是非完整系统的"万能标准型",可闭式积分,便于规划;对无漂移系统,它与微分平坦性等价。独轮车和自行车的平坦输出就是**(x, y)**——这是规划的一条大捷径。
  5. 轨迹跟踪与位姿镇定是两回事:跟踪可以靠光滑反馈(近似线性化甚至输入/输出线性化),镇定被 Brockett 条件挡住,只能用时变或不连续反馈。
  6. 里程计靠积分推位姿,误差随时间漂移;长距离必须上主动定位。

一句话总结:非完整约束让移动机器人每一时刻只有"前进"和"转向"两个选择,却照样哪儿都去——整套新工具(李括号、链式形式、平坦输出、时变反馈)都是围着这句话长的。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐