IA368W:2018 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: Terças e Quintas, 10:00 - 12:00 Hs - Sala PE-24

Contents

Notas

RA      Nota
122580  A
147538  A
152622  A
209441  A
209479  A
210433  E
211479  A
211489  A
226844  A
227060  E
227062  A
227184  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: 03/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: 24/04

Desenvolva um sistema simples de localização similar à localização por Markov. Nesse sistema o ambiente é discretizado em células e a posição do robô ao final de um intervalo é computada pelo modelo cinemático do robô mais a propagação de erros de odometria (veja a função posedistr). A cada N intervalos corrija a posição do robô utilizando a própria odometria do robô para simular um sensor de localização global (ver a função lesensor). Será necessário arbitrar algumas constantes, por exemplo, tamanho da célula (50-100 mm), desvio padrão do sensor de localização (0.05), constante Ks (0.005), constante b (165). Sugestões de outros valores serão passadas em aula. Código de apoio para a atividade disponível AQUI.


  • Atividade III - Prazo de entrega: 15/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 prediçã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: 12/06

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