平面曲线的有符号 Frenet 标架

定义平面参考路径的单位切向量、左单位法向量与有符号曲率,从正交标架和路径航向角两种形式推导 Frenet 微分关系,并为 Frenet 坐标下的车辆运动学统一几何与符号约定。

首次发布
最后更新

本文目录

基本术语与标架约定

一条参数曲线称为正则曲线,是指它在参数区间内的一阶导数始终不为零。这一条件排除了参数化速度在某个参数值处变为零的情形,并保证参数区间中的每个参数值都对应确定的切向方向。即使曲线图像存在自交,同一空间点所对应的不同参数值仍分别具有各自的切向方向。曲线属于 C2C^2,是指曲线本身及其一阶、二阶导数都连续;本文需要二阶导数来定义切向量的变化和曲率。

本文直接采用弧长参数 ss:参数的增量等于沿曲线走过的距离。因此参考路径写为

r:I⟶R2,s⟼r(s).\mathbf r:I\longrightarrow\mathbb R^2, \qquad s\longmapsto\mathbf r(s).

其中 II 是弧长参数所在的区间,r\mathbf r 是一条 C2C^2 曲线。弧长参数化满足

∥drds∥=1,\left\|\frac{d\mathbf r}{ds}\right\|=1,

所以它自动是正则曲线。单位切向量定义为

T(s):=drds,∥T(s)∥=1.\mathbf T(s):=\frac{d\mathbf r}{ds}, \qquad \|\mathbf T(s)\|=1.

本文采用直角坐标平面的标准定向:从 xx 轴正方向转向 yy 轴正方向的逆时针旋转为正。令

J:=[0−110],J:= \begin{bmatrix} 0 & -1\\ 1 & 0 \end{bmatrix},

即逆时针旋转 90∘90^\circ 的算子。左单位法向量定义为

N(s):=JT(s).\mathbf N(s):=J\mathbf T(s).

对每个弧长位置 ss,本文都在路径点 r(s)\mathbf r(s) 处选取有序向量组 (T(s),N(s))(\mathbf T(s),\mathbf N(s))。固定一个 ss 时,这组有序基是路径点 r(s)\mathbf r(s) 处的一个标架;随着 ss 沿曲线变化,这些标架共同构成沿曲线的移动标架。由于 T\mathbf T 与 N\mathbf N 都是单位向量且相互垂直,并且从 T\mathbf T 逆时针旋转 90∘90^\circ 得到 N\mathbf N,所以 (T,N)(\mathbf T,\mathbf N) 构成正向标准正交标架。本文将这个由单位切向量和左单位法向量组成的移动标架称为有符号 Frenet 标架。

标架(frame)是微分几何中的标准术语,但它与坐标系并不等同。坐标系为一个区域内的点赋予坐标值;标架则是在指定位置选取一组有序基向量,用来表示该位置处的向量。本文的 (T,N)(\mathbf T,\mathbf N) 属于曲线所在的二维平面:T\mathbf T 沿曲线切向,N\mathbf N 与曲线切向垂直,二者共同构成该平面的基。坐标系可以诱导标架,但标架本身不负责为附近的点赋予坐标,也未必来自某个坐标系。

有符号曲率及其几何意义

曲率向量定义为单位切向量关于弧长的导数:

K(s):=dTds.\mathbf K(s):=\frac{d\mathbf T}{ds}.

曲率向量的范数定义为无符号曲率:

κ(s):=∥K(s)∥.\kappa(s):=\|\mathbf K(s)\|.

有符号曲率定义为曲率向量在左单位法向量方向上的分量:

κr(s):=K(s)⋅N(s)=dTds⋅N(s).\begin{aligned} \kappa_r(s) &:=\mathbf K(s)\cdot\mathbf N(s)\\[0.45em] &=\frac{d\mathbf T}{ds}\cdot\mathbf N(s). \end{aligned}

无符号曲率 κ\kappa 只描述弯曲程度;有符号曲率 κr\kappa_r 还记录转向,左转为正,右转为负。下文将由正交分解得到

κ=∣κr∣.\kappa=|\kappa_r|.

图 1 在固定左法向约定下对比有符号曲率为正、零、负的三种情形,并显示零曲率处仍然存在的正向标准正交标架。

(a) κᵣ > 0
TN = JTK
(b) κᵣ = 0
TN = JTK = 0
(c) κᵣ < 0
TN = JTK

