平面约束公式推导

在地面运行的小车如果可以认为在平面运动,则可以使用平面约束(注意不能用于斜坡之类的地面,这里相当于绝对水平。)
水平则有z=0,roll和pitch=0,对于四元数q来说,就是只绕z轴旋转yaw角 q = cos(yaw/2) + sin(yaw/2)(0,0,1) 也就是qx = 0 qy = 0
这三个可以成为每一帧的约束。
q转为R
在这里插入图片描述
R应该为
[ 1 − 2 z 2 2 w z 0 − 2 w z 1 − 2 z 2 0 0 0 1 ] \begin{matrix}[ 1-2z^2 & 2wz & 0 \\ -2wz & 1-2z^2 & 0 \\ 0 & 0 & 1 \end{matrix}] [12z22wz02wz12z20001]
这个就是二维平面的转换公式。
我们可以使用矩阵第三列前两行的元素都为0,作为约束(也可以取第三行前两列)我们构造行列式乘法,把这两个元素取出来
1 0 0 0 1 0 ∗ R ∗ 0 0 1 \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0\end{matrix} * R *\begin{matrix} 0 \\ 0 \\ 1\end{matrix} 100100R001
这样就可以把这两个元素取出来。
所以我们构建的残差方程为
0 − [ 0 0 1 ] ∗ P 0 - \left[\begin{matrix}0 & 0 & 1\end{matrix}\right] * P 0[001]P
[ 0 0 ] − 1 0 0 0 1 0 ∗ R ∗ 0 0 1 \left[\begin{matrix}0 \\ 0\end{matrix}\right] - \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0\end{matrix} * R *\begin{matrix} 0 \\ 0 \\ 1\end{matrix} [00]100100R001
我们把上面得的矩阵设为e3 = [0 0 1]和
Λ = 1 0 0 0 1 0 \Lambda = \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0\end{matrix} Λ=100100
我们优化的变量是 P i w P_i^w Piw R i w R_i^w Riw 而平面约束是轮子的坐标。
R o w = R i w ∗ R o b P o w = R i w ∗ t o i + P i w R_o^w = R_i^w * R^b_o\\ P_o^w = R_i^w * t_o^i + P_i^w Row=RiwRobPow=Riwtoi+Piw
因此残差为:
r 1 = 0 − ( e 3 T ∗ ( R i w ∗ t o i + P i w ) ) r 2 = 0 − ( Λ ∗ R i w ∗ R o b ∗ e 3 ) r1 = 0 - (e_3^T * (R_i^w * t_o^i + P_i^w ))\\ r2 = 0- (\Lambda * R_i^w * R^b_o * e_3) r1=0(e3TRiwtoi+Piw))r2=0(ΛRiwRobe3)
求雅克比偏导:
∂ r 1 ∂ p = − e 3 T ∂ r 1 ∂ θ = lim ⁡ δ θ → 0 − e 3 T ∗ R i w ∗ ( 1 + δ θ Λ ) ∗ t o i + e 3 T ∗ R i w ∗ t o i θ = − e 3 T ∗ R i w ∗ δ θ Λ ∗ t o i θ = e 3 T ∗ R i w ∗ ( t o i ) Λ ∂ r 2 ∂ p = 0 ∂ r 2 ∂ θ = lim ⁡ δ θ → 0 − Λ ∗ R i w ( 1 + δ θ Λ ) ∗ R o b ∗ e 3 + ( Λ ∗ R i w ∗ R o b ∗ e 3 ) θ = lim ⁡ δ θ → 0 − Λ ∗ R i w δ θ Λ ∗ R o b ∗ e 3 θ = Λ ∗ R i w ∗ ( R o b ∗ e 3 ) Λ \frac{\partial{r1}}{\partial{p}} = -e_3^T\\ \frac{\partial{r1}}{\partial{\theta}} = \lim_{\delta\theta \to 0}{\frac{-e_3^T * R_i^w*(1 + \delta\theta^{\Lambda}) * t_o^i + e_3^T * R_i^w * t_o^i}{\theta}} \\ = -\frac{e_3^T * R_i^w * \delta\theta^{\Lambda}* t_o^i}{\theta} = e_3^T * R_i^w *(t_o^i)^{\Lambda} \\ \frac{\partial{r2}}{\partial{p}} = 0 \\ \frac{\partial{r2}}{\partial{\theta}} = \lim_{\delta\theta \to 0}{\frac{-\Lambda * R_i^w (1 + \delta\theta^{\Lambda}) * R^b_o * e_3 + (\Lambda * R_i^w * R^b_o * e_3)}{\theta}} \\ =\lim_{\delta\theta \to 0}{\frac{-\Lambda * R_i^w \delta\theta^{\Lambda}* R^b_o * e_3 }{\theta}} \\ = \Lambda * R_i^w * (R^b_o * e_3)^{\Lambda} pr1=e3Tθr1=δθ0limθe3TRiw(1+δθΛ)toi+e3TRiwtoi=θe3TRiwδθΛtoi=e3TRiw(toi)Λpr2=0θr2=δθ0limθΛRiw(1+δθΛ)Robe3+(ΛRiwRobe3)=δθ0limθΛRiwδθΛRobe3=ΛRiw(Robe3)Λ

以上就是认为地面是绝对水平的约束。如果不是绝对水平,而是平面的斜坡之类的,可以用两帧之间固定,比如两帧之间z的增量是一个固定值,roll和pitch是一个固定值之类的。

支持向量机(Support Vector Machine,SVM)是一种常用的机器学习算法,用于分类和回归问题。其原理公式推导如下: 1. 线性可分支持向量机: 假设我们有一个训练数据集,其中包含一些正例和负例样本。我们的目标是找到一个超平面,将正例和负例样本分开。超平面可以表示为 wx + b = 0,其中 w 是法向量,b 是偏置项。 对于正例样本,我们希望满足 wx + b ≥ 1,对于负例样本,我们希望满足 wx + b ≤ -1。这两个约束条件可以合并为一个约束条件:yi(wx + b) ≥ 1,其中 yi 是样本的标签(1 表示正例,-1 表示负例)。 我们的目标是找到一个最大间隔的超平面,使得所有样本点到该超平面的距离都大于等于1。这可以转化为一个优化问题,即最小化 ||w||^2/2,同时满足约束条件 yi(wx + b) ≥ 1。 通过拉格朗日乘子法,我们可以得到拉格朗日函数 L(w, b, α) = ||w||^2/2 - Σαi[yi(wx + b) - 1],其中 α 是拉格朗日乘子。 最终,我们需要求解的是关于 w 和 b 的最小化问题,可以通过对拉格朗日函数求偏导数并令其等于零来得到最优解。 2. 非线性支持向量机: 在现实问题中,数据往往不是线性可分的。为了解决这个问题,我们可以使用核函数将数据映射到高维空间,使其在高维空间中线性可分。 核函数可以定义为 K(xi, xj) = φ(xi)·φ(xj),其中 φ 是将数据映射到高维空间的函数。 在非线性支持向量机中,我们的目标是找到一个最大间隔的超平面,使得所有样本点到该超平面的距离都大于等于1。这可以转化为一个优化问题,即最小化 ||w||^2/2,同时满足约束条件 yi(wx + b) ≥ 1。 通过拉格朗日乘子法,我们可以得到拉格朗日函数 L(w, b, α) = ||w||^2/2 - Σαi[yi(wx + b) - 1],其中 α 是拉格朗日乘子。 最终,我们需要求解的是关于 w 和 b 的最小化问题,可以通过对拉格朗日函数求偏导数并令其等于零来得到最优解。 以上是支持向量机的原理公式推导
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值