CONTROLE DE TRAÇÃO E DIREÇÃO DE UM VEÍCULO AUTÔNOMO NÃO TRIPULADO Carla Real Amorim Cardoso Prof. Antônio Carlos Tavares - Orientador
Roteiro 1. Introdução 2. Objetivos do trabalho 3. Fundamentação teórica 4. Desenvolvimento do trabalho 5. Resultados 6. Conclusões 7. Extensões
Introdução Tecnologia dos microprocessadores Segurança, conforto e praticidade Segway meio de transporte pessoal Controle de um veículo elétrico
Objetivos do trabalho Disponibilizar a estrutura de adaptação do veículo; Desenvolver um software responsável pela tração e direção do veículo; Calibrar o movimento esperado com o realizado; Efetuar o controle em tempo real; Disponibilizar uma lista documentada com os comandos automatizados para o veículo.
Fundamentação teórica
Sistemas embarcados Propósitos específicos Parte de uma máquina ou sistema Informações internas e externas Exemplo em veículos freios ABS
Automação e controle Sistema: relação entre entradas e saídas Controle da variável de saída Malha fechada e realimentação Controlador Leis de controle (P, I, D)
Delcom Driver USB Microcontrolador pré-programado Manual de instruções e biblioteca.dll Utilização da API JNA
Sensores Elemento de medida Muda de estado Chave óptica Encoder
PWM Motores elétricos de corrente contínua Velocidade proporcional a tensão Circuito digital: 0 e 1 Modulação por largura de pulso
Trabalhos correlatos Auto estacionamento - Toyota Prius Módulo inteligente - Heinen Line tracking - Estevam
Desenvolvimento do trabalho
Requisitos principais Controle da direção em malha fechada (RF) Controle da velocidade em malha fechada (RF) Monitorar a distância percorrida (RF) Monitorar a velocidade em tempo real (RF) Ser implementado em Java utilizando o ambiente Eclipse (RNF)
Especificação Comandos para o movimento do veículo Veiculo elétrico infantil Dispositivos USB
Adaptação do veículo
Diagrama de classes class Classes Dispositivo Controle UsbIO - nom e: String - husb: Pointer - num Serial: int - versaofirm ware: byte - datafirm ware: String - m ajorcm d: byte - m inorcm d: byte - datalsb: byte - datam SB: byte - lenght: short - extdata: byte[] + close() : void + setpwm () : void + setpwm m otor1() : void + setpwm m otor2() : void + ligam otor1() : void + ligam otor2() : void + desligam otor1() : void + desligam otor2() : void + direitam otor1() : void + direitam otor2() : void + esquerdam otor1() : void + esquerdam otor2() : void + selecionasensor() : void + lesensor() : void + zerardispositivo() : void 2 1 - dispt racao: Dispositivo - dispdirecao: Dispositivo - roda: double - furosencoder: int - tem poamostragem : int - distanciapercorrida: double - parar: boolean - velocidadereal: double - anguloatual: double - distanciadesejada: double - velocidadedesejada: double - angulodesejado: double - distanciat otal: double - velocidadem ax: double - velocidadem in: double - em Movim ento: boolean + sentidoavanco() : void + sentidorecuo() : void + calcdistanciaam ostragem () : void + calcparar() : void + pararveiculo() : void + zerarsensores() : void + calcvelocidadereal() : void + calccontrole() : void + inclinaesquerda() : void + inclinadireita() : void + reiniciadirecao() : void + calcdirecao() : void + encerrar() : void + calcparardirecao() : void 1 1 - lib: InterfaceDelcom DLL - devicenam esarray: DeviceNameStruct + inidevice() : int + getdevicenam e() : String + opendevice() : Pointer + closedevice() : void + getserialnum () : int + getfirm wareversion() : byte + getfirm waredate() : String + sendpacket() : void InterfaceDelcomDLL DeviceNameStruct PacketStruct
Diagrama de sequência sd Sequencia Interface Controle Dispositivo UsbIO InterfaceDelcom DLL Usuário ou software Liga o carro() iniciacontrole() iniciausbio() iniciadispdirecao() iniciadispt racao() loop Seleciona sentido() sentidoavanco() disptracao.direitam 1() sendpacket() sendpacket() disptracao.direitam 2() sendpacket() sendpacket() Digita velocidade desejada() setvelocidadedesejada() Digita distancia desejada() setdistanciadesejada() Digita inclinacao desejada()
Implementação Enterprise Architect Protel99 Ferramenta Eclipse 3.2 (Java) Biblioteca DelcomDLL.dll APIs: JNA vs JNI
Operacionalidade
Resultados Testes de deslocamento Testes de carga/peso Implementação das leis de controle Comparação através dos gráficos
Resultados Kp 0,5 Kp 1 Kp 2
Resultados P PD PI PID
Conclusões Ferramentas utilizadas foram adequadas Motores diferentes Alimentação elétrica Técnicas de controle e estabilidade Limitação da direção
Extensões Aprimorar o mecanismo, permitindo o controle da direção Sensores para detecção de obstáculos Auto-estacionamento Reconhecimento de rota usando um gps