IA368W:2014 1S

De DCA-Wiki

IA368W Tópicos em Engenharia de Computação: Métodos Estocásticos para Robótica Móvel

  • Professores: Eleri Cardozo (eleri@dca.fee.unicamp.br), Paulo G. Pinheiro (paulopine@gmail.com) e Leonardo R. Olivi (lrolivi@gmail.com)
  • Horário das aulas: Terças e Quintas, 16:00 - 18:00 Hs - Sala PE-26


Contents

Notas Finais

  • 070164 - A
  • 149968 - A
  • 153707 - A
  • 153883 - B
  • 159528 - B


Dinâmica do Curso

O curso pode ser considerado de nível intermediário na área de Robótica Móvel. Espera-se do aluno conhecimentos básicos de robótica móvel tais como os abordados em textos introdutórios, por exemplo, o livro de R. Siegwart e I. Nourbakhsh "Introduction to Autonomous Mobile Robots" (veja referências abaixo). O curso enfocará nos métodos estocásticos comumente aplicados nos problemas de robótica móvel, notadamente o problema da localização robótica. Atividades práticas serão propostas ao longo do curso. Tais atividades consistem na implementação das principais técnicas abordadas no curso e sua execução tanto em ambiente simulado quanto em ambientes reais com a utilização do robô Pioneer P3DX. Para a elaboração das atividades práticas é requirido do aluno bons conhecimentos da linguagem Matlab.


Ementa do Curso

Revisão de robótica móvel. Arquiteturas e programação de robôs móveis. Revisão da Teoria de Probabilidades. Extração de características do ambiente. Modelagem de sensores robóticos. Filtros de Bayes. Processos de Markov. Filtros Gaussianos. Filtros Não-paramétricos. Localização robótica. Localização e mapeamento simultâneos (SLAM).


Critério de Avaliação

O aluno deverá elaborar relatório de cada atividade prática descrevendo detalhes de implementação dos algoritmos (texto contando diagramas, pseudo-código, fluxogramas), bem como o código implementado, os testes realizados e os resultados obtidos. Ao final do curso, o aluno deverá demonstrar individualmente o funcionamento de cada atividade bem como responder perguntas sobre como as mesmas foram implementadas. Estão previstas 4 atividades práticas com prazo de realização entre 2 e 4 semanas cada. A nota final será a média aritmética das notas das 4 atividades. Não haverá exame final.

OBS: O regimento da Unicamp exige 75% de freqüência. Abaixo deste limite o aluno se reprova por freqüência. O aluno deve observar também que na Unicamp existem critérios bem claros para o abono de faltas que não dependem do professor.


Referências

  • Sebastian Thrun, Wolfran Burgard e Dieter Fox, Probabilistic Robotics, The MIT Press, 2006. Site do livro.
  • Roland Siegwart e Illah Nourbakhsh, Introduction to Autonomous Mobile Robots, The MIT Press, 2004. Site do livro.


Atividades Práticas

Para a realização das atividade práticas o aluno deverá instalar o Virtual Box em seu computador. Será fornecido ao aluno uma máquina virtual para este sistema com o sistema operacional Xubuntu (Linux) contendo o software necessário para a realização das atividades práticas. Dentre o software fornecido encontra-se a última versão do Octave, um clone do Matlab. O aluno poderá utilizar o Matlab original em seu computador (não fornecido).

  • Atividade I

Implemente em Matlab o algoritmo Split-And-Merge para realizar o mapeamento 2D do ambiente por meio de linhas onde cada linha representa uma parede. Determine, além das linhas, a posição (x, y) do cruzamento das linhas, os cantos do ambiente. Estes cantos serão utilizados futuramente para localizar o robô no ambiente.

  • Atividade III

