[Conducción automática] planificación de ruta: resumen de curva de ReedsShepp (implementación de Python | implementación de C++)

Referencias


Preámbulo


1. Curva de Reeds-Shepp

1.1 Conceptos básicos

El algoritmo de Reeds-Shepp se conoce como RS , un artículo publicado por JAReeds y LAShepp en 1990 (camino óptimo para un automóvil que avanza y retrocede) . Este método se mejora en base al algoritmo de Dubins , y se agrega a la planificación el movimiento inverso (se permite que el automóvil retroceda, se pone marcha atrás), lo que permite obtener una mejor solución que la curva de Dubins en algunos casos. .

Una curva de ejemplo es la siguiente:

Fuente de la imagen: https://blog.csdn.net/robinvista/article/details/95137143

Como se puede ver en la figura anterior, en la trayectoria de la curva de Reeds-Shepp , se permite que exista la válvula de cúspide.

1.2 Combinación de campos

Agregue un superíndice a la letra en el campo para indicar la dirección del movimiento, de la siguiente manera:

símbolo significado alrededor del círculo unitario
L + L^+l+ girar a la izquierda en sentido anti-horario
L − L^-l atrás izquierda agujas del reloj
R+R^+R+ girar a la derecha en sentido anti-horario
R − R^-R girar a la derecha agujas del reloj
S+S^+S+ sigue recto /
S − S^-S volver directamente /

Utilice C, SC, SA los caracteres C y S se les pueden asignar los siguientes conjuntos:

CCC ← { C + C − C + C + C − C − C + C + C − C + C β + C β − C − C + C β − C β − C + } CSC ← { C + S + C + C − C π / 2 + S + C + C + S + C π / 2 + C − C − C π / 2 + S + C π / 2 + C − } (1) \tag{1} \begin {alineado} &C CC \leftarrow\left\{\quad C^{+} C^{-} C^{+} \quad C^{+} C^{-} C^{-} \quad C^{ +} C^{+} C^{-} \quad C^{+} C_{\beta}^{+} C_{\beta}^{-} C^{-} \quad C^{+} C_ {\beta}^{-} C_{\beta}^{-} C^{+}\right\}\\ &C SC \leftarrow\left\{\quad C^{+} S^{+} C^ {+} \quad C^{-} C_{\pi / 2}^{+} S^{+} C^{+} \quad C^{+} S^{+} C_{\pi / 2} ^{+} C^{-} \quad C^{-} C_{\pi / 2}^{+} S^{+} C_{\pi / 2}^{+} C^{-}\right \} \end{alineado}C C C{ C+ C−C _+C+ C−C _C+ C+ CC+ Cb+CbCC+ CbCbC+ }CSC _ _{ C+ S+ C+C−C _p / 2+S+ C+C+ S+ Cp / 2+CC−C _p / 2+S+ Cp / 2+C }( 1 )

El nuevo campo se puede obtener invirtiendo el signo de la ecuación (1). En la fórmula anterior (1), C π / 2 + C^+_{\pi/2}Cp / 2+Indica el LL correspondienteL oRREl ángulo girado de R es π / 2 \pi/2π / 2 ,C β C β C_{\beta}C_{\beta}CbCbUna combinación significa que los arcos correspondientes tienen longitudes iguales.

Para una representación compacta, evite ± \pm± , también existe una función infinitesimal:
CCC ← { C ∣ C ∣ CC ∣ CCCC ∣ CCC β ∣ C β CC ∣ C β C β ∣ C } CSC ← { CSCC ∣ C π/2 SCCSC π/2 ∣ CC ∣ C π / 2 SC π / 2 ∣ C } (2) \tag{2} \begin{aligned} &C CC \leftarrow\left\{\begin{array}{ccccc} C|C| C&C\mid CC&CC\mid C&C C_{\beta}\mid C_{\beta} C&C\left|C_{\beta}C_{\beta}\right| C \end {array}\right\}\\ &C SC \left arrow\left\{\begin{array}{llll} CSC&C\mid C_{\pi/2} SC&CS C_{\pi/2} \mid C & C\left|C_{\pi/2} S C_{\pi/2}\right| C \end{array}\right\}\end{aligned}C C C{ C∣C∣C _ _ _ _CC CC.C. _CC.C. _bCbCC∣C _bCbC}CSC _ _{ Csc _ _CCp / 2SC _CSC _ _p / 2CCCp / 2SC _p / 2C}( 2 )

Entre ellos, ∣ | indica que la dirección del movimiento del vehículo cambia de adelante a atrás o de atrás a adelante.

Subíndice las palabras anteriores, como C α ∣ C β ∣ C γ C_{\alpha}|C_{\beta}| C_{\gamma}Ca∣C _b∣C _C, entre ellos , β , γ \alpha, \beta, \gammaun ,segundo ,γ representa el ángulo de rotación (en radianes), respectivamente. SSS con subíndiceddd significa que la distancia recorrida en línea recta esddd . Sus rangos se muestran en la siguiente tabla:

¿ CC ?C es reemplazada porLLL oRRR , mediante una simple transformación, existen48combinación de campos. Esta simple transformación incluye cambio de tiempo (timeflip) , reflexión (reflect) y transformación hacia atrás (hacia atrás) .

1.3 Cambio de tiempo (timeflip), reflexión (reflejo) y transformación hacia atrás (hacia atrás)

1.3.1 Inversión de tiempo (inversión de tiempo)

La curva calculada se invierte según la dirección de su movimiento y la nueva curva obtenida es la curva opuesta a la curva original.

Como se muestra en la figura, la curva azul L − R + S + L + L^-R^+S^+L^+l−R _+ S+ l+ con la curva rojaL + R − S − L − L^+R^-S^-L^-l+ R−S _−L _ Es simétrico con respecto al eje Y y los ángulos de rumbo de la trayectoria en las dos curvas de trayectoria son opuestos. Desde el punto de partidaO ( 0 , 0 , 0 ) O(0, 0, 0)O ( 0 ,0 ,0 ) al punto objetivoA ( x , y , θ ) A(x, y,\theta)A ( x ,y ,θ ) puede pasar por el punto inicialO ( 0 , 0 , 0 ) O(0, 0, 0)O ( 0 ,0 ,0 ) al punto objetivoB ( − x , − y , − θ ) B(-x,-y,-\theta)segundo ( - x ,y ,θ ) cálculo de inversión de trayectoria.

1.3.2 Reflexionar

La segunda relación de conversión: "reflejar", es decir, invertir la curva calculada según su dirección de movimiento circular y obtener una nueva curva con la misma longitud que la curva original.

Como se muestra en la figura, la curva roja R − L + S + R + R^- L^+ S^+ R^+R−L _+ S+ R+ con la curva azulL − R + S + L + L^- R^+ S^+ L^+l−R _+ S+ l+ Simétrico con respecto al eje X, los ángulos de rumbo de la trayectoria en las dos curvas de trayectoria son opuestos. Desde el punto de partidaO ( 0 , 0 , 0 ) O(0,0,0)O ( 0 ,0 ,0 ) al punto objetivoA ( x , y , θ ) A(x, y, \theta)A ( x ,y ,θ ) puede pasar por el punto inicialO ( 0 , 0 , 0 ) O(0,0,0)O ( 0 ,0 ,0 ) al punto objetivoB ( x , − y , − θ ) B(x,-y,-\theta)segundo ( x ,y ,θ ) se obtiene invirtiendo la dirección circunferencial del camino.

1.3.3 Transformación hacia atrás (hacia atrás)

La tercera relación de conversión: "hacia atrás", es decir, la ruta de la curva original se convierte en orden inverso y la curva obtenida es una nueva curva con la misma longitud que la curva original.

El diagrama de ejemplo "al revés" se muestra en la figura, la curva azul L − S − R − L + L^-S^-R^- L^+l−S _−R _−L _+ con la curva rojaL + R − S − L − L^+ R^- S^- L^-l+ R−S _−L _ No tiene las dos relaciones de apilamiento anteriores, pero se puede ver intuitivamente queL − S − R − L + L^-S^-R^- L^+l−S _−R _−L _El orden inverso de + obtiene L + R − S − L − L^+ R^- S^- L^-l+ R−S _−L _ , las trayectorias en las dos curvas de trayectoria están dispuestas de manera inversa. Desde el punto de partidaO ( 0 , 0 , 0 ) O(0,0,0)O ( 0 ,0 ,0 ) al punto objetivoA ( x , y , θ ) A(x, y,\theta)A ( x ,y ,θ ) puede pasar por el punto inicialO ( 0 , 0 , 0 ) O(0,0,0)O ( 0 ,0 ,0 ) función baseB ( x ∗ cos ⁡ θ + y ∗ sin ⁡ θ , x ∗ sin ⁡ θ − y ∗ cos ⁡ θ , θ ) B(x*\cos \theta +y*\sin\theta, x * \sin\theta -y*\cos\theta,\theta)segundo ( xporquei+ypecadoyo ,Xpecadoiyporqueyo ,θ ) se obtiene invirtiendo la dirección circunferencial del camino.

