15
Universidade Tecnológica Federal do Paraná – UTFPR Departamento Acadêmico de Eletrônica – DAELN Departamento Acadêmico de Informática – DAINF Engenharia de Computação Oficina de Integração 3 (IF66J) – S71 – 2017/1 Relatório Técnico Robô Aranha Gustavo P. Ramos [email protected] Lucas S. da Silva [email protected] Matheus F. Ferraz [email protected] Rodrigo Y. Endo [email protected] Julho de 2017 Resumo Robôs estão cada vez mais presentes e acessíveis no dia a dia. Entre eles, um modelo de grande popularidade devido à sua estabilidade e ca- pacidade de ultrapassar obstáculos são os robôs hexápodes. Este projeto visa construir e permitir o controle remoto de um robô hexápode de baixo custo. O robô é composto por 18 servomotores, contendo 3 servomotores em cada perna, todos controlados por uma Raspberry PI 3, e utilizando dois drivers PCA9685 para interfaceamento servo/controlador. O algo- ritmo de movimentação foi feito com o uso do Robot Operationg System (ROS), e a linguagem utilizada foi Python. Uma bateria de Lítio Polímero foi utilizada para dar autonomia ao robô, e o controle de energia é feito por um controlador de potência PCA9685. No final, foi obtido um robô capaz de realizar movimentos básicos, que pode receber comandos tanto por uma interface gráfica de um computador, aparelho celular ou tablet quanto por um joypad. 1 Introdução Robôs estão sendo cada vez mais utilizados para as mais diversas tarefas, desde entregas de produtos quanto tarefas domésticas, ou até mesmo para simples en- tretenimento. A tendência é que logo diversos tipos de robôs estejam inseridos no nosso cotidiano, nas mais diversas faixas de preço e utilidades. Um exemplo de aplicação da robótica em evolução é a exploração de am- bientes de difícil acesso. Os robôs exploratórios podem acessar locais que hu- manos não conseguiriam, ou então ambientes muito perigosos para o acesso de pessoas como, por exemplo, locais contaminados por radiação ou produtos químicos. Em geral, os robôs exploratórios são construídos sobre rodas, devido a vasta quantidade de material sobre o tipo de movimento e a sua boa eficiência. Um exemplo conhecido de robô exploratório é o Curiosity Rover [1], um veículo equipado com diversos sensores destinado a explorar a superfície do planeta Marte, que pode ser controlado remotamente. 1

Relatório Técnico - UTFPR

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Relatório Técnico - UTFPR

Universidade Tecnológica Federal do Paraná – UTFPR

Departamento Acadêmico de Eletrônica – DAELN

Departamento Acadêmico de Informática – DAINF

Engenharia de ComputaçãoOficina de Integração 3 (IF66J) – S71 – 2017/1

Relatório TécnicoRobô Aranha

Gustavo P. Ramos – [email protected]

Lucas S. da Silva – [email protected]

Matheus F. Ferraz – [email protected]

Rodrigo Y. Endo – [email protected]

Julho de 2017

Resumo

Robôs estão cada vez mais presentes e acessíveis no dia a dia. Entreeles, um modelo de grande popularidade devido à sua estabilidade e ca-pacidade de ultrapassar obstáculos são os robôs hexápodes. Este projetovisa construir e permitir o controle remoto de um robô hexápode de baixocusto. O robô é composto por 18 servomotores, contendo 3 servomotoresem cada perna, todos controlados por uma Raspberry PI 3, e utilizandodois drivers PCA9685 para interfaceamento servo/controlador. O algo-ritmo de movimentação foi feito com o uso do Robot Operationg System(ROS), e a linguagem utilizada foi Python. Uma bateria de Lítio Polímerofoi utilizada para dar autonomia ao robô, e o controle de energia é feitopor um controlador de potência PCA9685. No final, foi obtido um robôcapaz de realizar movimentos básicos, que pode receber comandos tantopor uma interface gráfica de um computador, aparelho celular ou tabletquanto por um joypad.

1 Introdução

Robôs estão sendo cada vez mais utilizados para as mais diversas tarefas, desdeentregas de produtos quanto tarefas domésticas, ou até mesmo para simples en-tretenimento. A tendência é que logo diversos tipos de robôs estejam inseridosno nosso cotidiano, nas mais diversas faixas de preço e utilidades.

