Skip to content

Commit

Permalink
Deployed 7b7ca2a with MkDocs version: 1.6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
LucasVChaves committed May 1, 2024
1 parent 9283a4b commit 7843e11
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 34 deletions.
30 changes: 18 additions & 12 deletions framework/cyclers/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1819,22 +1819,28 @@


<h1 id="cyclers">Cyclers</h1>
<p>Um cycler no sistema de controle robótico Tamboerijn é um sobcomponente que cicla os nós. O nome "cycler" vem da sua característica principal, ele contém um loop que itera sobre os dados que estão entrando e produz algum dado de saída em cada iteração. Os cyclers chamam seu método interno <code>cycle()</code> em cada iteração, esse método consiste de trẽs etapas: <br />
1. <strong>Setup</strong>: Espera por dados novos e prepara o ciclo. <br />
2. <strong>Processamento</strong>: Roda os nós necessários nos dados recebidos. <br />
3. <strong>Término</strong>: Manda comando para os atuadores e guarda os dados anteriores antes de chamar o próximo ciclo.</p>
<p>Um cycler no sistema de controle robótico Tamboerijn é um sobcomponente que cicla os nós. O nome "cycler" vem da sua característica principal, ele contém um loop que itera sobre os dados que estão entrando e produz algum dado de saída em cada iteração. Os cyclers chamam seu método interno <code>cycle()</code> em cada iteração, esse método consiste de trẽs etapas: </p>
<ol>
<li><strong>Setup</strong>: Espera por dados novos e prepara o ciclo. </li>
<li><strong>Processamento</strong>: Roda os nós necessários nos dados recebidos. </li>
<li><strong>Término</strong>: Manda comando para os atuadores e guarda os dados anteriores antes de chamar o próximo ciclo.</li>
</ol>
<p>Existem múltiplos cyclers em todo o software, e uma das principais tarefas da framework é permitir que eles comuniquem entre si. Por exemplo, na etapa de <em>setup</em>, dados de outros cyclers e da comunicação são coletado. Ou, na etapa de <em>término</em>, os dados produzidos durante o <em>processamento</em> são enviados para outros cyclers, caso necessário.</p>
<p>Cyclers são separados em duas categorias:<br />
1. <strong>Cyclers de tempo real</strong>: Usados para controle do robô, como em atuadores.<br />
2. <strong>Cyclers de percepção</strong>: Usados para processar dados de sensores, como o de visão por exemplo. </p>
<p>Cyclers são separados em duas categorias: </p>
<ol>
<li><strong>Cyclers de tempo real</strong>: Usados para controle do robô, como em atuadores. </li>
<li><strong>Cyclers de percepção</strong>: Usados para processar dados de sensores, como o de visão por exemplo. </li>
</ol>
<h2 id="cycler-de-tempo-real">Cycler de tempo real</h2>
<p>Um cycler de tempo real existe externamente ao ambiente, integra dados oriúndos dos cyclers de perceção, e produz alguma saída no fim do ciclo. Um exemplo é o cycler que roda em tempo real sincronizado com o intervalo do LoLA (83 hz), ele recebe dados de sensores do HULA/LoLA através da interface de hardware e cria uma saída para os atuadores que é mandada de volta para o HULA/LoLA. O cycler de controle integra dados de todos os outros cyclers de percepão (áudio, SPL network e visão) em sua pipeline de filtragem. Mais informações sobre essa pipeline podem ser encontradas em <a href="../filtering/">Filtragem</a>. O cycler de controle comtém todo código de robótica que precisa ser avaliado em cada ciclo de tempo real. Em outras palavras, ele possui todos os nós necessários para gerar novos outputs. Qualquer nó que seja muito custoso computacionalmente, como a visão, é executada em seu próprio cycler de percepção.</p>
<h2 id="cycler-de-percepcao">Cycler de percepção</h2>
<p>Além dos cyclers de tempo real centrais, existem múltiplos cyclers de percepção que percebem dados do mundo exterior e pré-processam eles. A saída de cada cycler de percepção é integrada aos cyclers de tempo real para respeitar suas saídas de tempo real. Já que cyclers de percepção rodam em paralelo aos de tempo real - e são capazes de reter dados históricos - eles podem rodar em intervalos de ciclo distintos. Esses cyclers normalmente esperam por um evente engatilhado externamente, como nova imagem da camera ou mensagem da rede por exemplo. Com isso, o início do processamento é anunciado aos cyclers de tempo real na etapa de <em>setup</em>, além de adiquirir dados requisitados dos cyclers de tempo real. A saída de dado dos cyclers de percepção é então enviada para os cyclers de tempo real na etapa de <em>término</em>. Mais informações sobre os dados que transitam entre cyclers pode ser encontrada em <a href="../filtering/">Filtragem</a>. Os cyclers de percepção existentes são: <br />
1. <strong>audio</strong>: Recebe dados de áudio da <a href="../hardware-interface/">Interface de Hardware</a>, basicamente dados dos microfones do NAO, principalemente para reconhecimento de apito. <br />
2. <strong>spl_network</strong>: Espera por mensagens vindas da rede ou requests de envio de mensagem vindo de outros cycler. Cada ciclo ele, ou pré-processa mensagens recebidas via parsing (análise sintática), ou envia mensagens para o exterior, a rede. <br />
3. <strong>vision_top</strong>: Recebe dados da camera superioro do NAO via <a href="../hardware-interface/">Interface de Hardware</a>, e processa a imagem para retirar e identificar diferentes features. <br />
4. <strong>vision_bottom</strong>: Similar ao <code>vision_top</code>, mas para a camera inferior do NAO.</p>
<p>Além dos cyclers de tempo real centrais, existem múltiplos cyclers de percepção que percebem dados do mundo exterior e pré-processam eles. A saída de cada cycler de percepção é integrada aos cyclers de tempo real para respeitar suas saídas de tempo real. Já que cyclers de percepção rodam em paralelo aos de tempo real - e são capazes de reter dados históricos - eles podem rodar em intervalos de ciclo distintos. Esses cyclers normalmente esperam por um evente engatilhado externamente, como nova imagem da camera ou mensagem da rede por exemplo. Com isso, o início do processamento é anunciado aos cyclers de tempo real na etapa de <em>setup</em>, além de adiquirir dados requisitados dos cyclers de tempo real. A saída de dado dos cyclers de percepção é então enviada para os cyclers de tempo real na etapa de <em>término</em>. Mais informações sobre os dados que transitam entre cyclers pode ser encontrada em <a href="../filtering/">Filtragem</a>. Os cyclers de percepção existentes são: </p>
<ol>
<li><strong>audio</strong>: Recebe dados de áudio da <a href="../hardware-interface/">Interface de Hardware</a>, basicamente dados dos microfones do NAO, principalemente para reconhecimento de apito. </li>
<li><strong>spl_network</strong>: Espera por mensagens vindas da rede ou requests de envio de mensagem vindo de outros cycler. Cada ciclo ele, ou pré-processa mensagens recebidas via parsing (análise sintática), ou envia mensagens para o exterior, a rede. </li>
<li><strong>vision_top</strong>: Recebe dados da camera superioro do NAO via <a href="../hardware-interface/">Interface de Hardware</a>, e processa a imagem para retirar e identificar diferentes features. </li>
<li><strong>vision_bottom</strong>: Similar ao <code>vision_top</code>, mas para a camera inferior do NAO.</li>
</ol>



