[Condução automática] planejamento de caminho - resumo da curva ReedsShepp (implementação python | implementação c++)

Referências


Preâmbulo


1. Curva Reeds-Shepp

1.1 Conceitos básicos

O algoritmo Reeds-Shepp é conhecido como RS , um artigo publicado por JAReeds e LAShepp em 1990 (caminho ideal para um carro que anda para frente e para trás) . Este método é aprimorado com base no algoritmo de Dubins , e o movimento reverso (o carro pode andar para trás, engatar marcha à ré) é adicionado ao planejamento, o que permite obter uma solução melhor que a curva de Dubins em alguns casos .

Um exemplo de curva é o seguinte:

Fonte da imagem: https://blog.csdn.net/robinvista/article/details/95137143

Como pode ser visto na figura acima, no caminho da curva de Reeds-Shepp , é permitida a existência da válvula cúspide.

1.2 Combinação de campos

Adicione um sobrescrito à letra no campo para indicar a direção do movimento, como segue:

símbolo significado em torno do círculo unitário
L + L^+eu+ vire à esquerda sentido anti-horário
eu − eu^-eu- atrás à esquerda sentido horário
R+R^+R+ vire à direita sentido anti-horário
R-R^-R- vire à direita de volta sentido horário
S + S^+S+ siga em frente /
S-S^-S- volte direto /

Use C, SC, SOs caracteres C e S podem receber os seguintes 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 {alinhado} &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{alinhado}C C C{ C+ C-C _+C+ C-C _-C+ C+ C-C+ Cb+CbC-C+ CbCbC+ }CSC _ _{ C+ S+ C+C-C _p / 2+S+ C+C+ S+ Cp / 2+C-C-C _p / 2+S+ Cp / 2+C }( 1 )

O novo campo pode ser obtido invertendo o sinal da equação (1). Na fórmula acima (1), C π / 2 + C^+_{\pi/2}Cp / 2+Indica o LL correspondenteL ouRRO ângulo girado de R é π / 2 \pi/2π / 2 ,C β C β C_{\beta}C_{\beta}CbCbUma combinação significa que os arcos correspondentes têm comprimentos iguais.

Para representação compacta, evite ± \pm± , também existe uma função 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\esquerda|C_{\pi/2} S C_{\pi/2}\direita| C \end{array}\right\}\end{aligned}C C C{ C C CCC CC CCC CbCbCC∣C _bCbC}CSC _ _{ C S CCCp / 2SC _CSC _ _p / 2CCCp / 2SC _p / 2C}( 2 )

Entre eles, ∣ | indica que a direção do movimento do veículo muda de avanço para ré ou de ré para avanço.

Subscreva as palavras acima, como C α ∣ C β ∣ C γ C_{\alpha}|C_{\beta}| C_{\gamma}Ca∣C _b∣C _c, entre eles , β , γ \alpha, \beta, \gammaum ,b ,γ representa o ângulo de rotação (em radianos), respectivamente. SSS com subscritoddd significa que a distância percorrida em linha reta éddd . Seus intervalos são mostrados na tabela abaixo:

Será CCC é substituído porLLL ouRRR , através de uma transformação simples, existem48combinação de campos. Esta transformação simples inclui time flip (timeflip) , reflexão (reflect) e transformação para trás (backwards) .

1.3 Time flip (timeflip), reflexão (refletir) e transformação para trás (para trás)

1.3.1 Inversão de tempo (timeflip)

A curva calculada é invertida de acordo com sua direção de movimento, e a nova curva obtida é a curva oposta da curva original.