Um exemplo de aplicação da robótica em evolução é a exploração de am-bientes de difícil acesso. Os robôs exploratórios podem acessar locais que hu-manos não conseguiriam, ou então ambientes muito perigosos para o acessode pessoas como, por exemplo, locais contaminados por radiação ou produtosquímicos. Em geral, os robôs exploratórios são construídos sobre rodas, devidoa vasta quantidade de material sobre o tipo de movimento e a sua boa eficiência.Um exemplo conhecido de robô exploratório é o Curiosity Rover [1], um veículoequipado com diversos sensores destinado a explorar a superfície do planetaMarte, que pode ser controlado remotamente.

1

Page 2: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 2

Contudo, em ambientes muito acidentados, os robôs movimentados por ro-das podem não ser a melhor opção, visto que eles podem não ser capazes depassar por diversos tipos de obstáculos, como degraus ou terrenos acidentados.Nesse contexto, este projeto busca montar um robô hexápode de baixo custo,que pode ser controlado remotamente pelo usuário. Um robô desse tipo podeser facilmente adaptado para outras funções, através do acoplamento de senso-res, como, por exemplo, uma câmera para monitoramento, um laser para ma-peamento de ambiente, entre outras diversas possibilidades. A estrutura hexá-pode foi escolhida devido a sua versatilidade e estabilidade em relação a outrosmodelos [2].

O projeto consiste em um sistema embarcado, que é o próprio robô, e umabase de controle. Essa base de controle consiste em uma página Web. Nela ousuário pode enviar comandos para o robô com uma conexão WiFi, eliminandoa necessidade de cabos e dando maior grau de liberdade para o robô.

O robô é constituído de um microcontrolador, servomotores e drivers mon-tados na estrutura hexápode apropriada, como pode ser visto na figura 1. Omicrocontrolador é responsável por todo o processamento da informação. É elequem gera a rede de comunicação, recebe os comandos e os decodifica paraenviá-los aos motores. Os servomotores são responsáveis pela conversão do si-nal em movimento. É necessário um deles em cada articulação do robô, resul-tando em 18 servomotores no projeto. Por fim, os drivers tem a função de per-mitir a comunicação entre o microcontrolador e os servomotores. Cada driverse comunica com o microcontrolador utilizando o protocolo I2C [3], e converteo sinal para uma de suas 16 saídas PWM em que os servomotores estão conec-tados. O esquemático que demonstra uma visão geral do projeto pode ser vistona figura 1. Os requisitos dele são apresentados nas tabelas 1 e 2

Figura 1: Visão geral do projeto

2 Desenvolvimento

Nesta capítulo serão apresentados pormenores do desenvolvimento do projeto,abrangendo uma descrição dos componentes eletromecânicos utilizados e de

Page 3: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 3

Tabela 1: Tabela de requisitos funcionais

1 O robô deverá ser capaz de mover suas pernas de forma a se locomover;1.1 O robô deverá ser capaz de se movimentar em várias direções;1.2 O robô deverá ser capaz de movimentar seu corpo verticalmente;2 O robô deverá ser capaz de seguir comandos instantâneos inseridos pelo usuário;3 O robô deverá seguir rotas pré-estabelecidas, dado um comando da estação base para tal;4 A estação base e o sistema embarcado poderão trocar mensagens;5 A interface deve apresentar opções de controle da direção de movimento e altura do robô,

além da opção de selecionar uma rota pré-programada.

Tabela 2: Tabela de requisitos não-funcionais

1 Será implementado nas linguagens Python e C++;2 A comunicação se dará através do protocolo IEEE 802.11 (WiFi);3 O software ROS deve ser utilizado para a implementação e testes do projeto;4 O software deverá exibir uma interface amigável para o usuário.

como foram integrados até o resultado final do projeto. Na seção 2.1, serãoexplicados todos os aspectos relacionados a estrutura física do hexápode, in-cluindo características das suas dimensões, mobilidades e montagem. A seção2.2 se aprofundará nas características e aplicações dos componentes eletrôni-cos utilizados, detalhando seus atributos e funcionalidades. Por fim, a seção 2.3trará os aspectos computacionais envolvidos, que envolvem o algoritmo de mo-vimentação, as simulações, e a comunicação e controle através da estação base.

