Escolar Documentos
Profissional Documentos
Cultura Documentos
São Paulo
2024
Escola Politécnica da Universidade de São Paulo
Orientadores:
Prof. Dr. Renato Maia Matarazzo Orsino
Prof. Dr. Agenor de Toledo Fleury
São Paulo
2024
ILUSTRAÇÕES
Figura 1: Maca estabilizadora. .................................................................................... 5
Figura 2: Aparelho de armazenamento de equipamentos médicos. ........................... 6
Figura 3: Esquema do sistema da plataforma estabilizadora. ................................... 11
Figura 4: Resposta do sistema às primeiras simulações (modelo não linearizado). . 16
Figura 5: Resposta do sistema às primeiras simulações (modelo linearizado). ........ 18
Figura 6: Erro entre as soluções linearizadas e não linearizadas. ............................ 19
Figura 7: Comparação das soluções linearizadas e não linearizadas em 𝑥, 𝑦 e θ. ... 20
Figura 8: Comparação das soluções linearizadas e não linearizadas em 𝑥, 𝑦 e θ. ... 21
Figura 9: Comparação das soluções linearizadas e não linearizadas em 𝑥, 𝑦, e 𝜃. .. 21
Figura 10: Solução numérica pela matriz de transição. ............................................. 23
Figura 11: Mapa de zeros filtrados do sistema. ......................................................... 26
Figura 12: Mapa de polos do sistema. ...................................................................... 27
Figura 13: Diagrama de Bode da entrada 1 para a saída 1 (posição de 𝑥 para a
entrada Ux). ............................................................................................................... 31
Figura 14: Diagrama de Bode da da entrada 1 para a saída 2 (posição de y para a
entrada Ux). ............................................................................................................... 32
Figura 15: Diagrama de Bode da entrada 1 para a saída 3 (posição de 𝜃 para a
entrada Ux). ............................................................................................................... 33
Figura 16: da entrada 2 para a saída 1 (posição de 𝑥 para a entrada Uy1). ............. 34
Figura 17: Diagrama de Bode da entrada 2 para a saída 1 (posição de 𝑥 para a
entrada Uy1). ............................................................................................................. 35
Figura 18: Diagrama de Bode da entrada 2 para a saída 3 (posição de 𝜃 para a
entrada Uy1). ............................................................................................................. 36
Figura 19: Esquema de meia suspensão proposto. .................................................. 38
Figura 20: Representação do perfil de via do asfalto irregular. ................................. 40
Figura 21: Resposta do sistema de meia suspensão para o perfil de via do asfalto
irregular. .................................................................................................................... 40
Figura 22: Derivada da resposta do sistema de meia suspensão para o perfil de via
do asfalto irregular. .................................................................................................... 40
Figura 23: Representação dos vetores de aceleração longitudinal em 𝒚 do sistema
de meia suspensão para o perfil de via do asfalto irregular. ..................................... 41
2
Figura 24: Resposta do sistema no perfil de via asfalto irregular em velocidade
constante. .................................................................................................................. 41
Figura 25: Resposta do sistema no perfil de via asfalto irregular em movimento de
aceleração. ................................................................................................................ 42
Figura 26: Resposta do sistema no perfil de via asfalto irregular em movimento de
frenagem. .................................................................................................................. 42
Figura 27: Representação do perfil de via da lombada. ............................................ 43
Figura 28: Resposta do sistema de meia suspensão para o perfil de via da lombada.
.................................................................................................................................. 43
Figura 29: Derivada da resposta do sistema de meia suspensão para o perfil de via
da lombada................................................................................................................ 44
Figura 30: Representação dos vetores de aceleração longitudinal em 𝒚 do sistema
de meia suspensão para o perfil de via da lombada. ................................................ 44
Figura 31: Resposta do sistema ao transpor uma lombada em velocidade constante.
.................................................................................................................................. 45
Figura 32: Representação do perfil de via do buraco. ............................................... 46
Figura 33: Resposta do sistema de meia suspensão para o perfil de via do buraco. 46
Figura 34: Derivada da resposta do sistema de meia suspensão para o perfil de via
do buraco. ................................................................................................................. 46
Figura 35: Representação dos vetores de aceleração longitudinal em 𝒚 do sistema
de meia suspensão para o perfil de via do buraco. ................................................... 47
Figura 36: Resposta do sistema ao transpor um buraco em velocidade constante. . 47
3
SUMÁRIO
1 INTRODUÇÃO ..................................................................................................... 5
2 METODOLOGIA ................................................................................................... 7
3 A PLATAFORMA ESTABILIZADORA................................................................. 8
3.1 DEFINIÇÃO DO PROBLEMA ....................................................................... 8
3.2 OBJETIVOS .................................................................................................. 8
3.3 REVISÃO BIBLIOGRÁFICA .......................................................................... 8
3.4 O MODELO FÍSICO .................................................................................... 10
3.4.1 Hipóteses simplificadoras ................................................................ 12
4 MODELO MATEMÁTICO ................................................................................... 13
4.1 OBTENÇÃO DAS EDO’S ............................................................................ 13
4.2 LINEARIZAÇÃO .......................................................................................... 16
4.2.1 Análise de erro ................................................................................... 18
4.3 ESPAÇO DE ESTADOS ............................................................................. 22
4.4 SOLUÇÃO NUMÉRICA PELA MATRIZ DE TRANSIÇÃO .......................... 22
4.5 FUNÇÕES DE TRANSFERÊNCIA ............................................................. 24
5 ANÁLISES DO MODELO................................................................................... 25
5.1 ANÁLISES DE ESTABILIDADE .................................................................. 25
5.1.1 Análise de polos e zeros ................................................................... 25
5.1.1.1 Zeros do sistema .......................................................................... 25
5.1.1.2 Polos do sistema .......................................................................... 26
5.2 RESPOSTA DO SISTEMA NO DOMÍNIO DA FREQUÊNCIA .................... 29
5.2.1 Diagramas de Bode ........................................................................... 30
6.1 MODELO DE MEIO CARRO ...................................................................... 38
6.1.1 Parâmetros numéricos do modelo de suspensão .......................... 39
6.2 SIMULAÇÕES ............................................................................................ 39
6.2.1 Asfalto irregular ................................................................................. 39
6.2.2 Lombada ............................................................................................. 43
6.2.3 Buraco ................................................................................................ 45
7 CONSIDERAÇÕES FINAIS ............................................................................... 49
8 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................. 50
4
1 INTRODUÇÃO
5
Figura 2: Aparelho de armazenamento de equipamentos médicos.
6
2 METODOLOGIA
7
3 A PLATAFORMA ESTABILIZADORA
3.2 OBJETIVOS
9
O livro "As bases anatômicas e mecânicas do movimento humano" (Hay, J.G.,
Reid, J.G., 2021) oferece uma exploração abrangente dos princípios fundamentais
que regem a biomecânica e a anatomia no contexto do movimento humano. Um dos
destaques do livro é a discussão sobre a altura do corpo humano até seu centro de
massa, apresentando que este se localiza, em média, a 55% da altura total do
indivíduo a partir do solo. Esta informação foi expandida para a o modelo físico,
caracterizando dessa forma as proporções horizontais da barra que representa a
massa paciente-maca.
O artigo "Active vibration isolator design for ambulance patients"
(RAEMAEKERS, A.J.M., 2009) aborda a concepção de um sistema de isolamento de
vibrações ativo para pacientes em ambulâncias, focando nas vibrações do corpo
humano. A partir dele é possível analisar as frequências naturais do corpo humano e
utilizá-las como critério para avaliar a resposta do sistema modelado no domínio da
frequência. Este aspecto é crucial para garantir que as respostas do sistema sejam
otimizadas para minimizar o desconforto e potenciais danos aos pacientes durante o
transporte em ambulâncias.
10
Figura 3: Esquema do sistema da plataforma estabilizadora.
Fonte: Os autores.
11
Os movimentos da plataforma, causados pelas vibrações da estrada, podem
causar desconforto aos pacientes. A mola e o amortecedor ajudam a amenizar esses
movimentos, proporcionando um transporte mais confortável para os pacientes.
12
4 MODELO MATEMÁTICO
13
𝐿 2 𝐿 2
𝜉1 = √(𝑥 − 𝑎𝑐𝑜𝑠𝜃 + ) + (𝑦 − 𝑎𝑠𝑒𝑛𝜃 + ℎ)2 − √(−𝑎 + ) + ℎ2 (4.4)
2 2
𝐿 2 𝐿 2
𝜉2 = √(𝑥 + 𝑏𝑐𝑜𝑠𝜃 − ) + (𝑦 + 𝑏𝑠𝑒𝑛𝜃 + ℎ)2 − √(𝑏 − ) + ℎ2 (4.5)
2 2
2
1 𝐿 2 𝐿 2
𝑘 (√(𝑥 + 𝑏𝑐𝑜𝑠𝜃 − ) + (𝑦 + 𝑏𝑠𝑒𝑛𝜃 + ℎ)2 − √(𝑏 − ) + ℎ2 ) (4.6)
2 2 2
1 1 𝐿
𝑅 = 𝑐( 2
((𝑥 − 𝑎 cos θ + ) ⋅ 𝑥̇ + (𝑦 − 𝑎 sin θ + ℎ) ⋅ 𝑦̇ − 𝑎 (sin θ ⋅ 𝜃̇ ⋅
2 𝐿 2
2√(𝑥−𝑎 cos θ+ ) +(𝑦−𝑎 sin θ+ℎ)2
2
𝐿 1 1 𝐿
(𝑥 − 𝑎 cos θ + 2) − cos θ ⋅ 𝜃̇ ⋅ (𝑦 − 𝑎 sin θ + ℎ)))) + 2 𝑐 ( 2
((𝑥 + 𝑏 cos θ − ) ⋅
2
𝐿
2√(𝑥+𝑏 cos θ− ) +(𝑦+𝑏 sin θ+ℎ)2
2
𝐿
𝑥̇ + (𝑦 + 𝑏 sin θ + ℎ) ⋅ 𝑦̇ + 𝑏 (sin θ ⋅ 𝜃̇ ⋅ (𝑥 + 𝑏 cos θ − ) + cos θ ⋅ 𝜃̇ ⋅ (𝑦 + 𝑏 sin θ + ℎ)))) (4.7)
2
14
Dessa forma pode ser obtida a expressão do Lagrangeano, equação 4.8, e
aplicá-la para obter as EDO’s.
𝐿 = 𝑇−𝑉 (4.8)
Com 𝑄𝑥 = 𝑈𝑥 .
De modo que:
𝑑 ∂𝐿 ∂𝐿 ∂𝑅
( ) − + = 𝑄𝜃 (4.13)
𝑑𝑡 ∂𝜃̇ ∂𝜃 ∂𝜃̇
15
Figura 4: Resposta do sistema às primeiras simulações (modelo não linearizado).
Fonte: Os autores.
4.2 LINEARIZAÇÃO
Na segunda etapa, o sistema foi modelado como um sistema linear. Para isso,
as equações de movimento não lineares foram linearizadas até o primeiro grau.
A linearização foi realizada a partir de uma aproximação Taylor das equações
de movimento. Essa aproximação permite que as equações sejam expressas em
termos de pequenas oscilações. A diferença em relação ao trabalho anterior reside na
nova abordagem das fórmulas, que inclui um deslocamento do centro de massa em
16
relação ao centro geométrico e uma alteração na equação da deformação. Nessa
nova equação, as deformações são correlacionadas com as variáveis 𝑥, 𝑦, e 𝜃, e as
equações em 𝑥 e 𝑦 agora incorporam não linearidades e a equação em 𝜃 também
passou a apresentar não linearidades. A linearização foi feita ao redor do ponto de
equilíbrio, portanto 𝑥̅ = 0, 𝑥̇ ̅ = 0, 𝑦̅ = 0 e 𝑦̇̅ = 0, 𝜃̅ = 0 e 𝜃̇̅ = 0, como expresso nas
equações 4.14, 4.15 e 4.16.
θ̅̇ ) (4.14)
θ̅̇ ) (4.15)
∂θ̈ ∂θ̈
θ̈(𝑥, 𝑦, θ, 𝑥̇ , 𝑦̇ , θ̇) ≈ θ̈ (𝑥̅ , 𝑦̅, θ̅, 𝑥̇ ̅ , 𝑦̇̅ , θ̅̇ ) + ( ) ̅̇
(𝑥 − 𝑥̅ ) + ( )
̅̇
(𝑦 − 𝑦̅) +
∂𝑥 𝑥̅ ,𝑦̅,θ
̅,𝑥̇ ̅ ,𝑦̇̅ ,θ ∂𝑦 𝑥̅ ,𝑦̅,θ
̅,𝑥̇ ̅ ,𝑦̇̅ ,θ
∂θ̈ ∂θ ̈ ∂θ ̈ ∂θ ̈
( ) ̅
(θ − θ̅) + ( ) ̅
(𝑥̇ − 𝑥̇ ̅ ) + ( ) (𝑦̇ − 𝑦̇̅) + ( ̇ ) ̅̇
(θ̇ −
∂θ 𝑥̅ ,𝑦̅,θ
̅,𝑥̇ ̅ ,𝑦̇̅ ,θ̇ ∂𝑥̇ 𝑥̅ ,𝑦̅,θ
̅,𝑥̇ ̅ ,𝑦̇̅ ,θ̇ ∂𝑦̇ 𝑥̅ ,𝑦̅,θ ̅
̅,𝑥̇ ̅ ,𝑦̇̅ ,θ̇ ∂θ 𝑥̅ ,𝑦̅,θ
̅,𝑥̇ ̅ ,𝑦̇̅ ,θ
θ̅̇ ) (4.16)
17
Figura 5: Resposta do sistema às primeiras simulações (modelo linearizado).
Fonte: Os autores.
18
Figura 6: Erro entre as soluções linearizadas e não linearizadas.
Fonte: Os autores.
19
Figura 7: Comparação das soluções linearizadas e não linearizadas em 𝑥, 𝑦 e θ.
Fonte: Os autores.
20
Figura 8: Comparação das soluções linearizadas e não linearizadas em 𝑥̇ , 𝑦̇ e θ̇.
Fonte: Os autores.
Fonte: Os autores.
21
4.3 ESPAÇO DE ESTADOS
Nesta seção serão expostas as equações diferenciais no formato matricial.
Neste trabalho já não foi necessário dividir o modelo em outros dois subsistemas. De
modo geral, pode-se representar o espaço de estados pelo sistema de equações
linearizado 4.17.
𝘹̇ = 𝐴𝘹 + 𝐵𝘶
{ (4.17)
𝘺 = 𝐶𝘹 + 𝐷𝘶
(4.18)
𝑎11 , 𝑎12 , 𝑎13 , 𝑎15 , 𝑎16 , 𝑎21 , 𝑎22 , 𝑎23 , 𝑎24 , 𝑎26 , 𝑎31 , 𝑎32 , 𝑎33 , 𝑎34 , 𝑎35 = 0 (4.19)
𝑎14 , 𝑎25 , 𝑎36 = 1 (4.20)
(4.21)
𝑏11 , 𝑏12 , 𝑏13 , 𝑏21 , 𝑏22 , 𝑏23 , 𝑏31 , 𝑏32 , 𝑏33 = 0 (4.22)
Fonte: Os autores.
23
acelerações, desta vez foi possível substituindo o 𝘹(𝑡) = 𝛷(𝛥𝑡)𝘹0 + 𝛤(𝛥𝑡)𝐵𝘶 na
expressão de 𝘹̇ = 𝐴𝘹 + 𝐵𝘶.
25
Figura 11: Mapa de zeros filtrados do sistema.
Fonte: Os autores.
Neste caso, é possível observar que a grande maioria dos zeros do sistema
estão do lado esquerdo do plano complexo (reais negativos), o que significa que
tendem a atenuar a resposta do sistema nessas frequências.
26
Figura 12: Mapa de polos do sistema.
Fonte: Os autores.
Polos do sistema:
𝑝1 = −2,3365 + 30,8143𝑗 e 𝑝2 = −2,3365 − 30,8143𝑗
𝑝3 = −0,2520 + 13,5981 e 𝑝4 = −0,2520 − 13,5981𝑗
𝑝5 = −0,9071 + 4,2030𝑗 e 𝑝6 = −0,9071 − 4,2030𝑗
27
Tais polos serão mais representativos quanto à resposta do sistema, ou seja,
por meio deles se tem melhor indicação da resposta esperada.
30
• da entrada 1 para a saída 2 (posição de 𝑦 para a entrada 𝑈𝑥 );
• da entrada 1 para a saída 3 (posição de 𝜃 para a entrada 𝑈𝑥 );
• da entrada 2 para a saída 1 (posição de 𝑥 para a entrada 𝑈𝑦1 );
• da entrada 2 para a saída 2 (posição de 𝑦 para a entrada 𝑈𝑦1 );
• da entrada 2 para a saída 3 (posição de 𝜃 para a entrada 𝑈𝑦1 ).
Foram consideradas apenas os diagramas de posições (e não de velocidades)
por serem preferenciais para a análise de conforto; e não foram considerados os
diagramas para entrada 𝑈𝑦2 por ser igual, na simulação, à entrada 𝑈𝑦1 , mas com uma
defasagem temporal. Esses diagramas foram representados respectivamente pela
Figura 13, Figura 14, Figura 15, Figura 16, Figura 17 e Figura 18.
Figura 13: Diagrama de Bode da entrada 1 para a saída 1 (posição de 𝑥 para a entrada Ux ).
Fonte: Os autores.
Ao analisar a figura 13, identifica-se uma queda de 40 𝑑𝐵 por década, entre 4,3
e 9,6 𝑟𝑎𝑑/𝑠, atribuída a um polo de multiplicidade 2 em 𝜔 = 4,3 𝑟𝑎𝑑/𝑠 . Na faixa de
13,6 a 29,1 𝑟𝑎𝑑/𝑠, a queda continua em 40 𝑑𝐵, revelando um polo de multiplicidade 2
em 𝜔 = 10,3 𝑟𝑎𝑑/𝑠 e, por último, mais um polo de multiplicidade 1 em 𝜔 =
30,9 𝑟𝑎𝑑/𝑠 . A partir de 30,9 𝑟𝑎𝑑/𝑠, a resposta continua com a queda em 20 decibéis
por década. Quanto aos zeros, destaca-se sua presença em 9,56 𝑟𝑎𝑑/𝑠 e 29,1 𝑟𝑎𝑑/𝑠.
31
Ao analisar o gráfico de fases, é possível confirmar que o primeiro polo
apresenta multiplicidade 2, evidenciado pela rápida variação próxima de 180 graus na
resposta, assim como o segundo polo. Na última parte da sequência, há uma queda
de 90 graus, indicando multiplicidade 1 para o polo. O coeficiente de amortecimento
revela-se como baixo, graças à presença de picos de ressonância no gráfico de
magnitude. Destaca-se também, que o segundo coeficiente de amortecimento, na
segunda sequência, é superior aos outros dois.
Em relação ao ganho do sistema, à medida que o gráfico diminui, torna-se
evidente a predominância de polos sobre zeros, sinalizando a estabilidade do sistema.
Figura 14: Diagrama de Bode da da entrada 1 para a saída 2 (posição de y para a entrada Ux ).
Fonte: Os autores.
Fonte: Os autores.
33
de baixos picos de ressonância no gráfico de magnitude é um fator contribuinte para
esse comportamento.
Ao examinar o gráfico de fases, confirma-se que os polos continuam
apresentando multiplicidade 2, evidenciada pela queda de 180° na resposta. Esse
padrão se repete para os outros polos, indicando uma resposta coerente com as
análises anteriores.
A predominância de polos sobre zeros, à medida que o gráfico diminui, continua
a ser um indicativo de estabilidade do sistema.
Fonte: Os autores.
34
que o coeficiente de amortecimento, embora não tão eficaz quanto na terceira análise,
ainda contribui para uma resposta controlada do sistema.
Ao examinar o gráfico de fases, verifica-se que os polos continuam
apresentando multiplicidade 2, evidenciada pela queda de 180° na resposta. O padrão
se repete para o segundo e terceiro polo, indicando uma resposta coerente com as
análises anteriores.
A predominância de polos sobre zeros, à medida que o gráfico diminui, é um
indicativo de estabilidade do sistema. Essa característica, embora não tão marcante
quanto na terceira análise, demonstra um comportamento intermédio entre a segunda
e terceira análise respostas das análises anteriores.
Figura 17: Diagrama de Bode da entrada 2 para a saída 1 (posição de 𝑥 para a entrada Uy1 ).
Fonte: Os autores.
35
No diagrama de fases, a fase diminui apenas 90 graus, enquanto os outros
polos de multiplicidade 2 diminuem 180 graus, diferenciando-se dos outros polos.
A predominância de polos sobre zeros à medida que o gráfico diminui, mesmo
com a diferença no último polo.
Figura 18: Diagrama de Bode da entrada 2 para a saída 3 (posição de 𝜃 para a entrada Uy1 ).
Fonte: Os autores.
36
A predominância de polos sobre zeros à medida que o gráfico diminui ainda
persiste, ressaltando a estabilidade do sistema, mesmo com a variação no
comportamento do último polo na sexta análise.
Por fim, vale notar que em todos os diagramas o ganho é sempre negativo para
qualquer valor de frequência. Isso indica que o sistema está sempre sendo atenuado,
independente da frequência das entradas.
37
6 RESPOSTA AOS SINAIS DE OPERAÇÃO
38
6.1.1 Parâmetros numéricos do modelo de suspensão
6.2 SIMULAÇÕES
Neste trecho, serão feitas as simulações para a transposição de obstáculos
através do modelo de meia suspensão para os perfis de via de asfalto irregular,
lombada e buraco.
Nesta simulação deste perfil de via, representado pela Figura 20, é considerado
o percurso do carro por uma via com irregularidades constantes e amplitude de
0,002𝑚, o que compreende irregularidades periódicas no asfalto. Como o modelo é
de meia suspensão longitudinal, a transposição é feita primeiro pela roda dianteira e
posteriormente pela roda traseira.
39
Figura 20: Representação do perfil de via do asfalto irregular.
Fonte: Os autores.
Figura 21: Resposta do sistema de meia suspensão para o perfil de via do asfalto irregular.
Fonte: Os autores.
Figura 22: Derivada da resposta do sistema de meia suspensão para o perfil de via do asfalto
irregular.
Fonte: Os autores.
Fonte: Os autores.
Figura 24: Resposta do sistema no perfil de via asfalto irregular em velocidade constante.
Fonte: Os autores.
41
Figura 25: Resposta do sistema no perfil de via asfalto irregular em movimento de aceleração.
Fonte: Os autores.
Figura 26: Resposta do sistema no perfil de via asfalto irregular em movimento de frenagem.
Fonte: Os autores.
42
Os resultados das coordenadas, apresentam resultados esperados, visto que
a oscilação máxima possui valor semelhante à própria irregularidade da via. Já a
aceleração no eixo y, que diz bastante sobre o conforto do paciente, não chega a
valores de 0,5 g. Ultrapassa os valores de conforto definidos na ISO 2631-1 (1997),
com o atenuante de ser uma aceleração instantânea.
6.2.2 Lombada
Nesta simulação deste perfil de via, representado pela Figura 27, é considerado
o percurso do carro por uma via transpondo uma lombada de 0,08𝑚 de altura. O
formato da lombada foi definido como semi-senoidal. Como o modelo é de meia
suspensão longitudinal, a transposição é feita primeiro pela roda dianteira e
posteriormente pela roda traseira.
Fonte: Os autores.
Figura 28: Resposta do sistema de meia suspensão para o perfil de via da lombada.
Fonte: os autores.
43
Figura 29: Derivada da resposta do sistema de meia suspensão para o perfil de via da lombada.
Fonte: os autores.
Fonte: Os autores.
44
Figura 31: Resposta do sistema ao transpor uma lombada em velocidade constante.
Fonte: Os autores.
6.2.3 Buraco
Nesta simulação deste perfil de via, representado pela Figura 32, é considerado
o percurso do carro por uma via transpondo um buraco de 0,1𝑚 de profundidade. O
formato do buraco foi definido como semi-senoidal. Como o modelo é de meia
suspensão longitudinal, a transposição é feita primeiro pela roda dianteira e
posteriormente pela roda traseira.
45
Figura 32: Representação do perfil de via do buraco.
Fonte: os autores.
Figura 33: Resposta do sistema de meia suspensão para o perfil de via do buraco.
Fonte: os autores.
Figura 34: Derivada da resposta do sistema de meia suspensão para o perfil de via do buraco.
Fonte: os autores.
46
Figura 35: Representação dos vetores de aceleração longitudinal em 𝒚 do sistema de meia
suspensão para o perfil de via do buraco.
Fonte: Os autores.
Fonte: Os autores.
47
com menor previsibilidade. Diferentemente de lombadas, buracos não são alvos
previstos, mas sim problemas inesperados na via. O motorista pode não antecipar
esses obstáculos, e ao passar por eles a 40 km/h, isso pode resultar em situações
extremas. Nessa situação hipotética, o motorista passaria pelo buraco mais rápido se
comparado com a lombada.
48
7 CONSIDERAÇÕES FINAIS
O presente trabalho propôs a reformulação do anterior, focando em reformular
o modelo matemático, em expandir as análises da resposta do sistema no domínio da
frequência e em revisar os cenários de simulação de frenagem, asfalto irregular,
lombada e buraco. Com isso, esperava-se propiciar uma melhor avaliação de conforto
do paciente em uma maca em ambiente veicular.
As novas EDO’s obtidas, após reconsiderar a posição do centro de massa da
barra e reescrever a expressão da deformação das extremidades da barra,
entregaram como resultado um sistema de 6° ordem acoplado, o que não aconteceu
no trabalho prévio.
Nas análises dos diagramas de Bode, observou-se um padrão consistente de
comportamento do sistema. As variações nas respostas ao longo das análises indicam
a capacidade do sistema em lidar com diferentes estímulos. Além disso, o ganho
negativo em todas as frequências reflete uma atenuação constante, evidenciando a
capacidade do sistema de manter uma resposta estável independentemente da
frequência das entradas. Esses resultados proporcionam uma compreensão
abrangente do desempenho do sistema, essencial para a análise e otimização do
trabalho em questão.
Em relação às simulações, os resultados foram satisfatórios na maioria dos
casos. Os pontos de atenção se deram nas acelerações dos casos da lombada e do
buraco, que tiverem valores sensivelmente mais altos do que no cenário de asfalto
irregular, que é cenário ‘normal’. Em termos de conforto, considerando que essas
acelerações são instantâneas e têm picos rápidos, é possível concluir que o ambiente
veicular é desconfortável, mas que uma estabilização é viável e necessária.
O trabalho deve ser estendido com a síntese de um sistema de controle. Antes
de projetá-lo, eventuais limitações, se existirem no presente trabalho, devem ser
ajustadas, pois é fundamental que um sistema seja modelado apropriadamente para
controlá-lo. Ao controlar o sistema, suas respostas serão mais atenuadas, resultando
em mais conforto para o paciente. Além disso, deve ser levado em consideração a
restrição de frequência de vibração, que também influenciam no conforto.
49
8 REFERÊNCIAS BIBLIOGRÁFICAS
50
RAEMAEKERS, A.J.M. Active vibration isolator design for ambulance patients.
Eindhoven: Eindhoven University of Technology, 2009. Department of Mechanical
Engineering, Dynamics and Control Group, Eindhoven University of Technology.
Disponível em: < https://www.yumpu.com/en/document/view/40131678/active-
vibration-isolator-design-for-ambulance-patients-ajm->. Acesso em: 28 de janeiro de
2024.
Stabilized plataforms. IXblue. Disponível em:
<https://www.ixblue.com/defense/stabilized-platforms/>. Acesso em: 25
de setembro de 2022.
51
APÊNDICE A (MEIO CARRO)
E as entradas:
• 𝑢(𝑡): deslocamento vertical da via na roda 1;
• 𝑣(𝑡): deslocamento vertical da via na roda 2; e suas respectivas derivadas.
52
Dessa forma, após a modelagem e linearização feita por Ichige, Miazaki e
Ribeiro (2019), as matrizes para descrição em espaço de estado são representadas
pelas equações A.1, A.2, A.3 A.4, A.5. As constantes a serem empregadas no
presente trabalho estão descritas na Tabela 1.
(A.1)
(A.2)
(A.3)
(A.4)
(A.5)
(A.6)
53
APÊNDICE B (CÓDIGO)
1 import subprocess
2 import sys
3
4 def install_and_import(package):
5 try:
6 __import__(package)
7 except ImportError:
subprocess.check_call([sys.executable, "-m", "pip", "install",
8
package])
9 finally:
10 globals()[package] = __import__(package)
11
12 # Tente importar suas bibliotecas
13 packages = ["numpy", "matplotlib", "sympy", "scipy", "IPython"]
14 for package in packages:
15 install_and_import(package)
16
17 import numpy as np
18 import matplotlib.pyplot as plt
19 import matplotlib.animation as animation
20 import sympy as sp
21 import math
22 from scipy import signal
from sympy import symbols, diff, latex, Eq, solve, Rational, cos, sin, sqrt,
23
lambdify
24 from scipy.interpolate import interp1d
25 from scipy.integrate import odeint
26 from IPython.display import display, Math
27
28 # Definição dos vetores de tempo
29 ti = 0 # tempo inicial
30 tfinal = 15 # tempo final
31 dt = 0.001 # incremento de tempo
32 t = np.arange(ti, tfinal, dt) # vetor de tempos
33
34 # Parâmetros do modelo de meio carro (configuração longitudinal)
35 Ms = 600
36 J = 730
37 mwf = mwr = 45
38 ksf = ksr = 18000
39 csf = csr = 500
54
40 kwf = kwr = 102017
41 cwf = cwr = 138
42 a_car = 1.5
43 b_car = 1.15
44
45 # Condições iniciais do carro
46 X0c = np.zeros(8)
47
48 # Espaço de estados do carro
49 Ac = [[0, 1, 0, 0, 0, 0, 0, 0],
[(-ksf - ksr) / Ms, (-csf - csr) / Ms, (ksf * a_car - ksr * b_car) /
50 Ms, (csf * a_car - csr * b_car) / Ms, ksf / Ms, csf / Ms, ksr / Ms, csr /
Ms],
51 [0, 0, 0, 1, 0, 0, 0, 0],
[(ksf * a_car - ksr * b_car) / J, (csf * a_car - csr * b_car) / J, (-
ksf * a_car ** 2 - ksr * b_car ** 2) / J, (-csf * a_car ** 2 - csr * b_car **
52
2) / J, -ksf * a_car / J, -csf * a_car / J, ksr * b_car / J, csr * b_car /
J],
53 [0, 0, 0, 0, 0, 1, 0, 0],
[(ksf / mwf), (csf / mwf), (-ksf * a_car / mwf), (-csf * a_car / mwf),
54
(-kwf - ksf) / mwf, (-cwf - csf) / mwf, 0, 0],
55 [0, 0, 0, 0, 0, 0, 0, 1],
[(ksr / mwr), (csr / mwr), (ksr * b_car / mwr), (csr * b_car / mwr), 0,
56
0, (-kwr - ksr) / mwr, (-cwr - csr) / mwr]]
57 Ac = np.array(Ac)
58
59 Bc = np.zeros((8, 4))
60 Bc[5, :2] = [kwf / mwf, cwf / mwf]
61 Bc[7, 2:] = [kwr / mwr, cwr / mwr]
62
63 Cc = [0, 0, 0, 1, 0, 0, 0, 0]
64
65 Dc = np.zeros((1, 4))
66
67 # Função para criar o vetor de entrada para um cenário específico
68 def criar_vetor_entrada(tipo_suspensao, v_km_h):
69 usus = np.zeros((4, len(t)))
70
71 # Conversão da velocidade de km/h para m/s
72 v = v_km_h / 3.6
73
74 # Distância entre as rodas em metros (ajuste conforme necessário)
75 d = 2.5
76
77 # Calculando o deslocamento de tempo em pontos de tempo
78 deslocamento_tempo = int((d / v) / dt)
79
80 # Lombada
81 if tipo_suspensao == "lombada":
82 largura_lombada_m = 1.5 # Largura da lombada em metros
55
largura_lombada_pts = int((largura_lombada_m / v) / dt) #
83
Convertendo largura em pontos de tempo
84
85 altura_lombada = 0.08 # Altura da lombada
86 inicio_lombada = 100 # Início da lombada no vetor de tempo
87
88 fim_lombada = inicio_lombada + largura_lombada_pts
89 x_lombada = np.linspace(0, np.pi, fim_lombada - inicio_lombada)
90
usus[0, inicio_lombada:fim_lombada] = altura_lombada *
91
np.sin(x_lombada)
usus[2, inicio_lombada + deslocamento_tempo:fim_lombada +
92
deslocamento_tempo] = altura_lombada * np.sin(x_lombada)
93
94 # Buraco longitudinal
95 elif tipo_suspensao == "buraco":
96 largura_buraco_m = 0.5 # Largura do buraco em metros
largura_buraco_pts = int((largura_buraco_m / v) / dt) # Convertendo
97
largura em pontos de tempo
98
99 profundidade_buraco = -0.04 # Profundidade do buraco
10
inicio_buraco = 100 # Início do buraco no vetor de tempo
0
10
1
10
fim_buraco = inicio_buraco + largura_buraco_pts
2
10
x_buraco = np.linspace(0, np.pi, fim_buraco - inicio_buraco)
3
10
4
10 usus[0, inicio_buraco:fim_buraco] = profundidade_buraco *
5 np.sin(x_buraco)
10 usus[2, inicio_buraco + deslocamento_tempo:fim_buraco +
6 deslocamento_tempo] = profundidade_buraco * np.sin(x_buraco)
10
7
10
# Chao irregular
8
10
elif tipo_suspensao == "chao_irregular":
9
11
ws = 0.5 * np.pi # Frequência angular para chão irregular
0
11 amplitude = 0.002 # Amplitude menor para representar irregularidades
1 sutis
11
for i in range(1, len(t)):
2
11 usus[0, i - 1] = amplitude * np.sin(ws * i * dt) # Ondulação
3 para a roda dianteira
11 usus[2, i - 1] = amplitude * np.cos(ws * (i * dt)) # Ondulação
4 para a roda traseira
11
5
11
# Cálculo das derivadas
6
56
11
usus[1, :] = np.append(np.diff(usus[0, :]) / dt, 0)
7
11
usus[3, :] = np.append(np.diff(usus[2, :]) / dt, 0)
8
11
return usus
9
12
0
12
# Velocidades para cada caso
1
12
v_lombada = 20 # Velocidade para lombada em km/h
2
12
v_buraco = 40 # Velocidade para buraco em km/h
3
12
v_chao_irregular = 80 # Velocidade para chão irregular em km/h
4
12
5
12
usus_lombada = criar_vetor_entrada("lombada", v_lombada)
6
12
usus_buraco = criar_vetor_entrada("buraco", v_buraco)
7
12
usus_chao_irregular = criar_vetor_entrada("chao_irregular", v_chao_irregular)
8
12
9
13
# Simulações separadas para lombada, buraco e chao irregular
0
13
sysc = signal.StateSpace(Ac, Bc, Cc, Dc)
1
13
t, y_lombada, _ = signal.lsim(sysc, U=usus_lombada.T, T=t, X0=X0c)
2
13
t, y_buraco, _ = signal.lsim(sysc, U=usus_buraco.T, T=t, X0=X0c)
3
13 t, y_chao_irregular, _ = signal.lsim(sysc, U=usus_chao_irregular.T, T=t,
4 X0=X0c)
13
5
13
# Cálculo das derivadas para cada cenário
6
13
ddotheta_lombada = np.diff(y_lombada, axis=0) / dt
7
13
ddotheta_buraco = np.diff(y_buraco, axis=0) / dt
8
13
ddotheta_chao_irregular = np.diff(y_chao_irregular, axis=0) / dt
9
14
0
14
# Gerando as entradas uy para o sistema da plataforma estabilizadora
1
14
ddx_lombada = np.diff(y_lombada, n=2) / dt**2
2
14
ddx_buraco = np.diff(y_buraco, n=2) / dt**2
3
14
ddx_chao_irregular = np.diff(y_chao_irregular, n=2) / dt**2
4
14
5
57
14
d= a_car + b_car
6
14
7
14
# Deslocamento de tempo para cada cenário
8
14
deslocamento_tempo_lombada = int((d / (v_lombada / 3.6)) / dt)
9
15
deslocamento_tempo_buraco = int((d / (v_buraco / 3.6)) / dt)
0
15
deslocamento_tempo_chao_irregular = int((d / (v_chao_irregular / 3.6)) / dt)
1
15
2
15
# Aplicando o deslocamento de tempo para cada cenário
3
15
uy1_lombada = ddx_lombada
4
15
uy2_lombada = np.zeros_like(ddx_lombada)
5
15 uy2_lombada[deslocamento_tempo_lombada:] = ddx_lombada[:-
6 deslocamento_tempo_lombada]
15
7
15
uy1_buraco = ddx_buraco
8
15
uy2_buraco = np.zeros_like(ddx_buraco)
9
16 uy2_buraco[deslocamento_tempo_buraco:] = ddx_buraco[:-
0 deslocamento_tempo_buraco]
16
1
16
uy1_chao_irregular = ddx_chao_irregular
2
16
uy2_chao_irregular = np.zeros_like(ddx_chao_irregular)
3
16 uy2_chao_irregular[deslocamento_tempo_chao_irregular:] =
4 ddx_chao_irregular[:-deslocamento_tempo_chao_irregular]
16
5
16
# Gráficos dos perfis de via
6
16
fig, axs = plt.subplots(3, 1, figsize=(18, 8))
7
16
8
16
axs[0].plot(t, usus_lombada[0], label='Roda dianteira - Lombada')
9
17
axs[0].plot(t, usus_lombada[2], label='Roda traseira - Lombada')
0
17
axs[0].set_title("Perfil de via para Lombada")
1
17
axs[0].set_xlabel("Tempo (s)")
2
17
axs[0].set_ylabel("Altura (m)")
3
17
axs[0].legend()
4
58
17
axs[0].grid(True)
5
17
6
17
axs[1].plot(t, usus_buraco[0], label='Roda dianteira - Buraco')
7
17
axs[1].plot(t, usus_buraco[2], label='Roda traseira - Buraco')
8
17
axs[1].set_title("Perfil de via para Buraco")
9
18
axs[1].set_xlabel("Tempo (s)")
0
18
axs[1].set_ylabel("Altura (m)")
1
18
axs[1].legend()
2
18
axs[1].grid(True)
3
18
4
18 axs[2].plot(t, usus_chao_irregular[0], label='Roda dianteira - Asfalto
5 irregular')
18 axs[2].plot(t, usus_chao_irregular[2], label='Roda traseira - Asfalto
6 irregular')
18
axs[2].set_title("Perfil de via para Asfalto irregular")
7
18
axs[2].set_xlabel("Tempo (s)")
8
18
axs[2].set_ylabel("Altura (m)")
9
19
axs[2].legend()
0
19
axs[2].grid(True)
1
19
2
19
plt.legend(loc='lower right')
3
19
plt.tight_layout()
4
19
plt.subplots_adjust(hspace=0.7)
5
19
plt.show()
6
19
7
19
# Gráficos de resposta
8
19
fig, axs = plt.subplots(3, 1, figsize=(12, 8))
9
20
0
20
axs[0].plot(t, y_lombada)
1
20
axs[0].set_title("Variação do ângulo de arfagem para Lombada")
2
20
axs[0].set_xlabel("Tempo (s)")
3
59
20
axs[0].set_ylabel("Ângulo de arfagem (rad)")
4
20
axs[0].grid(True)
5
20
6
20
axs[1].plot(t, y_buraco)
7
20
axs[1].set_title("Variação do ângulo de arfagem para Buraco")
8
20
axs[1].set_xlabel("Tempo (s)")
9
21
axs[1].set_ylabel("Ângulo de arfagem (rad)")
0
21
axs[1].grid(True)
1
21
2
21
axs[2].plot(t, y_chao_irregular)
3
21
axs[2].set_title("Variação do ângulo de arfagem para Asfalto Irregular")
4
21
axs[2].set_xlabel("Tempo (s)")
5
21
axs[2].set_ylabel("Ângulo de arfagem (rad)")
6
21
axs[2].grid(True)
7
21
8
21
plt.legend(loc='lower right')
9
22
plt.tight_layout()
0
22
plt.subplots_adjust(hspace=0.7)
1
22
plt.show()
2
22
3
22
# Gráficos de derivada da resposta
4
22
fig, axs = plt.subplots(3, 1, figsize=(12, 8))
5
22
6
22
axs[0].plot(t[:len(t)-1], ddotheta_lombada)
7
22
axs[0].set_title("Variação da velocidade angular de arfagem para Lombada")
8
22
axs[0].set_xlabel("Tempo (s)")
9
23
axs[0].set_ylabel("Velocidade angular (rad/s)")
0
23
axs[0].grid(True)
1
23
2
60
23
axs[1].plot(t[:len(t)-1], ddotheta_buraco)
3
23
axs[1].set_title("Variação da velocidade angular de arfagem para Buraco")
4
23
axs[1].set_xlabel("Tempo (s)")
5
23
axs[1].set_ylabel("Velocidade angular (rad/s)")
6
23
axs[1].grid(True)
7
23
8
23
axs[2].plot(t[:len(t)-1], ddotheta_chao_irregular)
9
24 axs[2].set_title("Variação da velocidade angular de arfagem para Asfalto
0 Irregular")
24
axs[2].set_xlabel("Tempo (s)")
1
24
axs[2].set_ylabel("Velocidade angular (rad/s)")
2
24
axs[2].grid(True)
3
24
4
24
plt.legend(loc='lower right')
5
24
plt.tight_layout()
6
24
plt.subplots_adjust(hspace=0.7)
7
24
plt.show()
8
24
9
25
# Gráficos de uy1 e uy2
0
25
fig, axs = plt.subplots(3, 1, figsize=(12, 8))
1
25
2
25
axs[0].plot(t[:len(t)-2], uy1_lombada, label=r'$u_{y_1}$ Lombada')
3
25
axs[0].plot(t[:len(t)-2], uy2_lombada, label=r'$u_{y_2}$ Lombada')
4
25 axs[0].set_title("$u_{y_1}$ e $u_{y_2}$ (aceleração longitudinal) para
5 Lombada")
25
axs[0].set_xlabel("Tempo (s)")
6
25
axs[0].set_ylabel("Aceleração (ms$^{-2}$)")
7
25
axs[0].legend(loc='lower right')
8
25
axs[0].grid(True)
9
26
0
26
axs[1].plot(t[:len(t)-2], uy1_buraco, label=r'$u_{y_1}$ Buraco')
1
61
26
axs[1].plot(t[:len(t)-2], uy2_buraco, label=r'$u_{y_2}$ Buraco')
2
26 axs[1].set_title("$u_{y_1}$ e $u_{y_2}$ (aceleração longitudinal) para
3 Buraco")
26
axs[1].set_xlabel("Tempo (s)")
4
26
axs[1].set_ylabel("Aceleração (ms$^{-2}$)")
5
26
axs[1].legend(loc='lower right')
6
26
axs[1].grid(True)
7
26
8
26 axs[2].plot(t[:len(t)-2], uy1_chao_irregular, label=r'$u_{y_1}$ Asfalto
9 Irregular')
27 axs[2].plot(t[:len(t)-2], uy2_chao_irregular, label=r'$u_{y_2}$ Asfalto
0 Irregular')
27 axs[2].set_title("$u_{y_1}$ e $u_{y_2}$ (aceleração longitudinal) para
1 Asfalto Irregular")
27
axs[2].set_xlabel("Tempo (s)")
2
27
axs[2].set_ylabel("Aceleração (ms$^{-2}$)")
3
27
axs[2].legend(loc='lower right')
4
27
axs[2].grid(True)
5
27
6
27
plt.tight_layout()
7
27
plt.subplots_adjust(hspace=0.7)
8
27
plt.show()
9
28
0
28
############ SIMULAÇÃO DA PLATAFORMA ############
1
28
2
28
# Parâmetros
3
28
m = 100 # massa (kg)
4
28
k = 20000 # constante de mola (N/m)
5
28
c = 350 # coeficiente de amortecimento (N s/m)
6
28
l = 2.0 # comprimento da barra superior (m)
7
28
a = l*0.55 # proporção do corpo dos pés ao ao centro de massa
8
28
b = l*0.45 # proporção do corpo do centro de massa à cabeça
9
29 L = 2.4 # distância entre os pontos de conexão dos elementos de mola e
0 amortecimento na suspensão (m)
62
29
h = 0.15 # altura entre as barras (m)
1
29 alpha = 0.2618 # ângulo de inclinação dos elementos de mola e amortecimento
2 em relação à barra (rad)
29
3
29
# Sincronizando o vetor de tempo com a simulação do meio carro
4
29
tempo = np.arange(ti, tfinal, dt)
5
29
tempo = tempo[:-2]
6
29
7
29
# Condições iniciais
8
29
condicoes_iniciais = [0, 0, 0, 0, 0, 0]
9
30
0
30
# Classe para simular a plataforma
1
30
class SimuladorPlataforma:
2
30
def __init__(self, tempo, uy1_data, uy2_data):
3
30
self.uy1_func = interp1d(tempo, uy1_data, fill_value="extrapolate")
4
30
self.uy2_func = interp1d(tempo, uy2_data, fill_value="extrapolate")
5
30
self.tempo = tempo
6
30
7
30
def aplicar_aceleracao(self, t, tempo_inicio, duracao, aceleracao):
8
30
tempo_fim = tempo_inicio + duracao
9
31
if tempo_inicio <= t <= tempo_fim:
0
31
return aceleracao
1
31
else:
2
31
return 0
3
31
4
31
def sistema_dinamico_lin(self, y, t, *args):
5
31
x, y, theta, x_pt, y_pt, theta_pt = y
6
31
tempo_inicio, duracao, valor_aceleracao = args
7
31
Uy1 = self.uy1_func(t)
8
31
Uy2 = self.uy2_func(t)
9
63
32 Ux = self.aplicar_aceleracao(t, tempo_inicio, duracao,
0 valor_aceleracao)
32
dydt = [
1
32
x_pt,
2
32
y_pt,
3
32
theta_pt,
4
(Ux*(4*h**2 + (L - 2*a)**2)**2*(4*h**2 + (L - 2*b)**2)**2 -
0.5*c*h*(4*h**2 + (L - 2*a)**2)**(3/2)*(4*h**2 + (L -
2*b)**2)**(3/2)*(y_pt*((-L + 2*b)*sp.sqrt(4*h**2 + (L - 2*a)**2) + (L -
2*a)*sp.sqrt(4*h**2 + (L - 2*b)**2)) + theta_pt*(a*(L - 2*a)*sp.sqrt(4*h**2 +
(L - 2*b)**2) - b*(L - 2*b)*sp.sqrt(4*h**2 + (L - 2*a)**2))) - 0.25*c*x_pt*(L
- 2*a)**2*(4*h**2 + (L - 2*a)**2)**(3/2)*(4*h**2 + (L - 2*b)**2)**2 -
32
0.25*c*x_pt*(L - 2*b)**2*(4*h**2 + (L - 2*a)**2)**2*(4*h**2 + (L -
5
2*b)**2)**(3/2) + k*(4*h**2 + (L - 2*a)**2)*(4*h**2 + (L -
2*b)**2)*(2.0*h*theta*(a*(L - 2*a)*(4*h**2 + (L - 2*b)**2) + b*(L -
2*b)*(4*h**2 + (L - 2*a)**2)) - 2.0*h*y*((L - 2*a)*(4*h**2 + (L - 2*b)**2) -
(L - 2*b)*(4*h**2 + (L - 2*a)**2)) - 1.0*x*((L - 2*a)**2*(4*h**2 + (L -
2*b)**2) + (L - 2*b)**2*(4*h**2 + (L - 2*a)**2))))/(m*(4*h**2 + (L -
2*a)**2)**2*(4*h**2 + (L - 2*b)**2)**2),
(-1.0*c*h**2*(4*h**2 + (L - 2*a)**2)**(3/2)*(4*h**2 + (L -
2*b)**2)**2*(a*theta_pt + y_pt) - 1.0*c*h**2*(4*h**2 + (L -
2*a)**2)**2*(4*h**2 + (L - 2*b)**2)**(3/2)*(b*theta_pt + y_pt) -
0.5*c*h*x_pt*(4*h**2 + (L - 2*a)**2)**(3/2)*(4*h**2 + (L -
2*b)**2)**(3/2)*((-L + 2*b)*sp.sqrt(4*h**2 + (L - 2*a)**2) + (L -
32
2*a)*sp.sqrt(4*h**2 + (L - 2*b)**2)) + h*k*(4*h**2 + (L - 2*a)**2)*(4*h**2 +
6
(L - 2*b)**2)*(4.0*h*theta*(a*(4*h**2 + (L - 2*b)**2) - b*(4*h**2 + (L -
2*a)**2)) - 4.0*h*y*(8*h**2 + (L - 2*a)**2 + (L - 2*b)**2) - 2.0*x*((L -
2*a)*(4*h**2 + (L - 2*b)**2) - (L - 2*b)*(4*h**2 + (L - 2*a)**2))) + (Uy1 +
Uy2)*(4*h**2 + (L - 2*a)**2)**2*(4*h**2 + (L - 2*b)**2)**2)/(m*(4*h**2 + (L -
2*a)**2)**2*(4*h**2 + (L - 2*b)**2)**2),
(-c*(4*h**2 + (L - 2*a)**2)*(4*h**2 + (L -
2*b)**2)*(9.00719925474099e+15*h*x_pt*(a*(L - 2*a)*sp.sqrt(4*h**2 + (L -
2*b)**2) - b*(L - 2*b)*sp.sqrt(4*h**2 + (L - 2*a)**2)) +
18014398509481984*y_pt*(1.0*h**2*(a*sp.sqrt(4*h**2 + (L - 2*b)**2) +
b*sp.sqrt(4*h**2 + (L - 2*a)**2)) + (b - 1)*sp.sqrt(4*h**2 + (L -
2*a)**2)*sp.sqrt(4*h**2 + (L - 2*b)**2)*sp.sin(alpha)) +
18014398509481984*theta_pt*(1.0*h**2*(a**2*sp.sqrt(4*h**2 + (L - 2*b)**2) +
b**2*sp.sqrt(4*h**2 + (L - 2*a)**2)) + (a + b**2)*sp.sqrt(4*h**2 + (L -
2*a)**2)*sp.sqrt(4*h**2 + (L - 2*b)**2)*sp.sin(alpha))) + k*sp.sqrt(4*h**2 +
32
(L - 2*a)**2)*sp.sqrt(4*h**2 + (L - 2*b)**2)*(3.6028797018964e+16*h*x*(a*(L -
7
2*a)*(4*h**2 + (L - 2*b)**2) + b*(L - 2*b)*(4*h**2 + (L - 2*a)**2)) -
18014398509481984*theta*(4.0*a**2*h**2*(4*h**2 + (L - 2*b)**2) + a**2*(4*h**2
+ (L - 2*a)**2)*(4*h**2 + (L - 2*b)**2)*sp.sin(alpha) + 4.0*b**2*h**2*(4*h**2
+ (L - 2*a)**2)) + 18014398509481984*y*(4.0*a*h**2*(4*h**2 + (L - 2*b)**2) +
a*(4*h**2 + (L - 2*a)**2)*(4*h**2 + (L - 2*b)**2)*sp.sin(alpha) -
4.0*b*h**2*(4*h**2 + (L - 2*a)**2))) + 18014398509481984*(4*h**2 + (L -
2*a)**2)**(3/2)*(4*h**2 + (L - 2*b)**2)**(3/2)*(Uy1*b -
Uy2*a))/(6004799503160661*m*(4*h**2 + (L - 2*a)**2)**(3/2)*(4*h**2 + (L -
2*b)**2)**(3/2)*(a**2 - a*b + b**2))
32
]
8
32
return dydt
9
33
0
64
33
def simular(self, tempo_inicio, duracao, valor_aceleracao):
1
33
args = (tempo_inicio, duracao, valor_aceleracao)
2
33 solucao_lin = odeint(self.sistema_dinamico_lin, condicoes_iniciais,
3 self.tempo, args=args)
33
aceleracoes_lin = np.diff(solucao_lin[:, 3:], axis=0) / dt
4
33
return solucao_lin, aceleracoes_lin
5
33
6
33
# Função para plotar os resultados
7
33
def plotar_resultados(solucao, aceleracoes, titulo):
8
33
plt.figure(figsize=(12, 8))
9
34
0
34
# POsições
1
34
plt.subplot(3, 1, 1)
2
34
plt.plot(tempo, solucao[:, 0], label='x (m)')
3
34
plt.plot(tempo, solucao[:, 1], label='y (m)')
4
34
plt.plot(tempo, solucao[:, 2], label=r'$\theta$ (rad)')
5
34
plt.title(titulo + ' - Posições')
6
34
plt.xlabel('Tempo (s)')
7
34
plt.ylabel('Posição')
8
34
plt.legend(loc='lower right')
9
35
0
35
# Velocidades
1
35
plt.subplot(3, 1, 2)
2
35
plt.plot(tempo, solucao[:, 3], label=r'$\dot{x}$ $(m/s)$')
3
35
plt.plot(tempo, solucao[:, 4], label=r'$\dot{y}$ $(m/s)$')
4
35
plt.plot(tempo, solucao[:, 5], label=r'$\dot{\theta}$ $(rad/s)$')
5
35
plt.title(titulo + ' - Velocidades')
6
35
plt.xlabel('Tempo (s)')
7
35
plt.ylabel('Velocidade')
8
35
plt.legend(loc='lower right')
9
65
36
0
36
# Acelerações
1
36
plt.subplot(3, 1, 3)
2
36 plt.plot(tempo[:-1], aceleracoes, label=['$\ddot{x}$ $(m/s^2)$ ',
3 '$\ddot{y}$ $(m/s^2)$ ', r'$\ddot{\theta}$ $(rad/s^2)$ '])
36
plt.title(titulo + ' - Acelerações')
4
36
plt.xlabel('Tempo (s)')
5
36
plt.ylabel('Aceleração')
6
36
plt.legend(loc='lower right')
7
36
8
36
plt.tight_layout()
9
37
plt.subplots_adjust(hspace=0.7)
0
37
plt.show()
1
37
2
37 tempo_inicio_aceleracao = 0 # Início da aceleração em segundos após o início
3 da simulação
37
duracao_aceleracao = 4 # Duração da aceleração em segundos
4
37
valor_aceleracao = 10 # Valor da aceleração para o caso de aceleração
5
37 valor_aceleracao_frenagem = -10 # Valor da aceleração para o caso de
6 frenagem
37
7
37
# Instanciando e usando a classe SimuladorPlataforma para diferentes cenários
8
37
# GRUPO ASFALTO IRREGULAR
9
38 simulador_asfalto_irregular = SimuladorPlataforma(tempo, uy1_chao_irregular *
0 m, uy2_chao_irregular * m)
38
1
38
# Caso 1: Velocidade constante (não há aceleração aplicada)
2
solucao_asfalto_irregular_1, aceleracoes_asfalto_irregular_1 =
38
simulador_asfalto_irregular.simular(tempo_inicio=0, duracao=0,
3
valor_aceleracao=0)
38 plotar_resultados(solucao_asfalto_irregular_1,
4 aceleracoes_asfalto_irregular_1, "Asfalto Irregular - Velocidade constante")
38
5
38
# Caso 2: Aceleração temporária
6
solucao_asfalto_irregular_2, aceleracoes_asfalto_irregular_2 =
38
simulador_asfalto_irregular.simular(tempo_inicio_aceleracao,
7
duracao_aceleracao, valor_aceleracao)
66
38 plotar_resultados(solucao_asfalto_irregular_2,
8 aceleracoes_asfalto_irregular_2, "Asfalto Irregular - Aceleração Temporária")
38
9
39
# Caso 3: Frenagem temporária
0
solucao_asfalto_irregular_3, aceleracoes_asfalto_irregular_3 =
39
simulador_asfalto_irregular.simular(tempo_inicio_aceleracao,
1
duracao_aceleracao, valor_aceleracao_frenagem)
39 plotar_resultados(solucao_asfalto_irregular_3,
2 aceleracoes_asfalto_irregular_3, "Asfalto Irregular - Frenagem Temporária")
39
3
39
# GRUPO LOMBADA
4
39 simulador_lombada = SimuladorPlataforma(tempo, uy1_lombada * m, uy2_lombada *
5 m)
39
# Velocidade constante (não há aceleração aplicada)
6
39 solucao_lombada_1, aceleracoes_lombada_1 =
7 simulador_lombada.simular(tempo_inicio=0, duracao=0, valor_aceleracao=0)
39 plotar_resultados(solucao_lombada_1, aceleracoes_lombada_1, "Lombada -
8 Velocidade constante")
39
9
40
# GRUPO BURACO
0
40
simulador_buraco = SimuladorPlataforma(tempo, uy1_buraco * m, uy2_buraco * m)
1
40
# Velocidade constante (não há aceleração aplicada)
2
40 solucao_buraco_1, aceleracoes_buraco_1 =
3 simulador_buraco.simular(tempo_inicio=0, duracao=0, valor_aceleracao=0)
40 plotar_resultados(solucao_buraco_1, aceleracoes_buraco_1, "Buraco -
4 Velocidade constante")
40
# Velocidade constante (não há aceleração aplicada)
5
40 solucao_buraco_1, aceleracoes_buraco_1 =
6 simulador_buraco.simular(tempo_inicio=0, duracao=0, valor_aceleracao=0)
40 plotar_resultados(solucao_buraco_1, aceleracoes_buraco_1, "Buraco -
7 Velocidade constante")
67