图 1. 固定左法向约定下的平面有符号 Frenet 标架与曲率符号。沿曲线前进时,左转对应 K\mathbf K 与 N\mathbf N 同向,右转对应二者反向;在 κr=0\kappa_r=0 时,K=0\mathbf K=\mathbf 0,而 N=JT\mathbf N=J\mathbf T 仍然有定义。

平面有符号 Frenet 公式

正交标架推导

切向量导数

由 ∥T∥=1\|\mathbf T\|=1,有

⟨T,T⟩=1.\langle\mathbf T,\mathbf T\rangle=1.

对该恒等式关于弧长 ss 求导,得到

⟨dTds,T⟩=0.\left\langle \frac{d\mathbf T}{ds}, \mathbf T \right\rangle =0.

结合 K=dT/ds\mathbf K=d\mathbf T/ds,可得

K⊥T.\mathbf K\perp\mathbf T.

由于 (T,N)(\mathbf T,\mathbf N) 是平面中的标准正交基,K\mathbf K 可按该基完整分解为

K=(K⋅T)T+(K⋅N)N=κrN.\mathbf K = (\mathbf K\cdot\mathbf T)\mathbf T + (\mathbf K\cdot\mathbf N)\mathbf N = \kappa_r\mathbf N.

最后一个等号同时使用了 K⋅T=0\mathbf K\cdot\mathbf T=0 与 K⋅N=κr\mathbf K\cdot\mathbf N=\kappa_r。由 K=dT/ds\mathbf K=d\mathbf T/ds,得到第一条关系

dTds=κrN.\frac{d\mathbf T}{ds} = \kappa_r\mathbf N.

该关系也给出无符号曲率与有符号曲率之间的联系:

κ=∥dTds∥=∥κrN∥=∣κr∣.\kappa = \left\| \frac{d\mathbf T}{ds} \right\| = \|\kappa_r\mathbf N\| = |\kappa_r|.

法向量导数

为了确定 dN/dsd\mathbf N/ds,使用正交标架的另外两个恒等式

⟨N,N⟩=1,⟨T,N⟩=0.\langle\mathbf N,\mathbf N\rangle=1, \qquad \langle\mathbf T,\mathbf N\rangle=0.

分别求导后得到

⟨dNds,N⟩=0,⟨dTds,N⟩+⟨T,dNds⟩=0.\left\langle \frac{d\mathbf N}{ds}, \mathbf N \right\rangle =0, \qquad \left\langle \frac{d\mathbf T}{ds}, \mathbf N \right\rangle + \left\langle \mathbf T, \frac{d\mathbf N}{ds} \right\rangle =0.

第一式表明 dN/dsd\mathbf N/ds 在 N\mathbf N 方向上的分量为零。将 dT/ds=κrNd\mathbf T/ds=\kappa_r\mathbf N 代入第二式,并使用 ∥N∥=1\|\mathbf N\|=1,得到

⟨T,dNds⟩=−κr.\left\langle \mathbf T, \frac{d\mathbf N}{ds} \right\rangle = -\kappa_r.

因此,dN/dsd\mathbf N/ds 在 T\mathbf T 方向上的分量为 −κr-\kappa_r,在 N\mathbf N 方向上的分量为零。再次按标准正交基分解,

dNds=−κrT.\frac{d\mathbf N}{ds} = -\kappa_r\mathbf T.

至此,切向量与左单位法向量对弧长的导数都已由有符号曲率确定。上述正交性推导的标准形式见 [1, §6.A, pp. 54–55]。

旋转算子的直接验证

第二条关系也可以直接由 N=JT\mathbf N=J\mathbf T 得到。由于 JJ 是与 ss 无关的固定线性算子,并且依次旋转两次 90∘90^\circ 等价于旋转 180∘180^\circ,

J2=−I.J^2=-I.

对 N=JT\mathbf N=J\mathbf T 求导,并代入已经得到的 dT/ds=κrNd\mathbf T/ds=\kappa_r\mathbf N:

dNds=JdTds=κrJN=κrJ2T=−κrT.\begin{aligned} \frac{d\mathbf N}{ds} &= J\frac{d\mathbf T}{ds}\\[0.55em] &= \kappa_rJ\mathbf N\\[0.55em] &= \kappa_rJ^2\mathbf T\\[0.55em] &= -\kappa_r\mathbf T. \end{aligned}

该计算只提供 dN/dsd\mathbf N/ds 的另一种推导;第一条关系 dT/ds=κrNd\mathbf T/ds=\kappa_r\mathbf N 仍来自曲率向量在正交标架中的分解。

航向角坐标推导

同一组关系可以在直角坐标中显式表示。设

r(s)=[xr(s)yr(s)],\mathbf r(s) = \begin{bmatrix} x_r(s)\\ y_r(s) \end{bmatrix},

并在所讨论的参数区间上选择可微且连续展开的参考路径航向角 θr(s)\theta_r(s)。几何方向通常只在模 2π2\pi 的意义下确定,同一个方向可以写成相差 2kπ2k\pi 的多个角度;连续展开是指在沿曲线前进时选择连续变化的角度值,避免角度经过 π\pi 与 −π-\pi 的边界时发生人为跳变。切向量与左单位法向量可以写为

T(s)=[cos⁡θr(s)sin⁡θr(s)],N(s)=[−sin⁡θr(s)cos⁡θr(s)].\mathbf T(s) = \begin{bmatrix} \cos\theta_r(s)\\ \sin\theta_r(s) \end{bmatrix}, \qquad \mathbf N(s) = \begin{bmatrix} -\sin\theta_r(s)\\ \cos\theta_r(s) \end{bmatrix}.

在这一表示下,有符号曲率与切向角满足

κr(s)=dθrds.\kappa_r(s) = \frac{d\theta_r}{ds}.

图 2(a) 给出切向量与左单位法向量的直角坐标分量;图 2(b) 则以相邻切向量的转角说明 κr=dθr/ds\kappa_r=d\theta_r/ds 的局部几何意义。

(a)
TN
(b)
T(s)T(s + Δs)

κᵣ(s) = lim Δθᵣ / Δs

图 2. 航向角的坐标表示及其沿弧长的变化。(a)T\mathbf T 与 N=JT\mathbf N=J\mathbf T 在固定直角坐标系中的分量;(b)相邻弧长位置的切向量转角 Δθr\Delta\theta_r,其与 Δs\Delta s 的比值在极限下给出有符号曲率。

为得到该关系以及标架导数的显式形式,分别对 T\mathbf T 与 N\mathbf N 的坐标表示求导:

dTds=dθrds[−sin⁡θrcos⁡θr]=κrN,dNds=dθrds[−cos⁡θr−sin⁡θr]=−κrT.\begin{aligned} \frac{d\mathbf T}{ds} &= \frac{d\theta_r}{ds} \begin{bmatrix} -\sin\theta_r\\ \cos\theta_r \end{bmatrix} = \kappa_r\mathbf N,\\[0.8em] \frac{d\mathbf N}{ds} &= \frac{d\theta_r}{ds} \begin{bmatrix} -\cos\theta_r\\ -\sin\theta_r \end{bmatrix} = -\kappa_r\mathbf T. \end{aligned}

第一行表明,切向角相对于弧长的变化率正是曲率向量在左单位法向量方向上的有符号分量;第二行则与正交性推导所得的法向量导数一致。切向角表示及关系 κr=dθr/ds\kappa_r=d\theta_r/ds 的标准坐标推导见 [2, Theorem 1.17, p. 8]。

Frenet 公式的矩阵形式

综合正交标架推导与航向角坐标表示,得到平面有符号 Frenet 公式

[dTdsdNds]=[0κr−κr0][TN].\begin{bmatrix} \dfrac{d\mathbf T}{ds}\\[0.8em] \dfrac{d\mathbf N}{ds} \end{bmatrix} = \begin{bmatrix} 0 & \kappa_r\\ -\kappa_r & 0 \end{bmatrix} \begin{bmatrix} \mathbf T\\ \mathbf N \end{bmatrix}.

正交标架推导不需要选取 x,yx,y 坐标,也不需要展开三角函数;航向角表示则进一步明确了后续车辆模型所使用的关系 κr=dθr/ds\kappa_r=d\theta_r/ds。由于全文始终采用左单位法向量与有符号曲率,同一组公式可以连续描述左转、右转以及 κr=0\kappa_r=0 的路径点。

与经典主法向量的关系

本文的 N=JT\mathbf N=J\mathbf T 是标准定向下的左单位法向量,需要与经典 Frenet 标架中的主法向量区分。经典主法向量按

Np:=T′∥T′∥\mathbf N_{\mathrm p}:= \frac{\mathbf T'}{\|\mathbf T'\|}