2.1 Mecânico

A estrutura física do robô (figura 2) consiste em um frame onde se conectamseis pernas. Cada perna possui três servomotores, consequentemente apresen-tando três graus de liberdade, com cada servomotor podendo deslocar-se comum angulo máximo de 180 graus. Na parte de baixo do frame, estão presos osdois drivers PWM responsáveis por repassar o sinal para cada servomotor. Naparte superior, estão posicionados a Raspberry e a bateria presentes no sistema.

2.1.1 Montagem da estrutura física e Integração

Os primeiros componentes fixados no frame foram os servomotores. Todos elesforam parafusados, e, para melhorar a disposição dos cabos, foi utilizado umorganizador de cabos de plástico para separar o conjunto de fios pertencentesa cada perna. Os servomotores foram então calibrados, com o uso de um servotester, no ponto de operação correspondente a metade de sua variação angulartotal.

Para o posicionamento da Raspberry, visto que não havia espaço para que

Page 4: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 4

Figura 2: Robô Montado

ela ficasse rente ao topo do frame por causa dos servomotores, foi impresso umsuporte com o auxílio de uma impressora 3D. O modelo do suporte foi desen-volvido usando o software FreeCad, e foi pensado com o intuito de manter aRaspberry a uma altura suficientemente elevada para não interferir com outroscomponentes mecânicos. O suporte também possui um espaço oco para posi-cionamento da bateria, que é o componente de maior volume e peso presenteno robô.

Para usar os drivers de interfaceamento PWM, primeiro foi realizada umasolda de forma a selecionar o endereço de cada um deles, seguindo as instruçõesdo datasheet do fabricante [4]. Os drivers e a Raspberry foram fixados em suasrespectivas posições com o uso de lacres.

Por fim, para a conexão de todos os componentes, foi elaborada uma placade circuito impresso simples. Ela foi projetada inicialmente no software Eagle,mas devido a sua simplicidade pôde ser desenhada a mão diretamente na placa.O circuito consiste em trilhas que conectam os pinos de energia (VCC e GND).

2.2 Eletro-Eletrônico

Raspberry É o microcomputador responsável pela execução do sistema ope-racional do Robô-Aranha. É um pequeno computador single-board, escolhidocomo plataforma devido ao fato de possuir recursos suficientes para a execuçãodo projeto (1.2GHz 64-bit quad-core ARMv8 CPU) [5], WiFi integrado e baixocusto.

Adafruit PCA9685 Um driver I2C de controle PWM para servomotores, pos-sui 16 canais de 12 bits, fornecendo os recursos necessários para o controle demúltiplos servos. Sua frequência padrão de operação é 60Hz [4].

Page 5: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 5

(a) Suporte impresso pelaimpressora 3D.

(b) servomotor SG90 (c) Frame utilizado

Figura 3: Partes do hexápode

Pulse Width Modulation(PWM) O controle dos servomotores deve ser feitoutilizando sinais de PWM [6]. PWM (Pulse-Width-Modulation) é uma técnicade modulação que envolve gerar sinais analógicos através de um dispositivo di-gital. Para isso, uma determinada tensão é chaveada entre alta e baixa (VCC eGND, respectivamente) em períodos fixos de tempo, e a razão entre o tempo emque ela está ativa e o tempo do período total do sinal é chamado de duty cycle.Por exemplo, para modelar uma tensão de 2V com um VCC de 10V, basta geraruma onda com período fixo e duty cicle de 20%. Dessa forma é possível imitaro comportamento de um sinal analógico através de um dispositivo digital comoum microcontrolador.

Servomotores SG90 Serão 3 servomotores SG90 em cada perna do robô, cadaum responsável por controlar uma junta do robô-aranha. O SG90 foi escolhidopela equipe pois é um componente com um bom custo-benefício, possui uminterfaceamento comum e simples, é compacto, e sua resposta é rápida. Seuinterfaceamento é feito com o uso de apenas três pinos, sendo eles o GND eVCC, responsáveis pela alimentação, e um pino PWM para controle do sinal. [7]

