Positioning: (plücker coordination) Plücker representation and orthogonal representation of a straight line, and their mutual conversion


foreword

The straight line in 3D space can be used by Plucker ( n , d ) (\boldsymbol n,\boldsymbol d)(n,d )means that it is convenient to participate in geometric operations, but its dimension is 6, and the Pluck expression is not dominant in optimization, while the orthogonal representation( U , W ) (\boldsymbol U,\boldsymbol W)(U,W )has 4 degrees of freedom and is mainly involved in optimization operations. This paper mainly records the following points

  • The Pluck representation of the line
  • Orthogonal representation with lines
  • The relationship between the two and the mutual conversion process

1. Vector cross product and point product

The above explanation will use cross product and dot product. In order to avoid unfamiliarity, let’s first review the basic operations of vectors:
a ⋅ b = b ⋅ aa × b = − b × aa ⋅ ( b × c ) = ( a × b ) ⋅ ca × ( b × c ) = ( a ⋅ c ) b − ( a ⋅ b ) c \boldsymbol{a\cdot b=b \cdot a} \\ \boldsymbol{a\times b = - b \ times a }\\ \boldsymbol{a \cdot(b \times c) = (a \times b) \cdot c} \\ \boldsymbol{a \times (b \times c) = (a \cdot c)b - (a \cdot b)c}ab=baa×b=b×aa(b×c)=(a×b)ca×(b×c)=(ac)b(ab)c


2. Plücker coordinate system (plücker coordination)

1. Definition

In 3D space, the rigid body has 6 degrees of freedom, while the line has 4 degrees of freedom, because the line rotates around itself (roll), or translates in the direction of the line or the same straight line, so there are two less degrees of freedom.

plücker coordination was defined by Julius Plücker in the 19th century, also known as Grassmann coordinates. The Pluck coordinate system is defined as ( n , d ) (\boldsymbol n,\boldsymbol d)(n,d) n \boldsymbol n n is a moment vector (moment vector) is also a normal vector,d \boldsymbol dd is lineℓ \ellThe direction vector of ℓ . Specifically: two points on the known linep 1 , p 2 p_1,p_2p1,p2, then the direction vector d \boldsymbol d of the lined
d = p 1 − p 2 (1) \boldsymbol d = \boldsymbol p_1-\boldsymbol p_2 \tag{1} d=p1p2( 1 )
Normal vectorn \boldsymbol nn
n = p × d (2) \boldsymbol{ n =p\times d } \tag{2} n=p×d(2)

