Buscar

Odometria-Bezerra-2022

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 46 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Continue navegando