2.3 Computação

Toda a parte computacional do projeto será descrita nesta seção, começando naseção 2.3.1 pelo framework utilizado para implementação dos nós de controledo robô, o ROS. Na seção 2.3.2 será apresentado como foi feito o processo demodelagem de um modelo tridimensional do robô que pode ser utilizado emsimulações. As etapas da simulação utilizando o software Gazebo estão na seção2.4.1. Por fim as características da base de controle e sua comunicação com osistema embarcado são descritas na seção 2.4.2.

2.3.1 ROS

O ROS (Robotic Operating System) é um framework para projetos de robótica,possui recursos que facilitam troca de mensagens, controle e simulações do gê-nero [8].

Page 6: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 6

Um componente extremamente importante do ROS são os nós, que são pro-cessos que realizam tarefas. Um projeto feito no ROS geralmente consiste de vá-rios nós, em que cada um realiza uma função específica, formando assim umaarquitetura de um grafo. Isso é feito para que um nó feito por uma pessoa possaser posteriormente reutilizada por outra, evitando assim que programadores te-nham que desenvolver todo o projeto do zero. Esses vários nós interligados en-tre si se comunicam através de tópicos e serviços.

Tópicos são os barramentos no qual mensagens são trocadas, que por suavez são apenas arquivos de texto que descrevem que tipo de informação os tó-picos devem trocar. Tópicos são estruturados para funcionar de acordo com omodelo publisher/subscriber, nesse modelo em vez de definir qual nó se comu-nica com qual, é definido para qual tópico determinado nó publica informações(sendo assim um publisher) ou recebe informações (sendo assim um subscri-ber). Dessa forma basta definir para quais tópicos determinado nó está interes-sado em ser publisher ou subscriber. Serviços são apenas outra forma que nóspodem usar para se comunicar. Serviços permitem nós a mandar requisições erespostas.

Na Figura 4 estão representados todos os nós que compõe o projeto.

• rosbridge_websocket: responsável por intermediar a comunicação entrea base de controle e a estação embarcada.

• RoboAranha: nó responsável por gerenciar o envio de comandos para osmotores, é onde o movimento é controlado.

• ServoMaster: nó responsável por controlar os motores.

Também é importante mencionar o sistema de arquivos do ROS, o Catkin[9]que consiste em um build system [10] (parte responsável por decidir a ordem decompilação do código para arquivos binários, dependências e várias outras tare-fas) baseado no CMake. Nele aplicações são organizadas em pacotes, contendoarquivos CMakelist, que contém várias informações importantes sobre o pacoteem questão, como quais são as dependências dele, quais mensagens ele troca,como compilar o pacote para um binário entre outras informações, tornandoassim a compilação dos pacotes mais fácil.

Figura 4: Diagrama de Comunicação

Page 7: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 7

2.3.2 Modelagem

Para criação do modelo do robô, cada uma das peças que o compõe tiveram queser modeladas uma à uma, para mais tarde serem juntadas formando as partesfinais do robô. Para isso foi usado o software FreeCad [11], a figura 5 mostraos modelos criados, em que os modelos peça A, peça B, peça C e peça D foramutilizados como base para a criação dos modelos finais (base, coxa_d, coxa_e,fêmur e tíbia). Todos os modelos foram gerados no formado .st l .

Figura 5: Peças modeladas.

Com todos os modelos 3D prontos, o próximo passo foi utilizar as lingua-gens para modelagem disponíveis no ROS, que são URDF (Unified Robot Des-cription Format), que é um tipo de formato XML, e X acr o (X MLM acr os), quepode ser considerada uma extensão do URDF.

Por seguirem o formato XML ambas as linguagens descrevem o modelo pormeio de tags, que são pré-determinadas. Apesar de tanto o URDF quanto Xacropoderem ser usadas para descrever o modelo, é mais conveniente apenas usarXacro, podendo convertê-lo para URDF caso necessário. O motivo é que o Xa-cro, diferentemente de URDF é bem mais versátil, oferecendo funcionalidadescomo propriedades (equivalente à variáveis de programação), macros e opera-ções matemáticas (apenas as 4 básicas), simplificando bastante o processo demodelagem.

