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.
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
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.
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.
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.
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.
- Ligue o drone.
- Abra um terminal e navegue até a pasta do seu ambiente virtual.
- execute o seguinte comando no seu terminal: sudo python lib/python3.10/site-packages/pyparrot/scripts/ findMinidrone.py.
- Espere o script terminar de buscar o endereço do drone e depois salve-o em algum lugar.
roslaunch turtlebot_bringup minimal.launch
roslaunch turtlebot_navigation gmapping_demo.launch
roslaunch turtlebot_rviz view_navigation.launch
rosrun map_server map_server mymap.yaml
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
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.
Siga os próximos passos para que o L1LMR inicialize corretamente:
- Posicione o Turtlebots 2 em sua posição inicial, e execute todos os launchers do ROS necessários.
- Ligue o Mambo e coloque-o em cima do Turtlebot 2.
- Ligue o server socket.
- Execute o script da controladora.
Pronto o L1LMR estará funcionando.
- 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.