Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Federal do Rio Grande do Norte Centro de Tecnologia - CT Curso de Engenharia Mecatrônica Odometria baseada em Unidade de Medida Inercial para Andador Robótico Inteligente Rodrigo Rodrigues Bezerra Natal 2022 Rodrigo Rodrigues Bezerra Odometria baseada em Unidade de Medida Inercial para Andador Robótico Inteligente Trabalho de Conclusão de Curso apresentado ao curso de Engenharia Mecatrônica da Uni- versidade Federal do Rio Grande do Norte como parte dos requisitos para a obtenção do título de Engenheiro Mecatrônico, orientado pelo Prof. Pablo Javier Alsina Universidade Federal do Rio Grande do Norte (UFRN) Centro de Tecnologia (CT) Curso de Engenharia Mecatrônica Orientador: Pablo Javier Alsina Natal 2022 Bezerra, Rodrigo Rodrigues. Odometria baseada em unidade de medição inercial para andador robótico inteligente / Rodrigo Rodrigues Bezerra. - 2022. 45f.: il. Monografia (Graduação) - Universidade Federal do Rio Grande do Norte, Centro de Tecnologia, Curso de Engenharia Mecatrônica, Natal, 2022. Orientador: Dr. Pablo Javier Alsina. 1. Smart Walker - Monografia. 2. IMU - Monografia. 3. Beaglebone Blue - Monografia. 4. Eletrônica - Monografia. I. Alsina, Pablo Javier. II. Título. RN/UF/BCZM CDU 004 Universidade Federal do Rio Grande do Norte - UFRN Sistema de Bibliotecas - SISBI Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede Elaborado por Raimundo Muniz de Oliveira - CRB-15/429 Rodrigo Rodrigues Bezerra Odometria baseada em Unidade de Medida Inercial para Andador Robótico Inteligente Trabalho aprovado. Natal, 27 de julho de 2022: Pablo Javier Alsina Orientador Márcio Valério de Araújo Avaliador interno Marcelo Borges Nogueira Avaliador interno Natal 2022 Agradecimentos Aos meus pais, Maria Adriane Rodrigues Bezerra e Francisco De Assis Bezerra Chagas, que estiveram ao meu lado o tempo todo e não permitiram que eu desistisse. Aos cientistas e pesquisadores, por fornecerem todas as respostas que preciso. Ao professor Orivaldo Santana por me dá uma oportunidade em uma bolsa de iniciação científica e expandir minha área de aprendizado. Ao meu professor orientador Pablo Javier Alsina, por todo o conhecimento, paciência e dedicação ao longo do curso. Aos meus amigos, por todos os bons momentos. “O êxito da vida não se mede pelo caminho que você conquistou, mas sim pelas dificuldades que superou no caminho. (Abraham Lincoln) Resumo Este trabalho tem como objetivo o desenvolvimento da parte eletrônica e de calibração de odometria de um andador robótico inteligente, do inglês Smart Walker, para que se locomova em ambientes conhecidos e colete os dados de localização da forma mais precisa possível em um sistema de sensores inerciais presentes em um microchip de Unidade de Medidas Inerciais, da sigla IMU (do inglês, Inertial Measurement Unit) . A composição da arquitetura eletrônica inclui um microcomputador embarcado, chamado de Beaglebone Blue, e o microcontrolador, Arduino Uno, assim como motores de corrente contínua e seu driver, composto de duas pontes H, em formato de shield. Por fim é realizado testes com algorítimos de controle manual do robô para coleta de dados em percurso para cálculo de erros de precisão no sistema de localização odométrico. Palavras-chave: Smart Walker; IMU; eletrônica; Beaglebone Blue; erros. Abstract This work has as objective the development of the electronic and adjustment part of odometry of Smart Walker, so that travel in familiar environments and collect location data as accurately as possible in a system of inertial sensors present in a microchip Inertial Measurements Units, from the acronym IMU. The composition of the electronic architecture includes a microcomputer, called Beaglebone Blue, and the microcontroller, Arduino Uno, as well such as direct current motors and their driver, composed of two H-bridges, in of shield. Finally, robot manual control algorithms are performed to data collection en-route to calculate accuracy errors in the location system odometer. Keywords: Smart Walker; IMU; electronics; Beaglebone Blue; errors. Lista de abreviaturas e siglas UFRN Universidade Federal do Rio Grande do Norte SW Smart Walker DC Direct Current USB Universal Serial Bus IMU Inercial Measurement Units MEMS Microelectromechanical Systems ROS Robot Operating System IDE Integrated Development Environment PWM Pulse Width Modulation I2C Inter-Integrated Circuit RPM Rotações Por Minuto Sumário 1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3 Visão geral dos capítulos seguintes . . . . . . . . . . . . . . . . . . . . . 10 2 Fundamentação teórica . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1 Modelagem do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 Inercial Measurement Units (IMU) . . . . . . . . . . . . . . . . . . . . . 12 2.3 Odometria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3 Desenvolvimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1 Eletrônica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.1.1 Microcomputador e microcontrolador . . . . . . . . . . . . . . . . . . . 20 3.2 Calibração da odometria . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.1 Orientação com giroscópio . . . . . . . . . . . . . . . . . . . . . . . . . 30 4.2 Orientação com magnetômetro . . . . . . . . . . . . . . . . . . . . . . . 33 4.3 Orientação com fusão de sinais de sensores . . . . . . . . . . . . . . . . 34 4.4 Discussões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.5 Considerações finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5 Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 ANEXO A – Odometria com giroscópio . . . . . . . . . . . . . . . 42 ANEXO B – Odometria com fusão . . . . . . . . . . . . . . . . . . 43 ANEXO C – Pseudocódigos . . . . . . . . . . . . . . . . . . . . . . 44 9 1 Introdução 1.1 Motivação Mobilidade é a habilidade física mais importante que impacta diretamente na vida de uma pessoa, seja em atividades individuais ou em grupo. Esta capacidade é reduzida com o envelhecimento, ferimentos e doenças neurológicas e motoras. Atualmente, a maioria dos sistemas passivos, tais como órteses tornozelo-pé, são usados para apoiar a mobilidade e a independência. Para auxiliar na caminhada, são utilizadas muletas ou andadores, pois são capazes de descarregar as articulações para evitar dores causadas por doenças musculoesqueléticas, como a osteoartrite. A fim de fornecer maiores capacidades, dispositivos elétricos como cadeiras de rodas elétricas ou andadores inteligentes funcionam como um meio de aliviar esses esforços musculares (GRIMMER et al., 2019). Andadores são estruturas simples na qual usuários suportam seus cotovelos ou mãos como primeiro passo para iniciar a marcha. Os avanços na robótica permitiram aos pesquisadores desenvolver nova geração de andadores, os Smart Walkers (SWs)(JúNIOR, 2021). Estes são dispositivos assistidos que apresentam atuadores e sensores que auxiliam na locomoção de pessoas com deficiência por meio de navegação assistida, detecção e prevenção de obstáculos. Dentro desse contexto, um dos desafios é implementar um controle e planejamento a fim de garantir um percurso preciso e seguro ao usuário utilizando os três princípios básicos de robôs autônomos: percepção, decisão e atuação. A primeira funciona como os sentidos humanos, por meio de sensores o robô identifica por onde está se movimentando. No caso das funções de decisão,são as funções do robô correspondentes análogas às funções de decisão do cérebro humano, servindo de controle para as ações e escolhas baseadas nos dados adquiridos na percepção. A última funciona como os músculos humanos, por meio de motores, promovendo mobilidade e interação com o ambiente. Os sensores são essenciais para aquisição de dados do ambiente e podem ser classi- ficados como: internos e externos. O primeiro fornecem informações sobre os parâmetros internos do robô, como por exemplo, avaliação do nível de carga de bateria, potenciôme- tro, codificadores e sensores inerciais, como acelerômetro, giroscópios e bússolas. Já os externos lidam com a observação de aspectos do mundo exterior ao robô, como sensores de força-peso, sensores de alcance baseados em ultrassom e câmeras. O SW proposto neste trabalho é composto pela integração desses dois tipos de sensores, na qual o microcompu- tador Beaglebone Blue é responsável pela leitura dos sensores internos do robô já citados Capítulo 1. Introdução 10 anteriormente e também da câmera utilizada para processamento de imagens, além de gerenciamento e processamento de dados. Os dados externos serão gerenciados por um microcontrolador programável Arduino UNO, que também fará o controle de acionamento dos motores elétricos DC (Direct Current), também conhecidos como motores de corrente contínua. Sendo estes motores, responsáveis por rotacionar as rodas do andador, gerando seu movimento. Este trabalho foca no desenvolvimento e implementação da arquitetura eletrônica do SW, na qual sensores e atuadores são conectados a um Sistema Embarcado com um Sistema Operacional (SO) instalado. 1.2 Objetivo O principal objetivo deste trabalho consiste em aplicar técnicas de localização para determinar a posição do andador inteligente da forma mais precisa possível. Para alcançá-lo, os seguintes objetivos são propostos: • Planejar e implementar uma arquitetura eletrônica embarcada que possibilitará a coleta e processamento de dados dos sensores, sejam eles internos ou externos; • Realizar uma comunicação serial entre Beaglebone Blue e o Arduino UNO para troca de informações de sensores e comandos de controle; • Desenvolver uma estratégia de calibração incorporando técnicas de odometria em um sistema puramente inercial, baseado somente na leitura da IMU da Beaglebone Blue. 1.3 Visão geral dos capítulos seguintes O Capítulo 2 apresenta conhecimentos teóricos que fundamentam o desenvolvimento deste trabalho, informações sobre a IMU, cálculo da odometria e estrutura eletrônica presentes no andador inteligente. O Capítulo 3 apresenta a metodologia do trabalho. definindo qual o tipo de proble- mática será resolvida, abordando cada parte fundamental da arquitetura de hardware e software do robô, assim como problemas e soluções encontrados durante o seu desenvolvi- mento. O capítulo 4 apresenta os resultados da metodologia abordada, discutindo e anali- sando os dados gerados. Por fim, o Capítulo 5 conclui este trabalho. 11 2 Fundamentação teórica 2.1 Modelagem do Sistema Como início de um projeto complexo que visa implementar várias gamas de dis- positivos e sistema de assistência humana, o SW foi projetado para agir como um robô móvel, realizando o processo de navegação para alcançar o destino estabelecido. A modela- gem do fluxo de informação do andador foi feita de tal forma que os dados gerados em tempo real pela IMU serão processados e passados para o microcontrolador para acionar o robô, retornando com os dados atualizados para o microcomputador à medida que a movimentação é realizada, como mostrado no diagrama de fluxo de informação da figura 1. Figura 1 – Diagrama do fluxo de dados Fonte: autoria própria O microcomputador, chamado de Beaglebone Blue, é responsável pela interação do robô com o usuário. A Beaglebone receberá os pontos e coordenadas de interesse para onde o usuário deseje que o robô se movimente e enviará esses pontos para o microcontrolador Arduino. Uma vez que este tenha recebido esses valores, é iniciado a movimentação do SW, definindo seu ponto atual como ponto inicial do movimento e orientação, e o ponto enviado pelo microcomputador como ponto final. O envio dos dados entre microcomputador e microcontrolador se dá por meio de um protocolo de comunicação serial USB (Universal Serial Bus). Os dados são enviados por meio de um cabo USB ligando a Beaglebone Blue e o Arduino. Ao receber os comandos, o microcontrolador começará com os algoritmos de controle para que o andador se movimente através da placa responsável por enviar energia aos motores, uma placa de circuito conhecida como Motor Shield VNH3SP30, que funciona como uma ponte H. Uma ponte H é um circuito eletrônico de potência, que converte uma fonte de tensão fixa de corrente Capítulo 2. Fundamentação teórica 12 contínua em uma tensão de corrente contínua variável, sendo possível assim determinar o sentido da corrente, polaridade da tensão e a tensão no sistema. O Shield irá enviar os valores correspondentes de tensão para ambos os motores, esquerdo e direito, realizando o movimento do robô. Conforme o SW vai se movimentando, os sensores inerciais presentes no Beaglebone, estarão gerando dados de aceleração linear, velocidade angular e orientação do robô através da IMU. Esses valores serão processados para ser feito o cálculo de odometria para aquisição dos pontos de coordenadas e orientação atuais do robô. 2.2 Inercial Measurement Units (IMU) Sensores de movimento reagem e detectam movimentos físicos, incluindo parâmetros como aceleração, taxa de movimento e distância, já sensores inerciais são um tipo especial de sensor de movimento. IMUs, também chamados de Unidades de Medição Inerciais, integram alguns sensores de movimento em um só dispositivo e podem provê informações de posição com alta precisão, dependendo da qualidade do dispositivo. A IMU integrada no Beaglebone Blue, consiste de um sistema eletromecânico conhecido como MEMS (Microelectromechanical Systems), uma tecnologia de manufatura da microeletrônica desenvolvida a pártir de 1967, fruto da combinação de conceitos da microeletrônica, engenharia mecânica, ciência dos materiais, física e química (OLIVEIRA; GONçALVES, 2017). A IMU utilizada é um circuito integrado MPU-9250, um rastreador de movimento de 9 eixos que combina um giroscópio de 3 eixos, acelerômetro de 3 eixos, magnetômetro de 3 eixos e um Digital Motion Processor(DMP) (Invensense, 2016), conforme apresentado na figura 2. O MPU-9250 também possibilita uma calibração em tempo real e fusão dos sinais dos sensores. Capítulo 2. Fundamentação teórica 13 Figura 2 – Exemplo dos eixos e graus de liberdade da IMU Fonte: Invensense (2016) O acelerômetro mede a aceleração linear, incluindo componentes de aceleração causados pelo movimento do dispositivo e aceleração da gravidade, a medição é feita em m/s2. Os acelerômetros estão disponíveis com um, dois ou três eixos, que definem um sistema de coordenadas X, Y, Z. Os dados do sensor podem ser usados para medir a posição relativa a uma posição inicial, ao fazer uma integração dupla do vetor aceleração, porém este método apresenta um acúmulo de erro ao longo do tempo gerados pela própria medição de aceleração, o que é algo extremamente prejudicial. O giroscópio mede as mudanças de posição angular, geralmente expressas em radianos por segundo. A integração da velocidade angular ao longo do tempo resulta em um ângulo de deslocamento medido que pode ser usado para rastrear mudanças na orientação. Os sensores de giroscópio estão disponíveis com um, dois ou três eixos correspondentes aos ângulos de inclinação(roll), rotação(pitch) e guinadas(yaw). Os giroscópios rastreiam o movimento relativo independentemente da gravidade, portanto, erros de polarização ou integração do sensor resultam em um erro de posição chamado deriva, do termo em inglês drift. Já o magnetômetro mede a força do campo magnético, geralmente em µT , utilizando o sensor de efeito Hall para medir os três componentes do campo magnéticonormais à superfície do chip. Para de determinar a orientação de um corpo no espaço, é utilizado o acelerômetro para determinar a direção para baixo, ou seja, a direção do vetor da gravidade. Isso é utilizado para determinar os componentes do campo magnético no plano horizontal. O vetor do campo magnético aponta para a mesma direção do norte magnético utilizado em compassos. O campo magnético da Terra é muito fraco, portanto o magnetômetro precisa ser bem sensível aos campos magnéticos, fazendo com que o sensor seja bem suscetível aos campos magnéticos aleatórios gerados por outros dispositivos eletrônicos e também de motores elétricos, além da presença de estruturas metálicas no ambiente, as Capítulo 2. Fundamentação teórica 14 quais distorcem o campo magnético terrestre. A finalidade do DMP é diminuir os requisitos de temporização e o poder de proces- samento do processador da Beaglebone. Normalmente, os algoritmos de processamento de movimento devem ser executados em uma frequência elevada, geralmente em torno de 200 Hz, para fornecer resultados precisos com baixa latência. Isso é necessário mesmo que o aplicativo seja atualizado a uma frequência muito menor. Por exemplo, uma interface de usuário de baixo consumo pode ser atualizada tão lentamente quanto 5 Hz, mas o processamento de movimento ainda deve ser executado em 200 Hz. O DMP pode ser usado como uma ferramenta para minimizar a potência, simplificar o tempo, simplificar a arquitetura de software e salvar valiosos MIPS (Milhões de Instruções Por Segundo) no processador da Beaglebone para o uso da IMU. Os sensores da IMU apresentam erros conhecidos como o bias, um desvio regis- trados pelos sensores, e medições aleatórias por conta de ruídos. Mais detalhes sobre o funcionamento do acelerômetro e giroscópio, e a causa dos erros podem ser encontrado no trabalho (WOODMAN, 2007). Tais erros têm um grande impacto na localização do robô, uma vez que a odometria, técnica responsável por calcular a posição do robô, é um método de localização relativa, que se caracteriza por utilizar de cálculos acumulativos, somando erros passados, gerados pela medição do sensor, com novos erros. Assim, o erro da localização do robô terá uma característica exponencial, como ilustrado na figura 3. Figura 3 – Representação do erro acumulativo da Odometria Fonte: Ribeiro (2021) As medições da aceleração, velocidade angular e campo magnético são dadas pelas equações 2.1, 2.2 e 2.3: Capítulo 2. Fundamentação teórica 15 aacel = ax ay az + ba + na(m/s2) (2.1) ωgiro = ωx ωy ωz + bg + ng(rad/s) (2.2) mag = magx magy magz + bm + nm(µT ) (2.3) Onde aacel, wgiro e mag são os vetores da aceleração, velocidade angular e campo magnético respectivamente, que são medidos em três eixos: ax, ay e az; ωx, ωy e ωz; magx, magy e magy. Enquanto ba, bg, bm são as medições do bias modelado como processo de passo aleatório, e na, ng e nm são ruidos brancos Gaussianos. Os valores de aceleração e velocidade angular da IMU são utilizados para obtenção da velocidade, posição e orientação de um objeto em movimento em intervalos de tempo utilizando condições previamente determinadas. No caso de o robô sair do ponto repouso, a velocidade e posição prévias são os pontos de origem, ou seja, valores zero. A figura 4 ilustra esse processo. Figura 4 – Modelo para o cálculo da Odometria a partir da IMU Fonte: Adaptado de Woodman (2007) É possível determinar o norte magnético através de uma manipulação de vetores dos eixos medidos pelo magnetômetro. Como pode ser observado na imagem 5, o vetor do campo magnético B⃗ está no plano tridimensional, portanto para projetar esse vetor no plano XY, primeiro é necessário achar sua norma, ou seja, seu comprimento, utilizando a equação 2.4. Com a norma é possível achar os cossenos diretores dos ângulos dos eixo x e Capítulo 2. Fundamentação teórica 16 y com o vetor B⃗ com as equações 2.5 e 2.6, que por sua vez são utilizadas para encontrar a norma do vetor projetado no plano XY em 2.7. Repetindo os processos com os cossenos diretores dos eixos x e y em 2.8 e 2.9, tem-se os componentes ao longo dos eixos x e y do vetor projetado e a equação 2.10 é utilizada para achar o ângulo θ entre o eixo x e o norte magnético, no fim transformando-o de radianos para graus para melhor observar o comportamento da bússola. Figura 5 – Plano cartesiano da IMU Fonte: Autoria própria norma = √ (magx)2 + (magy)2 + (magz)2 (2.4) dirx = magx norma (2.5) diry = magy norma (2.6) normaproj = √ (dirx)2 + (diry)2 (2.7) xproj = dirx normaproj (2.8) yproj = diry normaproj (2.9) θcomp = atan2(yproj, xproj) ∗ 180 π (2.10) Capítulo 2. Fundamentação teórica 17 2.3 Odometria Odometria é o método de navegação mais difundido na literatura de localização de robôs móveis de acordo com (BORENSTEIN; EVERETT; FENG, 1996). É um sistema que provê uma boa precisão à curto prazo e permite alta amostragem de dados. Entretanto, a ideia fundamental da odometria é a integração do movimento incremental, neste caso, da aceleração linear e velocidade angular, por isso é inevitável a acumulação de erros, particularmente a acumulação dos erros de orientação que causam grandes erros de posicionamento que vão aumentando conforme a distância em que o robô se locomove. É comum encontrar diversos trabalhos que utilizam da fusão sinais de sensores para calcular o posicionamento do robô (VAZ, 2016)(FERREIRA; HEMERLY, 2010), procurando compensar as imperfeições dos sensores menos exatos, de forma a aproveitar características complementares dos sistemas envolvidos. Com isso é possível melhorar as estimativas e a precisão da medição, obtendo dados mais confiáveis para uma melhor localização do robô. Como explicado na última seção, as equações de odometria podem ser geradas com a integração dos valores da aceleração e velocidade angular medidos pela IMU, como exemplificado na imagem 4. Realizando a discretização pelo método de Euler das equações 2.11, 2.12 e 2.13, obtém-se as equações 2.14, 2.15 e 2.16, nas quais T é o período de amostragem, representando a velocidade, posição e orientação, respectivamente. Ao separar a equação da posição 2.15 nos eixos (x,y), são encontradas as coordenadas de posição no plano cartesiano da odometria em 2.17 e 2.18. V = ∫ t 0 a(t)dt (2.11) P = ∫ t 0 V (t)dt (2.12) θ = ∫ t 0 ω(t)dt (2.13) Vk = Vk−1 + a.T (2.14) Pk = Pk−1 + Vk.T (2.15) θk = θk−1 + ω.T (2.16) Capítulo 2. Fundamentação teórica 18 xk = xk−1 + Vk.cos(θ).T (2.17) yk = yk−1 + Vk.sin(θ).T (2.18) Como já informado, o sistema de odometria é passível de erros, uma vez que a localização do robô é obtida por meio da integração de medições de pequenos deslocamentos a cada período de amostragem, erros estes, que tendem a acumular a cada interação, diminuindo a precisão da localização calculada pela odometria. Por conta disso, é utilizada em conjunto com algum método de localização absoluta. Em caso de não ser possível a utilização desse método, a calibração da odometria é mais importante, pois irá diminuir o acúmulo do erro, tornando mais lento o seu crescimento. 19 3 Desenvolvimento O desenvolvimento do projeto do Smart Walker foi realizado em conjunto com o aluno de graduação Alberto Tavares, quem ficou responsável pela projeção e fabricação das peças da parte mecânica do modelo protótipo do dispositivo, afim de criar uma estrutura em que fosse possível aplicar toda a tecnologia necessária para criação de um robô móvel. A figura 6 apresenta a estrutura final protótipo e mais detalhes sobre o planejamento e processo de fabricação pode ser encontrado em (OLIVEIRA, 2022). O presente trabalho foca na parte eletrônica de hardware e software para controle de robô móvel, integrando esse sistema ao Smart Walker. Figura 6 – Estrutura do Smart Walker. Fonte: autoria própria 3.1 Eletrônica O planejamento do sistema eletrônico foi feito tendo um computador de bordo, nesse caso o Beaglebone Blue, como núcleo, por causa das possibilidadesfornecidas pelo hardware no campo da robótica. A arquitetura eletrônica integra os sensores da IMU com os atuadores, sendo basicamente estruturada em duas partes, a de aquisição e processamento Capítulo 3. Desenvolvimento 20 de dados do sensoriamento inercial, e a de controle de atuadores e recepção de dados dos sensores auxiliares. A primeira é composta pelo Beaglebone Blue e a segunda pelo microcontrolador Arduino. Todos os componentes utilizados estão citados na tabela 1. Tabela 1 – Componentes eletrônicos utilizados. Componente Quantidade Beaglebone Blue 1 Arduino Uno 1 Motor DC 12V 2 Driver VNH3SP30 1 Bateria Lipo 2s 7.4v 1500mah 1 Bateria Nobreak 12v 2 Servo motor 1 Kinect V1 1 Fonte: autoria própria 3.1.1 Microcomputador e microcontrolador A Beaglebone Blue possui um conjunto de recursos de hardware dedicado para projetos de robótica, indo desde sensoriamento até controle de motores DC e servo-motores conforme mostrado na figura 7. Apesar desses recursos, a placa foi projetada para robôs de pequeno a médio porte, tornando parte de seu hardware, como os drivers e encoders para motores DC, inviáveis para o projeto Smart Walker, portanto é possível fazer uma substituição, se acrescentar outros sensores essenciais para a criação de um robô autônomo, por outro microcomputador, como o Raspberry Pi, caso haja a necessidade. É possível instalar na placa um Sistema Operacional Linux, sendo o Debian a versão oficial suportada pela fabricante. Foi decidido utilizar o Debian 10 (Buster) IoT, uma versão sem Desktop gráfico com menos recursos instalados, possibilitando mais espaço de memória, este que é um problema na placa, pois só dispõe de 4GB de memória interna, entretanto o problema foi solucionado adicionando um cartão micro-SD (Secure Digital) de 32 GB. Todo processo de instalação e configuração poder ser encontrado em (Beagleboard, 2016), (GRIMMETT, 2017) e (Rodrigo Rodrigues, 2022). Também é possível instalar a versão Ubuntu Linux, que tem mais suporte para instalação de distribuições como o ROS (Robot Operating System), porém é menos compatível com o Linux embarcado, dificultando sua configuração. A Beaglebone funciona como um computador de bordo, servindo como centro de comando, sendo responsável pelo envio e processamento de dados e pela interação Capítulo 3. Desenvolvimento 21 entre humano-máquina. É nela onde serão feitas a coleta de dados da IMU e cálculos da odometria para localização do andador inteligente. O software nativo do Beaglebone Blue possui suporte para a biblioteca Robot Control (RobotControl, 2022), que possui algoritmos open-source para desenvolvimentos de projetos robóticos. Dentro dessa biblioteca é possível encontrar funções na linguagem C para leitura dos sensores da IMU, fornecendo aceleração (m/s2), velocidade angular (rad/s) e orientação (º). Segundo (GRIMMETT, 2017), fazer a comunicação entre Arduino e Beaglebone é mais simples na linguagem Python. Assim, a coleta de dados da IMU e cálculo da odometria foram feitos em C, passando esses dados para um código em Python para enviar comandos ao Arduino. Figura 7 – Recursos de hardware do Beaglebone Blue. Fonte: (Beagleboard, 2016) O Arduino, por ser uma placa de prototipagem rápida bem difundida, tem um grande acervo de bibliotecas e literaturas para facilitar a programação, esta feita por meio de um ambiente de desenvolvimento integrado (IDE). Por meio de uma conexão USB (Universal Serial Bus), é feita a programação em um computador com a IDE instalada, sendo utilizada uma linguagem própria, baseada nas linguagens C/C + +, sendo possível implementar tanto um códigos simples, como acender um led com uma das portas, quanto implementar um sistema de controle. Por esse motivo, o microcontrolador é responsável pela recepção de dados dos sensores complementares, além do controle e acionamento elétrico dos atuadores. Por ser considerado uma placa de prototipagem, o Arduino dispõe de uma robustez em seu circuito, resistindo até certo ponto a erros de projeto, no quesito de consumo de Capítulo 3. Desenvolvimento 22 tensão e corrente, além de ser bastante fácil realizar conexões em fio com outros dispositivos, devido ao fácil acesso às suas portas, sendo elas divididas em dois modelos: portas analógicas e portas digitais. A primeira recebe valores contínuos de tensão, assumindo qualquer valor entre 0 e 5 volts, e a segunda envia apenas valores de tensão fixas, sendo 0 volts e 5 volts, que é a capacidade máxima de tensão do Arduino, entretanto, algumas portas digitais possuem saída PWM (Pulse Width Modulation), técnica utilizada por sistemas digitais para variação do valor médio de uma forma de onda periódica. Essas portas são responsáveis pelo controle de velocidade dos motores DC. A interação entre Beaglebone Blue e Arduino pode ser feita dentre várias formas entre os protocolos de comunicação, como por exemplo USB, SPI, Wi-fi etc. Entre as possibilidades mais simples de implementar, estão a comunicação via USB ou I2C (Inter- Integrated Circuit), porém foi escolhida a primeira para aproveitar o fato do Arduino já está sendo alimentado via cabo USB pela Beaglebone. O motivo de ter escolhido o modelo UNO foi por causa do driver para controle dos motores DC, que é integrado a uma placa que serve como shield para o Arduino, conectando-se automaticamente às portas necessárias para seu funcionamento e ao mesmo tempo possibilitando a conexão das portas restantes, como mostrado na figura 8. Também houve a possibilidade de utilizar o driver separadamente, mas por questão de robustez, estética e conveniência foi decidido o contrário. Na tabela 2 está listada todos os pinos utilizados no Arduino. Capítulo 3. Desenvolvimento 23 Figura 8 – Motor Driver Shield montado no Arduino. Fonte: Autoria própria O driver em questão é composto de duas ponte H VNH3SP30 que possibilita o controle de velocidade e o sentido de rotação de dois motores com alta corrente, permitindo correntes contínuas de até 14A, corrente máxima de pico de 30A e uma tensão máxima de 16V. O motivo da necessidade de utilização de uma ponte H, é pela razão de que o acionamento dos motores consome um alto valor de corrente, e o Arduino só tem capacidade de fornecer alguns mA de corrente em suas portas, podendo prejudicar ou até mesmo danificar as portas ao tentar enviar um valor de corrente maior do que o suportado. O driver precisa de uma alimentação externa para ter carga o suficiente para acionar os motores, por isso foi utilizado uma bateria de Nobreak, de tensão de 12V e corrente de 7A, o que, infelizmente, adiciona peso extra ao andador, aumentando assim a tensão necessária para deslocamento. Na questão sobre o peso, pelo objetivo do projeto ser auxiliar na locomoção de pessoas deficientes e/ou idosas, o andador precisa de motores com potência e torque nominal suficientes para carregar o peso parcial de uma pessoa somado ao o peso da estrutura. Para isso foram escolhidos dois motores DC de 12V, com potência nominal de 54W e 82 RPM (Rotações Por Minuto), podendo ter uma redução de 1:55 de sua rotação ao acoplar uma caixa de redução em seu eixo, podendo suportar uma carga de até 35kg individualmente, somando 70kg ao acoplá-los na estrutura. Com o protótipo pesando Capítulo 3. Desenvolvimento 24 aproximadamente 10kg e considerando o peso médio de um homem adulto de 80kg, sendo que somente 30% desse peso será apoiado no andador, sendo esta uma estimativa medida com os braços apoiados em uma balança caseira, isto resulta em um total de 24kg de peso estimado que será suportado pelos motores. Na figura 9 é possível visualizar o motor junto com seu desenho técnico. Também foi levado em conta a velocidade de marcha de um humano para essa escolha, sendo a média de um adulto em torno de 0,8 m/s, segundo testes próprios realizados sem levar em conta os diversos fatores que influenciam uma marcha humana, foi estimado que para uma pessoa idosa ou com problema de locomoção esse valor deve cair para aproximadamente 0,4 m/s. Infelizmente, não foi possívelobter dois motores espelhados, sendo preciso utilizar um dos motores em sentido reverso e, provavelmente, por um problema mecânico do eixo que prende o motor ou do próprio, o motor tende a travar por um curto espaço de tempo ao dar uma volta completa, dessincronizando com o outro par. Foi necessário resolver esse problema via programação para compensar a perda de velocidade. Figura 9 – Motor DC 12V. Fonte: Imobras Capítulo 3. Desenvolvimento 25 Tabela 2 – Pinagem do Arduino UNO. Pinos Função 7 Motor A1 8 Motor B1 4 Motor A2 9 Motor B2 5 PWM do motor 1 6 PWM do motor 2 A0 Enable motor 1 A1 Enable motor 2 10 PWM do Servo motor Fonte: autoria própria 3.2 Calibração da odometria Sem dúvidas o componente mais importante para este trabalho é a IMU, é a partir de seus sensores inerciais que serão calculados os dados da odometria. Os sensores inerciais medem o movimento com base nas leis da física e não dependem de qualquer sinal de referência externa ao corpo em que se encontra. A ideia básica por trás de um sistema puramente inercial está na integração da aceleração para obtenção de velocidade e posição a partir de uma condição inicial conhecida, bem como na obtenção do ângulo de orientação através da integração dos dados coletados pelo giroscópio no eixo Z. Dessa forma é possível saber o quanto o robô se movimentou e sua direção, mas para saber se os dados são confiáveis para alcançar um objetivo dado, é também necessário que a odometria seja confiável. E para isso, são necessários alguns testes e calibrações. Antes de proceder com a odometria, foram coletadas amostras do acelerômetro, giroscópio e magnetômetro e como pode ser observado na figura 10, o sinal apresenta bastante ruído, exceto com o giroscópio, o que prejudicaria a determinação da posição do robô. Como já explicado, tais erros são esperados de sensores como a IMU, que são bem sensíveis. No exemplo do acelerômetro, quando em uma posição estática, o sensor, além de ruído, possui um off-set, que pode ser causado por uma leve inclinação da estrutura, sofrendo leve atuação da aceleração da gravidade. A solução encontrada foi implementar um filtro Passa-baixa, um método de processamento de sinais que permite a passagem de sinais de baixa frequência e reduz a amplitude de alta frequência, resultando na figura 11. E no caso do off-set do acelerômetro, foi calculado uma média entre as amostras sem filtro e aplicado uma compensação via software, sendo necessário refazer esse ajuste cada vez em que o Beaglebone for ligado, pois cada vez em que a IMU é inicializada, o acelerômetro apresenta valores de off-sets diferentes. Capítulo 3. Desenvolvimento 26 Figura 10 – Dados coletados da IMU (a) Sinais do acelerômetro. (b) Sinais do magnetômetro. Figura 11 – Dados coletados da IMU com filtro aplicado. (a) Sinais do acelerômetro. (b) Sinais do magnetômetro. Fonte: Autoria própria Capítulo 3. Desenvolvimento 27 Para ser validado o correto funcionamento da odometria, é necessário entender a priori sobre os principais erros que podem ocorrer no sistema. Existem dois tipos de erros, os sistemáticos e os não sistemáticos. Os erros não-sistemáticos não serão considerados para fins de correção da odometria neste experimento, como por exemplo irregularidades no chão, deslizamento de rodas, forças externas ou o problema mecânico do eixo da roda. Já os erros sistemáticos são passíveis de correção e, para validar a confiança na odometria, é indispensável testar e considerar alguns deles, como diferentes cálculos de orientação determinam a precisão da localização do robô. Para garantir um bom resultado na calibração, será utilizado o procedimento de medição de erro descrito em (BORENSTEIN; EVERETT; FENG, 1996), também conhecido como método de University of Michigan Benchmark (UMBmark). O teste é conduzido com o controle manual do robô para percorrer um trajeto quadrado, onde no fim retorna-se ao ponto inicial, sem a necessidade do robô retornar ao ponto precisamente, já que o erro de odometria é medido comparando os valores absolutos da posição e orientação com os resultados obtidos da odometria. Ao repetir esse processo por n quantidade de amostras para ambos os sentidos horário (Clock Wise - CW) e anti-horário (Counter-Clock Wise - CCW), garante que os erros escondidos, se feitos em somente um sentido, não sejam ignorados. Isto ocorre por causa dos dois erros sistemáticos dominantes que podem se compensar quando realizado somente em uma direção e aumentar o erro total ao percorrer a direção contrária. A figura 12 ilustra o processo do experimento, utilizando o espaço de um quadrado de 1.6 x 1.6 metros, o robô é posicionado em um dos cantos desse quadrado, que servirá como ponto inicial (X0,Y0,θ0) e como ponto de referência antes e depois do trajeto. Ao fim de cada teste, é feito a medição da distância entre o robô e o ponto de origem com uma régua e orientação com um transferidor, determinando assim o ponto absoluto da posição e orientação do robô. Ao realizar essa medição, foi percebido uma discrepância„ calculada a partir das equações 3.1, 3.2, 3.3, entre os valores absolutos e o da odometria, confirmando a existência de erros que deverão ser corrigidos. ϵx = xabs-xodo (3.1) ϵy = yabs-yodo (3.2) ϵθ = θabs-θodo (3.3) Capítulo 3. Desenvolvimento 28 Figura 12 – Exemplo do percurso para teste. Fonte: Adaptado de (BORENSTEIN; EVERETT; FENG, 1996) O cálculo da precisão odométrica foi retirado de (BORENSTEIN; EVERETT; FENG, 1996). Inicialmente sendo necessário calcular o centroide das coordenadas do eixo x e y das posições finais da odometria, para os testes no sentido horário e anti-horário. Os cálculos destes centroides são representados na equação 3.4 para as coordenadas x e 3.5 para as coordenadas y, que consistem na sua média aritmética, ou seja, a somatória de todas as amostras de cada uma das coordenadas dividido pelo número de amostras (n). O deslocamento absoluto dos dois centroides em relação a origem, chamado de rc.g, é calculado segundo as equações 3.6, para o sentido horário, e 3.7 para o sentido anti-horário. Finalmente, é possível calcular a medida da precisão da odometria para erros sistemáticos, como demonstrado na equação 3.8. Com isso, é possível encontrar a precisão atual da odometria do robô. xc.g.,cw/ccw = 1 n n∑ i=1 ϵxi,cw/ccw (3.4) yc.g.,cw/ccw = 1 n n∑ i=1 ϵyi,cw/ccw (3.5) rc.g.cw = √ (xc.g,cw)2 + (yc.g,cw)2 (3.6) Capítulo 3. Desenvolvimento 29 rc.g.ccw = √ (xc.g,ccw)2 + (yc.g,ccw)2 (3.7) Emax,sist = max(rc.g.cw; rc.g.ccw) (3.8) Foram realizados três testes com diferentes cálculos de orientação a partir da IMU : integração da velocidade angular medida pelo giroscópio, compasso magnético calculado a partir do magnetômetro e fusão da bússola com as orientações obtidas do acelerômetro e giroscópio. 30 4 Resultados Para cada teste foram coletadas 10 amostras do experimento para ambos os sentidos horário e anti-horário, em um trajeto quadrado de 1,6x1,6 metros, juntando os dados da odometria para cada teste e montando gráficos dos dados coletados para observar melhor a diferença entre os trajetos reais e dos pontos medidos pela odometria. Os códigos utilizados para os experimentos podem ser encontrados no repositório do GitHub (Rodrigo Rodrigues, 2022). 4.1 Orientação com giroscópio Na figura 13, foi feito o plot dos valores das posições (x,y) do robô obtidas a partir da odometria de quatro das dez amostras no sentido anti-horário (CCW). É possível observar que o caminho exibido aumenta a curvatura ao longo do trajeto em relação à pista quadrada, podendo ter sido causado pelo acúmulo de erros da odometria e pelo próprio robô, devido a dessincronia na velocidade dos motores. A odometria não alcança os 1,6 metros, realizando a curva antes e acaba por não conseguir fechar o trajeto ao chegar no ponto inicial, que deveria ser próximo de zero. O mesmo pode ser visto na figura 14, representando o trajeto no sentido horário (CW), se diferenciando na última curva, onde a odometria se mostra ultrapassandoo ponto de referência, aumentando o espaçamento entre o ponto final e inicial. Utilizando o cálculo de erro da precisão da odometria das equações 3.1 a 3.8, foi encontrado o erro máximo de 0,36 metros, ou 36 centímetros, o que é bem elevado se comparar com o tamanho do percurso realizado. Os pontos finais absolutos e da odometria para os dois sentidos podem ser visualizados na tabela de anexo A. Capítulo 4. Resultados 31 Figura 13 – Gráficos (x,y) da odometria medida pelo SW. Sentido anti-horário. Fonte: Autoria própria Figura 14 – Gráficos (x,y) da odometria medida pelo SW. Sentido horário. Fonte: Autoria própria Capítulo 4. Resultados 32 Observando os valores da orientação θ do SW medido pela odometria nos dez experimentos para ambos os sentidos, apresentado na figura 15, por se tratar de um percurso quadrado de 90º em cada aresta, o valor total medido de θ ao final deveria ser igual ou próximo ao valor de 360º, o que não é alcançado no sentido anti-horário e ultrapassado no sentido horário, corroborando os erros observados nas figuras 13 e 14. Figura 15 – Gráficos da orientação θ medida por meio da odometria em ambos os sentidos. Fonte: Autoria própria Capítulo 4. Resultados 33 4.2 Orientação com magnetômetro Procurando outras opções a fim de melhorar os resultados da odometria, foi feito o cálculo de um compasso magnético a partir do magnetômetro da IMU. Entretanto, como pode ser observado na figura 16, o resultado não ficou satisfatório, por isso viu- se desnecessário continuar com as amostras. O porque de tal comportamento pode ser analisado na figura 17, na qual há várias deformidades na orientação durante o percurso, mais evidentes quando comparando com o gráfico do sentido anti-horário da imagem 15. Isso ocorre por causa da interferência magnética gerada pelo dois motores. Figura 16 – Gráficos (x,y) da odometria medida com orientação com compasso. Sentido anti-horário. Fonte: Autoria própria Capítulo 4. Resultados 34 Figura 17 – Gráficos da orientação θ medida por meio do compasso magnético. Sentido anti-horário. Fonte: Autoria própria 4.3 Orientação com fusão de sinais de sensores Como última alternativa, foi obtido a odometria a partir da fusão do ângulo θ gerado pela odometria, ou seja, integração da velocidade angular do giroscópio, e pelo compasso magnético, procurando mitigar os erros gerados pelos dois métodos individualmente. A biblioteca Robot Control possui uma função que já calcula o valor dessa fusão. Nos gráficos da figura 18 pode-se notar uma melhora nos pontos de odometria, apesar do erro no eixo y estar bem alto. Porém, no sentido horário, há uma piora no desempenho, aumentando consideravelmente o erro da posição (x,y), como pode ser observado na figura 19. Tal ocorrência pode ser influência da interferência magnética oriunda da bússola, pois, ao analisar os gráficos da orientação da figura 20, no sentido horário a última curva não ocorre perto do ângulo 90 e há uma leve curvatura para cima entre as amostras 400 a 450. Foi o erro máximo de 0.8 metros, ou 80 centímetros, sendo maior do que o primeiro teste da seção 4.1, por causa dos erros gerados pelas amostras no sentido horário. Capítulo 4. Resultados 35 Figura 18 – Gráficos (x,y) da odometria medida pela fusão de sinais de sensores. Sentido anti-horário. Fonte: Autoria própria Figura 19 – Gráficos (x,y) da odometria medida pela fusão de sinais de sensores. Sentido horário. Fonte: Autoria própria Capítulo 4. Resultados 36 Figura 20 – Gráficos da orientação θ medida por meio da fusão de sinais de sensores. Fonte: Autoria própria Capítulo 4. Resultados 37 Para uma análise mais detalhada da influência da orientação na obtenção das posições (x,y) da odometria, foi levantado um gráfico do ângulo θ para suas três formas de medição. Com a imagem 21 é possível observar a influência que a pertubação magnética tem sobre a curva correspondente à fusão dos sinais de sensores, principalmente a partir da amostra 250. Figura 21 – Gráfico das orientações no sentido anti-horário. Fonte: Autoria própria 4.4 Discussões No fim, o resultado com a fusão da odometria e bússola deixou a desejar, prin- cipalmente no trajeto do sentido horário. Devido à diversos erros não foi adquirido um resultado satisfatório em que a odometria possa ser utilizada para a implementação de um controle autônomo, a IMU demonstrou-se bem instável e o cálculo da posição (x,y) da odometria utilizando as integrais do acelerômetro complicou mais do que deveria, pois ao utilizar a velocidade resultante dessa integração, gerou um aumento contínuo do valor da velocidade, gerando valores de x e y exorbitantes, foi necessário utilizar um filtro passa-alta para conseguir gerar uma velocidade quase constante que não somasse valores muito elevados. Uma solução mais adequada para esse e outros problemas encontrados Capítulo 4. Resultados 38 seria acrescentar outros sensores ao sistema para complementar os dados da IMU, como por exemplo, calcular a velocidade a partir de encoders e posição absoluta para servir de referência através de câmeras ou GPS (Global Positioning System). 4.5 Considerações finais Inicialmente o projeto teria um sensor Kinect V1, câmera acessório do console de vídeo game Xbox 360, para servir de sensor complementar junto com o software ROS, para realizar um mapeamento e planejamento de caminho, porém, devido à complicações durante a instalação o plano foi deixado de lado para focar somente na IMU. Todo o processo de instalação e configuração foi documentado em (Rodrigo Rodrigues, 2022) para referência futura. 39 5 Conclusões Este trabalho procurou aproveitar-se das funcionalidades disponíveis na Beaglebone Blue, embora limitadas a projetos robóticos de pequeno e médio porte, englobam uma gama de possibilidades com a IMU integrada e a biblioteca com funções que exploram sua utilidade, fazem com que esse microcomputador seja bem importante no campo da robótica. Embora um sistema de sensores puramente inercial não seja muito confiável, validado pelos experimentos realizados neste trabalho, ao ser implementado em conjunto com outros sensores complementares podem gerar resultados bem precisos e confiáveis. Com a análise dos dados apresentados, foi possível identificar que os métodos abordados de cálculo de orientação para obtenção de uma odometria mais confiável não geraram os resultados esperados. Mesmo com processos de filtragem e calibração dos sensores inerciais, os erros ainda persistiram. Por fim, futuras adições ao andador inteligente se fazem necessárias, como o acréscimo de sensores auxiliares para maior confiabilidade do sistema odométrico afim de implementar um controle autônomo de posição e velocidade, além de um sistema de visão, utilizando-se de processamento de imagens para gerar um mapeamento do ambiente e assim, uma localização global e recalibração da odometria. E de um sistema de armazenamento em nuvem, possibilitando a transferência e processamento de dados via servidores online. 40 Referências Beagleboard. Getting Started = Disponível em:<https://beagleboard.org/getting-started>. 2016. Accessed: 2022-07-11. Citado 2 vezes nas páginas 20 e 21. BORENSTEIN, J.; EVERETT, H. R.; FENG, L. Where am i?"sensors and methods for mobile robot positioning. In: . [S.l.: s.n.], 1996. Citado 3 vezes nas páginas 17, 27 e 28. FERREIRA, I. P. M.; HEMERLY, E. M. AnÁlise de integraÇÃo entre imu e gps utilizando filtro de kalman. VI CONGRESSO NACIONAL DE ENGENHARIA MECÂNICA, v. 5, n. 3, 08 2010. Citado na página 17. GRIMMER, M. et al. Mobility related physical and functional losses due to aging and disease - a motivation for lower limb exoskeletons. J NeuroEngineering Rehabil, 02 2019. Citado na página 9. GRIMMETT, D. R. Beaglebone Robotic Projects. 2. ed. Birmingham B3 2PB, UK: PACKT Publishing Ltd, 2017. v. 1. (1, v. 1). ISBN 978-1-78829-313-6. Citado 2 vezes nas páginas 20 e 21. Invensense. MPU-9250 Product Specification Revision 1.1 = Disponível em:<https: //datasheet.octopart.com/MPU-9250-InvenSense-datasheet-104530018.pdf>.2016. Accessed: 2022-07-10. Citado 2 vezes nas páginas 12 e 13. JúNIOR, J. de C. R. Design and Implementation of Electronic Architecture for Cloud Robotics and Human-Robot-Environment Interaction Strategy Applied to Smart Walker. Dissertação (Mestrado) — Universidade Federal do Espírito Santo, 2021. Citado na página 9. OLIVEIRA, A. T. de. Projeto e implementação do sistema mecânico e do acionamento eletrônico de potência de um Andador Robótico Inteligente. 2022. Universidade Federal do Rio Grande do Norte. Trabalho de Conclusão de Curso (TCC). Citado na página 19. OLIVEIRA, W. dos S.; GONçALVES, E. N. Implementação em c: filtro de kalman, fusão de sensores para determinação de ângulos. ForScience: revista científica do IFMG, Formiga, v. 5, n. 3, 12 2017. Citado na página 12. RIBEIRO, W. da C. Projeto e implementação de robô autônomo com rodas. 2021. Universidade Federal do Rio Grande do Norte. Trabalho de Conclusão de Curso (TCC). Citado na página 14. RobotControl. Robot Control Library Documentation - Beaglebone Blue. 2022. Disponível em:<http://strawsondesign.com/docs/librobotcontrol/index.html>. Accessed: 2022-07-17. Citado na página 21. Rodrigo Rodrigues. Repositório do Projeto Smart Walker = Disponível em:<https: //github.com/RodrigoRodriguesBezerra/Smart-Walker>. 2022. Accessed: 2022-07-11. Citado 3 vezes nas páginas 20, 30 e 38. VAZ, D. J. F. Sistema de Navegação para Robot Móvel com Filtros de Kalman. Dissertação (Mestrado) — Academia Militar - Técnico Lisboa, 10 2016. Citado na página 17. https://beagleboard.org/getting-started https://datasheet.octopart.com/MPU-9250-InvenSense-datasheet-104530018.pdf https://datasheet.octopart.com/MPU-9250-InvenSense-datasheet-104530018.pdf http://strawsondesign.com/docs/librobotcontrol/index.html https://github.com/RodrigoRodriguesBezerra/Smart-Walker https://github.com/RodrigoRodriguesBezerra/Smart-Walker Referências 41 WOODMAN, O. J. An introduction to inertial navigation. The address of the publisher, 2007. Citado 2 vezes nas páginas 14 e 15. 42 ANEXO A – Odometria com giroscópio Sentido anti-horário Amostras xabs xodo ϵx yabs yodo ϵy θabs θodo ϵθ 1 0.0 0.07 -0.07 0.06 0.44 -0.38 -10 330.69 19.31 2 0.08 0.12 -0.04 0.06 0.35 -0.29 -5 333.7 21.3 3 0.19 0.16 0.03 0.03 0.45 -0.42 -15 328.88 16.12 4 0.31 0.27 0.04 0.0 0.22 -0.22 -5 335.52 19.38 5 0.205 0.21 -0.01 0.0 0.66 -0.66 -7 332.15 20.85 6 0.46 0.36 0.1 0.04 0.35 -0.31 5 337.76 27.24 7 0.11 0.0 0.11 0.04 0.4 -0.36 3 339.29 23.71 8 0.37 0.26 0.11 0.03 0.31 -0.28 4 339.73 24.27 9 0.17 0.13 0.04 0.03 0.37 -0.34 1 338.33 22.67 10 0.04 0.12 -0.08 0.05 0.39 -0.34 2 339.27 22.73 Xc.g,CCW 0.02 Yc.g,CCW -0.36 θc.g,CCW 21.76 rc.g,CCW 0.36 Sentido horário Amostras xabs xodo ϵx yabs yodo ϵy θabs θodo ϵθ 1 0.62 0.59 0.03 0.0 0.07 -0.07 1 -15.02 16.02 2 0.4 0.56 -0.16 -0.04 -0.04 0.0 5 -15.47 20.47 3 0.16 0.49 -0.33 -0.02 0.04 -0.06 -10 -24 14 4 0.39 0.65 -0.26 -0.03 -0.01 -0.02 -15 -27.41 12.41 5 0.28 0.51 -0.23 -0.11 0.02 -0.13 -10 -19.35 9.35 6 0.37 0.56 -0.19 -0.06 0.0 -0.06 -1 -20.56 19.56 7 0.53 0.61 -0.08 -0.05 0.02 -0.07 14 -9.14 23.14 8 0.24 0.53 -0.29 -0.02 0.03 -0.05 -5 -32.86 27.86 9 0.38 0.48 -0.1 -0.01 0.06 -0.07 20 -8.47 28.47 10 0.25 0.45 -0.2 -0.02 0.04 -0.06 10 -18.26 28.26 Xc.g,CW -0.18 Yc.g,CW -0.06 θc.g,CW 19.95 rc.g,CW 0.19 Emáx 0.36 43 ANEXO B – Odometria com fusão Sentido anti-horário Amostras xabs xodo ϵx yabs yodo ϵy 1 0.05 0.37 -0.32 -0.01 0.62 -0.63 2 0.05 0.12 -0.07 0.04 0.67 -0.63 3 0.01 0.1 -0.09 0.02 0.5 -0.48 4 0.14 0.26 -0.12 0.03 0.66 -0.63 5 0.08 0.19 -0.11 -0.05 0.7 -0.75 6 0.11 0.08 0.03 -0.11 0.57 -0.68 7 -0.14 0.2 -0.34 0.04 0.83 -0.79 8 0.17 0.15 0.02 0.03 0.68 -0.65 9 0.03 0.01 0.02 0.02 0.43 -0.41 10 -0.13 0.14 0.01 -0.02 0.09 -0.11 Xc.g,CCW -0.03 Yc.g,CCW 0.58 rc.g,CCW 0.58 Sentido horário Amostras xabs xodo ϵx yabs yodo ϵy 1 0.39 -0.12 0.51 0.09 0.08 0.01 2 0.16 -0.64 0.8 0.07 -0.17 0.24 3 0.19 -0.58 0.77 0.07 -0.27 0.34 4 0.25 -0.61 0.86 0.05 -0.28 0.33 5 0.09 -0.7 0.79 0.13 -0.18 0.31 6 -0.2 -0.87 0.67 0.03 -0.39 0.42 7 0.16 -0.7 0.86 0.16 -0.2 0.36 8 0.09 -0.65 0.74 0.08 -0.2 0.28 9 0.18 -0.64 0.82 0.09 -0.24 0.33 10 0.01 -0.64 0.65 0.08 -0.19 0.27 Xc.g,CCW 0.75 Yc.g,CCW 0.29 rc.g,CCW 0.8 Emáx 0.8 44 ANEXO C – Pseudocódigos Algorithm 1 Coleta da IMU - Main Beaglebone Blue C 1: Configura a IMU 2: Inicializa os filtros 3: Configura e inicializa a interrupção 4: Imprime os valores da IMU e odometria Algorithm 2 Coleta da IMU - Interrupção Beaglebone Blue C 1: Coleta os dados dos sensores 2: Inicializa os filtros com valores iniciais e finais 3: Filtragem dos dados 4: Cálculos da bússola magnética 5: Cálculo da Odometria Algorithm 3 Fluxo de dados Beaglebone Blue Python 1: Importação das bibliotecas 2: Setup e inicialização da comunicação serial 3: Configura e inicia a thread 4: Função da thread chama o código Coleta da IMU - Main 5: Guarda os valores recebidos 6: Função de controle de motores envia comandos inseridos pelo usuário b3e84489056e4fd064c80e742a63f4dd7bdbd55aaabce83657e4edc172e25231.pdf Folha de rosto b3e84489056e4fd064c80e742a63f4dd7bdbd55aaabce83657e4edc172e25231.pdf b3e84489056e4fd064c80e742a63f4dd7bdbd55aaabce83657e4edc172e25231.pdf Folha de aprovação Agradecimentos Epígrafe Resumo Abstract Lista de abreviaturas e siglas Sumário Introdução Motivação Objetivo Visão geral dos capítulos seguintes Fundamentação teórica Modelagem do Sistema Inercial Measurement Units (IMU) Odometria Desenvolvimento Eletrônica Microcomputador e microcontrolador Calibração da odometria Resultados Orientação com giroscópio Orientação com magnetômetro Orientação com fusão de sinais de sensores Discussões Considerações finais Conclusões Referências Odometria com giroscópio Odometria com fusão Pseudocódigos
Compartilhar