Qualquer modelo de robô consiste de dois elementos, links (as partes dorobô em si, como braços, tronco e cabeça) e joints (as articulações). Elas são re-presentadas no XML pelas tags link e joint. Dentro dessas tags, foram inseridasdiversas outras tags que descrevem as características do robô, como formato dolink, cor, localização no espaço, tipo de articulação, entre outras características.

O primeiro passo na criação do .xacro do modelo do robô foi definir o "base_

Page 8: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 8

link", que é o link básico que todos os modelos devem ter, nesse caso o própriomodelo "base.stl" foi escolhido como base link.

Depois da criação do link da base, o próximo passo foi a definição das pro-priedades, como definição de constantes como o número π, propriedades doservomotor e distâncias em relação ao eixo x para peças da pata direita e es-querda.

Em seguida vem a parte mais importante da modelagem, a construção daspernas. Para isso foi utilizado um macro para cada uma delas. Assim, foi neces-sário criar a perna apenas uma vez, pois cada perna diferente pode ser obtidasubstituindo nos valores das propriedades os valores específicos dela a partir dadeclaração do macro criado ao final do código.

O único cuidado que se deve ter é declarar as distâncias corretas no eixo xentre as peças da perna direita e esquerda, com exceção disso todos os outrosvalores são iguais (Pelo fato das peças serem simétricas), sendo apenas necessá-rio declarar a posição do eixo central de cada uma das pernas no macro.

Para fixar a perna na base foi preciso criar um joint estático entre a basee a perna, e consequentemente um link (indicando o eixo central da perna),caso contrário a perna iria girar em torno do ponto central da base. Com issojá foi possível fazer um joint entre o link criado anteriormente e o link da coxa,permitindo assim fazer um joint entre o link do coxa e o link do fêmur, e, porúltimo, o mesmo processo foi aplicado entre o fêmur e a tíbia.

Com isso, tudo o que restou, foi alterar os valores das propriedades de dis-tâncias das peças em relação ao eixo x, para que as pernas do lado direito e es-querdo estivessem nas posições corretas, e declarar cada uma das pernas emsuas respectivas coordenadas (e ajustar a rotação de todos os links com a pro-priedade rpy da tag).

Após a finalização da descrição do robô, é possível visualizar o grafo doslinks e joints e o próprio modelo 3D. O grafo pode ser visualizado com os co-mandos:

[$ urdf_to_graphoz ] e [evidence ]

O modelo 3D pode ser visualizado com o RViz[12], para isso é necessáriocriar um .launch do modelo. O modelo completo poder visto na figura 6.

2.4 Algoritmo de movimentação

Robot Gait Robot Gait pode ser traduzido para o português como o modo deandar de um robô, ou a sua marcha. Ele determina a ordem em que as pernasse movem, o balanço do corpo e como o corpo em geral se movimenta. Como orobô precisa se manter estável durante o movimento, o estudo do gait é funda-mental para esse tipo de projeto.

No caso de um robô hexápode, existem vários mecanismos para solucionaro problema do modo de andar, sendo que eles dependem do formato do robô edo número de patas utilizadas para apoiar o corpo durante o movimento.

Page 9: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 9

Figura 6: Modelo gerado pelo xacro

Para o caso do modelo utilizado nesse projeto, retangular com as patas dis-tribuídas simetricamente entre os lados, a solução utilizada foi a chamada 3+3.Nela, as patas se movimentam de três em três, com as demais três apoiando ocorpo e se inclinando para frente para facilitar o movimento. [13].

O primeiro passo para realizar a implementação dos gaits foi criar uma fun-ção relacionando valor do pulso de PWM com seu ângulo correspondente emcada motor. Os motores foram posicionados no esqueleto de forma em que va-lores próximos de PWM produzissem valores parecidos de ângulo, para facilitaressa calibragem. Como os valores de PWM e angulo se relacionam de formalinear, somente 2 valores de cada parâmetro foram medidos para cada servoe uma função foi criada para calcular todos os demais valores. Além disso, aequipe verificou os ângulos máximos que garantem que os motores não irãocolidir e implementou uma função para garantir que esses valores não fossemultrapassados.