定义,因此只在无符号曲率 κ=∥T′∥>0\kappa=\|\mathbf T'\|>0 时存在。当 κ=0\kappa=0 时,T′=0\mathbf T'=\mathbf 0,上述归一化成为 0/0\mathbf 0/0;从几何上说,曲线在该点没有由曲率向量指定的瞬时弯曲方向。相比之下, N=JT\mathbf N=J\mathbf T 只依赖单位切向量与固定的旋转算子 JJ。只要曲线正则, T\mathbf T 就存在,因而左单位法向量以及标架 (T,N)(\mathbf T,\mathbf N) 在直线路段和孤立零曲率点仍然保持定义。弧长参数、定向平面标架与有符号曲率的标准约定见 [1, §§2.D, 3.A–B, 6.A];经典 Frenet 标架在零曲率处失效的问题见 [3, §2.1, p. 98]。

这不是经典 Frenet 标架定义内部的矛盾,而是它明确的适用条件:经典构造只在 κ>0\kappa>0 的曲线区段上给出主法向量。一般正则曲线当然可以包含直线段,但它在这些区段上没有经典 Frenet 标架;只能在 {s∈I:κ(s)>0}\{s\in I:\kappa(s)>0\} 中每个曲率持续大于零的连续区段分别使用该标架,或者像本文一样改用不需要除以曲率的有符号标架。

由前文已经得到的 dT/ds=κrNd\mathbf T/ds=\kappa_r\mathbf N 可知,在 κ>0\kappa>0 的点,经典主法向量与本文的左单位法向量满足

Np=T′∥T′∥=κr∣κr∣N=sgn⁡(κr)N.\begin{aligned} \mathbf N_{\mathrm p} &= \frac{\mathbf T'}{\|\mathbf T'\|}\\[0.55em] &= \frac{\kappa_r}{|\kappa_r|}\mathbf N\\[0.55em] &= \operatorname{sgn}(\kappa_r)\mathbf N. \end{aligned}

其中 sgn⁡\operatorname{sgn} 是符号函数:

sgn⁡(x)={1,x>0,0,x=0,−1,x<0.\operatorname{sgn}(x)= \begin{cases} 1, & x>0,\\ 0, & x=0,\\ -1, & x<0. \end{cases}

上式只讨论 κ>0\kappa>0 的点,因此这里只会用到 sgn⁡(κr)=±1\operatorname{sgn}(\kappa_r)=\pm1;在 κr=0\kappa_r=0 时,经典主法向量 Np\mathbf N_{\mathrm p} 本身没有定义。

这说明二者只在左转的 κr>0\kappa_r>0 区域同向;在右转的 κr<0\kappa_r<0 区域,主法向量为 −N-\mathbf N。在 κr=0\kappa_r=0 时, Np\mathbf N_{\mathrm p} 不再由定义式给出,而 N=JT\mathbf N=J\mathbf T 不受影响。

曲率变号示例

零曲率造成的困难并不总能通过取极限消除。下面给出一个主法向量必然发生翻转的例子。设路径的弧长参数满足 s∈[0,L]s\in[0,L],并在路径内部选取 s∗∈(0,L)s_{\ast}\in(0,L)。定义单位切向量

T(s)=[cos⁡((s−s∗)2/2)sin⁡((s−s∗)2/2)]\mathbf T(s)= \begin{bmatrix} \cos\bigl((s-s_{\ast})^2/2\bigr)\\ \sin\bigl((s-s_{\ast})^2/2\bigr) \end{bmatrix}

它的长度恒为 11,所以可以把它作为某条单位速曲线的切向量。例如,取

r(s):=r(0)+∫0sT(u) du,\mathbf r(s) := \mathbf r(0)+ \int_0^s \mathbf T(u)\,du,

便有 r′(s)=T(s)\mathbf r'(s)=\mathbf T(s) 和 ∥r′(s)∥=1\|\mathbf r'(s)\|=1。在这个例子中,切向量的航向角是

θr(s)=(s−s∗)22.\theta_r(s)=\frac{(s-s_{\ast})^2}{2}.

因此

N(s)=JT(s)=[−sin⁡((s−s∗)2/2)cos⁡((s−s∗)2/2)],\mathbf N(s)=J\mathbf T(s)= \begin{bmatrix} -\sin\bigl((s-s_{\ast})^2/2\bigr)\\ \cos\bigl((s-s_{\ast})^2/2\bigr) \end{bmatrix},

并且

dTds=(s−s∗)[−sin⁡((s−s∗)2/2)cos⁡((s−s∗)2/2)]=(s−s∗)N(s).\frac{d\mathbf T}{ds} = (s-s_{\ast}) \begin{bmatrix} -\sin\bigl((s-s_{\ast})^2/2\bigr)\\ \cos\bigl((s-s_{\ast})^2/2\bigr) \end{bmatrix} = (s-s_{\ast})\mathbf N(s).

与 dT/ds=κrNd\mathbf T/ds=\kappa_r\mathbf N 对照可知

κr(s)=s−s∗,κ(s)=∣s−s∗∣.\kappa_r(s)=s-s_{\ast}, \qquad \kappa(s)=|s-s_{\ast}|.

这意味着曲线在 s<s∗s<s_{\ast} 时向右转,在 s>s∗s>s_{\ast} 时向左转,并在路径内部的 s=s∗s=s_{\ast} 处经过曲率为零的拐点。对任意 s≠s∗s\ne s_{\ast},经典主法向量为

Np(s)=dT/ds∥dT/ds∥=s−s∗∣s−s∗∣N(s)={−N(s),s<s∗,N(s),s>s∗.\mathbf N_{\mathrm p}(s) = \frac{d\mathbf T/ds}{\|d\mathbf T/ds\|} = \frac{s-s_{\ast}}{|s-s_{\ast}|}\mathbf N(s) = \begin{cases} -\mathbf N(s), & s<s_{\ast},\\ \mathbf N(s), & s>s_{\ast}. \end{cases}

由于 N(s∗)=(0,1)T\mathbf N(s_{\ast})=(0,1)^{\mathsf T},主法向量在拐点两侧的极限分别是

lim⁡s→s∗−Np(s)=[0−1],lim⁡s→s∗+Np(s)=[01].\lim_{s\to s_{\ast}^-}\mathbf N_{\mathrm p}(s) = \begin{bmatrix}0\\-1\end{bmatrix}, \qquad \lim_{s\to s_{\ast}^+}\mathbf N_{\mathrm p}(s) = \begin{bmatrix}0\\1\end{bmatrix}.

两个极限方向相反,所以不可能在 s=s∗s=s_{\ast} 为 Np\mathbf N_{\mathrm p} 补上一个值,使它连续。相比之下,N=JT\mathbf N=J\mathbf T 从始至终由连续的切向量确定,不会在拐点翻转。

这个例子说明的不是“每个孤立零曲率点都会导致翻转”,而是经典定义并不保证主法向量能够跨过零曲率点连续延拓。如果 κr\kappa_r 经过零点时不变号,左右极限可能碰巧一致;但在零点本身,T′/∥T′∥\mathbf T'/\|\mathbf T'\| 仍然没有定义。在整段直线上,T′=0\mathbf T'=0 处处成立,曲率向量更无法选出唯一的弯曲方向。

后续模型使用的几何关系

后续 Frenet 坐标下的车辆运动学将直接使用以下参考路径几何关系:

drds=T,N=JT,dTds=κrN,dNds=−κrT,dθrds=κr.\begin{aligned} \frac{d\mathbf r}{ds} &= \mathbf T,\\[0.5em] \mathbf N &= J\mathbf T,\\[0.5em] \frac{d\mathbf T}{ds} &= \kappa_r\mathbf N,\\[0.5em] \frac{d\mathbf N}{ds} &= -\kappa_r\mathbf T,\\[0.5em] \frac{d\theta_r}{ds} &= \kappa_r. \end{aligned}

这些关系统一了参考路径的位置、切向、左法向、航向角和有符号曲率。后续将在该标架上定义车辆相对于参考路径的纵向位置、横向偏差与航向误差,并推导 Frenet 坐标下的车辆运动学。

参考文献

  1. Anton Petrunin and Sergio Zamora Barrera,

    What Is Differential Geometry? Curves and Surfaces

    , arXiv:2012.11814v7, 2025.

  2. Neil Donaldson,

    Math 162A: Introduction to Differential Geometry

    , course notes, University of California, Irvine, Winter 2024.

  3. Daniel Carroll, Emek Köse, and Ivan Sterling,

    Improving Frenet’s Frame Using Bishop’s Frame

    , Journal of Mathematics Research, vol. 5, no. 4, 2013, pp. 97–106.