Diretório de artigos
Referências
Preâmbulo
- Derivação da curva de Dubins (método baseado em vetores)
- Resumo da fórmula da curva de Dubins e implementação do código python (com base no método de geometria)
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:
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+Cb−C-C+ Cb−Cb−C+ }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 ∣ CC∣C CC C∣CC Cb∣CbCC∣C _bCb∣C}CSC _ _←{
C S CC∣Cp / 2SC _CSC _ _p / 2∣CC∣∣Cp / 2SC _p / 2∣∣C}( 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^+ R−L+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(x∗cosθ+y∗sinθ,x∗sinθ−y∗cosθ,θ) 的路径圆周方向取反计算获得。
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 _+ eu−、R+ eu−R _+ ,R- eu+ R-。
- O segundo tipo de curva básica: CC ∣ CCC \mid CC C∣C , 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+ eu−、eu−R _- eu+ ,R+ eu+ R−、R- eu−R _+。
- A terceira curva básica: C ∣ CCC \mid CCC∣C 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- eu−、eu−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>4→eu=∞você12≤4→⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧A=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}t1、t2, 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 _- eu−、R+ 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(x−sinθ,y−1+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>4→L=∞u12≤4→⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧u=u12−4(u2,t2)=R(u,2)t=M(t1+t2)v=M(t−u)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β−R−、L−Rβ−Lβ+R+、R+Lβ+Rβ−L−、R−Lβ−Rβ+L+。
-
第六类基础曲线形式: C ∣ C β C β ∣ C C\left|C_{\beta} C_{\beta}\right| C C∣Cβ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+ R−、R+ 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(θ)η=y−1−cos(θ)ρ1=42+ξ2+η2ρ2=1620−ξ2−η20≤ρ1、ρ2≤1→⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧u1=arccos(ρ1)u2=−arccos(ρ2)u=u1oru2(t,v)=τω(u,−u,ξ,η,θ)L=∣t∣+2∗∣u∣+∣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 } \ right⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧p=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−(u−v0)−θ)(5)
2.4 三段圆弧与一条直线段组成
-
第七类基础曲线形式: C ∣ C π / 2 S C C\mid C_{\pi / 2} SC C∣Cp / 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 / 2−S−R _−、eu−R _p / 2+S+ R+ ,R+ eup / 2−S- eu−、R- eup / 2+S+ eu+、L+Rπ/2−S−L−、 L − R π / 2 + S + L + L^{-} R_{\pi / 2}^{+} S^{+} L^{+} L−Rπ/2+S+L+、 R + L π / 2 − S − R − R^{+} L_{\pi / 2}^{-} S^{-} R^{-} R+Lπ/2−S−R−、 R − L π / 2 + S + R + R^{-} L_{\pi / 2}^{+} S^{+} R^{+} R−Lπ/2+S+R+。
-
第八类基础曲线形式: C S C π / 2 ∣ C C S C_{\pi / 2} \mid C CSCπ/2∣C, 即三段圆弧与一段直线组成, 第三段圆弧为 π / 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+R−、eu−S _- eup / 2−R+ ,R+ S+ Rp / 2+eu−、R−S _−R _p / 2−eu+ ,R+ S+ eup / 2+R−、R−S _- eup / 2−R+、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+eu−、eu−S _−R _p / 2−eu+。
{ ζ = 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(θ)η=y−1−cos(θ)(ρ,ϑ)=R(−η,ζ)⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧(1)ρ≥2→⎩⎪⎪⎪⎨⎪⎪⎪⎧(T,ϑ1)=R(ρ2−4,−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| CC∣∣Cp / 2SC _p / 2∣∣C , 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 / 2−S- eup / 2−R+、L−R _p / 2+S+ eup / 2+R−、R + 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 / 2−S−R _p / 2−eu+ ,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 )R≥2→⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧t=M( ϑ-arcos( -R2) ),t∈[ -2p,2p]⎩⎪⎪⎨⎪⎪⎧t≤0→eu=∞t>0→⎩⎨⎧você=4-pecado ( t )ζ + 2 ∗ cos ( t )v=M ( t-eu )eu=∣ t ∣+∣ você ∣+∣ v ∣+2∗2poutro , 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:
- https://github.com/ghliu/pyReedsShepp
- https://github.com/nathanlct/reeds-shepp-curves
- PythonRobótica
4. implementação c++
C++: