Modern Robotics — 刚体运动

前言

在三维空间中,为了指定一个刚体的位置和姿态,至少需要6个数。本章通过一个附着到物体上的参考坐标系来描述它的位置和姿态。这个坐标系相对于固定坐标系的构型通过一个4x4的矩阵描述。这个矩阵是C-space的隐式表达:刚体的6维C-space空间通过对16维的矩阵施加10个约束获得。

这样的一个矩阵不仅可以表示坐标系的构型,还可以用来:

  • 移动旋转一个向量/坐标系
  • 将一个向量/坐标系的描述从一个坐标系转换到另一个坐标系

通过选择用4x4矩阵来表达构型,以上这些操作就可以由简单的线性代数理论完成。这也是为什么我们选择用矩阵表达构型的原因。

任意一个刚体的构型都可以通过从固定参考坐标系出发,对一个恒定的速度(twist)积分指定的时间得到。这种运动类似于螺旋运动(screw motion):围绕一个固定的轴旋转并沿着该轴作平移运动。基于此,我们可以通过6个参数描述的指数坐标(exponential coordinates)来表达构型。这6个参数可以分为:描述螺旋轴方向的参数和一个沿着该轴运动路程的标量参数。

1.1 平面上的刚体运动

考虑图1中的平面物体,其运动被限制在平面中。图中参考坐标系为固定不动的坐标系{\{ s \}}\hat{x} _{s},\hat{y} _{s}为坐标轴单位向量,\hat{x} _{b},\hat{y} _{b}附着在这个平面物体上,随着物体运动而运动,我们称该坐标系为载体坐标系(body frame),用{\{ b \}}来表示。

图1 平面物体的构型描述

为了描述这个平面物体的构型,只需要指定{\{ b \}}相对于{\{ s \}}的位置和姿态。{\{ b \}}的原点可通过{\{ s \}}的坐标轴表达:{ p={p} _{x}\hat{x} _{s} +{p} _{y}\hat{y} _{s} }
在确定参考坐标系的情况下,也可以将向量p简单的记为({p} _{x},{p} _{y})

描述{\{ b \}}相对于{\{ s \}}的姿态最简单的方式就是指定一个旋转角度\theta。另一种方法是指定\hat{x} _{b},\hat{y} _{b}相对于\hat{x} _{s},\hat{y} _{s}的方向:\hat{x} _{b}=\cos\theta\ \hat{x}_{s} + \sin\theta\ \hat{y}_{s} \hat{y} _{b}=-\sin\theta\ \hat{x}_{s} + \cos\theta\ \hat{y}_{s}
看起来上面的表达式似乎不是一个很好的用于表达姿态的方法,但是想象一下这个物体在三维空间中任意运动,一个角度\theta将不足以描述坐标系的姿态。实际上我们需要三个角度,但目前为止我们还不清楚如何定义这样一组角度。而将\{ b\} 的坐标轴用\{ s\} 坐标轴的系数来表达却是很直接的一种方式。

正如点 P 可以表达为一个列向量:p=\begin{bmatrix} {p}_{x} \\ {p}_{y} \\ \end{bmatrix} \quad

\hat{x} _{b},\hat{y} _{b}也可以写作两个列向量,组合成一个2x2 的矩阵P= \begin{bmatrix} \hat{x} _{b} & \hat{y} _{b} \\ \end{bmatrix} \quad=\begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \\ \end{bmatrix} \quad

矩阵P是一个旋转矩阵,尽管P包含4个数字,但它们受到3个约束:每一列是单位向量,且两列互相垂直。剩余的一个自由度由\theta来参数化。

综上,将Pp合并表达为(P,p),可作为坐标系\{ b\}相对于\{ s\}的位置和姿态的一种表达。

图2 {c}在{s}中的表达

如图2,将\{ c\}\{ s\}中表达,得到:r=\begin{bmatrix} {r}_{x} \\ {r}_{y} \\ \end{bmatrix}\quad R=\begin{bmatrix} \cos\phi & -\sin\phi \\ \sin\phi & \cos\phi \\ \end{bmatrix} \quad