Conforme mostrado na figura, a curva azul L − R + S + L + L^-R^+S^+L^+eu−R _+ S+ eu+ com a curva vermelhaL + R − S − L − L^+R^-S^-L^-eu+ R−S _- eu É simétrico em relação ao eixo Y e os ângulos do rumo do caminho nas duas curvas do caminho são opostos. Do ponto inicialO ( 0 , 0 , 0 ) O(0, 0, 0)Ó ( 0 ,0 ,0)到目标点 A ( x , y , θ ) A(x, y,\theta) A(x,y,θ)的路径可以通过起始点 O ( 0 , 0 , 0 ) O(0, 0, 0) O(0,0,0)到目标点 B ( − x , − y , − θ ) B(-x,-y,-\theta) B(x,y,θ)的路径取反计算获得。

1.3.2 反射(reflect)

第二种转换关系:“reflect”,即将计算的曲线按照其沿圆周运动方向取反,得到的曲线与原来的曲线长度相同的新曲线。

如图所示,红色曲线 R − L + S + R + R^- L^+ S^+ R^+ RL+S+R+与蓝色曲线 L − R + S + L + L^- R^+ S^+ L^+ L−R _+ S+ eu+ Simétrico em relação ao eixo X, os ângulos do rumo do caminho nas duas curvas do caminho são opostos. Do ponto inicialO ( 0 , 0 , 0 ) O(0,0,0)Ó ( 0 ,0 ,0 ) para o ponto alvoA ( x , y , θ ) A(x, y, \theta)UMA ( x ,sim ,θ ) pode passar pelo ponto inicialO ( 0 , 0 , 0 ) O(0,0,0)Ó ( 0 ,0 ,0 ) para o ponto alvoB ( x , − y , − θ ) B(x,-y,-\theta)B ( x ,você ,θ ) é obtido invertendo a direção circunferencial do caminho.

1.3.3 Transformação para trás (para trás)

A terceira relação de conversão: "para trás", ou seja, o caminho da curva original é convertido na ordem inversa, e a curva obtida é uma nova curva com o mesmo comprimento da curva original.

O diagrama de exemplo "para trás" é mostrado na figura, a curva azul L − S − R − L + L^-S^-R^- L^+eu−S _−R _- eu+ com a curva vermelhaL + R − S − L − L^+ R^- S^- L^-eu+ R−S _- eu Não possui as duas relações de empilhamento acima, mas pode ser visto intuitivamente queL − S − R − L + L^-S^-R^- L^+eu−S _−R _- euA ordem inversa de + obtém L + R − S − L − L^+ R^- S^- L^-eu+ R−S _- eu , os caminhos nas duas curvas de caminho são organizados inversamente. Do ponto inicialO ( 0 , 0 , 0 ) O(0,0,0)Ó ( 0 ,0 ,0 ) para o ponto alvoA ( x , y , θ ) A(x, y,\theta)UMA ( x ,sim ,θ ) pode passar pelo ponto inicialO ( 0 , 0 , 0 ) O(0,0,0)Ó ( 0 ,0 ,0) 到目标点 B ( x ∗ cos ⁡ θ + y ∗ sin ⁡ θ , x ∗ sin ⁡ θ − y ∗ cos ⁡ θ , θ ) B(x*\cos \theta +y*\sin\theta, x*\sin\theta -y*\cos\theta,\theta) B(xcosθ+ysinθ,xsinθycosθ,θ) 的路径圆周方向取反计算获得。

1.4 48 个字段组合

所有的48个字段组合一一枚举如下:

图中,角标 β \beta β代表C旋转的弧度是 β \beta β,同理 π / 2 \pi/2 π/2也是代表旋转弧度,意思就是这个圆必须转 π / 2 \pi/2 π/2

所以,Dubins曲线是从6个曲线中选出最短的那条,而Reeds-Shepp曲线是从48个曲线中选出最短的那个(最开始的论文认为最短的曲线一定在48条曲线中,后人研究发现有两条曲线不会是最短的,所以后来搜索范围减小到46条)。

至于这些字段组合具体的推导,请看原论文

2. RS曲线求解

A fórmula de solução da curva de Reeds-Shepp está na fórmula (8.1) ~ fórmula (8.11) do artigo original . Está resumido aqui.