1.4 48 combinaciones de campos

Las 48 combinaciones de campos se enumeran de la siguiente manera:

En la figura, el subíndice β \betaβ representa el radian de rotación C esβ \betaβ , la misma razónπ / 2 \pi/2π / 2 también representa el radian de rotación, lo que significa que el círculo debe girarπ / 2 \pi/2p / 2 .

Por lo tanto, la curva de Dubins es la más corta seleccionada de las 6 curvas, y la curva de Reeds-Shepp es la más corta seleccionada de las 48 curvas (el artículo original creía que la curva más corta debe estar entre las 48 curvas, y más tarde Investigación humana encontró que había dos curvas que no serían las más cortas, por lo que el rango de búsqueda se redujo a 46).

En cuanto a la derivación específica de estas combinaciones de campos, consulte el artículo original .

2. Solución de la curva RS

La fórmula de solución de la curva de Reeds-Shepp está en la fórmula (8.1) ~ fórmula (8.11) del artículo original . Está resumido aquí.

Supongamos que el punto de partida es ( 0 , 0 , 0 ) (0,0,0)( 0 ,0 ,0 ) , el punto final es( x , y , θ ) (x,y,\theta)( x ,y ,yo ) .

2.1 Composición de tres arcos

  • El primer tipo de curva básica: C ∣ C ∣ CC|C| CC C C , es decir, tres arcos y dos arcos en cada arco tienen direcciones opuestas, en base a esto se pueden extender cuatro tipos de curvas:L + R − L + , L − R + L − , R + L − R + , R − L + R − L^{+} R^{-} L^{+} , L^{-} R^{+} L^{-} , R^{+} L^ { -} R^{+} , R^{-} L^{+} R^{-}l+ R−L _+L−R _+ lR+ l−R _+R−L _+ R
  • El segundo tipo de curva básica: CC ∣ CCC \mid CC.C. _C , es decir, tres arcos y las direcciones de los arcos de los dos últimos arcos son opuestas, en base a esto se pueden extender cuatro tipos de curvas:L + R + L − , L − R − L + , R + L + R − , R − L − R + L^{+} R^{+} L^{-} , L^{-} R^{-} L^{+} , R^{+} L^{+} R ^{-} , R^{-} L^{-} R^{+}l+ R+ lL−R _−L _+R+ l+ RR−L _−R _+
  • La tercera curva básica: C ∣ CCC \mid CCCC C , es decir, tres arcos y las direcciones de los arcos de los dos primeros arcos son opuestas, en base a esto se pueden extender cuatro tipos de curvas:L + R − L − , L − R + L + , R + L − R − , R − L + R + L^{+} R^{-} L^{-} , L^{-} R^{+} L^{+} , R^{+} L^{- } R^{-} 、 R^{-} L^{+} R^{+}l+ R−L _L−R _+ l+R+ l−R _R−L _+ R+

A través de los tres métodos de transformación de curvas de inversión del tiempo, reflexión y retroceso, los símbolos de las tres fórmulas anteriores se transforman en los modos de movimiento de 12 curvas, que se pueden resolver mediante la fórmula (1).
{ ( u 1 , t 1 ) = R ( x − pecado ⁡ θ , y − 1 + porque ⁡ θ ) { u 1 2 > 4 → L = ∞ u 1 2 ≤ 4 → { A = arcsin ⁡ ( u 1 2 4) u = M ( A + t 1 ) ( u 2 , t 2 ) = R ( x − sin ⁡ θ , y − 1 + cos ⁡ θ ) t = t 2 v = M ( θ + t − u ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ donde A ∈ [ π 2 , π ] (1) \tag{1} \left\{\begin{array}{l} \left(u_{1}, t_ {1}\right)=R(x-\sin \theta, y-1+\cos \theta) \\ \left\{\begin{array}{l} u_{1}^{2}>4 \ flecha derecha L=\infty \\ u_{1}^{2} \leq 4 \rightarrow\left\{\begin{array}{l} A=\arcsin \left(\frac{u_{1}^{2} }{4}\right) \\ u=M\left(A+t_{1}\right) \\ \left(u_{2}, t_{2}\right)=R(x-\sin \theta , y-1+\cos \theta) \\ t=t_{2} \\ v=M(\theta+tu) \\ L=|t|+|u|+|v| \end{array}\ derecha. \\ \text {dónde} A \in\left[\frac{\pi}{2}, \pi\right] \end{array}\right. \end{array}\right.( 1,t1)=R ( xpecadoyo ,y1+porqueyo )tu12>4l=tu124A=arcosin(4tu12)tu=METRO( Un+t1)( 2,t2)=R ( xpecadoyo ,y1+porqueyo )t=t2v=M ( yo+t)l=t +tu +v donde  A[2pag,pág ].( 1 )

Entre ellos t , u , vt , u , vt , u y v representan el valor del arco de cada giro en la fórmula (en realidad, también es la longitud del arco de los tres arcos de la curva básica, porque el radio del arco es 1, el círculo unitario) , LLL es la longitud total del camino; la función RRen la fórmulaR es el sistema de coordenadas cartesiano( x , y ) (x, y)( x ,y ) en el sistema de coordenadas polares( u 1 , t 1 ) \left(u_{1}, t_{1}\right)( 1,t1) , donde los valores de las coordenadas radiales sonu 1 , u 2 u_{1} , u_{2}tu12, los valores de las coordenadas angulares son t 1 , t 2 t_{1} , t_{2}t1t2, la función MMM se utiliza para2 π 2\pi2 operación de módulo π y limitar el valor en radianes a[ − π , π ] [-\pi, \pi][ π ,p ] .

función ( r , θ ) = R ( x , y ) (r,\theta)=R(x, y)( r ,yo )=R ( x ,y ) es ( x , y ) (x, y)en el sistema de coordenadas cartesiano( x ,y ) y sistema de coordenadas polares( r , θ ) (r,\theta)( r ,Defina θ ) como una función: { r cos ⁡ θ = xr sin ⁡ θ = y \begin{aligned} \left\{\begin{array}{l} r\cos{\theta}=x\\ r\ sin {\theta}=y \end{array}\right.\\\end{alineado}{ rporquei=Xrpecadoi=y

ψ = M ( θ ) \psi=M(\theta )pag=M ( θ ) función { ψ = θ mod 2 π − π ≤ ψ < π \begin{aligned} \left\{\begin{array}{l} \psi=\theta \mod 2\pi\\ -\ pi \le\psi<\pi \end{array}\right.\\ \end{aligned}{ pag=imodo _ _2 p.m.pag.pag<pag

Además de los símbolos recién definidos, los símbolos definidos no se describirán en detalle a continuación.

2.2 Composición de dos arcos y rectas

  • El cuarto tipo de forma de curva básica: CSCCSCC S C , que se compone de dos arcos y rectas, en base a esto se pueden extender ocho tipos de curvas:L + S + L + , L − S − L − , R + S + R + , R − S − R − , L + S + R + , L − S − R − , R + S + L + , R − S − L − L^{+} S^{+} L^{+} , L^{ -} S^{-} L^{-} , R^{+} S^{+} R^{+} , R^{-} S^{-} R^{-} , L^{+} S^ {+} R^{+} , L^{-} S^{-} R^{-} , R^{+} S^{+} L^{+} , R^{-} S^ {-}L^{-}l+ S+ l+L−S _−L _R+ S+ R+R−S _−R _L+ S+ R+L−S _−R _R+ S+ l+R−S _−L _

{ ( u , t ) = R ( x − sin ⁡ θ , y − 1 + cos ⁡ θ ) v = M ( θ − t ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ y A ∈ [ 0 , π ] (2) \tag{2} \begin{aligned}\left\{\begin{array}{l} (u, t)=R(x-\sin \theta, y-1+\cos \theta ) \\ v=M(\theta-t) \\ L=|t|+|u|+|v| \\ \text { Cuadro } A \in[0, \pi] \end{array}\right. \end{alineado}( ,t )=R ( xpecadoyo ,y1+porqueyo )v=M ( yot )l=t +tu +v  donde  A[ 0 ,pág ].( 2 )
{ ( u 1 , t 1 ) = R ( x − pecado ⁡ θ , y − 1 + porque ⁡ θ ) { u 1 2 > 4 → L = ∞ u 1 2 ≤ 4 → { u = u 1 2 − 4 ( u 2 , t 2 ) = R ( u , 2 ) t = M ( t 1 + t 2 ) v = M ( t − u ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ (3) \tag{3} \begin{aligned} \left\{\begin{array}{l} \left(u_{1}, t_{1}\right)=R(x-\sin \theta, y-1 +\cos \theta) \\ \left\{\begin{array}{l} u_{1}^{2}>4 \rightarrow L=\infty \\ u_{1}^{2} \leq 4 \ flecha derecha\izquierda\{\begin{array}{l} u=\sqrt{u_{1}^{2}-4} \\ \left(u_{2}, t_{2}\right)=R(u , 2) \\ t=M\left(t_{1}+t_{2}\right) \\ v=M(tu) \\ L=|t|+|u|+|v| \end{array}\right. \end{array}\right. \end{array}\right.\\ \end{aligned}( 1,t1)=R ( xpecadoyo ,y1+porqueyo )tu12>4l=tu124tu=tu124 ( 2,t2)=R ( ,2 )t=METRO( t1+t2)v=METRO ( t)l=t +tu +v( 3 )

A través de los tres métodos de transformación de curvas anteriores, los símbolos de la cuarta fórmula se transforman en 8 tipos de curvas. Entre los 8 tipos de curvas, los primeros 4 tipos de curvas se resuelven mediante la fórmula (2) y los últimos 4 tipos de curvas se resuelven mediante la fórmula (3).

2.3 Composición de cuatro arcos

  • El quinto tipo de forma de curva básica: CC β ∣ C β CC C_{\beta} \mid C_{\beta} CC.C. _bCbC , que se compone de cuatro arcos, la dirección del arco del primer segmento es opuesta a la del segundo segmento, la dirección del arco del tercer segmento es opuesta a la del cuarto segmento y la dirección de los dos primeros segmentos es opuesta a la de los dos últimos segmentos, en base a esto se pueden extender cuatro formas de curva:L + R β + L β − R − , L − R β − L β + R + , R + L β + R β − L − , R − L β − R β + L + L^{+} R_{\beta}{ }^{+} L_{\beta}{ }^{-} R^{-} 、 L^{- } R_{\beta}{ } ^{-} L_{\beta}{ }^{+} R^{+} 、 R^{+} L_{\beta}{ }^{+} R_{\beta} { }^{-} L^ {-} , R^{-} L_{\beta}{ }^{-} R_{\beta}{ }^{+} L^{+}l+ Rb+ lb−R _L−R _b−L _b+ R+R+ lb+ Rb−L _R−L _b−R _b+ l+

  • El sexto tipo de forma de curva básica: C ∣ C β C β ∣ CC\left|C_{\beta} C_{\beta}\right| CC∣C _bCbC , que se compone de cuatro arcos, el primer y segundo arco tienen la misma dirección de arco, el tercer y cuarto arco tienen la misma dirección de arco, y los dos primeros arcos y los dos últimos arcos tienen direcciones opuestas, en base a esto, cuatro las formas de las curvas se pueden extender:L + R β − L β − R + , L − R β + L β + R − , R + L β − R β − L + , R − L β + R β + L − L ^{+} R_{\beta}{ }^{-} L_{\beta}{ }^{-} R^{+} 、 L^{-} R_{\beta}{ } ^{+} L_{ \beta}{ }^{+} R^{-} 、 R^{+} L_{\beta}{ }^{-} R_{\beta}{ }^{-} L^ {+} , R^ {-} L_{\beta}{ }^{+} R_{\beta}{ }^{+} L^{-}l+ Rb−L _b−R _+L−R _b+ lb+ RR+ lb−R _b−L _+R−L _b+ Rb+ l

{ ξ = x + pecado ⁡ ( θ ) η = y − 1 − porque ⁡ ( θ ) ρ 1 = 2 + ξ 2 + η 2 4 ρ 2 = 20 − ξ 2 − η 2 16 0 ≤ ρ 1 , ρ ≤ 1 → { u 1 = arcos ⁡ ( ρ 1 ) u 2 = − arcos ⁡ ( ρ 2 ) u = u 1 o 2 ( t , v ) = τ ω ( u , − u , ξ , η , θ ) L = ∣ t ∣ + 2 ∗ ∣ u ∣ + ∣ v ∣ Sea u ∈ [ 0 , π / 2 ] Sea L = ∞ (4) \tag{4} \left\{\begin{array}{l} \xi = x+\sin(\theta)\\\eta=y-1-\cos(\theta)\\\rho_{1}=\frac{2+\sqrt{\xi^{2}+\eta^{ 2 }}}{4} \\ \rho_{2}=\frac{20-\xi^{2}-\eta^{2}}{16} \\ 0 \leq \rho_{1} 、 \rho_ { 2} \leq 1 \rightarrow\left\{\begin{array}{l} u_{1}=\arccos\left(\rho_{1}\right) \\u_{2}=-\arccos\left ( \rho_{2}\right) \\ u=u_1 \quad o \quad u_2\\ (t, v)=\tau \omega(u,-u, \xi, \eta, \theta) \\ L = |t|+2 *|u|+|v| \\ \text { privado } u \in[0, \pi/2] \end{array}\right. \\ \text { Cuadro } L=\infty \end{array}\right.X=X+pecado ( θ )el=y1porque ( θ )r1=42 +X2 +norte2 r2=1 62 0 ξ2 -h20r1pag21tu1=arccos( r1)tu2=arccos( r2)tu=tu1o rtu2( t ,v )=a ( , _,x ,el ,yo )l=t +2tu +v  entre ellos  tu[ 0 ,p / 2 ] . Otro  l=( 4 )
Estos 8 tipos de curvas se pueden resolver mediante la fórmula (4). En la fórmula anterior,ρ 1 , u 1 \rho_{1},u_1r1,tu1Para el cálculo de la ruta del quinto tipo de fórmula, ρ 2 , u 2 \rho_{2},u_2r2,tu2Se utiliza en el cálculo de la ruta del sexto tipo de fórmula, donde τ ω \tau \omegaτ ω es una función de cálculo de curvas en radianes. Generalmente, el valor de curvas en radianes de la función( t , v ) = τ ω ( u , v 0 , ξ , η , θ ) (t,v)=\tau \omega(u ,v_0 ,\xi,\eta,\theta)( t ,v )=a ( , _v0,x ,el ,θ ) se calcula mediante la fórmula (5).

{ σ = M ( u − v 0 ) ζ = pecado ⁡ ( u ) − pecado ⁡ ( σ ) ψ = cos ⁡ ( u ) − cos ⁡ ( σ ) − 1 t 1 = arctan ⁡ η ∗ ζ − ξ ∗ ψ ξ ∗ ζ + η ∗ ψ λ = 2 ∗ ( porque ⁡ ( σ ) − porque ⁡ ( v 0 ) − porque ⁡ ( u ) ) + 3 t = { M ( t 1 + π ), λ < 0 M ( t 1 ) , λ ≥ 0 v = M ( t − ( u − v 0 ) − θ ) (5) \tag{5}\left\{\begin{array}{l} \sigma=M(u-v_0) \\ \zeta=\sin(u)-\sin(\sigma) \\ \psi=\cos(u)-\cos(\sigma)-1 \\ t_{1}=\arctan \frac{\eta *\zeta-\xi*\psi}{\xi*\zeta+\eta*\psi}\\\lambda=2 *(\cos(\sigma)-\cos(v_0)-\cos(u))+ 3\\t=\left\{\begin{array}{l} M\left(t_{1}+\pi\right), \lambda<0\\M\left(t_{1}\right), \lambda \geq 0 \end{array}\right. \ \ v= M ( t - ( u - v_0 ) - \ theta ) \ end { array } \ rightpag=m ( v0)gramo=pecado ( )pecado ( σ )pag=porque ( )porque ( σ )1t1=arctánξ ζ + η ψη ζ ξ ψyo=2( porque ( σ )porque ( v0)porque ( u ) )+3t={ METRO( t1+pag ),yo<0METRO( t1),yo0v=METRO ( t( v0)yo ).( 5 )

2.4 Composición de tres arcos y una recta

  • La séptima forma de curva básica: C ∣ C π / 2 SCC\mid C_{\pi / 2} SCCCp / 2S C , que se compone de tres arcos y una recta, el segundo arco esπ / 2 \pi / 2Arco π / 2 , la tercera sección es un camino en línea recta, la primera sección es opuesta a los últimos tres arcos, en base a esto se pueden extender ocho tipos de curvas:L + R π / 2 − S − R − , L − R π / 2 + S + R + , R + L π / 2 − S − L − , R − L π / 2 + S + L + , L + R π / 2 − S − L − L^{+ } R_{\pi / 2}^{-} S^{-} R^{-} , L^{-} R_{\pi / 2}^{+} S^{+} R^{+} , R ^{+} L_{\pi / 2}^{-} S^{-} L^{-} 、 R^{-} L_{\pi / 2}^{+} S^{+} L^ { +} , L^{+} R_{\pi / 2}^{-} S^{-} L^{-}l+ Rp / 2S−R _L−R _p / 2+S+ R+R+ lp / 2S−L _R−L _p / 2+S+ l+L+ Rp / 2S−L _L − R π / 2 + S + L + L^{-} R_{\pi / 2}^{+} S^{+} L^{+}l−R _p / 2+S+ l+R + L π / 2 − S − R − R^{+} L_{\pi / 2}^{-} S^{-} R^{-}R+ lp / 2S−R _R − L π / 2 + S + R + R^{-} L_{\pi / 2}^{+} S^{+} R^{+}R−L _p / 2+S+ R+

  • El octavo tipo de forma de curva básica: CSC π / 2 ∣ CCS C_{\pi / 2} \mid CCSC _ _p / 2C , que se compone de tres arcos y una recta, el tercer arco esπ / 2 \pi / 2π / 2 arco, el segundo segmento es un camino recto y el cuarto segmento es opuesto a los primeros tres arcos, en base a esto se pueden extender ocho tipos de curvas:L + S + L π / 2 + R − , L − S − L π / 2 − R + , R + S + R π / 2 + L − , R − S − R π / 2 − L + , R + S + L π / 2 + R − , R − S − L π / 2 − R + L^{+} S^{+} L_{\pi / 2}^{+} R^{-} 、 L^{-} S^{-} L_{\pi / 2 }^{-} R^{+} , R^{+} S^{+} R_{\pi / 2}^{+} L^{-} , R^{-} S^{-} R_ { \pi / 2}^{-} L^{+} , R^{+} S^{+} L_{\pi / 2}^{+} R^{-} , R^{-} S^ { -} L_{\pi / 2}^{-} R^{+}l+ S+ lp / 2+RL−S _−L _p / 2R+R+ S+ Rp / 2+lR−S _−R _p / 2l+R+ S+ lp / 2+RR−S _−L _p / 2R+L + S + R π / 2 + L − 、 L − S − R π / 2 − L + L^{+} S^{+} R_{\pi / 2}^{+} L^{- } 、 L^{-} S^{-} R_{\pi / 2}^{-} L^{+}l+ S+ Rp / 2+lL−S _−R _p / 2l+

{ ζ = x + pecado ⁡ ( θ ) η = y − 1 − porque ⁡ ( θ ) ( ρ , ϑ ) = R ( − η , ζ ) { ( 1 ) ρ ≥ 2 → { ( T , ϑ 1 ) = R ( ρ 2 − 4 , − 2 ) t = M ( ϑ − ϑ 1 ) u = 2 − ϑ 1 v = M ( θ − t − π / 2 ) ( 2 ) { t = ϑ u = 2 − ρ v = M ( t + π / 2 − θ ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ + π / 2 Además, L = ∞ (6) \tag{6} \left\{\begin{array} {l} \zeta=x+\sin (\theta) \\ \zeta=y-1-\cos (\theta) \\ \left(\rho, \vartheta\right)=R(-\eta, \zeta ) \\ \left\{\begin{array}{l} (1) \rho \geq 2 \rightarrow\left\{\begin{array}{l} \left(T, \vartheta_{1}\right) =R\left(\sqrt{\rho^{2}-4},-2\right) \\ t=M\left(\value-\value_{1}\right) \\ u=2-\value_ { 1 } \\v=M(\theta-t-\pi/2) \end{array}\right. \\(2)\left\{\begin{array}{l} t=\vartheta\\ u=2-\rho \\ v=M(t+\pi / 2-\theta) \end{array}\ bien. \\ L=|t|+|u|+|v|+\pi / 2 \\ \text { también,} L=\infty \end{array}\right. \ final {matriz} \ derechagramo=X+pecado ( θ )el=y1porque ( θ )( p ,) _=R ( η ,gramo )( 1 ) pag.2( t ,ϑ1)=R(r24 ,2 )t=METRO( ϑϑ1)tu=2ϑ1v=M ( yotpág / 2 ).( 2 )t=ϑtu=2rv=METRO ( t+p / 2yo ).l=t +tu +v +p / 2 Otro, L.=( 6 )

uu en la ceremoniau representa la longitud del movimiento lineal,t, vt, vt y v representan el valor en radianes del movimiento del arco. En la fórmula (6), cuando la trayectoria del arco está formada por dos curvas en el sentido de las agujas del reloj, use (1) para calcular. La composición de la curva se calcula usando la subfórmula (2).

2.5 Composición de cuatro arcos y una recta

  • El noveno tipo de forma de curva básica: C ∣ C π / 2 SC π / 2 ∣ CC\left|C_{\pi / 2} S C_{\pi / 2}\right| CCCp / 2SC _p / 2C , que se compone de cuatro arcos y una recta, el segundo arco y el cuarto arco sonπ / 2 \pi / 2Arco π / 2 , el camino del medio es un camino recto, y la dirección del segundo, tercer y cuarto arco es opuesta a la del primer y quinto arco, en base a esto se pueden extender cuatro tipos de curvas: L + R π/ 2 − S − L π / 2 − R + , L − R π / 2 + S + L π / 2 + R − L^{+} R_{\pi / 2}^{-} S^{ -} L_ {\pi / 2}^{-} R^{+} 、 L^{-} R_{\pi / 2}^{+} S^{+} L_{\pi / 2}^{+ } R ^ {-}l+ Rp / 2S−L _p / 2R+L−R _p / 2+S+ lp / 2+RR + L π / 2 − S − R π / 2 − L + 、 R − L π / 2 + S + R π / 2 + L − R^{+} L_{\pi / 2}^{- } S^{-} R_{\pi / 2}^{-} L^{+} 、 R^{-} L_{\pi / 2}^{+} S^{+} R_{\pi / 2 }^{+}L^{-}R+ lp / 2S−R _p / 2l+R−L _p / 2+S+ Rp / 2+l

{ ζ = x + pecado ⁡ ( θ ) η = y − 1 − cos ⁡ ( θ ) ( ρ , ϑ ) = R ( ζ , η ) ρ ≥ 2 → { t = M ( ϑ − arcos ⁡ ( − 2 ρ ). ) ), t ∈ [ − π 2 , π 2 ] { t ≤ 0 → L = ∞ t > 0 → { u = 4 − ζ + 2 ∗ cos ⁡ ( t ) pecado ⁡ ( t ) v = M ( t − θ ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ + 2 ∗ π 2 Además, L = ∞ (7) \tag{7} \left\{\begin{array}{l} \zeta= x+\ sin (\theta) \\ \eta=y-1-\cos (\theta) \\ (\rho, \vartheta)=R(\zeta, \eta) \\ \rho \geq 2 \rightarrow\ izquierda\ {\begin{array}{l} t=M\left(\vartheta-\arccos\left(-\frac{2}{\rho}\right)\right), t \in\left[-\ frac{ \pi}{2}, \frac{\pi}{2}\right] \\ \left\{\begin{array}{l} t \leq 0 \rightarrow L=\infty\\ t>0 \rightarrow \left\{\begin{array}{l} u=4-\frac{\zeta+2*\cos(t)}{\sin(t)}\\v=M(t-\theta) \\ L=|t|+|u|+|v|+2 * \frac{\pi}{2} \end{array}\right. \\\end{array}\right. \\ \end{array}\right.\\ \text{también, }L=\infty \end{array}\right.gramo=X+pecado ( θ )el=y1porque ( θ )( p ,) _=R ( z ,h )r2t=METRO( ϑarccos( -r2) ),t[ -2pag,2pag]t0l=t>0tu=4pecado ( t )ζ + 2 porque ( t )v=METRO ( tyo )l=t +tu +v +22pagOtro l=( 7 )

3. Implementación de Python

Porque hay demasiados errores en el código que escribí. . . No quiero cambiarlo, así que aquí hay algunos códigos de github de código abierto:

pitón:

4. implementación de c ++

C++:

Supongo que te gusta

Origin blog.csdn.net/weixin_42301220/article/details/125382518
Recomendado
Clasificación