Robótica Licenciatura em Engenharia Electrotécnica e de Computadores Licenciatura em Engenharia Biomédica Licenciatura em Engenharia Informática e de Computadores 2008/2009 Departamento de Engenharia Electrotécnica e de Computadores Área Cientı́fica de Sistemas, Decisão e Controlo o 2 Projecto Introdução ao planeamento de caminhos, navegação e controlo de robots móveis 1 Objectivos Este trabalho tem como objectivos: (i) a familiarização com a descrição cinemática, de robots com tracção diferencial, (ii) a introdução ao planeamento de caminhos e navegação em ambientes de baixa complexidade, (iii) a motivação para o estudo da programação de robots baseada em comportamentos. 2 Estrutura do trabalho Pretende-se comandar um robot móvel de tipo uniciclo através de um computador utilizando uma ligação via porta série. O comando do robot será suportado exclusivamente no modelo cinemático, não devendo ser considerados quaisquer aspectos relacionados com a dinâmica do mesmo, e.g., efeito da massa de cada um dos troços no movimento. No entanto é de notar que a dinâmica pode influenciar o comportamento dos robots de forma evidente, e.g., o nı́vel de carga das baterias de alimentação dos motores influencia a forma como estes respondem. O trabalho é realizado em MatlabT M e subdivide-se em três módulos base: 1. Determinação e simulação da cinemática diferencial do robot móvel; 2. Planeamento e geração de caminhos e navegação num meio envolvente estruturado; 3. Controlo de seguimento de caminhos (condução), evitando obstáculos inesperados. O trabalho deve ser resolvido no robot móvel ActivMedia Pioneer III DXe. Este robot possui uma cinemática caracterizada pela existência de 2 rodas colocadas em lados opostos de forma a que o movimento de translação do robot é conseguido quando ambas rodam no mesmo sentido. A rotação do robot é conseguida quando as rodas rodam com velocidades diferentes (por exemplo, uma rotação pura consegue-se com as rodas rodando com a mesma velocidade, em módulo, mas com sentidos diferentes. Robots móveis ActivMedia Pioneer III DXe Figura 1: Robots móveis de tipo uniciclo O robot Pioneer pode ser controlado através de um computador portátil com o qual comunica através de uma ligação série RS-232. Para o robot Pioneer é disponibilizado um conjunto de M-funções MatlabT M que permitem, por exemplo, especificar os valores das variáveis de controlo (velocidades das rodas linear e/ou angular), 1 ler a posição estimada (por odometria) no referencial do mundo e/ou as medidas efectuadas pelos sonares (no caso do Pioneer). O Apêndice A detalha a lista de M-funções disponı́veis para o robot Pioneer. 2.1 Planeamento e geração de caminhos num ambiente estruturado No Apêndice B está representada a planta de parte do piso 5 da Torre Norte, contemplando os corredores em redor da coluna central (elevador) e as entradas das várias salas, incluindo o LSDC4. Trata-se de um meio estruturado, dado que tem uma configuração geometricamente regular e pontos de referência (por exemplo as paredes dos corredores ou as portas das salas). Para o robot Pioneer, utilize este mapa para planear, usando um dos 2 métodos leccionados nas aulas da disciplina, um caminho, representado em FW , que leve da entrada do LSDCS4 até à sala de laboratório LSDC1, visitando de passagem o átrio do elevador. Especificamente, os dois métodos lecionados nas aulas são os seguintes: 1. Planeamento de trajectórias clássico baseado em “via points” e usando interpolação (splines/pchip). Note que o sistema de geração de caminhos deverá interpolar um caminho usando as configurações inicial, final e de via, que permita ao robot cumprir a missão sem colidir com nenhum dos obstáculos presentes no mapa. A forma de interpolação do caminho é livre, mas deve ser cuidadosamente justificada. 2. Planeamento de trajectórias baseado em “artificial potentials”. Portanto, um dos objectivos do trabalho consiste na implementação de um dos métodos e justificação da escolha do método. A sequinte informação será dada: • o mapa do ambiente considerado, • a configuração inicial do robot nesse mapa, • a configuração final desejada para o robot (especificada pelo utilizador) 2.2 Seguimento de um caminho Existem diversos métodos para deslocar um robot móvel de uma dada configuração (posição e orientação) inicial para uma configuração final desejada. Se ao sistema de condução for indicado como objectivo apenas a configuração final desejada, ao caminho seguido pelo robot enquanto se dirige para o objectivo pode ser qualquer. Esta situação pode conduzir a trajectórias de colisão com obstáculos (mesmo os conhecidos a priori) e portanto não é, em geral, aceitável. Um objectivo de controlo preferı́vel consiste em fazer o robot seguir um caminho de referência previamente gerado, garantindo ainda a não colisão com obstáculos inesperados (assumindo-se que o caminho planeado já evita os obstáculos conhecidos). O caminho de transição da configuração inicial para o caminho de referência deve ser neste caso o mais curto possı́vel. 2 2.2.1 Cinemática diferencial do uniciclo Existem várias metodologias de projecto de controladores de condução para robots uniciclo. Neste projecto propõe-se uma abordagem simples, de tipo modelo inverso, utilizando o modelo da cinemática diferencial do robot. A Figura 2 ilustra a definição dos principais parâmetros do robot uniciclo que permitem obter o modelo diferencial para a cinemática. yW FW YR FR ω l ω y d XR v θ h ωr x xW Figura 2: Parâmetros cinemáticos do uniciclo A relação entre os diferentes parâmetros pode ser expressa matricialmente da seguinte forma: W R ẋ v v ẏ = J(θ) ẋ = J(θ) = R(θ)K ω ω θ̇ θ̇ (1) onde J(q) é uma matriz jacobiano e R(θ) é uma matriz de rotação em torno do eixo Z (note que os referenciais FW e FR têm sempre os eixos Z com a mesma orientação) que relaciona as velocidades linear, v, e angular, ω, expressas no referencial do robot, FR , com as velocidades ẋW , ẏ W , θ̇W expressas no referencial do mundo, FW . Em condições ideais (que vamos assumir) o atrito faz com que ẏ R = 0, ou seja, o robot não sofre qualquer deslocamento lateral. Numa situação real as expressões deveriam ser calculadas contemplando a possibilidade de ẏ R 6= 0. Calcule a matriz R(θ) e, a partir desta, escreva uma M-file Matlab que permita simular o movimento do robot expresso no referencial FW do mundo. Teste o comportamento do simulador para diversas combinações de v e ω, i.e., para diferentes tipos de comportamentos elementares. Represente graficamente (numa janela de visualização) o movimento do robot. Note que se pretende apenas o mapa da evolução ao longo do tempo da posição (xW , y W ), e orientação, θW , do robot. Importante: Os referenciais indicados na Figura 2 não coincidem necessariamente com os assumidos pelos comandos reconhecidos pelos robots. É parte do processo de identificação da cinemática determinar quais os referenciais assumidos pelos comandos de movimento. Por exemplo, pode determinar 3 o sentido do eixo de rotação de ambos os robots simplesmente verificando qual a direcção de rotação quando se executa uma trajectória com v = 0 e ω = cte. 2.2.2 O sistema de controlo de condução Dado um caminho a seguir, é necessário assegurar que o robot converge para o mesmo e não mais o abandona, mesmo na presença de erros diversos, nomeadamente de odometria, i.e., erros no sistema de localização baseado na integração dos caminhos percorridos por cada roda. A Figura 3 esquematiza a estrutura do um controlador possı́vel, em cadeia fechada, baseado na técnica de modelo inverso. Figura 3: Estrutura do esquema de controlo para seguimento de um caminho Na figura, xd (t)W , yd (t)W , θd (t)W representa a configuração a seguir no instante t, ou seja, o caminho W W W de referência no instante t, e x(t) , y(t) , θ(t) a configuração onde se encontra o robot nesse instante. O bloco detector de obstáculos introduz alterações locais ao caminho gerado, sempre que um obstáculo inesperado é detectado, de forma a evitar a colisão com esse obstáculo. Determine uma estratégia para evitar obstáculos, baseada no princı́pio de alteração local do caminho gerado, e implemente-o, utilizando as leituras dos sonares (Pioneer) para detectar os obstáculos. O bloco C(θ) é uma matriz de dimensão 3x3 que deve ser dimensionada para que o controlador funcione convenientemente, isto é, para que o veı́culo se aproxime do caminho de referência sempre que o erro for diferente de zero. Dimensione esta matriz baseado em intuição geométrica do problema e procure ajustar o valor dos seus parâmetros simulando o controlo em cadeia fechada do robot no seguimento dos caminhos planeados na Secção 2.1. Sugestão: Antes de testar o desempenho da arquitectura desenvolvida no robot real é fundamental avaliar o desempenho do sistema através de simulação. 3 Resultados esperados • M-file (ou conjunto de M-files) para comando do robot escolhido, nomeadamente simulando a cinemática do uniciclo e o seguimento de caminhos, e contendo os algoritmos de seguimento do caminho gerado, evitando obstáculos inesperados, para o robot real. • Relatório final, detalhando todas as opções de projecto, nomeadamente a determinação dos parâmetros 4 da cinemática do robot, os algoritmos de planeamento e geração de caminhos, os parâmetros do controlador de condução e o algoritmo para evitar obstáculos inesperados. O relatório deverá definir um conjunto de experiências capaz de mostrar o desempenho das aplicações desenvolvidas bem como gráficos com as trajectórias obtidas em várias situações. O relatório poderá ter o máximo de 10 páginas A4, singlespace, 12pt. Do relatório deverá ainda constar, em apêndice (extra àquele número de páginas), um pequeno manual técnico descrevendo os procedimentos para utilização da(s) M-file(s). • Deverá ser entregue um CD-ROM contendo o relatório (em formato pdf ou doc) e o código fonte da(s) M-file(s). Se preferir, o aluno poderá enviar o relatório e o código fonte da(s) M-file(s) para o Professor Gustavo Carneiro. A The Pioneer mobile platform The Pioneer is a differential drive traction vehicle developed by ActivMedia Robotics, which body contains 3 batteries, 2 DC motors for independent traction, a ring of 16 sonars, and control electronics. The robot interfaces the outside via a RS232 serial port. M-file sp = serial port start() serial port stop(sp) pioneer init(sp) pioneer close(sp) pioneer set controls(sp, v, ω) pioneer set heading(sp, θ) pioneer set translation(sp, d) [ŝ1 · · · ŝn ] = pioneer read sonars() [x̂ ŷ θ̂] = pioneer read odometry() Description Initializes serial port Closes serial port Starts communication with the robot, and enables the motors Disables the motors, and stops communications Sets linear and angular velocities Makes the robot turn to an absolute angle w.r.t. odometry Makes the robot move straight ahead a given distance Reads the last updated sonar readings Reads the last updated odometry estimate Tabela 1: Main commands for the Pioneer robot Parameter sp v ω δ d x̂ ŷ θ̂ ŝi Meaning Serial port Matlab object Linear speed of the robot Angular speed of the robot Angle (absolute heading) Distance (relative, straight line) Position x coordinate estimate Position y coordinate estimate Heading θ estimate Sonar reading for the ith element Tabela 2: Meaning of the parameters involved in the Pioneer control Table 1 illustrates the main commands available for the control of the robot. Table 2 explains the meaning of the parameters. 5 The utilization of the Pioneer robot requires the following steps: 1. In Matlab, create a serial port object using the command serial port start; 2. Initialize the robot using the command pioneer init ; 3. Create a control algorithm, using the functions described in table 1, to obtain odometry and sonar readings, and establishing the movement control signals; 4. Close the robot interaction using the command pioneer close. 6 B Planta do piso 5 da Torre Norte Dimensões em cm 7