Suponha que o ponto de partida seja ( 0 , 0 , 0 ) (0,0,0)( 0 ,0 ,0 ) , o ponto final é( x , y , θ ) (x,y,\theta)( x ,sim ,eu ) .

2.1 Composição de três arcos

  • O primeiro tipo de curva básica: C ∣ C ∣ CC|C| CC C C , ou seja, três arcos e dois arcos em cada arco têm direções opostas. Com base nisso, quatro tipos de curvas podem ser estendidas:L + R − L + , L − R + L − , R + L − R + , R − L + R − L^{+} R^{-} L^{+} , L^{-} R^{+} L^{-} , R^{+} L^ { -} R^{+} , R^{-} L^{+} R^{-}eu+ R- eu+L−R _+ euR+ eu−R _+ ,R- eu+ R-
  • O segundo tipo de curva básica: CC ∣ CCC \mid CC CC , ou seja, três arcos e as direções dos arcos dos dois últimos arcos são opostas. Com base nisso, quatro tipos de curvas podem ser estendidas:L + R + L − , L − R − L + , R + L + R − , R − L − R + L^{+} R^{+} L^{-} , L^{-} R^{-} L^{+} , R^{+} L^{+} R ^{-} , R^{-} L^{-} R^{+}eu+ R+ eueu−R _- eu+ ,R+ eu+ RR- eu−R _+
  • A terceira curva básica: C ∣ CCC \mid CCCC C , ou seja, três arcos e as direções dos arcos dos dois primeiros arcos são opostas. Com base nisso, quatro tipos de curvas podem ser estendidas:L + R − L − , L − R + L + , R + L − R − , R − L + R + L^{+} R^{-} L^{-} , L^{-} R^{+} L^{+} , R^{+} L^{- } R^{-} , R^{-} L^{+} R^{+}eu+ R- eueu−R _+ eu+ ,R+ eu−R _R- eu+ R+