Com esses dados, foi definido um dicionário que define o ângulo desejadopara cada movimento que cada junta pode fazer. Nas tabelas 3 a 4 pode-se ob-servar o tipo de movimento que uma junta fará e o angulo em que ela deve seposicionar para tal. Por exemplo, se a coxa 1 quiser ir para frente, ela deve semover para o angulo de 150 graus.

Com essas ações definidas, bastou sequenciar um conjunto delas para fazercom que o robô se movimente, ou gere um gait. Na figura 7 está exemplificado ogait para o movimento para frente. Nela, cada quadrado preenchido representao movimento de uma junta. O movimento é considerado completo quando to-das as ações do loop são executadas.

Foram testados diversos gaits para cada movimento na busca dos mais está-veis. Para isso, ao receber um comando para executar determinado gait, o movi-mento foi executado de forma lenta para que a equipe pudesse verificá-lo. Comisso, pequenos ajustes foram feitos para tornar o gait testado o melhor possível.

Page 10: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 10

Coxa Trás Meio Frente1 80 110 1502 60 80 1203 30 75 1204 100 70 305 120 90 606 150 110 60

Tabela 3: Ângulos correspondentes aos servomotores das coxas

Tíbia Esquerda Meio Direita1 0 90 1802 0 90 1803 0 90 1804 0 90 1805 0 90 1806 0 90 180

Tabela 4: Ângulos correspondentes aos servomotores das tíbias

O método mais estável para gerar o movimento foi então encontrado no gait dotipo 3x3, como foi citado anteriormente.

Os gaits, inicialmente enviados ao robô manualmente através de publica-ções de tópicos do ROS para testes, passaram então a serem enviados pela esta-ção base, como pode ser visto na figura 9. Nela, cada pressionada em um botãoenvia a ação correspondente para uma fila de execução, que realizara cada gaitenviado de forma sequencial uma única vez.

2.4.1 Simulação

A simulação do movimento de um robô tem como objetivo prever o movimentoque o robô fará, antes de implementar o algoritmo no robô físico. Isso traz bene-fícios, como a menor chance de ocorrer danos ao robô, além de poder otimizaro algoritmo de movimentação de forma mais simples.

Para realiza-la, é necessário construir um modelo para utilizar no simulador,como foi feito na seção 2.3.2 desse relatório. Além disso, para controlar o robôa partir do ROS, o pacote ros_gazebo_control foi utilizado para realizar a comu-nicação entre o ROS e o Gazebo[14], que foi o simulador utilizado pela equipe.Foram então inseridos no modelo do robô atuadores em todas as juntas. Em se-guida, cada atuador foi descrito em um arquivo de extensão .yaml, que contémum controlador do tipo PID[15] e um listener para receber comandos do ROSpara cada um dos motores. Dessa forma, foi possível iniciar uma simulação em

Page 11: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 11

Figura 7: Exemplo do gait de andar para frente implementado

que os comando publicados pelo ROS resultavam em uma movimentação dorobô.

Contudo, mesmo com o modelo feito e os nós do ROS funcionando no Ga-zebo, ocorreram diversos problemas na simulação. O maior deles ocorreu nosparâmetros do robô, que deveriam possuir características como massa, inércia edistribuição de peso de acordo com o modelo real. As caixas de colisão tambémapresentaram problemas. Outra grande dificuldade ocorreu com o controladordo tipo pid dos servos simulados, que não respondiam do jeito esperado pelaequipe. Isso, somado aos parâmetros físicos faltantes no robô tornaram o mo-delo instável e a movimentação dele imprevisível.

Devido à limitações de tempo, a equipe decidiu utilizar o visualizador RViz[12],que respondeu de uma forma satisfatória aos comandos do ROS. Isso ocorreupois o visualizador somente muda os ângulos dos servos para a posição deter-minada, sem se importar com os parâmetros físicos citados anteriormente.

Como a visualização não mostra precisamente o que vai acontecer no robôreal, ela serviu somente de base para prever os movimentos dos gaits. Todos osgaits feitos para o Rviz tiveram que ser adaptados posteriormente.

