Rover: mudanças entre as edições
mSem resumo de edição |
Sem resumo de edição |
||
| (6 revisões intermediárias por 3 usuários não estão sendo mostradas) | |||
| Linha 1: | Linha 1: | ||
[[Arquivo:tanque-labrador.jpeg|thumb|400px|Tanque de controle remoto]] | [[Arquivo:tanque-labrador.jpeg|thumb|400px|Tanque de controle remoto]] | ||
= Introdução = | |||
O projeto Rover consiste em uma prova de conceito para a viabilidade de um '''remote lab'''. De forma resumida, um '''remote lab''' consiste em conduzir e operar experimentos e equipamentos em um laboratório de maneira remota. Nesse sentido, foi desenvolvido o projeto Rover, que utiliza a placa labrador e pode ser controlado remotamente através de uma interface web. | |||
= Preparando o ambiente de desenvolvimento = | |||
= | == Tecnologias == | ||
*Python 3.8.10; | |||
*Labrador 32 bits; | |||
*Debian 10. | |||
== Componentes == | |||
*Chassi OSEPP Tank Kit; | |||
*Labrador; | |||
*Ponte H L298; | |||
*Bateria 9v, cabos e conectores. | |||
== | == Bibliotecas == | ||
*fastapi 0.103.0; | |||
*uvicorn 0.22.0; | |||
*python-socketio 5.9.0; | |||
*gunicorn 21.2.0. | |||
Recomenda-se o uso de um arquivo '''requirements.txt''' para as bibliotecas. Vale ressaltar que as aplicações desse projeto adotam o uso do arquivo '''requirements.txt'''. | |||
== | = Código fonte = | ||
Há duas bases de código para o Rover. Uma delas é uma aplicação web, que roda em um servidor (computador) e atua como uma interface entre o usuário e o Rover. A aplicação apresenta uma página web onde os usuários utilizam o teclado para emitir comandos de movimento para o Rover. Vale ressaltar que essa aplicação não movimenta o carrinho diretamente; ela apenas captura e emite eventos. A movimentação do carrinho ocorre através do interpretador de movimentos, que será apresentado a seguir. | |||
Trabalhando em conjunto com a aplicação web, há o interpretador de movimentos (script), que efetua o movimento do carrinho. O interpretador é executado no Rover e mantém uma conexão ativa e em tempo real com a aplicação web. Os comandos de movimento emitidos na interface da aplicação são processados por esse script, que então envia sinais de high ou low para movimentar ou parar o carrinho. | |||
[https://github.com/inova-steam-lab/rover-api-socketio/tree/main Acesse o código fonte da aplicação web aqui] e [https://github.com/inova-steam-lab/rover-remote-control acesse o interpretador dos eventos aqui]. | |||
Em cada repositório há instruções de como rodar as aplicações, portanto basta seguir o passo a passo para executar os códigos. | |||
== | = Referências = | ||
*https://www.reddit.com/r/FastAPI/comments/neds9c/integrate_socketio_with_fastapi/; | |||
*https://python-socketio.readthedocs.io/en/latest/intro.html; | |||
*https://fastapi.tiangolo.com/ | |||
*https://stackoverflow.com/questions/73335010/how-to-set-fastapi-websocket-properly-with-nginx | |||
*https://dylancastillo.co/fastapi-nginx-gunicorn/#tech-stack | |||
*https://github.com/caninos-loucos | |||
Edição atual tal como às 19h41min de 25 de junho de 2024

Introdução
O projeto Rover consiste em uma prova de conceito para a viabilidade de um remote lab. De forma resumida, um remote lab consiste em conduzir e operar experimentos e equipamentos em um laboratório de maneira remota. Nesse sentido, foi desenvolvido o projeto Rover, que utiliza a placa labrador e pode ser controlado remotamente através de uma interface web.
Preparando o ambiente de desenvolvimento
Tecnologias
- Python 3.8.10;
- Labrador 32 bits;
- Debian 10.
Componentes
- Chassi OSEPP Tank Kit;
- Labrador;
- Ponte H L298;
- Bateria 9v, cabos e conectores.
Bibliotecas
- fastapi 0.103.0;
- uvicorn 0.22.0;
- python-socketio 5.9.0;
- gunicorn 21.2.0.
Recomenda-se o uso de um arquivo requirements.txt para as bibliotecas. Vale ressaltar que as aplicações desse projeto adotam o uso do arquivo requirements.txt.
Código fonte
Há duas bases de código para o Rover. Uma delas é uma aplicação web, que roda em um servidor (computador) e atua como uma interface entre o usuário e o Rover. A aplicação apresenta uma página web onde os usuários utilizam o teclado para emitir comandos de movimento para o Rover. Vale ressaltar que essa aplicação não movimenta o carrinho diretamente; ela apenas captura e emite eventos. A movimentação do carrinho ocorre através do interpretador de movimentos, que será apresentado a seguir. Trabalhando em conjunto com a aplicação web, há o interpretador de movimentos (script), que efetua o movimento do carrinho. O interpretador é executado no Rover e mantém uma conexão ativa e em tempo real com a aplicação web. Os comandos de movimento emitidos na interface da aplicação são processados por esse script, que então envia sinais de high ou low para movimentar ou parar o carrinho.
Acesse o código fonte da aplicação web aqui e acesse o interpretador dos eventos aqui.
Em cada repositório há instruções de como rodar as aplicações, portanto basta seguir o passo a passo para executar os códigos.
Referências
- https://www.reddit.com/r/FastAPI/comments/neds9c/integrate_socketio_with_fastapi/;
- https://python-socketio.readthedocs.io/en/latest/intro.html;
- https://fastapi.tiangolo.com/
- https://stackoverflow.com/questions/73335010/how-to-set-fastapi-websocket-properly-with-nginx
- https://dylancastillo.co/fastapi-nginx-gunicorn/#tech-stack
- https://github.com/caninos-loucos