diff --git a/Code/Analyzer.m b/Code/Analyzer.m index 43852a6..19f297f 100644 --- a/Code/Analyzer.m +++ b/Code/Analyzer.m @@ -1,6 +1,6 @@ close all; clc; hold on; -title("desiredSpeed = 100m/s, threshold = 2m/s²"); +title("desiredSpeed = 1.0m/s"); xlabel("Amostra (10ms)"); ylabel("Aceleração (m/s²)") plot(encoderAccel); @@ -11,7 +11,7 @@ ylabel("Velocidade referência (m/s)"); plot(desiredSpeed1); ax.YAxis(1).Limits = [-15, 15]; ax.YAxis(1).Color = [0, 0, 0]; -ax.YAxis(2).Limits = [-100, 100]; +ax.YAxis(2).Limits = [-1, 1]; ax.YAxis(2).Color = [0, 0, 0]; ax.XAxis.Limits = [0, 500]; legend({'encoderAccel (m/s²)','imuAccel (m/s²)', 'desiredSpeed (m/s)'},'Location','southwest') diff --git a/Code/Untitled 1.vi b/Code/Untitled 1.vi index 0077a3e..b3fbbdc 100644 Binary files a/Code/Untitled 1.vi and b/Code/Untitled 1.vi differ diff --git a/Code/pidTuner/AnalyzerPidTuner.m b/Code/pidTuner/AnalyzerPidTuner.m new file mode 100644 index 0000000..7283360 --- /dev/null +++ b/Code/pidTuner/AnalyzerPidTuner.m @@ -0,0 +1,12 @@ +close all; clc; +hold on; +% title("desiredSppeed = 100"); +xlabel("Amostra (10ms)"); +ylabel("Velocidade (m/s)") +plot(StepResponse3SClean); +ax = gca; +ax.YAxis(1).Limits = [0, 2]; +ax.YAxis(1).Color = [0, 0, 0]; +ax.XAxis.Limits = [0, 100]; +legend({'Velocidade (m/s)'},'Location','southwest') +hold off; diff --git a/Code/pidTuner/AnalyzerPidTuner2.m b/Code/pidTuner/AnalyzerPidTuner2.m new file mode 100644 index 0000000..2446ed2 --- /dev/null +++ b/Code/pidTuner/AnalyzerPidTuner2.m @@ -0,0 +1,14 @@ +close all; clc; +hold on; +% title("desiredSppeed = 100"); +plot([0:0.01:2.67], StepResponse3SClean, "red"); +stepResponse = step(Differential3S, [0:0.01:2.67]); +plot([0:0.01:2.67], stepResponse, "blue"); +xlabel("Tempo(s)"); +ylabel("Velocidade (m/s)") +ax = gca; +ax.YAxis(1).Limits = [0, 2]; +ax.YAxis(1).Color = [0, 0, 0]; +ax.XAxis.Limits = [0, 1]; +legend({'Velocidade medida (m/s)', 'Velocidade simulada (m/s)'},'Location','southwest') +hold off; diff --git a/Documentation/Accelerations/vf = 0.2, th = 100.mat b/Documentation/Accelerations/vf = 0.2, th = 100.mat new file mode 100644 index 0000000..7ca420e Binary files /dev/null and b/Documentation/Accelerations/vf = 0.2, th = 100.mat differ diff --git a/Documentation/Accelerations/vf = 0.3, th = 100.mat b/Documentation/Accelerations/vf = 0.3, th = 100.mat new file mode 100644 index 0000000..b84dc98 Binary files /dev/null and b/Documentation/Accelerations/vf = 0.3, th = 100.mat differ diff --git a/Documentation/Accelerations/vf = 0.5, th = 100.mat b/Documentation/Accelerations/vf = 0.5, th = 100.mat new file mode 100644 index 0000000..2cb8784 Binary files /dev/null and b/Documentation/Accelerations/vf = 0.5, th = 100.mat differ diff --git a/Documentation/Accelerations/vf = 0.7, th = 100.mat b/Documentation/Accelerations/vf = 0.7, th = 100.mat new file mode 100644 index 0000000..2e94508 Binary files /dev/null and b/Documentation/Accelerations/vf = 0.7, th = 100.mat differ diff --git a/Documentation/Flowchart slip detection.vsdx b/Documentation/Flowchart slip detection.vsdx new file mode 100644 index 0000000..c56749f Binary files /dev/null and b/Documentation/Flowchart slip detection.vsdx differ diff --git a/Documentation/Schematic ponte H.pdf b/Documentation/Schematic ponte H.pdf new file mode 100644 index 0000000..48a051d Binary files /dev/null and b/Documentation/Schematic ponte H.pdf differ diff --git a/Documentation/Schematic ponte H.vsdx b/Documentation/Schematic ponte H.vsdx new file mode 100644 index 0000000..621ae1c Binary files /dev/null and b/Documentation/Schematic ponte H.vsdx differ diff --git a/Documentation/abntex2ime/intro.tex b/Documentation/abntex2ime/intro.tex index 809946b..b748301 100644 --- a/Documentation/abntex2ime/intro.tex +++ b/Documentation/abntex2ime/intro.tex @@ -8,7 +8,7 @@ \section{Objetivos do trabalho} \subsection{Objetivo geral} -\par O presente trabalho de fim de curso tem por objetivo desenvolver uma metodologia para projeto de sistemas de controle para ambos os robôs capazes de resolver os problemas de perda de direção relacionados à perda de tração. +\par O presente trabalho de fim de curso tem por objetivo desenvolver uma metodologia para projeto de sistemas de controle para ambos os robôs capazes de resolver os problemas de perda de direção relacionados à perda de tração. Todo o material desenvolvido neste trabalho encontra-se no repositório em \cite{gitgmlima} \subsection{Objetivos específicos} \begin{itemize} diff --git a/Documentation/abntex2ime/main.pdf b/Documentation/abntex2ime/main.pdf index c9d41fa..c655e41 100644 Binary files a/Documentation/abntex2ime/main.pdf and b/Documentation/abntex2ime/main.pdf differ diff --git a/Documentation/abntex2ime/resultados.tex b/Documentation/abntex2ime/resultados.tex index d7c3ca3..fb8d921 100644 --- a/Documentation/abntex2ime/resultados.tex +++ b/Documentation/abntex2ime/resultados.tex @@ -2,7 +2,7 @@ \label{chap:resultados} \section{Identificação do deslizamento} \par Nos gráficos \ref{fig:acc0.2}, \ref{fig:acc0.3}, \ref{fig:acc0.5}, \ref{fig:acc0.7} e \ref{fig:acc1.0} temos as medidas das acelerações da roda e do chassi, bem como suas comparações. Nos experimentos, o robô começa em repouso, com velocidade $v0 = 0.0m/s$, em seguida é aplicado um degrau de velocidade de referência, com amplitudes variando entre $vf = 0.2m/s$ e $vf = 1.0m/s$. Em um terceiro momento, a velocidade de referência é novamente zerada, levando a uma frenagem do robô. -\par No gráfico \textit{Encoder accel}, é medida a aceleração da roda pela segunda derivada da medida de posição do encoder. No gráfico \textit{IMU accel} temos a aceleração do chassi, medida pelo sensor IMU. Nos gráficos \textit{Difference} e \textit{Ratio} temos o módulo da diferença e a razão entre as acelerações do IMU e do encoder. +\par No gráfico \textit{encoderAccel}, é medida a aceleração da roda pela segunda derivada da medida de posição do \textit{encoder}. No gráfico \textit{imuAccel} temos a aceleração do chassi, medida pelo sensor IMU. No gráfico \textit{desiredSpeed} temos a velocidade de referência para o robô, indicando quando o degrau de velocidade foi aplicado ao controlador. \begin{figure}[!ht] \centering @@ -16,7 +16,7 @@ \caption{v0 = 0.0, vf = 0.3} \label{fig:acc0.3} \end{figure} -\par Nos experimento dos gráficos \ref{fig:acc0.2} e \ref{fig:acc0.3}, foram aplicados degraus de pequena amplitude, o que não levou a deslizamento. Isto pode ser evidenciado pela semelhança entre os gráficos de aceleração pelo encoder e pelo IMU que, a menos de ruídos nas medições, mediram os mesmos valores de aceleração, mostrando que o movimento da roda está solidário ao movimento do chassi, o que evidencia o não deslizamento. +\par Nos experimentos dos gráficos \ref{fig:acc0.2} e \ref{fig:acc0.3}, foram aplicados degraus de pequena amplitude, o que não levou a deslizamento. Isto pode ser evidenciado pela semelhança entre os gráficos de aceleração pelo \textit{encoder} e pelo IMU que, a menos de ruídos nas medições, mediram os mesmos valores de aceleração, mostrando que o movimento da roda está solidário ao movimento do chassi, o que evidencia o não deslizamento. \begin{figure}[!ht] \centering diff --git a/Documentation/abntex2ime/solucao.tex b/Documentation/abntex2ime/solucao.tex index b337c86..321b492 100644 --- a/Documentation/abntex2ime/solucao.tex +++ b/Documentation/abntex2ime/solucao.tex @@ -1,4 +1,4 @@ -\chapter{Projeto do sistema de controle anti-derrapagem} +\chapter{Projeto do controle anti-derrapagem} \label{chap:solucao} \section{Robô de desenvolvimento} \par Devido à maior dificuldade de acesso no dia-a-dia ao robô SVTRP do CTEx e à maior complexidade do robô de SSL devido às rodas omnidirecionais, foi decidido construir um novo robô visando a modularidade e simplicidade da dinâmica. Dessa forma, foi construído o robô da figura \ref{fig:robodev}, cujo diagrama de blocos está representado na figura \ref{fig:diagramablocosrobodev}