同样地,我们也能够在\{ b\}中表达\{ c\}q=\begin{bmatrix} {q}_{x} \\ {q}_{y} \\ \end{bmatrix}\quad Q=\begin{bmatrix} \cos\psi & -\sin\psi \\ \sin\psi & \cos\psi \\ \end{bmatrix} \quad
如果我们知道了(Q,q)\{ c\}相对于\{ b\}的构型),(P,p)\{ b\}相对于\{ s\}的构型),那么我们可以计算出\{ c\}相对于\{ s\}的构型:

R=PQ (将\ Q\ 转换到坐标系\{ s\}\ ) r=Pq+p (将\ q\ 转换到坐标系\{ s\},并和\ p\ 相加 )

因此(P,p)不仅可以作为\{ b\}\{ s\}中的构型表达,还能够将一个点或坐标系从\{ b\}坐标变换到\{ s\}坐标。

考虑图3中的一个刚体,坐标系\{ d\}\{ c\}固定在它上面。初始状态时,\{ d\}\{ s\}重合,\{ c\}\{ s\}中的表达为(R,r)。而后物体移动,使得\{ d\}\{ b\}重合,\{ b\}\{ s\}中的描述为(P,p)。记\{ c'\}的构型为(R',r'),可验证下面的关系式成立:R'=PR r'=Pr+p

与之前的公式很类似,不同点在于这里的(P,p)(R,r)都是在\{ s'\}下表达的。因此这个表达式不是用于改变坐标,而是用作刚体位移(rigid-body displacement)。图3中发生的变换是:(1)根据P转动\{ c\}. (2) 根据p移动\{ c\}

综上,一个旋转矩阵-向量对(P,p) 有3个作用:

  • 表示一个刚体在\{ s\}中的构型
  • 改变一个向量坐标系的参考坐标系
  • 移动一个向量坐标系
图3 刚体位移

注意到图3(a)中的先旋转和移动的刚体位移可以直接通过绕一个图3(b)中的固定点s旋转角度\beta完成。这是螺旋运动(screw motion)在平面上的特例。因此,这个位移可以由3个螺旋坐标描述:(\beta, {s}_{x}, {s}_{y})。其中({s}_{x}, {s}_{y})=(0,2)代表点s在坐标系\{ s\}的坐标(螺旋轴指向纸面朝外)。

另一种表示螺旋运动的方式是将位移看作是以一定的角速度和线速度运动一段距离后产生。观察图3(b),绕s点以一个单位角速度\omega=1\ {rad}/s旋转,意味着在点坐标系\{ s\}原点处物体上的一点线速度为v=({v}_{x},{v}_{y}) =(2,0)。我们可以将这三个数组合起来用一个向量S =(\omega,{v}_{x},{v}_{y})=(1,2,0)来表示,这是螺旋轴的一种表达。绕该螺旋轴运动一个距离\theta = \pi/2将产生最终的位移。因此可以用三个坐标S\theta=(\pi/2,\pi,0)来表达该物体的位移,我们称它为平面上的刚体位移指数坐标(exponential coordinates)。

角速度和线速度统称为twist,将螺旋轴S =(\omega,{v}_{x},{v}_{y})乘以某个旋转速度\dot{\theta}得到速度V=S\dot{\theta}。绕螺旋轴S旋转\theta产生的位移和以速度\theta=\dot\theta绕螺旋轴S旋转一个单位时间得到的位移是相等的,因此V=S\dot{\theta}也可以被看作是一组指数坐标。

1.2 旋转和角速度

1.2.1 旋转矩阵

旋转矩阵R的9个参数受到6个约束,只有3个独立参数。注意到矩阵�R的三列对应的是载体坐标系的三个坐标轴\{ \hat{x} _{b} , \hat{y} _{b} ,\hat{z} _{b} \},因此矩阵�R需满足以下三个条件:

  • 单位模长条件\hat{x} _{b} , \hat{y} _{b} ,\hat{z} _{b}都是单位向量
  • 正交条件{ \hat{x} _{b} \cdot \hat{y} _{b} = \hat{x} _{b} \cdot \hat{z} _{b} = \hat{y} _{b} \cdot \hat{z} _{b}=0 }

这六个约束可以用一个关系式表达:R^{T}\cdot R = I

所有3x3旋转矩阵构成的集合称为特殊正交群(special orthogonal group),用符号SO(3)表示。和平面情况一样,一个旋转矩阵有以下三个作用:

  • 表示一个旋转
  • 改变一个向量或坐标系的参考坐标系
  • 旋转一个向量或坐标系

这里重点解释一下第三个作用旋转一个向量或坐标系。如图4,初始状态下,坐标系\{c\}\{s \}重合,坐标轴为\{ \hat{x} , \hat{y} ,\hat{z} \},如果我们让\{c\}绕着某个轴\hat\omega旋转角度\theta,则会得到一个新的坐标系\{ c^{'} \},其坐标轴为\{ {\hat{x}^{'} , \hat{y}^{'} ,\hat{z}^{'}} \}。令旋转矩阵R=R_{sc^{'}}表示\{c\}相对于\{s \}的旋转,那么就可以将R看成一个旋转算子,而不是一个姿态表达,我们可以写作:R=Rot(\hat\omega,\theta)
这个旋转算子将单位旋转矩阵I旋转至R

图4 旋转矩阵作为算子

绕坐标轴的旋转矩阵如下:Rot(\hat{x},\theta)= \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix} \quad Rot(\hat{y},\theta)= \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} \quad Rot(\hat{z},\theta)= \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \quad
更一般地,对于\hat\omega = (\hat\omega_{1},\hat\omega_{2},\hat\omega_{3})Rot(\hat{\omega},\theta)= \begin{bmatrix} c_{\theta}+{\hat{\omega}_{1}}^{2}(1-c_{\theta}) & \hat{\omega}_{1}\hat{\omega}_{2}(1-c_{\theta})-\hat{\omega}_{3} s_{\theta} & \hat{\omega}_{1}\hat{\omega}_{3}(1-c_{\theta})+\hat{\omega}_{2} s_{\theta} \\ \hat{\omega}_{1}\hat{\omega}_{2}(1-c_{\theta})+\hat{\omega}_{3} s_{\theta} & c_{\theta}+{\hat{\omega}_{2}}^{2}(1-c_{\theta}) & \hat{\omega}_{2}\hat{\omega}_{3}(1-c_{\theta})-\hat{\omega}_{1} s_{\theta} \\ \hat{\omega}_{1}\hat{\omega}_{3}(1-c_{\theta})-\hat{\omega}_{2} s_{\theta} & \hat{\omega}_{2}\hat{\omega}_{3}(1-c_{\theta})+\hat{\omega}_{1} s_{\theta} & c_{\theta}+{\hat{\omega}_{3}}^{2}(1-c_{\theta}) \end{bmatrix} \quad
其中,s_{\theta}=\sin\thetac_{\theta}=\cos\theta。任意的R\in SO(3)都可以由单位矩阵绕某个\hat\omega旋转某个\theta获得。注意一个特性,Rot(\hat\omega,\theta) = Rot(-\hat\omega,-\theta)

假设R_{sb}代表坐标系\{s \}相对于\{ b\}的旋转,现在我们想让\{ b\}绕单位向量�\hat\omega旋转角度\theta,该旋转由旋转矩阵R=Rot(\hat\omega,\theta)表示。为了更清楚的表达该旋转,我们还需要指明旋转轴\hat\omega是在\{s \}中还是\{ b\}中 表达。令坐标系\{ b^{'}\}\{ b\}绕�\hat\omega_{s}=\hat\omega旋转角度\theta得到(\hat\omega在固定坐标系中描述),\{ b^{''}\}\{ b\}绕�\hat\omega_{b}=\hat\omega旋转角度\theta得到(\hat\omega在载体坐标系中描述)。这两个新的坐标系可以通过下面的表达式计算出来:R_{s{b}^{'}} =RR_{s{b}} R_{s{b}^{''}} =R_{s{b}}R
也就是说,前乘一个矩阵R=Rot(\hat\omega,\theta)代表绕固定坐标系中的\hat\omega旋转,后乘R代表绕载体坐标系中的\hat\omega旋转。如果对一个向量v旋转,由于只涉及到v所在的坐标系,那么\hat\omega也是在该坐标系中描述的,旋转后的向量v^{'}=Rv

1.2.2 角速度

如图5,假设一个旋转的物体上固连着一个坐标系,其坐标轴单位向量为\{{\hat{x}},\hat{y},\hat{z} \},现在来求取这三个单位坐标轴对时间的导数。注意坐标轴的长度是不变的,只有方向会发生变化。研究载体坐标系在tt+\Delta{t}时刻的姿态的变化,这个变化可以描述为绕过原点的某个轴\hat\omega旋转角度\theta得到。注意这个\hat\omega目前还没有指明在哪个坐标系中描述。

图5 瞬时旋转轴

当趋于0时,就变为了旋转的速度,就是瞬时旋转轴。我们可以将和结合起来表示为角速度 (angular velocity):
参考图5(b),可得到:
为了以坐标形式表达这三个关系式,我们需要选定一个参考坐标系。理论上可以选择任意坐标系,两个很自然的选择是固定坐标系和载体坐标系。

首先选择\{ s\}为参考坐标系。令旋转矩阵R(t)表示载体坐标系在t时刻时相对于固定坐标系的姿态,\dot{R(t)}是其时间变化率,R(t)的第一列r_{1}(t)描述了\hat{x}轴在固定坐标系下的坐标,r_{2}(t)r_{3}(t)分别为\hat{y}\hat{z}轴在固定坐标系下的坐标。在某个时刻t处,令\omega_{s}\in{R}^3为角速度\omega在固定坐标系下的表达,则上面的三个关系式可以写为:\dot{r_{i}}=\omega_{s}\times{r}_{i}, \ \ \ \ \ \ i=1,2,3
这三个关系式可写成矩阵形式:\dot{R}= \begin{bmatrix} \omega_{s}\times{r}_{1} & \omega_{s}\times{r}_{2} & \omega_{s}\times{r}_{3} \end{bmatrix}=\ \omega_{s}\times{R}
为了消除右侧的叉乘符号,我们引入一个新的表示符号,将\omega_{s}\times{R} 写为[\omega_{s}]R,其中[\omega_{s}]\omega_{s}3\times{3}反对称(skew-symmetric)矩阵表达:

给定一个向量x={ \begin{bmatrix} x_{1} & x_{2} & x_{3} \end{bmatrix}}^{T} \in {R}^{3},定义矩阵[x]x3\times{3}反对称矩阵表达,即:[x]=-{[x]}^{T}
所有3\times{3}反对称矩阵构成的集合叫做so(3)李代数),它包含了当R=I时,所有可能的\dot{R}

反对称矩阵一个有用的特性如下:给定任意的\omega\in{R}^{3}R\in{SO(3)},有以下关系式恒成立:R[\omega]R^{T}=[R\omega]

有了新的符号[],旋转矩阵的导数就可以写为:\dot{R}=[\omega_{s}]R
两边同乘以R^{-1} ,可得到:[\omega_{s}]=\dot{R}R^{-1}

现在我们将\omega表达在\{ b\}坐标系中,记为\omega_{b}。注意\omega_{s}\omega_{b}是同一个角速度\omega在不同坐标系下的向量表达,由下标消除法则,\omega_{s}=R_{sb}\omega_{b},因此 \omega_{b}=R_{sb}^{-1} \omega_{s} = R^{-1}\omega_{s}=R^{T}\omega_{s}
将上面的关系式表达为反对称矩阵形式:
[\omega_{b}]=[R^{T}\omega_{s}] \ \ \ \ \ \ \ \ =R^{T}[\omega_{s}]R \ \ \ \ \ \ \ \ \ \ \ =R^{T}\dot{R}R^{T} R \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ =R^{T}\dot{R}=R^{-1}\dot{R}
综上,有两个关系式将R\dot{R}同角速度\omega联系起来:[\omega_{s}]=\dot{R}R^{-1} [\omega_{b}]=R^{-1}\dot{R}

需要注意两点:

  • [\omega_{b}]并不是相对于正在运动的坐标系来描述的,而是相对于一个静止坐标系\{ b\}描述,这个静止坐标系同固结在运动物体上的某个坐标系在这一瞬时重合。
  • \omega_{s}不依赖于载体坐标系的选择,\omega_{b}不依赖于固定坐标系的选择。表面上看,它们都依赖于R\dot{R},实际上\dot{R}R^{-1}的乘积独立于\{ b\}R^{-1}\dot{R}的乘积独立于\{ s\}
1.2.3 旋转的指数坐标表示法

指数坐标(Exponential Coordinates)是旋转的一种三参数表达法。指数坐标用\hat\omega\theta表示,其中\hat\omega是旋转轴单位向量,\theta是旋转角度。如果分开写,就变为了旋转的角-轴(axis-angle)表达法。

旋转矩阵R对应的指数坐标\hat\omega\theta可作如下的解读:

  • 旋转轴\hat\omega和旋转角度\theta,某一个坐标系初始状态同\{ s\}重合,绕\hat\omega旋转\theta角度,得到的坐标系相对于\{ s\}的姿态可用旋转矩阵R表达
  • \{ s\}中描述的一个角速度\hat\omega\theta,某一个坐标系初始状态同\{ s\}重合,沿着\hat\omega\theta运动单位时间(对\hat\omega\theta在这段时间内积分),得到的坐标系相对于\{ s\}的姿态可用旋转矩阵R表达
  • \{ s\}中描述的一个角速度\hat\omega,某一个坐标系初始状态同\{ s\}重合,沿着\hat\omega运动\theta时间(对\hat\omega在这段时间内积分),得到的坐标系相对于\{ s\}的姿态可用旋转矩阵R表达

后两种解读方式暗示我们可以用线性微分方程形式来看待指数坐标。先了解一下向量形式线性微分方程的一些结论:

设线性微分方程为{\dot{x}}(t)=Ax(t),初始条件为x(0)=x_{0}A\in{R}^{n\times{n}}为常矩阵,x(t)\in{R^{n}}。那么该方程的解为:x(t)=e^{At}x_{0}
其中e^{At}称为矩阵指数(matrix exponential):e^{At}=I + tA + \frac{t^2}{2!}A^{2} + \frac{t^3}{3!}A^{3}+ \dots

e^{At}还满足下面的特性:

  • d(e^{At})/dt=Ae^{At}=e^{At}A
  • 如果A可以写为A=PDP^{-1}P可逆,则e^{At}=Pe^{Dt}P^{-1}
  • 如果AB=BA,则e^{A}e^{B}=e^{A+B}(可以展开后验证)
  • (e^{A})^{-1}=e^{-A}(在上面表达式中令B=-A可验证)

如图6,假设一个三维向量p(0)\hat\omega旋转\thetap(\theta),可以想象一下这个旋转过程:p(0)以一个恒定速度1rad/st=0s旋转到t={\theta}{s},令 p(t)表示向量头部走过的路径,其速度\dot{p}为:\dot{p}=\hat{\omega}\times{p}=[\hat{\omega}]p
上面的方程是一个线性微分方程,其解为: p(t)=e^{[\hat\omega]t}p(0)
由于t\theta是可交换的,上式可写为:p(\theta)=e^{[\hat\omega]\theta}p(0)
从上式可看出e^{[\hat\omega]\theta}的一个作用,它可以将p(0)旋转至 p(\theta)\theta>0对应绕\hat\omega逆时针旋转,\theta<0则顺时针旋转。

向量p的旋转

e^{[\hat\omega]\theta}按照定义展开得到:e^{[\hat\omega]\theta}=I+[\hat\omega]\theta+[\hat\omega]^2\frac{{\theta}^2}{2!}+[\hat\omega]^3\frac{{\theta}^3}{3!}+\dots
[\hat\omega]^3=-[\hat\omega],上式可化简为:
e^{[\hat\omega]\theta}=I+\left(\theta-\frac{{\theta}^3}{3!}+\frac{{\theta}^5}{5!}-\dots\right)[\hat\omega]+\left(\frac{{\theta}^2}{2!}-\frac{{\theta}^4}{4!}+\frac{{\theta}^6}{6!}-\dots\right)[\hat\omega]^2
\sin\theta\cos\theta的级数展开式可得:
Rot(\hat\omega,\theta)=e^{[\hat\omega]\theta}=I+\sin\theta[\hat\omega]+(1-\cos\theta)[\hat\omega]^2
上式称为罗德里格旋转公式(Rodrigues’ formula)。

以上,展示了如何通过矩阵指数,从\hat\omega\theta创建旋转矩阵。如前所述,e^{[\hat\omega]\theta}的一个作用,它可以将一个向量p(0)旋转至 p(\theta),同样的,矩阵R由三个列向量构成,那么旋转矩阵R'=e^{[\hat\omega]\theta}R就是由R绕固定坐标系的\hat\omega旋转角度\theta获得。旋转矩阵R''=Re^{[\hat\omega]\theta}就是由R绕载体坐标系的\hat\omega旋转角度\theta获得。

下面我们将证明,对于任意的旋转矩阵R\in{SO(3)},我们总能找到一个单位向量\hat\omega和标量\theta,使得R=e^{[\hat\omega]\theta}

1.2.4 旋转的矩阵对数

如果\hat\omega\theta\in{R}^3代表一个旋转矩阵的指数坐标,那么反对称矩阵[\hat\omega\theta]=[\hat\omega]\theta就是旋转矩阵R矩阵对数(matrix logarithm)。矩阵对数是矩阵指数的逆运算。矩阵指数是将角速度的矩阵表达[\hat\omega]\theta\in{so(3)}积分1s得到一个旋转矩阵R\in{SO(3)},矩阵对数是对旋转矩阵R\in{SO(3)}微分,得到一个恒定角速度的矩阵表达[\hat\omega]\theta\in{so(3)},如果对它积分1s,就会将矩阵I旋转至R。简单来说:\exp:[\hat\omega]\theta\in{so(3)} → R\in{SO(3)} \log:R\in{SO(3)} → [\hat\omega]\theta\in{so(3)}

1.3 刚体运动和速度(Twist)

这一小节讨论刚体构型(configuration)和速度,与1.2节讨论的旋转角速度在某些方面是类似的。齐次变换矩阵T与旋转矩阵R类似,螺旋轴

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 作为备用知识,memo 学过矩阵理论或者线性代数的肯定知道正交矩阵(orthogonal matrix)是一个非常...
    HappyPieBinLiu阅读 5,733评论 0 5
  • 旋转矩阵 点,向量,坐标系 刚体不光有位置,还有自身的姿态.位置是指刚体在空间中的哪个地方,姿态是指刚体的朝向. ...
    南衍儿阅读 4,121评论 0 2
  • 前言 最近翻阅关于从2D视频或者图片中重构3D姿态的文章及其源码,发现都有关于摄像机参数的求解,查找了相关资料,做...
    予汐阅读 6,077评论 0 3
  • 1)继续发晕 今天早上,刚到校,丽说文芳需要有人开车去拉资料,我立即自告奋勇。找了半天包,终于从角落里将钥匙找到。...
    卌行阅读 246评论 0 2
  • 没学过,到现在不会运用阴影,特想找个师傅教教我,因为我非常喜欢画画。
    hellan1987阅读 260评论 0 0