Projeto Veículo Não-Holonômico Ackermann
Autores: Armando Alves Neto, Douglas Macharet, Alysson Alves de Oliveira, James Milligan
Coordenador: Mario Fernando Montenegro Campos
Auxílio Técnico: Wolmar Gabirobertz Pimenta
Status do Projeto: ATIVO
Início: 03/2012
Responsável por esta página: Alysson Alves de Oliveira
Introdução
Atualmente a utilização de veículos não holonômicos é muito difundida. Veículos não-holonômicos são utilizados extensivamente nas sociedades modernas. Aviões, carros e navios são exemplos desse tipo de veículo. Isso acabou gerando muitas pesquisas com robôs móveis não-holonômicos. Pesquisas em nosso laboratório com robôs não-holonômicos, com movimento como o de um carro, levou à criação deste projeto. Ao pesquisarmos na literatura, notamos que alguns grupos de pesquisa haviam construído seu próprio robô móvel com as características que desejávamos ([1] e [2]). A partir daí, começamos a pensar na possibilidade de construirmos um robô próprio para nossas pesquisas. Em alguns trabalhos foi utilizado o chassi de um automodelo comercial de escala 1/10. Seu baixo custo e robustez além da descrição do que foi feito nestes trabalhos nos encorajou a construirmos nosso próprio robô. Além do mais, a experiência de construir um robô deste tipo em nosso laboratório seria interessante como aprendizado.
Iniciamos a construção adquirindo um automodelo comercial TXT-1 da Tamiya Inc. de escala 1/10 que forneceria a parte mecânica e estrutural do projeto. Acrescentamos a esse chassi: sensores, atuadores (servos de direção e ESC - “Electronic Speed Control” para o controle do motor) além de um computador (netbook), para realizar o controle do robô. Foi desenvolvido um software de controle que é executado no computador embarcado. Ele recebe um ponto com coordenadas e faz com que o robô chegue até esse ponto. Ao receber o próximo ponto de visita, o software de controle, através dos atuadores, faz com que o robô chegue até ele. Vários testes para validar o software de controle foram feitos.
A expectativa é que o robô adquira novas funcionalidades com o desenvolvimento do projeto. Novas interfaces, novos testes, novos sensores seriam acrescentados com o objetivo de aumentar a capacidade do robô bem como seu uso pelo laboratório. Abaixo descrevemos as modificações mecânicas que fizemos e os sensores, atuadores e sistemas de controle.
Trabalhos Relacionados
Descrição do veículo
O robô descrito neste projeto se enquadra na categoria de um robô não-holonômico com o movimento como o de um carro (“car-like”). Sua construção foi baseada no chassi comercial: TXT-1 da Tamiya Inc. (automodelo radio-controlado R/C “Monster Truck”). Esse chassi nos forneceu a parte mecânica e estrutural do robô. Possui boa capacidade para ambientes “outdoor”, sendo seu emprego original para terrenos acidentados. Isso confere a esse chassi uma grande robustez para as tarefas que pretendemos utilizá-lo. O primeiro desafio que tivemos foi a montagem desse chassi, esse automodelo vem completamente desmontado. O manual que o acompanha ensina passo a passo os procedimentos de montagem mas o grande número de peças exige um tempo considerável. A experiência de montagem nos ajuda se futuramente for necessário fazer algum conserto.
Após a montagem, iniciamos o processo de acréscimo de dispositivos e modificações para construirmos um robô com as características que pretendíamos. Estas modificações e dispositivos serão vistos em detalhes abaixo.
Segue abaixo um diagrama completo do veículo com seus dispositivos e comunicações. Nesse diagrama, a parte “Estação Externa” não pertence ao veículo e pode enviar e receber dados dele.
Algumas características do robô podem ser vistas abaixo.
Dimensões: Comprimento 490 mm Largura 385 mm Altura 285 mm Raio de Curvatura mínimo: 1359 mm [1]
Componentes: Item: Chassi Modelo: TXT-1 Fabricante: Tamiya Inc. (http://www.tamiya.com/) Item: XBee Modelo: XBEEPRO Fabricante: Digi Internacional (www.digi.com) Item: GPS Modelo: LEA-6T Fabricante: U-Blox (http://www.u-blox.com) Item: IMU/PWM Modelo: Robovero - PKG30019 Fabricante: Gumstix (http://www.gumstix.com/) Item: ESC Modelo: TEU-302BK Fabricante: Tamiya Inc. (http://www.tamiya.com/) Item: Servo Direção Modelo: TS-70MG Fabricante: Tower Hobbies (http://www.towerhobbies.com/)
Modelo 3D
Modificações Mecânicas
Base Acrílica e suportes
Status: TERMINADO
Data: Abril 2012
A utilização do chassi de um veículo automodelo nos dava uma estrutura mecânica para colocarmos o restante do equipamento (sensores, atuadores, netbook, etc). Não seria possível colocá-los diretamente no chassi por este ser basicamente duas barras paralelas. Precisaríamos de uma base resistente mecanicamente para suportar impactos, além de criar espaço para se colocar o equipamento que desejávamos e termos um espaço sobrando para possíveis modificações futuras. Escolhemos utilizar uma base acrílica (ver formato abaixo) por já termos utilizado este material em outros robôs do laboratório, além de ser muito resistente, sua transparência ajuda na manutenção do robô. O corte da peça acrílica foi feito manualmente utilizando-se uma serra tico-tico com lâmina específica. Após o corte, foi feito um polimento da área de corte para dar um acabamento melhor. As peças de alumínio que sustentam a base acrílica foram feitas a partir de uma cantoneira. Realizamos os cortes das peças e procedemos os furos para a fixação no chassi e na base acrílica. Abaixo segue a figura com o formato das peças e o robô com todos os seus dipositivos sobre a base acrílica.
Pneus
Status: TERMINADO
Data: Abril 2012
O fato dos pneus serem facilmente deformáveis era um problema para nós. Como se trata de um automodelo para uso em terrenos acidentados seus pneus são muito flexíveis. Ao montarmos toda a estrutura com sensores, computador (netbook) e outros, os pneus apresentavam grande deformação. Uma idéia, já vista em outro trabalho <referencia>, seria colocar espuma dentro desses pneus. Por serem ocos, a espuma daria maior resistência mecânica para eles. Além do mais, havia outro problema, a deformação dos pneus afetaria a odometria do veículo. Apesar de não implementado ainda, o uso de um encoder nas rodas nos daria a velocidade angular dessas rodas quando o robô se movimentasse. Para se calcular a velocidade linear de cada roda seria preciso ter um valor de raio da roda bem definido e a velocidade angular. Com a deformação dos pneus isso não seria possível.
Na figura abaixo mostramos como foi feita a colocação da espuma. Utilizamos uma espuma de densidade 33, a mesma utilizada em colchões. O corte das peças, para ser inserida nos pneus, foi feito utilizando-se uma faca elétrica (pode ser vista na figura abaixo). O formato da espuma a ser inserida nos pneus deveria ser o de um cilindro com um furo central também em formato cilíndrico (figura abaixo). As medidas utilizadas para o corte foram: altura do cilindro 10 cm (largura do pneu), o diâmetro externo 14 cm e o diâmetro do buraco interno 7 cm.
Especificações Peça Espuma: Formato: Cilíndrico R = 140 mm r = 70 mm e = 100 mm
Fazer o corte da peça de espuma demandou um pouco de criatividade. Primeiro, a faca elétrica se mostrou muito eficiente para o corte deste material. Utilizamos moldes em papelão, como pode ser visto nas figuras abaixo, dois moldes maiores para a parte externa da peça e dois para o buraco interno. No momento do corte colocávamos os moldes nas laterais da peça (fixados utilizando um prego no centro do molde), em ambos os lados, procedíamos o corte transversalmente ao molde de modo que a faca tangenciava o molde ao longo do corte. O mesmo procedimento foi feito para o corte do buraco interno, com a dificuldade aumentada, pois era necessário atravessar a faca na peça para iniciar o corte. Abaixo seguem as figuras dos procedimentos e o resultado.
Abraçadeiras para as barras estabilizadoras
Status: TERMINADO
Data: Abril 2012
Ao iniciarmos os testes de campo com o veículo, testes ainda em fase inicial onde o veículo ainda não possuía todos os dispositivos, verificou-se a necessidade de se trocar as abraçadeiras de nylon (que vieram com o automodelo) da barra estabilizadora por abraçadeiras de metal (ver foto abaixo). Já nos primeiros testes as abraçadeiras originais, de nylon, se romperam. Verificamos que em outro trabalho <referencia>, que utilizaram esse mesmo chassi também haviam tido o mesmo problema e haviam substituído essas braçadeiras por outra de metal e portanto mais resistentes. Procedemos da mesma maneira e compramos abraçadeiras de metal e colocamos um pedaço de EVA (Etileno Vinil Acetato) de 2 mm de espessura para manter as abraçadeiras no lugar e comprimir melhor a barra estabilizadora. Veja na foto abaixo a abraçadeira de metal junto com o pedaço de EVA prendendo a barra estabilizadora.
Molas da Suspensão
Status: TERMINADO
Data: Junho 2012
Ao montarmos os dispositivos sobre o robô notamos que ele inclinava. O peso dos dispositivos havia feito as molas da suspensão flexionarem. Notamos que precisaríamos mudar todas as molas. Deveríamos utilizar uma mola com uma resistência maior, isto é, com maior coeficiente de elasticidade. Preferimos fazer a mola no lugar de comprar. Isso seria melhor porque as molas de suspensão para automodelo são classificadas não por seus coeficientes de elasticidade mas sim por cores. Para termos melhor controle das características da mola preferimos fazê-las. Levamos a mola original e a partir das características dela fizemos uma nova mola com maior coeficiente de elasticidade. Abaixo colocamos as características da mola original e da nova mola, fabricada especificamente para o nosso robô.
Especificações da Mola Original: Di = 14.0 mm V = 4.6 mm P = 6.1 mm d = 1.5 mm De = 17.0 mm Comprimento = 75 mm Número de espiras = 13 Especificações da Mola Utilizada: Di = 14.6 mm V = 4.8 mm P = 7.0 mm d = 2.2 mm De = 19.0 Comprimento = 74.2 mm Número de espiras = 11
Cinta de amarração para Netbook
Status: TERMINADO
Data: Junho 2012
O uso de um netbook no robô demandava uma fixação segura. Foi pensada algumas alternativas para essa fixação mas todas acabavam sendo específicas para o tamanho do netbook. Para não dependermos do tamanho do netbook e para que pudessem ser utilizados computadores de qualquer tamanho, passamos a utilizar cintas de amarração de velcro (ver foto abaixo). O uso de uma cinta apenas deixa o netbook com pouca segurança. Ele ainda sofria muita vibração. Passamos a utilizar duas cintas e nos diversos testes com essa solução o netbook ficou preso em segurança. Mesmo após batidas fortes o computador manteve-se preso de maneira segura. Essa solução foi então adotada em ambos os robôs.
Sensores, Sistema de Controle e Comunicação
<Diagrama completo>
Sensores
Robovero/IMU
A IMU (Inertial Measurement Unit) utilizada está montada em uma placa chamada Robovero <referencia>. O robovero é uma placa da GUMSTIX <referencia> utilizada em projetos de robótica. Ela possui alguns sensores (IMU e magnemtômetro) além de um microcontrolador que possui várias funções. O fabricante disponibiliza várias bibliotecas em Python para ter acesso a esse microcontrolador, seuas funções e seus sensores.
<Falar sobre a IMU> <uso no software de controle>
Robovero/Sinal PWM
ESC (Eletronic Speed Control)
Status: TERMINADO
Data: Abril 2012
O ESC substitui o controle de velocidade que veio com o automodelo. O automodelo poussuía um controle de velocidade mecânico-elétrico (ver foto abaixo). Esse controle demandava um servo para controlar a parte mecânica. Tanto o controle de velocidade orioginal quanto o servo pôde ser substituído por um ESC lê um sinal PWM e transforma esse sinal em tensão de saída para o motor DC <revisar isso!!!>. Ele controla o torque do motor através de um sinal PWM. Esse sinal PWM é gerado pelo ROBOVERO que possui uma biblioteca específica para gerar esse sinal. O Robovero recebe informações do software de controle, executado no netbook, e cria o sinal PWM para o controle do motor.
GPS
Status: TERMINADO
Data: Junho 2012
<ver modelo do GPS e fabricante> <foto do GPS montado e ligado ao netbook>
Encoder
O acréscimo do encoder tanto no robô quanto no sistema de controle faz parte de um trabalho futuro.
Comunicação
Status: TERMINADO
Data: Junho 2012
Para a comunicação entre o robô e uma base remota utilizamos um dispositivo ZigBee. Esse dispositivo está ligado ao computador do robô (netbook) através de um cabo USB.
Sistema e Software de Controle
O software de controle é executado em um computador (netbook) que está embarcado no robô. O software de controle foi escrito em Python, levando-se em conta que o Robovero possui bibliotecas de controle/conexão em Pyhon. Os programas são executados no Ubuntu/Linux.
<Diagrama do software de controle> <explicação detalhada do software de controle>
Testes
Os testes foram realizados “outdoor”, isto é, fora do laboratório e em locais onde havia sinal de GPS. Neles, um computador remoto envia ao robô, através de um dispositivo ZigBee, pontos de visitação. A partir daí, o robô executa seu software de controle que atua em seus motores e servos de direção levando o robô até o ponto pretendido.
<vídeos dos testes> <fotos dos testes>
Próximos Passos
Encoder
Medir Tensão Bateria
Multiplexar RC e Robovero
Driver ROS
Obs: adicionando usuário para acessar dispositivo USB no Ubuntu
$sudo adduser ackerman dialout
IMU
O driver para ROS da IMU/Robovero foi escrito em Python.
Pacote ROS para o driver da IMU:
hg https://www.verlab.dcc.ufmg.br/hg/ackerman_robot/
Executando o driver:
$rosrun robovero_imu robovero_imu.py
Estrutura ROS do driver:
Tópicos Publicados:
/imu/data_raw : dados da IMU sem filtragem
/imu/mag : dados magnetômetro
Tópicos subscritos:
Serviços:
Filtro Madgwick (já implementado no ROS):
Executando o filtro:
$rosrun imu_filter_madgwick imu_filter_node
Tópicos Publicados:
/imu/data : dados da IMU filtrados
Vendo os dados no RVIZ:
Executando o RVIZ: $ rosrun rviz rviz
- Altere FIXED FRAME por: /base_link
- Altere TOPIC por: /imu/data
- Selecione as caixas para ver os eixos na tela
Procedimentos
ROS Múltiplas Máquinas
Obs: As informações aqui são baseadas no Tutorial ROS em Múltiplas Máquinas
Escolha uma máquina para executar o Roscore. Essa máquina será a mestre. As outras máquina chamaremos de escravo.
Na máquina mestre execute:
$ export ROS_IP=<coloque aqui o IP da máquina mestre> $ export ROS_HOSTNAME=<nome da maquina mestre> $ roscore
Na máquina escravo (em cada terminal) execute:
$ export ROS_MASTER_URI=http://<nome máquina mestre>:<porta maquina mestre, gerlamente 11311>/ $ export ROS_IP=<coloque aqui o IP da máquina escravo> $ export ROS_HOSTNAME=<nome da maquina escravo>
Agora, nos terminais que foram carregadas as variáveis acima, podem ser chamados os executáveis do ROS.
Ativando/Desativando o Reverso do motor (ré)
Obs: Ao fazer o procedimento abaixo o ESC mudará o modo:
com reverso -> sem reverso sem reverso -> com reverso
- Pressione o botão SET (botão vermelho) do ESC e mantenha pressionado;
- Ligue o ESC e continue pressionando por 3 segundos;
- Teste se o reverso está ativado ou esativado;
Ligar o robô
Desligar
Carregar bateria
Informações Úteis Tamiya TXT-1
Manual TXT-1: manual_txt1.pdf
Manual Rádio-Controle 4 canais. 4vf-manual.pdf
Visão completa da montagem visao_montagem_txt1.pdf
Sensores
Links Relacionados
Montagem Plataforma: montagem_plataforma.pdf
Modificação: modificacao.pdf
Aplicação: decentralizedcooperativecontrol.pdf
Referências
[1] D. Cruz, J. McClintock, B. Perteet, O. Orqueda, Y. Cao, and R. Fierro, “Decentralized cooperative control—A multivehicle platform for research in networked embedded systems,” IEEE Control Syst., vol. 27, no. 3, pp. 58–78, Jun. 2007.
[2] Homepage MARHES Laboratory, “MARHES Laboratory - Platform Description”, Disponível em http://ece.unm.edu/faculty/rfierro/reports/2005/Platform_Description.pdf. Acesso em 10 de agosto de 2012.
[3] D. Bhadauria, O. Tekdas, and V. Isler, “Robotic data mules for collecting data over sparse sensor fields,” J. Field Robot, vol. 28, no. 3,pp. 388–404, 2011.
[4] Michael Stanley, “Implementation of Kalman Filter to Tracking Custom Four-Wheel Drive Four-Wheel-Steering Robotic Platform,” University of Maryland, College Park, Masters Thesis 2010.