Skip to content

Sistema de gerenciamento de warehouse utilizando um robô terrestre e um robô aéreo em sincronia

Notifications You must be signed in to change notification settings

LASER-Robotics/laser_mt_warehouse

Repository files navigation

L1LMR (Laser Logistic Multi Robots)

O Sistema

O robô é composto por um drone e um robô terrestre atuando como uma base de pouso móvel, ao drone esta acoplado uma câmera para o processamento dos códigos de barras da warehouse.

Setup

Utilizou-se para o robô terrestre o Turtlebot 2, usando o Ubuntu 16.04 com a distribuição do ROS Kinetic , mantendo a compatibilidade entre o robô e SO utilizado. Logo abaixo contém um passo a passo de como realizar a instalação do Turtlebot no Ubuntu:

sudo apt install ros-kinetic-turtlebot*
mkdir catkin_ws/src
catkin init
OBS: Dentro da pasta src coloque os itens contido em Turtlebot2/packages 
catkin build    

Após instalar o sistema operacional crie um ambiente virtual de trabalho python para que você possa instalar as dependências para executar o projeto, depois de criar o ambiente e estiver com ele ativado execute a seguinte linha de comando no terminal para instalar as dependências do projeto:

pip install -r requirements.txt

Como configurar o L1LMR

Câmera

Comecaremos configurando a camera acoplada ao drone. Como o nosso drone nao tinha uma câmera colocamos um modúlo ESP-CAM para ser a nossa câmera.

ESP-CAM

Para compilar o código para o módulo ESP-CAM é preciso usar um módulo FTDI pois a ESP-CAM não possui entrada micro usb, através do módulo FTDI o código é passado através de comunicação serial.

Ao montar o esquemático mostrado na figura vocês está pronto para compilar o código da câmera para o módulo ESP-CAM, o arquivo a ser compilado é o arquivo Embedded_esp_cam.ino, mas antes de compilar configure o IP do server e a porta de acesso.

Depois de compilar o código basta desconectar todos os fios e ligar apenas os fios de alimentação 5V e GND para que o módulo execute o código compilado.

Servidor socket

Como nosso drone não possui desempenho suficiente para processar os códigos de barras a maneira de solucionar esse problema foi fazer o processamento externamente em outro computador.

O módulo ESP-CAM publica as imagens capturadas no servidor socket e o servidor recolhe as imagens salva e as processas, salvamos porquê ao fim poderemos montar um video da visão do drone. Para salvarmos é necessário criar uma pasta e passar o PATH da pasta para o script do server API_image_processing_L1LMR1.py.

Para iniciar o server de processamento das imagens execute o script API_image_processing_L1LMR1.py, lembre de colocar o mesmo IP e porta usado na compilação da ESP-CAM. Depois é só ligar o módulo ESP-CAM e esperar as imagens começarem a ser salva e processadas.

Drone

O drone que utilizamos foi o mambo da marca Parrot, para controlar o drone é utilizado a biblioteca pyparrot, através da bilbioteca é possivel mandar comandos pré-programados para o mambo.

Nenhum código é embarcado no drone pois ele é um dispositivo "caixa preta" a biblioteca atua como um protocolo de comunicação entre o drone e o script em python.

A comunição com o drone pode ser feita através do BLE (bluetooth low energy) ou por WiFi, foi utilizado a comunicação por BLE. Para isso precisamos saber o endereço bluetooth do mambo siga os passos abaixos para conseguir o endereço do mambo.

  1. Ligue o drone.
  2. Abra um terminal e navegue até a pasta do seu ambiente virtual.
  3. execute o seguinte comando no seu terminal: sudo python lib/python3.10/site-packages/pyparrot/scripts/ findMinidrone.py.
  4. Espere o script terminar de buscar o endereço do drone e depois salve-o em algum lugar.

Turtlebot 2

  • Para a 1 interação é necessário mapear o local, no qual o turtlebot irá operar usando os seguintes comandos:
  • roslaunch turtlebot_bringup minimal.launch 
    roslaunch turtlebot_navigation gmapping_demo.launch
    roslaunch turtlebot_rviz view_navigation.launch
    
  • Ao finalizar é necessário salvar o arquivo do mapa utilizando o seguinte comando:
  • rosrun map_server map_server mymap.yaml
    
  • Após essas etapas é so rodar o comandos para a operação do turtlebot
  • EXPORT TURTLEBOT_MAP_FILE="$(CAMINHO DO ARQUIVO)"
    roslaunch turtlebot_bringup minimal.launch
    roslaunch turtlebot_navigation amcl_demo.launch (espere a odometria)
    roslaunch turtlebot_rviz view_navigation.launch
    

    Controladora

    Por ultimo configure a controladora que vai fazer a união do robô aéreo e terrestre. Essa parte é bem rápida, abra o arquivo L1LMR1.py coloque o endereço bluetooth do drone como parâmetro na inicialização da classe Drone, depois coloque o ID do Turtlebot 2 dependendo de quantos L1LMR irá ser usado, e pronto a controladora está configurada.

    Como lançar o L1LMR

    Siga os próximos passos para que o L1LMR inicialize corretamente:

    1. Posicione o Turtlebots 2 em sua posição inicial, e execute todos os launchers do ROS necessários.
    2. Ligue o Mambo e coloque-o em cima do Turtlebot 2.
    3. Ligue o server socket.
    4. Execute o script da controladora.

    Pronto o L1LMR estará funcionando.

    Como usar mais de um L1LMR

    • Primeiro compile o Embedded_esp_cam.ino na ESP-CAM colocando uma nova porta para acesso da API de processamento.
    • Agora clone os seguintes arquivos API_image_processing_L1LMR1.py, L1LMR1.py enumerando o fim dos arquivos com o ID do novo L1LMR.
    • Depois coloque a porta usada pela ESP-CAM para acessar a API, no arquivo do server e coloque o PATH da pasta para armazenar as imagens do novo L1LMR.
    • Siga os passos anteriores que ainda não foram feitos.

    About

    Sistema de gerenciamento de warehouse utilizando um robô terrestre e um robô aéreo em sincronia

    Resources

    Stars

    Watchers

    Forks

    Releases

    No releases published

    Packages

    No packages published