2.4.2 Base de controle e comunicação

A estação base é uma página web, feita em HTML5, que utiliza uma bibliotecaROS de javascript (roslibjs) em conjunto com a biblioteca rosbridge para a co-municação da estação base e o Robô. A interface gráfica foi feita utilizando CSS.

A interface gráfica apresenta quatro botões que permitem o usuário movi-mentar o robô para os 4 lados diferentes, há outros dois botões ao lado que per-mitem alterar a altura do robô.

A mensagem ROS é composta apenas por uma string, que apresenta qual

Page 12: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 12

Figura 8: Máquina de Estados da Movimentação do Robô

comando o robô deve realizar (andar pra frente, subir, ou realizar uma trajetó-ria), e um inteiro de 16 bits, que apresenta o número de vezes a se repetir essecomando.

A conexão da estação base ao robô é feita por comunicação sem fio atravésda tecnologia WiFi. O Raspberry Pi 3 já possui uma placa de rede WiFi embutida,possibilitando assim a comunicação entre ela e a estação base.

3 Testes

Para realizar a validação do projeto, e uma análise mais aprofundada do seu realdesempenho, foram estabelecidos diversos casos de teste. Esses casos foramescolhidos de forma a abranger uma ampla gama de dificuldades, desta formaobtendo testes em que é esperado que o robô supere com relativa facilidade, atétestes em que ele provavelmente falhará, obtendo assim uma amostra de suascapacidades e limitações. Cada teste será executado 5 vezes, para se ter umaamostra significativa. Os testes são:

• Mover-se em uma superfície plana sem obstáculos.

• Subir/Descer uma rampa com inclinação de aproximadamente 15º.

• Subir/Descer uma rampa com inclinação de aproximadamente 30º.

• Subir/Descer uma rampa com inclinação de aproximadamente 45º.

• Andar por um terreno acidentado, com obstáculos de até 3cm de altura.

Page 13: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 13

Figura 9: Interface da estação base

• Subir uma escada com degraus de 1cm de altura e 10cm de comprimento.

• Subir uma escada com degraus de 5cm de altura e 10cm de comprimento.

3.1 Resultados dos testes

Os testes realizados em uma superfície plana mostraram-se relativamente sa-tisfatórios. Dos seis gaits implementados (frente, trás, direita, esquerda, cima,baixo) todos funcionaram, sendo que dos 5 testes feitos para cada gait todos fo-ram bem sucedidos. Apesar disso ambos os gaits de frente e trás se deslocamlevemente para o lado esquerdo.

O robô também apresentou desempenho satisfatório dos testes de subida edescida de rampa. Ele conseguiu superar as rampas, embora com nitidamentemais esforço no momento de subir, da forma que era previsto que se comporta-se.

Para terrenos acidentados, o desempenho do robô foi semelhante ao de umasuperfície plana, o ambiente de testes usado foi uma lona com objetos de tama-nhos distintos sob a mesma, dos cinco testes realizados 4 foram bem sucedidos,sendo que no outro o robô falhou pois um de seus pés robô acabou enroscadopor não ter sido erguido o suficiente para superar o obstáculo. Isso ocorreu poisos servomotores do robô não são fortes a suficiente para manter o robô na posi-ção desejada, então certas vezes o robô ao erguer a perna acaba caindo se recli-nando na direção da perna que se levantou, e consequentemente fazendo comque a perna volte a estar com uma altura baixa em relação ao solo. Esse pro-blema foi mais visível quando aplicados os testes da escada, em que o robô con-seguiu superar a escada de 1cm, mas já tendo que se feito manobrar de acordocom a proximidade que a pé do robô chegava em relação à escada. Na escada

Page 14: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 14

de 5cm o robô falhou completamente, pois em nenhum momento o pé chegavaa uma altura suficiente para ultrapassá-la

4 Conclusões

O desenvolvimento deste projeto apresentou certas dificuldades em determina-das etapas, mas ao seu final foi obtido um protótipo hexápode que consegue selocomover seguindo comandos do usuário. Nos testes realizados, ele teve umdesempenho satisfatório.