Utilizando o algoritmo Split-And-Merge da atividade I e o desvio padrão do laser estabelecido na atividade II, desenvolva um algoritmo capaz de detectar landmarks, no caso, cantos de paredes. Utilize máxima verossimilhança para estabelecer a correspondência entre a feature detectada e as features presentes no mapa. Teste o algoritmo para diferentes posições do robô, tanto no simulador quanto no robô real. Adote um threshold apropriado para o ambiente do robô (feec.map).

  • Atividade IV

Utilizando o algoritmo de detecção de landmarks da atividade anterior, implemente o algoritmo de localização baseado no Filtro de Kalman. Implemente a variante que funde a odometria com o laser, utilizando o modelo cinemático para computar a matriz de covariança da pose. Note que o Filtro de Kalman requer o estabelecimento de vários parâmetros que devem ser ajustados para o nosso robô e seu ambiente. Teste o algoritmo com o robô parado e depois com o robô em movimento. Utilize ações para movimentar o robô realizando um "passeio" pelo ambiente. Reporte no relatório os parâmetros que você utilizou e forneça um gráfico das correções que o filtro realizou na pose do robô ao longo do tempo. Ao final do "passeio", páre o robô e rode o algoritmo Split-And-Merge para verificar visualmente o alinhamento das paredes.

  • Atividade IV

Implemente o algoritmo de localização utilizando Filtro de Partículas conforme apresentado em aula. Verifique a convergência do algoritmo (empregando pelo menos dez execuções) em função dos seguintes parâmetros: 1. Número inicial de partículas; 2. Número de partículas reamostradas; 3. Número de partículas aleatórias para cada reamostragem.


Slides

Recursos

  • Mapa do ambiente do robo.
  • Máquina virtual (VirtualBox): Formato ZIP ou TAR.GZ
  • IMPORTANTE: No VirtualBox, para finalizar a máquina selecione no menu 'Máquina' a opção 'Fechar'. Na tela seguinte selecione 'Desligar a máquina (P)' e NÃO 'Envia o sinal de desligamento'. Para alternar entre tela cheia e tela parcial use <R-Ctrl>F once <R-Ctrl> é a tecla 'Ctrl' no lado direito do teclado.
  • Caso o aluno deseje, ele poderá instalar por si o software fornecido na máquina virtual. Veja README.
  • Resthru 32 bits. Formato ZIP ou TAR.GZ
  • Resthru 64 bits. Formato ZIP ou TAR.GZ
  • API Matlab/Octave. Formatos ZIP ou TAR.GZ
  • Shell Script para executar o servidor. Veja instruções de uso deste script aqui.
  • Manipulação de grupos no Matlab: HowTo
  • Filtro de Bayes (Leonardo Olivi)
  • Detecção de Landmarks (Leonardo Olivi)
  • Posição dos landmarks:
    • Mapa do simulador: (0,0), (0, 2280), (920, 2280), (920, 3200), (4190, 3200), (4190, 2850), (4680, 2850), (4680, 650), (4030, 0)
    • Mapa do ambiente real: (0,0), (0, 2280), (930, 2280), (930, 3200), (4220, 3200), (4220, 2855), (4700, 2855), (4700, 670), (4030, 0)
  • Uso da VM no nosso servidor: HowTo
  • Atualização do diretório /web do RestThru: ZIP TAR.GZ
  • Parametros do Filtro de Kalman:
Dt = 2;     % [segundos]
SigmaX = 5; % erros de odometria [mm e rad]
SigmaY = 5;
SigmaTh = 1;
SigmaR = 0.5; % erros do sensor [mm e rad]
SigmaB = 0.1;
Ks = 0.1;     % erros de deslocamento
Kth = 0.1;  
baxis = 165;  % eixo do robô [mm]
  • Guia de implementação do algoritmo de localização baseado em Filtro de Kalman (PDF) (Paulo Pinheiro)
  • Guia de implementação do algoritmo de localização baseado em Filtro de Partículas (PDF) (Paulo Pinheiro)
Ferramentas pessoais