diff --git a/Documentation/Block diagram Dev Português.vsdx b/Documentation/Block diagram Dev Português.vsdx new file mode 100644 index 0000000..9eb2831 Binary files /dev/null and b/Documentation/Block diagram Dev Português.vsdx differ diff --git a/Documentation/SSL Diagram.vsdx b/Documentation/SSL Diagram.vsdx new file mode 100644 index 0000000..e5da01e Binary files /dev/null and b/Documentation/SSL Diagram.vsdx differ diff --git a/Documentation/abntex2ime/img/AngulosRodas.png b/Documentation/abntex2ime/img/AngulosRodas.png new file mode 100644 index 0000000..8c72b65 Binary files /dev/null and b/Documentation/abntex2ime/img/AngulosRodas.png differ diff --git a/Documentation/abntex2ime/img/BaseRobo.jpg b/Documentation/abntex2ime/img/BaseRobo.jpg new file mode 100644 index 0000000..52d3698 Binary files /dev/null and b/Documentation/abntex2ime/img/BaseRobo.jpg differ diff --git a/Documentation/abntex2ime/img/BaseSolidWorks.jpg b/Documentation/abntex2ime/img/BaseSolidWorks.jpg new file mode 100644 index 0000000..22d3a88 Binary files /dev/null and b/Documentation/abntex2ime/img/BaseSolidWorks.jpg differ diff --git a/Documentation/abntex2ime/img/DiagramaBlocosDev-crop.pdf b/Documentation/abntex2ime/img/DiagramaBlocosDev-crop.pdf new file mode 100644 index 0000000..c0360d0 Binary files /dev/null and b/Documentation/abntex2ime/img/DiagramaBlocosDev-crop.pdf differ diff --git a/Documentation/abntex2ime/img/DiagramaSSL-crop.pdf b/Documentation/abntex2ime/img/DiagramaSSL-crop.pdf new file mode 100644 index 0000000..ff21796 Binary files /dev/null and b/Documentation/abntex2ime/img/DiagramaSSL-crop.pdf differ diff --git a/Documentation/abntex2ime/img/FrontPanelLabVIEW-crop.pdf b/Documentation/abntex2ime/img/FrontPanelLabVIEW-crop.pdf new file mode 100644 index 0000000..f357f37 Binary files /dev/null and b/Documentation/abntex2ime/img/FrontPanelLabVIEW-crop.pdf differ diff --git a/Documentation/abntex2ime/img/RoboDesenvolvimento.jpg b/Documentation/abntex2ime/img/RoboDesenvolvimento.jpg new file mode 100644 index 0000000..720d61f Binary files /dev/null and b/Documentation/abntex2ime/img/RoboDesenvolvimento.jpg differ diff --git a/Documentation/abntex2ime/intro.tex b/Documentation/abntex2ime/intro.tex index 0b7e9a8..49b19a1 100644 --- a/Documentation/abntex2ime/intro.tex +++ b/Documentation/abntex2ime/intro.tex @@ -34,7 +34,7 @@ \label{fig:diagramablocosctex} \end{figure} -\par A plataforma SVTRP do CTEx possui quatro rodas paralelas fixas, tornando-se, assim, uma plataforma de movimento diferencial. Todos os motores são alimentados por pontes H e possuem encoder para medição de posição angular relativa, o que possibilita o controle de malha fechada da velocidade. Possui também um sensor inercial contendo acelerômetro e giroscópio, mas que não contém bússola. Portanto, não é capaz de determinar sua orientação absoluta. Possui também um receptor GPS para determinação da posição global con precisão de alguns metros. +\par A plataforma SVTRP do CTEx possui quatro rodas paralelas fixas, tornando-se, assim, uma plataforma de movimento diferencial. Todos os motores são alimentados por pontes H e possuem encoder para medição de posição angular relativa, o que possibilita o controle de malha fechada da velocidade. Possui também um sensor inercial (IMU) de seis graus de liberdade (6-dof) contendo acelerômetro e giroscópio, mas que não contém bússola. Portanto, não é capaz de determinar sua orientação absoluta. Possui também um receptor GPS para determinação da posição global con precisão de alguns metros. \par O microcontrolador responsável pelo controle de velocidade e também pela comunicação com os sensores é o STM32F103 "BluePill". É um modelo barato e facilmente encontrado no mercado nacional, porém de capacidade computacional suficiente para controle PID em malha fechada de motores com escovas e para comunicação com os sensores. \par Além disso, o SVTRP do CTEx embarca um computador Jetson nano, responsável pela captação de imagens com as câmeras e pelo processamento do algorítmo de Simultaneous Location and Mapping (SLAM). \par Todo o conjunto é alimentado por uma bateria de polímero de lítio (LiPo), com tensão regulada por um regulador chaveado de 3.3V. @@ -66,7 +66,7 @@ Motores & Pololu 37Dx68L \begin{figure}[!ht] \centering - \includegraphics[width=\textwidth]{img/Placeholder.png} + \includegraphics[width=0.75\textwidth]{img/DiagramaSSL-crop.pdf} \caption{Topologia de uma partida de SSL} \label{fig:topologiassl} \end{figure} @@ -80,12 +80,12 @@ Motores & Pololu 37Dx68L \label{fig:diagramablocosssl2018} \end{figure} -\par O robô de SSL do IME foi desenvolvido visando atender ao regulamento \cite{SSLRules2023} da competição RoboCup 2023. Sendo assim, deve caber dentro de um cilíndro com 180mm de diâmetro e 150mm de altura. Deve ser capaz de atingir velocidades de até 4m/s e de acelerar a bola a uma velocidade de até 6,5m/s. -\par Possui quatro rodas omnidirecionais, como a da figura \ref{fig:rodassl2018}, dispostas nos ângulos representados na figura \ref{fig:angulossl2018}. Sendo assim, é capaz de se movimentar em três graus de liberdade, chamados aqui de tangente, normal e angular, conforme a figura \ref{fig:cinematicassl}. As rodas são acopladas aos motores por uma redução de 4:1, e possuem rodilhas dispostas de forma alternada, conforme a figura \ref{fig:rodilhassl2018}. +\par O robô de SSL do IME foi desenvolvido visando atender ao regulamento \cite{SSLRules2023} da competição RoboCup 2023. Sendo assim, deve caber dentro de um cilíndro com 180mm de diâmetro e 150mm de altura. Deve ser capaz de atingir velocidades de até 4m/s e de chutar a bola a uma velocidade de até 6,5m/s. +\par Possui quatro rodas omnidirecionais, como a da figura \ref{fig:rodassl2018}, dispostas nos ângulos representados na figura \ref{fig:angulossl2018}. Sendo assim, é capaz de se movimentar em três graus de liberdade, chamados aqui de tangente, normal e angular, conforme a figura \ref{fig:cinematicassl}. As rodas dianteiras estão anguladas em 30 graus em relação à direção do movimento tangente, enquanto as traseiras estão em um ângulo de 45 graus. Isso torna o movimento tangente mais preciso do que o movimento normal. As rodas são acopladas aos motores por uma redução de 4:1, e possuem rodilhas dispostas de forma alternada, conforme a figura \ref{fig:rodilhassl2018}. \begin{figure}[!ht] \centering - \includegraphics[width=\textwidth]{img/Placeholder.png} + \includegraphics[width=0.75\textwidth]{img/AngulosRodas.png} \caption{Disposição das rodas no robô de SSL} \label{fig:angulossl2018} \end{figure} @@ -115,12 +115,13 @@ Motores & Pololu 37Dx68L \begin{figure}[!ht] \centering - \includegraphics[width=0.5\textwidth]{img/PonteH2016.jpg} + \includegraphics[width=0.75\textwidth]{img/PonteH2016.jpg} \caption{Pontes H RoboIME 2016} \label{fig:ponteh2016} \end{figure} \par O microcontrolador utilizado é um STM32F407VG, da mesma família daquele empregado no SVTRP do CTEx. Dessa forma, o firmware desenvolvido para um dos robôs pode ser facilmente adaptado para o outro, sendo necessárias apenas pequenas alterações de compatibilidade. Para comunicação com o computador, o robô utiliza um rádio 2.4GHz modelo Semtech SX1280, embarcado em um módulo Ebyte E28-2G4M27S. Este rádio é capaz de se comunicar a distâncias de centenas de metros em campo aberto, a taxas de até 1,3Mbps. +\par Possui um sensor IMU com nove graus de liberdade (9-dof), contendo acelerômetro, giroscópio e magnetômetro. Portanto, é capaz de determinar sua orientação absoluta, porém incapaz de determinar posição absoluta sem ajuda de sistema de câmeras externo por não possuir GPS. \begin{table}[ht] \centering @@ -143,6 +144,48 @@ Motores & Generic JGB37-520 \label{tab:specsssl2018} \end{table} -\section{Motivação} -\section{Descrição do problema} -\section{Objetivos do projeto} \ No newline at end of file +\subsection{Descrição do 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} + +\begin{figure}[!ht] + \centering + \includegraphics[width=0.75\textwidth]{img/RoboDesenvolvimento.jpg} + \caption{Robô de desenvolvimento} + \label{fig:robodev} +\end{figure} + +\begin{figure}[!ht] + \centering + \includegraphics[width=\textwidth]{img/DiagramaBlocosDev-crop.pdf} + \caption{Diagrama de blocos do Robô de desenvolvimento} + \label{fig:diagramablocosrobodev} +\end{figure} + +\par Este robô é movimentado por motores semelhantes àqueles do robô de SSL, possuindo encoder de 52 CPR, porém com redução de 1:30, devido às rodas maiores. Sua cinemática é diferencial, semelhante à do SVTRP do CTEx, porém possui apenas duas rodas tracionadas e uma roda boba para apoio. As rodas tracionadas foram escolhidas de forma que deslizem caso seja aplicado pelo motor um torque elevado, e o motor foi escolhido para ser capaz de aplicar torque que leve as rodas ao deslizamento. +\par Para possibilitar a modularidade e o experimento com diferentes sensores, motores e microcontroladores, foi decidido colocar sobre o robô uma protoboard, sustentada por uma base projetada em software CAD e manufaturada em impressora 3D, conforme figuras \ref{fig:basesolidworks} e \ref{fig:baserobo}. + +\begin{figure}[!ht] + \centering + \includegraphics[width=0.75\textwidth]{img/BaseSolidWorks.jpg} + \caption{Base modelada no software CAD SolidWorks} + \label{fig:basesolidworks} +\end{figure} + +\begin{figure}[!ht] + \centering + \includegraphics[width=0.75\textwidth]{img/BaseRobo.jpg} + \caption{Base impressa e montada no robô} + \label{fig:baserobo} +\end{figure} + +\par Possui um sensor IMU 9-dof igual ao do robô de SSL, instalado no centro do robô, pontes H com sensores de corrente integrados, de forma que a corrente que entra em cada motor leve a uma tensão proporcional, que pode ser lida por um conversor analógico-digital (ADC) do microcontrolador. +\par O microcontrolador principal escolhido foi o STM32F103C8 "BluePill", o mesmo do SVTRP do CTEx, pois este possui características e especificações suficientes para o desenvolvimento do projeto e, por ser o mesmo do SVTRP do CTEx, faz com que fique mais simples de instalar o firmware desenvolvido no SVTRP do CTEx posteriormente. +\par Para o comando, telemetria e coleta de dados, foi decidido utilizar um módulo ESP8266, capaz de se conectar a uma rede WiFi. Para o ESP8266 foi desenvolvido um firmware que traduz a comunicação UART do microcontrolador principal em pacotes UDP multicast e vice-versa. +\par Para auxílio no desenvolvimento, foi desenvolvida uma interface gráfica em LabVIEW que se comunica com o robô por UDP multicast. Esta interface envia para o robô os comandos de velocidade desejada, da mesma forma como é feito no robô de SSL, e pode receber de volta os dados de telemetria desejados, como velocidade e aceleração das rodas medidas pelos encoders, acelerações medidas pelo IMU, corrente consumida pelos motores e tensão atual da bateria. A interface está representada na figura \ref{fig:interfacelabview} + +\begin{figure}[!ht] + \centering + \includegraphics[width=\textwidth]{img/FrontPanelLabVIEW-crop.pdf} + \caption{Interface gráfica no LabVIEW} + \label{fig:interfacelabview} +\end{figure} \ No newline at end of file diff --git a/Documentation/abntex2ime/main.loq b/Documentation/abntex2ime/main.loq index ca7bea0..fe57d03 100644 --- a/Documentation/abntex2ime/main.loq +++ b/Documentation/abntex2ime/main.loq @@ -1 +1 @@ -\contentsline {quadro}{\numberline {1}{\ignorespaces Exemplo de quadro}}{26}{quadro.3.1}% +\contentsline {quadro}{\numberline {1}{\ignorespaces Exemplo de quadro}}{28}{quadro.3.1}% diff --git a/Documentation/abntex2ime/main.pdf b/Documentation/abntex2ime/main.pdf index 6d666dc..9bd7824 100644 Binary files a/Documentation/abntex2ime/main.pdf and b/Documentation/abntex2ime/main.pdf differ diff --git a/Documentation/abntex2ime/main.tex b/Documentation/abntex2ime/main.tex index 7442943..d71f1f0 100644 --- a/Documentation/abntex2ime/main.tex +++ b/Documentation/abntex2ime/main.tex @@ -245,7 +245,7 @@ \textual \input{intro} -\input{exemplo-cap-01} +\input{teoria} \input{exemplo-cap-02} \input{exemplo-conclusao} diff --git a/Documentation/abntex2ime/teoria.tex b/Documentation/abntex2ime/teoria.tex new file mode 100644 index 0000000..0783c52 --- /dev/null +++ b/Documentation/abntex2ime/teoria.tex @@ -0,0 +1,3 @@ +\chapter{Teoria} +\section{Modelagem do motor DC} +O motor DC com escovas (brushed) de imã permanente, utilizado nos três robôs, pode ser modelado da seguinte forma: \ No newline at end of file