A parte de simulação utilizando o software Gazebo não pode ser finalizada atempo. Um modelo tridimensional chegou a ser feito, mas foram realizados tes-tes apenas com o software Rviz. Para a finalização da integração, faltou a corretaadequação de certos parâmetros (e.g. parâmetros inerciais) para permitir umasimulação condizente com a realidade, mas o ajuste dos parâmetros inerciais edos atuadores se mostrou complexa e pouco documentada.

Outro fator importante no projeto que teve de ser adaptado é a questão domovimento. A princípio, o movimento seria realizado utilizando cinemática in-versa. Mas a ausência de exemplos envolvendo modelos similares aos do hexá-pode deste projeto tornou esse processo muito complexo para ser implemen-tado em tempo hábil, ainda mais com o fato de não termos a simulação pronta.Foi realizada uma tentativa de treinamento de uma rede neural regressora paragerar a cinemática inversa, mas foi conseguido somente 82% de acerto, o quenão permitiu sua utilização no projeto. Para contornar esse problema, foramimplementados gaits de movimentação manualmente, que funcionam perfei-tamente para 4 dos 6 gaits, sendo que os gaits de frente e trás funcionam, porémcom um pequeno erro de trajetória. O erro é ocasionado pela distribuição depeso do robô.

O sistema contava com uma bateria LiPo 2200mAh, que em teoria fornece-ria uma autonomia de aproximadamente 1h. Entretanto, ela teve que ser subs-tituída por uma bateria LiPo 1000mAh, cuja autonomia quando completamentecarregada é de aproximadamente 20 minutos. Essa troca foi necessária pois aprimeira bateria acabou sendo muito pesada para o robô. Algumas peças dacoxa quebram-se devido ao estresse extra provacado pelo peso da bateria. Umapossível solução para esse problema sem sacrifício da autonomia do protótiposeria substituir as peças de plástico (usadas para diminuir os custos do projeto)por um material mais resistente, e os servomotores por outros de maior torque,mas essas opções foram inviáveis para realizar em tempo hábil neste projeto, oque resultou na escolha de uma bateria com menor capacidade de carga, porémmais leve.

Foram implementadas duas estações base: uma base com joystick e outracom botões virtuais. A base com botões virtuais foi implementada utilizandoum interface web e pode ser executada em qualquer navegador de internet comsuporte a html5 e javascript.A base com joystick traduz pressionamento de bo-

Page 15: Relatório Técnico - UTFPR

Relatório Técnico: Robô Aranha 15

tões em comandos para o robôEsse trabalho alcançou o escopo previsto, mas ainda pode ser melhorado

futuramente, com a finalização da simulação e a implementação da cinemáticainversa. Em projetos futuros, também pode-se adicionar sensores ao robô, adi-cionando novas funções, como mapeamento de ambiente.

Referências

[1] Mars Science Laboratory. https://mars.nasa.gov/msl/.

[2] Sheak Aftab Alli. http://ethesis.nitrkl.ac.in/7508/1/2015_MTD_Design_Alli.pdf.

[3] NXP Semiconductors. I2c-bus specification and user manual. http://www.nxp.com/docs/en/user-guide/UM10204.pdf.

[4] Adafruit PCA9685. https://www.adafruit.com/product/815.

[5] RASPBERRY PI FOUNDATION. https://www.raspberrypi.org/documentation/.

[6] Newton C. Braga. http://www.newtoncbraga.com.br/index.php/robotica/5169-mec071a.html.

[7] SG90 Micro Servo. http://www.micropik.com/PDF/SG90Servo.pdf.

[8] ROS. http://wiki.ros.org.

[9] qeef. Catkin, conceptual overview, 2017. Download: http://wiki.ros.org/catkin/conceptual_overview.

[10] Build systems – basics, 2016. Download: http://docs.sublimetext.info/en/latest/reference/build_systems/basics.html.

[11] Freecad – overview, 2016. Download: https://www.freecadweb.org/wiki/About_FreeCAD.

[12] ROS. http://wiki.ros.org/rviz.

[13] Robot Gait. http://hexapodrobots.weebly.com/types-of-robot-gait.html.

[14] ROS. http://wiki.ros.org/gazebo.

[15] National Instruments. http://www.ni.com/white-paper/3782/pt/.