Expand Down
44 changes: 24 additions & 20 deletions framework/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1735,26 +1735,30 @@


<h1 id="sobre">Sobre</h1>
<p>Esse tópico aborda a framework do nosso software para o NAO. Os capítulos passam por diversos aspectos numa abordagem "de cima para baixo" com uma visão geral, depois detalhando cada parte do sistema. Aqui está uma lista dos capítulos:<br />
- <a href="directory-struct/">Estrutura de diretórios</a>: Explica a estutura de pastas do repositorio. <br />
- <a href="entry-point/">Entry Point</a>: Inicia a abordagem top-down do sistema, explicando o ponto de entrada do programa na função <code>main</code>. <br />
- <a href="runtime/">Runtime</a>: Como a runtime faz a conexão entre os módulos do sistema? <br />
- <a href="cyclers/">Cyclers</a>: O que são os cyclers (ciclos de execução) e como eles rodam os diferentes nós? <br />
- <a href="nodes/">Nós</a>: O que são os nós e como eles são implementados? <br />
- <a href="databases-types/">Bases de dados e Tipos</a>: Como os dados são compartilhados entre cyclers e a framework? <br />
- <a href="parameters/">Parâmetros</a>: Como os parâmetros são passados para os nós pela framework? <br />
- <a href="communication/">Comunicação</a>: Do que se trata e como é feita a comunicação entre framework e nós?
- <a href="ball-detection/">Detecção de Bolas</a>: Como a detecção de bolas é feita na framework?
- <a href="hardware-interface/">Interface com Hardware</a>: Como o hardware é abstraído para a framework? <br />
- <a href="thread-communication/">Comunicação entre threads</a>: Quais conceitos existem para permitir uma comunicação thread-safe entre os subcomponentes? <br />
- <a href="filtering/">Filtragem</a>: Como a filtragem de dados é feita na framework e como ela se comporta num software multi-thread? <br />
- <a href="macros/">Macros</a>: Quais macros são usadas para facilitar o desenvolvimento e como eles funcionam? <br />
- <a href="error-handling/">Tratamento de erros</a>: Como a framework lida com erros e exceções, e como devo implementar? </p>
<p>A framework provê os principais aspectos necessários para o desenvolvimento de um software para o NAO. Ele tem uma arquitetura modular que permite facil desenvolvimento e substituição de nós. A framework consiste de quatro componentes fundamentais: <br />
- <a href="runtime/">Runtime</a>: Encapsula todos os subcomponentes, instanciando e inicializando eles. <br />
- <a href="hardware-interface/">Interface com Hardware</a>: Abstrai o hardware do NAO, permitindo a comunicação com os sensores e atuadores. <br />
- <a href="cyclers/">Cyclers</a>: Cicla entre os nós, processa dados do hardware e gera saídas. <br />
- <a href="communication/">Comunicação</a>: Permite a comunicação entre o framework e outros recursos, como arquivos, nós e redes.</p>
<p>Esse tópico aborda a framework do nosso software para o NAO. Os capítulos passam por diversos aspectos numa abordagem "de cima para baixo" com uma visão geral, depois detalhando cada parte do sistema. Aqui está uma lista dos capítulos: </p>
<ul>
<li><a href="directory-struct/">Estrutura de diretórios</a>: Explica a estutura de pastas do repositorio. </li>
<li><a href="entry-point/">Entry Point</a>: Inicia a abordagem top-down do sistema, explicando o ponto de entrada do programa na função <code>main</code>. </li>
<li><a href="runtime/">Runtime</a>: Como a runtime faz a conexão entre os módulos do sistema? </li>
<li><a href="cyclers/">Cyclers</a>: O que são os cyclers (ciclos de execução) e como eles rodam os diferentes nós? </li>
<li><a href="nodes/">Nós</a>: O que são os nós e como eles são implementados? </li>
<li><a href="databases-types/">Bases de dados e Tipos</a>: Como os dados são compartilhados entre cyclers e a framework? </li>
<li><a href="parameters/">Parâmetros</a>: Como os parâmetros são passados para os nós pela framework? </li>
<li><a href="communication/">Comunicação</a>: Do que se trata e como é feita a comunicação entre framework e nós? </li>
<li><a href="ball-detection/">Detecção de Bolas</a>: Como a detecção de bolas é feita na framework?</li>
<li><a href="hardware-interface/">Interface com Hardware</a>: Como o hardware é abstraído para a framework? </li>
<li><a href="thread-communication/">Comunicação entre threads</a>: Quais conceitos existem para permitir uma comunicação thread-safe entre os subcomponentes? </li>
<li><a href="filtering/">Filtragem</a>: Como a filtragem de dados é feita na framework e como ela se comporta num software multi-thread? </li>
<li><a href="macros/">Macros</a>: Quais macros são usadas para facilitar o desenvolvimento e como eles funcionam? </li>
<li><a href="error-handling/">Tratamento de erros</a>: Como a framework lida com erros e exceções, e como devo implementar? </li>
</ul>
<p>A framework provê os principais aspectos necessários para o desenvolvimento de um software para o NAO. Ele tem uma arquitetura modular que permite facil desenvolvimento e substituição de nós. A framework consiste de quatro componentes fundamentais: </p>
<ul>
<li><a href="runtime/">Runtime</a>: Encapsula todos os subcomponentes, instanciando e inicializando eles. </li>
<li><a href="hardware-interface/">Interface com Hardware</a>: Abstrai o hardware do NAO, permitindo a comunicação com os sensores e atuadores. </li>
<li><a href="cyclers/">Cyclers</a>: Cicla entre os nós, processa dados do hardware e gera saídas. </li>
<li><a href="communication/">Comunicação</a>: Permite a comunicação entre o framework e outros recursos, como arquivos, nós e redes.</li>
</ul>
<p><img alt="Diagrama do Framework" src="overview.drawio.png" /></p>


Expand Down
2 changes: 1 addition & 1 deletion search/search_index.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion sistema-operacional/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1760,7 +1760,7 @@ <h2 id="capitulos">Capítulos</h2>
<li><a href="home-dir/">Diretório Home</a>: Apresenta o diretório home do NAO, como ele é organizado e como afeta o funcionamento. </li>
<li><a href="linux/">Linux</a>: Detalhes e informações sobre o sistema Linux utilizado no NAO. </li>
<li><a href="wifi/">WiFi</a>: Detalhes da conexão wireless, como configurar e conectar o NAO a uma rede WiFi. </li>
<li><a href="./hula">HULA</a>: O que é e como funciona o HULA, uma das interfaces de hardware. </li>
<li><a href="hula/">HULA</a>: O que é e como funciona o HULA, uma das interfaces de hardware. </li>
</ul>


Expand Down

0 comments on commit 7843e11

Please sign in to comment.