Através dos três métodos de transformação de curva de reversão de tempo, reflexão e retrocesso, os símbolos das três fórmulas acima são transformados nos modos de movimento de 12 curvas, que podem ser resolvidos pela fórmula (1).
{ ( você 1 , t 1 ) = R ( x − sin ⁡ θ , y − 1 + cos ⁡ θ ) { você 1 2 > 4 → L = ∞ você 1 2 ≤ 4 → { A = arco seno ⁡ ( você 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 ∣ onde 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 \ seta para a direita 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}\ direita. \\ \text {onde} A \in\left[\frac{\pi}{2}, \pi\right] \end{array}\right. \end{array}\right.( você1,t1)=R ( x-pecadoeu ,sim-1+porqueeu )você12>4eu=você124A=arco seno(4você12)você=M( Uma+t1)( você2,t2)=R ( x-pecadoeu ,sim-1+porqueeu )t=t2v=M ( eu+t-você )eu=t +você +∣v∣ _ _ onde  A[2p,p ].( 1 )

Entre eles t , você , vt , você , vt , u e v representam o valor do arco de cada volta na fórmula (na verdade, é também o comprimento do arco dos três arcos da curva básica, porque o raio do arco é 1, o círculo unitário) , LLL é o comprimento total do caminho; a função RRna fórmulaR é o sistema de coordenadas cartesianas( x , y ) (x, y)( x ,y ) no sistema de coordenadas polares( u 1 , t 1 ) \left(u_{1}, t_{1}\right)( você1,t1) , onde os valores das coordenadas radiais sãou 1 , u 2 u_{1} , u_{2}você1você _2, os valores das coordenadas angulares são t 1 , t 2 t_{1} , t_{2}t1t2, a função MMM é usado para2 π 2\pi2 operação módulo π e limite o valor em radianos a[ − π , π ] [-\pi, \pi][ π ,p ] .

função ( r , θ ) = R ( x , y ) (r,\teta)=R(x, y)( r ,eu )=R ( x ,y)即笛卡尔坐标系中的 ( x , y ) (x, y) (x,y) 与极坐标系 ( r , θ ) (r,\theta) (r,θ)的关系可以表示为: { r cos ⁡ θ = x r sin ⁡ θ = y \begin{aligned} \left\{\begin{array}{l} r\cos{\theta}=x\\ r\sin{\theta}=y \end{array}\right.\\ \end{aligned} { rcosθ=xrsinθ=y

ψ = M ( θ ) \psi=M(\theta) ψ=M(θ)即表示 { ψ = θ m o d    2 π − π ≤ ψ < π \begin{aligned} \left\{\begin{array}{l} \psi=\theta \mod 2\pi\\ -\pi\le\psi<\pi \end{array}\right.\\ \end{aligned} { ψ=θmod2ππψ<π

Além dos símbolos recentemente definidos, os símbolos definidos não serão descritos em detalhe abaixo.

2.2 Composição de dois arcos e retas

  • O quarto tipo de forma de curva básica: CSCCSCC S C , que é composto por dois arcos e linhas retas, com base nisso, oito tipos de curvas podem ser estendidas: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^ {- } eu^{-}eu+ S+ eu+L−S _- euR+ S+ R+ ,R−S _−R _eu+ S+ R+L−S _−R _R+ S+ eu+ ,R−S _- eu-

{ ( u , t ) = R ( x − sin ⁡ θ , y − 1 + cos ⁡ θ ) v = M ( θ − t ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣  其中  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 { 其中 } A \in[0, \pi] \end{array}\right. \end{aligned} (u,t)=R(xsinθ,y1+cosθ)v=M(θt)L=t+u+v 其中 A[0,π]( 2 )
{ ( você 1 , t 1 ) = R ( x − sin ⁡ θ , y − 1 + cos ⁡ θ ) { você 1 2 > 4 → L = ∞ você 1 2 ≤ 4 → { você = você 1 2 − 4 ( você 2 , t 2 ) = R ( você , 2 ) t = M ( t 1 + t 2 ) v = M ( t − você ) L = ∣ t ∣ + ∣ você ∣ + ∣ 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 \ seta para a direita\esquerda\{\begin{array}{l} u=\sqrt{u_{1}^{2}-4} \\ \left(u_{2}, t_{2}\right)=R(u , 2) \\ t=M\esquerda(t_{1}+t_{2}\direita) \\ v=M(tu) \\ L=|t|+|u|+|v| \end{array}\right. \end{array}\right. \end{array}\right.\\ \end{aligned}( você1,t1)=R ( x-pecadoeu ,sim-1+porqueeu )você12>4L=u124u=u124 (u2,t2)=R(u,2)t=M(t1+t2)v=M(tu)L=t+u+v(3)

通过上述三种曲线变换方式,将第 4 种公式的符号变换成了 8 种曲线,这 8种曲线中前 4 种使用式(2) 进行求解,后 4 种使用式(3) 进行求解。

2.3 四段圆弧组成

  • 第五类基础曲线形式: C C β ∣ C β C C C_{\beta} \mid C_{\beta} C CCβCβC, 即四段圆弧组成, 第一段与第二段圆弧的圆弧方向相反, 第三段与第四段圆弧的圆弧方向相反, 前两段与后两段圆弧方向相反, 基于此, 可以扩展出四种曲线形式: 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+Rβ+LβRLRβLβ+R+R+Lβ+RβLRLβRβ+L+

  • 第六类基础曲线形式: C ∣ C β C β ∣ C C\left|C_{\beta} C_{\beta}\right| C CCβCβC , que é composto por quatro arcos, o primeiro e o segundo arcos têm a mesma direção do arco, o terceiro e o quarto arcos têm a mesma direção do arco, e os dois primeiros arcos e os dois últimos arcos têm direções opostas, com base nisso, quatro formas de curva podem ser estendidas: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^{-}eu+ Rb- eub−R _+L−R _b+ eub+ RR+ eub−R _b- eu+ ,R- eub+ Rb+ eu-

{ ξ = x + sin ⁡ ( θ ) η = y − 1 − cos ⁡ ( θ ) ρ 1 = 2 + ξ 2 + η 2 4 ρ 2 = 20 − ξ 2 − η 2 16 0 ≤ ρ 1 、 ρ 2 ≤ 1 → { u 1 = arccos ⁡ ( ρ 1 ) u 2 = − arccos ⁡ ( ρ 2 ) u = u 1 o r u 2 ( t , v ) = τ ω ( u , − u , ξ , η , θ ) L = ∣ t ∣ + 2 ∗ ∣ u ∣ + ∣ v ∣  其中  u ∈ [ 0 , π / 2 ]  其它  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 or \quad u_2\\ (t, v)=\tau \omega(u,-u, \xi, \eta, \theta) \\ L=|t|+2 *|u|+|v| \\ \text { 其中 } u \in[0, \pi / 2] \end{array}\right. \\ \text { 其它 } L=\infty \end{array}\right. ξ=x+sin(θ)η=y1cos(θ)ρ1=42+ξ2+η2 ρ2=1620ξ2η20ρ1ρ21u1=arccos(ρ1)u2=arccos(ρ2)u=u1oru2(t,v)=τω(u,u,ξ,η,θ)L=t+2u+v 其中 u[0,p / 2 ] . Outro  eu=( 4 ) Esses 8 tipos de curvas podem ser resolvidos pela fórmula (4), ρ 1 , u 1 \rho_{1},u_1
na fórmula acimaR1,você1Para o cálculo do caminho do quinto tipo de fórmula, ρ 2 , u 2 \rho_{2},u_2R2,você2É utilizado no cálculo do caminho do sexto tipo de fórmula, onde τ ω \tau \omegaτ ω é uma função de cálculo de radianos de curva. Geralmente, o valor de radianos da curva da função( t , v ) = τ ω ( u , v 0 , ξ , η , θ ) (t,v)=\tau \omega(u ,v_0 ,\xi,\eta,\theta)( t ,v )=para ( você , _v0,x ,o ,θ ) é calculado pela fórmula (5).

{ σ = M (u - v 0) ζ = sin ⁡ (u) - sin ⁡ (σ) ψ = cos ⁡ (u) - cos ⁡ (σ) - 1 t 1 = arctan ⁡ η ∗ ζ - ξ ∗ ψ ξ ∗ ζ + η ∗ ψ λ = 2 ∗ ( cos ⁡ ( σ ) − cos ⁡ ( v 0 ) − cos ⁡ ( 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 } \ rightp=M ( você-v0)g=pecado ( você )-sin(σ)ψ=cos(u)cos(σ)1t1=arctanξζ+ηψηζξψλ=2(cos(σ)cos(v0)cos(u))+3t={ M(t1+π),λ<0M(t1),λ0v=M(t(uv0)θ)(5)

2.4 三段圆弧与一条直线段组成

  • 第七类基础曲线形式: C ∣ C π / 2 S C C\mid C_{\pi / 2} SC CCp / 2S C , que é composto por três arcos e uma reta, o segundo arco éπ / 2 \pi / 2Arco π / 2 , a terceira seção é um caminho em linha reta, a primeira seção é oposta aos três últimos arcos, com base nisso, oito tipos de curvas podem ser estendidas: 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^{-}eu+ Rp / 2S−R _eu−R _p / 2+S+ R+ ,R+ eup / 2S- euR- eup / 2+S+ eu+L+Rπ/2SL L − R π / 2 + S + L + L^{-} R_{\pi / 2}^{+} S^{+} L^{+} LRπ/2+S+L+ R + L π / 2 − S − R − R^{+} L_{\pi / 2}^{-} S^{-} R^{-} R+Lπ/2SR R − L π / 2 + S + R + R^{-} L_{\pi / 2}^{+} S^{+} R^{+} RLπ/2+S+R+

  • 第八类基础曲线形式: C S C π / 2 ∣ C C S C_{\pi / 2} \mid C CSCπ/2C, 即三段圆弧与一段直线组成, 第三段圆弧为 π / 2 \pi / 2 Arco π / 2 , o segundo segmento é um caminho reto e o quarto segmento é oposto aos três primeiros arcos.Com base nisso, oito tipos de curvas podem ser estendidos: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^{+}eu+ S+ eup / 2+Reu−S _- eup / 2R+ ,R+ S+ Rp / 2+euR−S _−R _p / 2eu+ ,R+ S+ eup / 2+RR−S _- eup / 2R+L + S + R π / 2 + L − 、 L − S − R π / 2 − L + L^{+} S^{+} R_{\pi / 2}^{+} L^{- } 、 L^{-} S^{-} R_{\pi / 2}^{-} L^{+}eu+ S+ Rp / 2+eueu−S _−R _p / 2eu+

{ ζ = x + sin ⁡ ( θ ) η = y − 1 − cos ⁡ ( θ ) ( ρ , ϑ ) = 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 Além disso, 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\esquerda(\sqrt{\rho^{2}-4},-2\direita) \\ t=M\esquerda(\valor-\valor_{1}\direita) \\ u=2-\valor_ { 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}\ certo. \\ L=|t|+|u|+|v|+\pi / 2 \\ \text { também,} L=\infty \end{array}\right. \end {matriz} \direitaζ=x+sin(θ)η=y1cos(θ)(ρ,ϑ)=R(η,ζ)(1)ρ2(T,ϑ1)=R(ρ24 ,2)t=M(ϑϑ1)u=2ϑ1v=M(θtπ/2)(2)t=ϑu=2ρv=M(t+π/2θ)L=t+u+v+π/2 其他,L=( 6 )

você na cerimôniau representa o comprimento do movimento linear,t, vt, vt e v representam o valor em radianos do movimento do arco. Na fórmula (6), quando o caminho do arco é formado por duas curvas no sentido horário, use (1) para calcular. A composição da curva é calculada usando a subfórmula (2).

2.5 Composição de quatro arcos e uma reta

  • O nono 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 é composto por quatro arcos e uma linha reta, o segundo arco e o quarto arco sãoπ / 2 \pi / 2π / 2 arco, o caminho do meio é um caminho reto, e a direção do segundo, terceiro e quarto arcos é oposta à do primeiro e quinto arcos. Com base nisso, quatro tipos de curvas podem ser estendidos: 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^ {-}eu+ Rp / 2S- eup / 2R+L−R _p / 2+S+ eup / 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+ eup / 2S−R _p / 2eu+ ,R- eup / 2+S+ Rp / 2+eu-

{ ζ = x + sin ⁡ ( θ ) η = y − 1 − cos ⁡ ( θ ) ( ρ , ϑ ) = R ( ζ , η ) ρ ≥ 2 → { t = M ( ϑ − arccos ⁡ ( − 2 ρ ) ) , t ∈ [ − π 2 , π 2 ] { t ≤ 0 → L = ∞ t > 0 → { u = 4 − ζ + 2 ∗ cos ⁡ ( t ) sin ⁡ ( t ) v = M ( t − θ ) L = ∣ t ∣ + ∣ u ∣ + ∣ v ∣ + 2 ∗ π 2 其他,  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\left\{\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{其他, }L=\infty \end{array}\right. g=x+pecado ( θ )o=sim-1-porque ( θ )( p ,) _=R ( z ,h )R2t=M( ϑ-arcos( -R2) ),t[ -2p,2p]t0eu=t>0você=4-pecado ( t )ζ + 2 cos ( t )v=M ( t-eu )eu=t +você +v +22poutro eu=( 7 )

3. Implementação Python

Porque há muitos bugs no código que escrevi. . . Não quero mudar isso, então aqui estão alguns códigos de código aberto do GitHub:

Pitão:

4. implementação c++

C++:

Acho que você gosta

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