IA368W:2019 1S

De DCA-Wiki

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

  • Professores: Eleri Cardozo (eleri@dca.fee.unicamp.br), Eric Rohmer (eric@dca.fee.unicamp.br)
  • Horário das aulas: Quartas e Sextas, 10:00 - 12:00 Hs - Sala PE-35


Contents

Notas

RA      Nota
47809   A
98816   B
228016  A
230361  A
878281  A


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 mapeamento, localização, mapeamento e localização simultâneos (SLAM) e planejamento e controle. Atividades práticas serão propostas ao longo do curso. Tais atividades consistem na implementação de algumas técnicas abordadas no curso e sua execução tanto em ambientes simulados quanto em ambientes reais com a utilização do robô móvel Pioneer P3DX. Para a elaboração das atividades práticas é requirido do aluno conhecimento da linguagem Matlab ou Python.


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. Mapeamento e localização robótica. Localização e mapeamento simultâneos (SLAM). Planejamento e controle de robôs móveis.


Critério de Avaliação

O aluno deverá elaborar relatório de cada atividade prática descrevendo detalhes de implementação dos algoritmos (texto contendo 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 frequência. Abaixo deste limite o aluno se reprova por frequê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 (recomenda-se a versão 5.2). Será fornecido ao aluno uma máquina virtual para este sistema com o sistema operacional Ubuntu (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). As atividades práticas podem ser realizadas também em Python.


  • Atividade I - Prazo de entrega: 17/04

Implemente o algoritmo de mapeamento baseado em grades de ocupação (página 286 do livro texto). Teste o algoritmo para diferentes covariâncias do sensor (distância e angulação). Elabore um relatório contendo uma descrição do algoritmo, sua implementação, testes, avaliação e comentários sobre a atividade. Utilize o recurso de grupos para a leitura do laser e da pose. Sugestão: utilize o programa plotinvsensor2.m como ponto de partida. Utilize o mecanismo de ações para locomover o robô - http:://<ip robo>:4950/web/


  • Atividade II - Prazo de entrega: 08/05

Desenvolva uma aplicação que estime a propagação de erros de odometria de um robô diferencial. Para visualizar a propagação de erros, plote uma elipse de erro em torno da pose estimada pelo modelo cinemático do robô com base na matriz de covariância da pose. Compute elipses de erro para um e dois desvios padrão. Compare a pose do robô dada pelo modelo cinemático com a pose do robô dada pela sua odometria (/motion/pose). Estime a atuação no robô com /motion/vel2 e utilize o mecanismo de ações para locomover o robô (http://<ip robo>:4950/web/). Sugestão: função para traçar elipses no Octave (calculateEllipse.m).


  • Atividade III - Prazo de entrega: 22/05

Nesta atividade o aluno implementará um algoritmo de localização robótica utilizando o Filtro de Kalman. Nesse algoritmo o modelo cinemático do robô diferencial é utilizado apenas na propagação de erros de odometria (matriz ∑). A odometria do robô é utilizada na fase de atualização, ou seja, a pose futura do robô será dada pela odometria e não pelo modelo cinemático. O aluno deve calibrar o algoritmo no simulador antes de utilizá-lo no robô real. A calibração consiste em determinar as matrizes de covariância e o intervalo de discretização que propiciem boa estabilidade ao algoritmo.

  • Código de apoio para esta atividade: (ZIP).
  • Guia de implementação do algoritmo de localização baseado em Filtro de Kalman: (PDF) (Paulo Pinheiro).


  • Atividade IV - Prazo de entrega:

Implemente o algoritmo de SLAM baseado em Filtro de Kalman Estendido (EKF Slam). Utilize o algoritmo de detecção de features disponibilizado para esta atividade. Avalie a estabilidade do algoritmo em termos do tempo que o algoritmo permanece estável. Avalie também a precisão do algoritmo comparando periodicamente os landmarks detectados a partir da pose do robot com os landmarks reais (por exemplo, o erro quadrático médio das distâncias entre os landmarks detectados e reais).

  • Algoritmo Split-And-Merge (ZIP)
  • Guia de implementação do EKF Slam (PDF).


Slides


Recursos

Ferramentas pessoais