where n \boldsymbol nn perpendicular to the lineℓ \ell The plane formed by the coordinate origin. p \boldsymbol pp is any point on the line (can bep 1 p_1p1or p 2 p_2p2) is a vector representation in world coordinates. point ppThe reason p can be chosen arbitrarily is that any pointp ′ p'p satisfyingp ′ − p = λ d \boldsymbol {p'-p}=\lambda \boldsymbol dpp=λd
p ′ × d = ( p + ( p ′ − p ) ) × d = p × d + ( p ′ − p ) × d = n + λ d × d = n (3) \begin{aligned} \boldsymbol {p' \times d} &= \boldsymbol{(p+(p'-p))\times d}\\ &=\boldsymbol{p\times d +(p'-p)\times d}\\ &=\boldsymbol{n}+\lambda \boldsymbol{d \times d}\\ &=\boldsymbol n \end{aligned} \tag{3} p×d=(p+(pp))×d=p×d+(pp)×d=n+λd×d=n(3)

insert image description here

2. Nature

2.1. A little ppp onlineℓ \ellA sufficient and necessary condition on : q × d = n \boldsymbol {q\times d = n}q×d=n .
2.2. Coordinate origin toℓ \ellThe distance of is ∣ ∣ n ∣ ∣ ∣ ∣ d ∣ ∣ \frac{||\boldsymbol n||}{||\boldsymbol d||}∣∣d∣∣∣∣n∣∣.
2.3. Line ( n , d ) (\boldsymbol {n,d} )(n,d )with the line( α n , α d ) , α ≠ 0 (\alpha \boldsymbol n,\alpha \boldsymbol d ), \alpha \ne 0( α n ,αd),a=0 means the same line.
2.4. Lineℓ \ellThe intersection point (perpendicular foot) of ℓ and the vertical line passing through the origin is denoted asp ⊥ p_\botp,but:

p ⊥ = p − ( d ^ ⋅ p ) d ^ = ( d ^ ⋅ d ^ ) p − ( d ^ ⋅ p ) d ^ = d ^ × ( p × d ^ ) = d ∣ ∣ d ∣ ∣ × ( p × d ∣ ∣ d ∣ ∣ ) = d ∣ ∣ d ∣ ∣ × n ∣ ∣ d ∣ ∣ = d × n ∣ ∣ d ∣ ∣ 2 (4) \begin{aligned} \boldsymbol p_\bot &= \boldsymbol{ p - ( \widehat{d} \cdot p ) \widehat{d} } \\ &=\boldsymbol{(\widehat{d} \cdot \widehat{d}) p - (\widehat{d} \cdot p) \widehat{d} } \\ &=\boldsymbol{ \widehat{d} \times (p \times \widehat{d})}\\ &=\boldsymbol{ \frac{d}{||d||} \times (p \times \frac{d}{||d||})}\\ &=\boldsymbol{\frac{d}{||d||} \times \frac{n}{||d||}}\\ &=\boldsymbol{ \frac{d\times n}{||d||^2}}\\ \end{aligned} \tag{4} p=p(d p)d =(d d )p(d p)d =d ×(p×d )=∣∣d∣∣d×(p×∣∣d∣∣d)=∣∣d∣∣d×∣∣d∣∣n=∣∣d2d×n(4)

2.5. n = 0 \boldsymbol {n=0} n=At 0 , the straight lineℓ \ell passes through the coordinate origin. Then, the Pluck representation of the line passing through the origin of coordinates is( 0 , _ ) (\boldsymbol 0,\_ )(0,_ ) .
2.6. PlaneΠ \PiΠ passes through the coordinate origin, then it is located on the planeΠ\PiAll straight lines at infinity on Π have the same Pluck representation as( n , 0 ) (\boldsymbol {n},\boldsymbol {0})(n,0), n \boldsymbol {n} n is the surfaceΠ\PiThe normal of Π .
2.7. Straight lineℓ \ell about any point in spaceqqThe moment vector of q is nq \boldsymbol n_qnq q q q inℓ \ellThe projection on is q ⊥ q_\botq,则:
n q = ( p − q ) × d ^ = p × d ^ − q × d ^ = n − q × d ^ (5) \begin{aligned} \boldsymbol{n}_q &=(\boldsymbol p-\boldsymbol q)\times \widehat{\boldsymbol d}\\ &=\boldsymbol p \times \widehat{\boldsymbol d} - \boldsymbol q \times \widehat{\boldsymbol d} \\ &= \boldsymbol n- \boldsymbol q \times \widehat{\boldsymbol d} \end{aligned} \tag{5} nq=(pq)×d =p×d q×d =nq×d (5)
又,
d ^ × n q = d ^ × ( q ⊥ − q ) × d ^ = ( d ^ ⋅ d ^ ) ( q ⊥ − q ) − ( d ^ ⋅ ( q ⊥ − q ) ) d ^ = q ⊥ − q (6) \begin{aligned} \widehat{\boldsymbol d} \times \boldsymbol{n}_q &= \widehat{\boldsymbol d} \times (\boldsymbol q_\bot -\boldsymbol q)\times \widehat{\boldsymbol d} \\ &=( \widehat{\boldsymbol d} \cdot \widehat{\boldsymbol d})(\boldsymbol q_\bot -\boldsymbol q) - ( \widehat{\boldsymbol d} \cdot (\boldsymbol q_\bot -\boldsymbol q)) \widehat{\boldsymbol d}\\ &= \boldsymbol q_\bot -\boldsymbol q \end{aligned} \tag{6} d ×nq=d ×(qq)×d =(d d )(qq)(d (qq))d =qq( 6 )
Therefore,
q ⊥ = q + d ^ × nq (7) \boldsymbol q_\bot =\boldsymbol q + \widehat{\boldsymbol d} \times\boldsymbol{n}_q \tag{7}q=q+d ×nq( 7 )
the pluck representation of straight lines is suitable for geometric operations but not suitable for optimization , while the orthogonal representation of straight lines can be applied to the optimization process

3. Transform the offline Pluck coordinates of the world coordinate system to the camera coordinate system

Known transformation matrix T wc = [ R wctwc 0 1 ] \boldsymbol{T}_w^c = \left[\begin{matrix} \boldsymbol R_w^c & \boldsymbol t_w^c \ \ \boldsymbol 0 & \boldsymbol 1 \end{matrix} \right]Twc=[Rwc0twc1] , the straight line Pluck in the world coordinate system representsL w \mathcal{L}_wLw, then Plücker in the camera coordinate system represents L c \mathcal{L}_cLcCan pass formula ( 8 ) (8)(8) 得到:
L c = [ n c d c ] = T w c L w = [ R w c [ t w c ] × R w c 0 R w c ] L w (8) \mathcal{L}_c = \left[\begin{matrix} \boldsymbol n_c\\ \boldsymbol d_c \end{matrix} \right] = \boldsymbol{ \mathcal{T}}_w^c \mathcal{L}_w= \left[\begin{matrix} \boldsymbol R_w^c & \left[\boldsymbol t_w^c\right]_\times \boldsymbol R_w^c\\ \boldsymbol 0 & \boldsymbol R_w^c \end{matrix} \right] \mathcal{L}_w \tag{8} Lc=[ncdc]=TwcLw=[Rwc0[twc]×RwcRwc]Lw( 8 )
Among them,[ twc ] × [\boldsymbol t_w^c]_\times[twc]×For the translation vector twc \boldsymbol t_w^ctwcThe anti-symmetric matrix (Skew-symmetric matrix), T wc \boldsymbol{ \mathcal{T}}_w^cTwcis the transformation matrix of the Pluck coordinates of the line from the world coordinate system to the camera coordinate system. In the same way, the transformation matrix T cw \boldsymbol{ \mathcal{T}}_c^w that transforms the straight line from the camera coordinate system to the world coordinate systemTcw,如式(9)所示:
T c w = T w c T = [ R w c T − [ R w c T t w c ] × R w c T 0 R w c T ] (9) \boldsymbol{ \mathcal{T}}_c^w = {\boldsymbol{ \mathcal{T}}_w^c}^T= \left[\begin{matrix} {\boldsymbol R_w^c}^T & -\left[{\boldsymbol R_w^c}^T\boldsymbol t_w^c\right]_\times{\boldsymbol R_w^c}^T\\ \boldsymbol 0 & {\boldsymbol R_w^c}^T \end{matrix} \right] \tag{9} Tcw=TwcT=[RwcT0[RwcTtwc]×RwcTRwcT](9)

3. Orthogonal representation of lines

Orthogonal representation requires only 4 variables ( θ , ϕ ) ∈ R 3 × R 1 (\boldsymbol \theta,\phi)\in \mathbb R^3\times \mathbb R^1( i ,) _R3×R1 , corresponding to two orthogonal matrices( U , W ) ∈ SO ( 3 ) × SO ( 2 ) (\mathbf U,\mathbf W)\in SO(3) \times SO(2)(U,W)SO(3)×SO ( 2 ) , it is more suitable for the representation of lines during optimization.

1. Convert Plücker representation to orthogonal representation

Orthogonal representation and Pluck representation can be converted to each other and can be flexibly applied in SLAM. Orthogonal representation can be obtained by QR decomposition of Plücke coordinates, but it is easy to construct the following matrix in practical applications:
[ nd ] = [ n ∣ ∣ n ∣ ∣ d ∣ ∣ d ∣ ∣ n × d ∣ ∣ n × d ∣ ∣ ] [ ∣ ∣ n ∣ ∣ 0 0 ∣ ∣ d ∣ ∣ 0 0 ] = [ u 1 u 2 u 3 ] [ ∣ ∣ n ∣ ∣ 0 0 ∣ ∣ d ∣ ∣ 0 0 ] (10) \begin{aligned} \left[\boldsymbol {n \quad d} \right] &= \left[\begin{matrix} {\frac{ \boldsymbol n}{|| \boldsymbol n||}} & {\ frac{ \boldsymbol d}{|| \boldsymbol d||}} & \boldsymbol{\frac{n\times d}{||n\times d||}}\end{matrix}\right] \left[ \begin{matrix} \boldsymbol{||n||} & 0\\ 0& \boldsymbol {||d||} \\ 0 & 0\end{matrix}\right]\\ &=\left[\begin {matrix} \boldsymbol u_1 & \boldsymbol u_2 & \boldsymbol u_3\end{matrix}\right] \left[\begin{matrix} \boldsymbol{||n||} & 0\\ 0& \boldsymbol {||d ||} \\ 0 & 0\end{matrix}\right] \end{aligned} \tag{10}[nd]=[∣∣n∣∣n∣∣d∣∣d∣∣n×d∣∣n×d] ∣∣n∣∣000∣∣d∣∣0 =[u1u2u3] ∣∣n∣∣000∣∣d∣∣0 (10)

Therefore, it is easy to obtain an orthogonal matrix representing the rotation, that is, the rotation matrix U \boldsymbol UU
U = R ( θ ) = R x ( θ 1 ) R y ( θ 2 ) R z ( θ 3 ) = [ u 1 u 2 u 3 ] = [ n ∣ ∣ d ∣ ∣ d ∣ ∣ d ∣ ∣ n × d ∣ ∣ n × d ∣ ∣ ] (11) \begin{aligned} \boldsymbol U &=\boldsymbol R(\boldsymbol\theta)= \boldsymbol R_x(\theta_1)\boldsymbol R_y(\theta_2)\boldsymbol R_z(\theta_3)\\ &=\left[\begin{matrix} \boldsymbol u_1 & \boldsymbol u_2 & \boldsymbol u_3\end{matrix}\right]\\ &=\left[\begin{matrix} {\frac{ \boldsymbol n}{|| \boldsymbol d||}} & {\frac{ \boldsymbol d}{|| \boldsymbol d||}} & \boldsymbol{\frac{n\times d}{||n\times d||}}\end{matrix}\right] \end{aligned} \tag{11} U=R ( i )=Rx( i1)Ry( i2)Rz( i3)=[u1u2u3]=[∣∣d∣∣n∣∣d∣∣d∣∣n×d∣∣n×d](11)

where, θ \boldsymbol\thetaθ is in turn aroundx − y − z xyzxyThe rotation angle of the z axis, obviously,R ( θ ) \boldsymbol R(\boldsymbol\theta)R ( θ )is aroundx − y − z xyzxyRotation matrix after z rotation.
Matrix[ ∣ ∣ n ∣ ∣ 0 0 ∣ ∣ d ∣ ∣ 0 0 ] \left[\begin{matrix} \boldsymbol{||n||} & 0\\ 0& \boldsymbol {||d||} \\ 0 & 0\end{matrix}\right] ∣∣n∣∣000∣∣d∣∣0 There is only one degree of freedom, which can be normalized to one SO ( 2 ) SO(2)SO ( 2 ) equation, which has the following solution:
W = [ cos ⁡ ϕ − sin ⁡ ϕ sin ⁡ ϕ cos ⁡ ϕ ] = [ w 1 − w 2 w 2 w 1 ] = 1 ∣ ∣ n ∣ ∣ 2 + ∣ ∣ d ∣ ∣ 2 [ ∣ ∣ n ∣ ∣ − ∣ ∣ d ∣ ∣ ∣ ∣ d ∣ ∣ ∣ ∣ n ∣ ∣ ] (12) \begin{aligned} \ballsymbol W&= \left[\begin{matrix }\\ cos\phi & -\sin\phi\\ \sin\phi& \cos\phi \end{matrix}\right]\\ &=\left[\begin{matrix} w_1 & -w_2\\ w_2 & w_1 \end {matrix}\right]\\ &=\frac{1}{\sqrt{||\ball symbol n||^2+||\ball symbol d||^2}} \left[\begin{matrix} || \bold symbol n|| & -||\bold symbol d||\\ ||\bold symbol d||& ||\bold symbol n|| \end{matrix}\right] \end{aligned} \tag{12}W=[cosϕsinϕsinϕcosϕ]=[w1w2w2w1]=∣∣n2+∣∣d2 1[∣∣n∣∣∣∣d∣∣∣∣d∣∣∣∣n∣∣](12)

It can be seen from formula (12) that W \boldsymbol WW contains distance information. So the orthogonal representation( U , W ) (\mathbf U,\mathbf W)(U,W ) contains 3 degrees of freedom for rotation and 1 degree of freedom for distance.

2. Orthogonal representation converted to Pluck representation

The known line d is orthogonal to represent ( U , W ) (\mathbf U,\mathbf W)(U,W),或 ( θ , ϕ ) (\boldsymbol{\theta}, \phi) ( i ,ϕ ) , it is easy to obtain the Pluck representation:
[ nd ] = [ w 1 u 1 T w 2 u 2 T ] (13) \left[\boldsymbol {n \quad d} \right] =\left[{ w_1 \boldsymbol u_1^T\quad w_2 \boldsymbol u_2^T} \right] \tag{13}[nd]=[w1u1Tw2u2T](13)

Among them, w 1 = cos ⁡ ϕ , w 2 = sin ⁡ ϕ w_1=\cos\phi, w_2=\sin\phiw1=cosϕ ,w2=sinϕ .


Summarize

This article mainly records the Pluck representation and orthogonal representation of the line, as well as the mutual conversion formula between the two. Please correct me if I am wrong, thank you!

references

Jia, Yan-Bin. “Plücker Coordinates for Lines in the Space.” (2020).
He, Yijia et al. “PL-VIO: Tightly-Coupled Monocular Visual–Inertial Odometry Using Point and Line Features.” Sensors (Basel, Switzerland) 18 (2018)

Guess you like

Origin blog.csdn.net/weixin_42286660/article/details/126024304