INTRODUÇÃO À ROBÓTICA MÓVEL

Documentos relacionados
INTRODUÇÃO À ROBÓTICA MÓVEL

INTRODUÇÃO À ROBÓTICA MÓVEL

Aula 7 Robótica Móvel Mapeamento

3 Filtro de Kalman Discreto

SEM0 M Aul u a l a 14 Sistema de Múltiplos Corpos Sistema Pro r f. D r. r Ma M r a c r elo l Becker SEM - EESC - USP

26/07/2009. Eduardo do Valle Simões Grupo de Sist. Embarcados, Evolutivos e Robóticos Fernando Santos Osório LRM Laboratório de Robótica Móvel

II. MODELAGEM MATEMÁTICA

II. MODELAGEM MATEMÁTICA

Introdução. Introdução. Introdução. Introdução. Introdução. Introdução à Robótica Robótica Móvel Localização. Principais questões na Robótica

Representações da Crença e Mapas Localização Probabilística baseada em Mapas Exemplos de outros Sistemas de Localização Bibliografia Recomendada

Análise matricial de estruturas não-lineares usando o Método de Newton.

Projeção ortográfica de sólidos geométricos

INTRODUÇÃO À ROBÓTICA MÓVEL

Prática X PÊNDULO SIMPLES

INTRODUÇÃO À ROBÓTICA MÓVEL

Plantas e mapas. Na Aula 17, aprendemos o conceito de semelhança

Modelagem Matemática e Simulação Computacional da Dinâmica de um Robô SCARA

A função f(x) = x é a função modular, cujo gráfico. A função g(x) = 1 - x é a função f(x) transformada.

Podemos utilizar o cálculo do determinante para nos auxiliar a encontrar a inversa de uma matriz, como veremos à seguir.

Filtro de Kalman. Teoria e Aplicação para Iniciantes. Prof. Dr. Marco Antonio Leonel Caetano. M&V Consultoria e Treinamento

Implementação do Filtro de Kalman Estendido

SSC5887 SSC5887. Histórico. Grupo de Sistemas Embarcados Evolutivos e Robóticos - SEER. Grupo de Sistemas Embarcados Evolutivos e Robóticos - SEER

Lista de Exercícios. Unidades, análise dimensional e fatores de. 13. A Lei da Gravitação Universal de Newton é

4 DEFINIÇÃO DA GEOMETRIA, MALHA E PARÂMETROS DA SIMULAÇÃO

ANÁLISE COMPLEXA E EQUAÇÕES DIFERENCIAIS TESTE 2A - 15 DE JUNHO DE DAS 11H. Apresente e justifique todos os cálculos. dy dt = y t t ; y(1) = 1.

Este capítulo descreve os testes realizados para validar a teoria proposta pela presente dissertação.

Informática para Ciências e Engenharias (B) 2015/16. Teórica 11

Estimação na Presença de Ruído colorido

Breve resolução do e-fólio B

Transmitir aos alunos conhecimentos sobre robótica fixa e móvel, visando capacitá-los a desenvolver

Marcela Gonçalves dos Santos, Walter Fetter Lages Universidade Federal do Rio Grande do Sul - Departamento de Engenharia Elétrica

Sist. Lin. I. Sistemas Lineares Introdução Definições Geometria Resolução Equivalência Eliminação de Gauss Após Escalonamento. Sist. Lin.

A própria caracterização geométrica da superfície topográfica, dada pela altitude, é definida rigorosamente a partir da superfície do geóide;

20/03/2017 ORGANIZAÇÃO DE UMA IMAGEM DIGITAL: ESTRUTURA DE UMA IMAGEM E CALIBRAÇÃO RADIOMÉTRICA AULA 01 ESTRUTURA DAS IMAGENS MULTIESPECTRAIS

SLAM II Localização e Mapeamento Simulatâneos

PME Mecânica dos Sólidos I 5 a Lista de Exercícios

A linguagem matemática

Triângulos especiais

5.1. Simulações para o Campo Magnético Gerado por um Ímã Permanente.

Detecção de Infração em faixa de pedestres sem semáforos utilizando visão computacional e redes neurais

O círculo e o número p

ϕ ( + ) para rotações com o Flechas e deflexões

Um dos conceitos mais utilizados em Matemática

Método dos Deslocamentos

A linguagem matemática

Uma lagrangeana para a corda vibrante

MOVIMENTO DE ROTAÇÃO: O ROTOR RÍGIDO

AGA Análise de Dados em Astronomia I 7. Modelagem dos Dados com Máxima Verossimilhança: Modelos Lineares

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação

Tema Tendências em Matemática Aplicada e Computacional, 15, N. 1 (2014), 59-71

5 Filtro de Kalman Aplicado ao Modelo de Schwartz e Smith (2000)

e rápido para estimar a potência. do rotor (i.e. seleccionar a sua área) para um

Fernando Fonseca Andrade Oliveira

EAE36AM - ESTATÍSTICA APLICADA A EXPERIMENTOS

Informá(ca para as Ciências e Engenharias Versão : C (Engenharia Civil) Aula 10. Pedro Barahona 2016 / 17

ANÁLISE MATEMÁTICA IV FICHA SUPLEMENTAR 5 EQUAÇÕES DIFERENCIAIS PARCIAIS E TRANSFORMADA DE LAPLACE

4 ABORDAGENS METROLÓGICAS

Controle utilizando variáveis de estado - v1.1

IA368-W Métodos Estocásticos em Robótica Móvel

Tratamento Estatístico de Dados em Física Experimental

Estimação de Estados em Sistemas de Potência

p( y θ ) depende de um parâmetro desconhecido θ.

Introdução. Introdução Exemplo. Introdução. Representação do Ambiente Exemplo. Representação do Ambiente. Mapeamento e Localização Simultâneos

Disciplina de Robôs Móveis Autônomos SSC-5888

Segmentação multiresolução: uma abordagem paralela para segmentação de imagens de alta resolução em arquiteturas de múltiplos núcleos

Mapeamento robótico. Mapeamento semântico. Metodologia. Maquinas de vetores de suporte. Maquinas de vetores de suporte. Modelos ocultos de Markov

Disciplina de Robôs Móveis Autônomos SSC-5888

19/05/2014. Histórico da Pesquisa em Robótica. Objetivos do curso. Informações. Calendário. Histórico

Informática para Ciências e Engenharias (B) 2015/16. Teórica 5

Informática para Ciências e Engenharias (B) 2015/16. Teórica 9

θ 30 o 53 o 60 o Sen θ 1/2 0,8 Cos θ

EES-20: Sistemas de Controle II. 20 Novembro 2017

5 Estimação de Parâmetros utilizando o Algoritmo SAGE

Estimadores ou Observadores de Estado

3 INTERVALOS DE CONFIANÇA

Você já percebeu que os gráficos são cada vez. Relatórios de empresas Análises governamentais Relatórios de pesquisas Balanços financeiros

15/05/2013. Histórico da Pesquisa em Robótica. Objetivos do curso. Informações. Calendário. Histórico

Disciplina de. Robôs Móveis Autônomos SSC-0714

7 Conclusões e desenvolvimentos futuros

Na figura abaixo, a balança está em equilíbrio e as três melancias têm o mesmo peso. Nessas condições, qual é o peso (em kg) de cada melancia?

Occupancy grid based graph-slam using the distance transform, SURF features and SGD

XIII Simpósio Brasileiro de Automação Inteligente Porto Alegre RS, 1 o 4 de Outubro de 2017

INTRODUÇÃO À ROBÓTICA MÓVEL

Um robô está num corredor. Ele possui um mapa do corredor mas não sabe onde está localizado. A parede do corredor e indistinta, exceto pelas portas.

5 Tudo que sobe, desce

XXVII Olimpíada Brasileira de Matemática GABARITO Segunda Fase

Improvement of a Robotic Soccer Team Using a Multilayered Control Architecture

UM CONTROLADOR PARA ROBÔS MÓVEIS BASEADO EM NUVEM DE PARTÍCULAS

RESTAURAÇÃO E RECONSTRUÇÃO DE IMAGENS. Nielsen Castelo Damasceno

Modelos de Perturbações. As perturbações existentes num sistema impôem limitações fortes no desempenho dos sistemas de controlo.

Física III. Alguns exemplos comentados

17/05/2011. Histórico da Pesquisa em Robótica. Objetivos do curso. Calendário. Informações. Histórico

Define-se o regressor,ϕ,como. e o vector de parâmetros a estimar, θ,como. O modelo escreve-se:

Improvement of a Robotic Soccer Team Using a Multilayered Control Architecture

CC-226 Aula 07 - Estimação de Parâmetros

Assim, a rápida acumulação de erros pequenos pode causar o fracasso de quase todos os métodos para resolver o problema de SLAM.

Redes Complexas Aula 7

8.5 Cálculo de indutância e densidade de energia magnética

Transcrição:

INTRODUÇÃO À ROBÓTICA MÓVEL Aua 25 Edson Prestes Departamento de Informática Teórica http://www.inf.ufrgs.br/~prestes prestes@inf.ufrgs.br

Odometria and Métodos de Dead-Reckoning Odometria permite boa precisão em curtas distâncias e possui baixo custo. Porém, devido à integração incrementa do movimento do robô, ea eva ao acumuo de erros proporciona à distância navegada. Ea é ampamente usada por sistemas de navegação em : Agoritmos de ocaização, mapeamento, exporação, etc.;

Odometria and Métodos de Dead-Reckoning Erros sistemáticos e não sistemáticos Odometria é baseada na idéia de que as revouções da rodas do robô podem ser convertidas em desocamento inear reativo ao chão. Esta idéia é imitada, pois considere o caso onde o robô está navegando por um chão sujo de óeo. Aém disso, existem outras fontes de erros que podem gerar imprecisões na conversão das revoução em desocamento inear: erros sistemáticos e não sistemáticos.

Odometria and Métodos de Dead-Reckoning Fontes de Erros Sistemáticos Diâmetro desigua das rodas; Medida do diâmetro modeado difere da medida do diâmetro rea; Desainhamento das rodas; Resoução finita do encoder; Taxa de amostragem das eituras do encoder finita,etc.

Odometria and Métodos de Dead-Reckoning Fontes de Erros Não-Sistemáticos Navegação em pisos irreguares; Derrapagem das rodas devido à: Presença de óeo no chão; Aceerações bruscas; Manobras rápidas; Forças externas (interação com objetos), etc.

Odometria and Métodos de Dead-Reckoning Erros sistemáticos e não-sistemáticos Na maioria das superfícies de ambientes internos erros sistemáticos contribuem mais para erros de odometria que erros não sistemáticos. Em superfícies irreguares, erros-não sistemáticos são dominantes. Erros não-sistemáticos podem aparecer inesperadamente. Portanto são mais difíceis de serem modeados.

Odometria and Métodos de Dead-Reckoning Erros sistemáticos e não-sistemáticos Figura extraída de [4]

Locaização É um componente essencia para um robô ser competamente autônomo. Se o robô não sabe sua posição no ambiente ee não pode reaizar nenhuma tarefa de navegação A odometria por si só não é suficiente para ser usada como estimativa da posição do robô, pois, em gera, ea é contaminada por erros sistemáticos e não sistemáticos. Os principais agoritmos são baseados em processo de Fitragem Bayesiana.

Locaização Figuras extraídas de [3]

Locaização Estimação Probabiística Ao invés de manter uma simpes hipótese de onde o robô está no mundo, mantém uma distribuição de probabiidade sobre o espaço de todas as hipóteses. Este tipo de representação eva em consideração às incertezas presentes na movimentação e no sensoriamento do robô Esta distribuição pode ser mutimoda para indicar situações ambíguas ou unimoda quando a certeza sobre a postura do robô é ata.

Locaização Estimação Probabiística Considere que o robô conheça sua posição inicia. Logo,a PDF terá um pico estreito(sharp) no oca correspondente. Quanto mais estreito e ato maior a certeza sobre a estimativa da posição do robô. Quando o robô se desoca, o oca do pico se desoca e devido a incerteza na movimentação, ee se tornará menor e mais argo. Quanto maior a veocidade do robô e o ruído, mais rápido o pico ficará argo. Para evitar isto, é necessário integrar nesta PDF informação sensoria. Isto compensa a perda de informação, fazendo com que o pico se torne mais estreito.

Locaização Estimação Probabiística Figuras extraídas de [4]

Locaização Fitragem de Kaman Fitragem de kaman fornece uma abordagem recursiva para a estimação de estados de um sistema dinâmico na presença de ruídos. Ee é caracterizado por manter uma estimativa do estado corrente do sistema x e uma matriz de covariância P do erro de estimativa. Podemos visuaizar o Fitro de Kaman como sendo aquee que fornece como saída uma função de densidade probabiística Gaussiana com média x e covariancia P

Locaização Fitragem de Kaman Linear Considere o vetor x(k) 2 R n como o estado do robô no instante k 2 N. A evoução do estado do robô e das medidas sensoriais é dada por x(k+1) = F(k)x(k) + G(k)u(k) + v(k) y(k) = H(k)x(k) + w(k) Onde u(k) 2 R m é a entrada para o sistema (veocidades, torque, etc); y(k)2 R p é a saída do sistema e contém os vaores dados peos sensores do robô F(k) 2 R n n codifica a dinâmica do sistema G(k) 2 R n m descreve como as entradas afetam a dinâmica. v(k) 2 R n é o ruído gaussiano com média 0 e matriz de covariância V(k). H(k)2 R p n descreve como o vetor de estado é mapeado para a saída w(k) 2 R p é o ruído gaussiano com média 0 e matriz de covariância W(k).

Locaização Fitragem de Kaman Linear Para determinar a mehor estimativa existem dois probemas : presença de ruídos desconhecidos v(k) e w(k), que devem ser eiminados peo Fitro. em gera o estado x(k) não é observáve diretamente a partir das saídas pois H(k) pode não ser invertíve O estado estimado deve ser reconstruído usando o histórico tempora dos sinais y(k) e u(k) com os parâmetros F(k), G(k), H(k), V(k) e W(k). Esta reconstrução é feita por um dispositivo chamado observador. O fitro de Kaman é tanto observador quanto fitro.

Locaização Fitragem de Kaman Linear Simpes Observador Considere um sistema discreto sem ruído x(k+1) = F(k)x(k) + G(k) u(k) y(k) = H(k)x(k) H é assumido ser uma matriz fu rank a cada instante k. Logo, o determinante de H não é 0. O observador executará um processo de dois passos. Dada uma estimativa do estado corrente Irá gerar uma predição de acordo com a dinâmica do sistema

Locaização Fitragem de Kaman Linear Simpes Observador O segundo passo é corrigir a predição baseada na saída y(k+1) para gerar a próxima estimativa É importante considerar que dada a saída y(k+1) o estado do sistema é restrito ao seguinte hiperpano = {x 2 R n H(k + 1)x = y(k + 1)} Portanto, a mehor estimativa no hiperpano mais próximo de será o ponto

Locaização Fitragem de Kaman Linear Simpes Observador x = - x é perpendicuar à Ω coumn(h(k+1)) é o espaço de counas de H(k+1), ou seja, o espaço que corresponde a todas as combinações ineares das counas de H. Logo, Figura extraída de [1] para 2 R p

Locaização Fitragem de Kaman Linear Simpes Observador Considere a inovação Como sendo a diferença entre o que os sensores reportam e o que reportariam se a predição estivesse certa. Sabemos que, Logo, pode ser escrito como uma função inear de v, i.e., = Kv, para K 2 R p p. Portanto temos, Lembrando que

Locaização Fitragem de Kaman Linear Simpes Observador K deve ser escohido de forma que Substituindo x, encontramos

Locaização Fitragem de Kaman Linear Simpes Observador Sistema: Predição: Correção : onde Atuaização:

Locaização Fitragem de Kaman Linear Simpes Observador Na atuaização, o ajuste no estado do robô é sempre perpendicuar ao hiperpano Erros na direção paraea à Ω nunca serão corrigidos. Como resutado, o estado estimado não convergirá para o estado rea do sistema na maioria dos casos[1]. A vantagem deste estimador é que as idéias usadas são as mesma do fitro de Kaman.

Locaização Fitragem de Kaman Observando com uma PDF O observador anterior produz uma estimativa que é um vetor. A estimativa produzida por um Fitro de Kaman é uma distribuição gaussiana mutivariada. Ou seja, o fitro de kaman aém de fornecer um vetor de estado estimado fornece também uma matriz de covariância do erro da estimativa P(k k).

Locaização Fitragem de Kaman Observando com uma PDF Considere o seguinte sistema com ruído na dinâmica, mas sem ruído nas medidas x(k+1) = F(k)x(k) + G(k) u(k)+v(k) y(k) = H(k)x(k) Ruído Onde v(k) 2 R n é um ruído gaussiano de média zero e matriz de covariância V(k). Usando, temos pois o vaor esperado de v(k) é zero

Locaização Fitragem de Kaman Observando com uma PDF A matriz de covariância é dada por Substituindo o vaor de e encontramos Após agumas manipuações temos

Locaização Fitragem de Kaman Observando com uma PDF Usando a propriedade da soma do vaor esperado, temos Como v(k) é independente de x(k) e de Como E[v(k)]=0, Torna-se

Locaização Fitragem de Kaman Observando com uma PDF Para encontrar a equação de atuaização, escohemos que seja o mais prováve ponto no hiperpano = {x 2 R n H(k + 1)x = y(k + 1)} ou seja, o que maximiza a distribuição gaussiana definida por e, i.e., A maximização de P(x), envove a minimização do expoente de e, i.e.,

Locaização Fitragem de Kaman Observando com uma PDF A distância e o produto interno de Mahaanobis[1] entre duas variáveis aeatórias x e y e matriz de covariância S são dados por Logo, a minimização de x y 2 M =(x y) T S 1 (x y) Consiste em cacuar x 2 Ω, ou seja, minimizar de forma a = = - M

Locaização Fitragem de Kaman Observando com uma PDF é ortogona a Ω com reação ao produto interno de mahaanobis, ou seja, infuenciada por P(k+1 k). Logo, x = P(k+1 k)h(k+1) T Considerando a inovação como Temos x = P(k+1 k)h(k+1) T Ki, para K 2 R p. De forma simiar ao apresentado no observador simpes, temos que ter

Locaização Fitragem de Kaman Observando com uma PDF Substituindo x, Encontramos

Locaização Fitragem de Kaman Observando com uma PDF Sistema: x(k+1) = F(k)x(k) + G(k) u(k)+v(k) y(k) = H(k)x(k) Predição: Correção: onde Atuaização:

Locaização Fitragem de Kaman Observando com uma PDF Como o observador simpes, este novo observador possui aguns probemas[1]: Devido ao fato de não termos considerado ruído na eitura dos sensores, as equações de atuaização farão com que a matriz de covariança se torne singuar. Uma matriz singuar possui determinante igua a 0, o que é coerente com o fato de que as medidas sensoriais não possuem incertezas. Isto prejudica a distribuição gaussiana que usa a inversa da matriz de covariância.

Locaização Fitragem de Kaman O fitro de Kaman usa os conceitos e mecanismos apresentados anteriormente, com a diferença de que o sistema é descrito por x(k+1) = F(k)x(k) + G(k) u(k) + v(k) y(k) = H(k)x(k) + w(k) Onde u(k) 2 R m é a entrada para o sistema (veocidades, torque, etc); y(k)2 R p é a saída do sistema e contém os vaores dados peos sensores do robô F(k) 2 R n n codifica a dinâmica do sistema G(k) 2 R n m descreve como as entradas infuênciam a dinâmica. v(k) 2 R n é o ruído gaussiano com média 0 e matriz de covariância V(k). H(k)2 R p n descreve como o vetor de estado é mapeado para a saída w(k) 2 R p é o ruído gaussiano com média 0 e matriz de covariância W(k).

Locaização Fitragem de Kaman Observando com uma PDF Sistema: x(k+1) = F(k)x(k) + G(k) u(k)+v(k) y(k) = H(k)x(k) + w(k) Predição: Correção: onde Novo termo Atuaização:

Locaização Fitragem de Kaman Exempo Dead Reckoning Considere um robô que se move em inha reta com estado e u como sendo a força que se apica ao robô. Sabemos pea segunda ei de newton que ou Logo, o próximo estado do robô é dado por Ruído gaussiano com média zero O robô possui um sensor que mede veocidade.

Locaização Fitragem de Kaman Exempo Dead Reckoning Em [1], são assumidos os seguintes parâmetros m=1, T=0.5, W=0.5 (variância na medida) e matriz de covariância V No instante k

Locaização Fitragem de Kaman Exempo Dead Reckoning Figuras extraídas de [1]

Locaização Fitragem de Kaman Exempo Dead Reckoning A incerteza diminuiu na direção vertica devido à informação obtida peo sensor de veocidade, porém existe perda de informação na direção da posição. Este probema não ocorre devido ao Fitro de Kaman, mas devido ao fato do sistema não ser observáve, ou seja, o estado do sistema não pode ser recuperado a partir das saídas disponíveis. Logo, o erro esperado irá crescer iimitadamente. Se o sistema é observáve, a estimativa fornecida peo Fitro de Kaman converge, ou seja, o erro esperado entre o estado atua e o estado estimado é imitado. Figura extraída de [1]

Locaização Fitragem de Kaman Fitro de Kaman Estendido Em gera, os sistemas dinâmicos são não-ineares. Portanto, temos que estender o Fitro de Kaman para tratar a não-inearidade do sistema. Considere o seguinte sistema A fase de predição é dada peas equações onde

Locaização Fitragem de Kaman Fitro de Kaman Estendido Correção: onde e

Locaização Fitragem de Kaman Exempo - Fitro de Kaman Estendido Considere um robô capaz de detectar andmarks previamente mapeados no ambiente. O estado do robô no instante k é dado por E a entrada de controe é dada por as veocidades inear e anguar. onde u 1 (k) e u 2 (k) representam O sistema dinâmico é dado por O ambiente possui n andmarks com posição porém o robô consegue apenas ver apenas uma quantidade p(k) a cada instante k. A função abaixo associa cada andmark visto com os conhecidos previamente.

Locaização Fitragem de Kaman Exempo - Fitro de Kaman Estendido A saída do sistema é dada por com Como a dinâmica do sistema é dada por A Jacobiana de f é Lembrando que

Locaização Fitragem de Kaman Exempo - Fitro de Kaman Estendido A matriz H que é usada para produzir a saída do Fitro é definida por com Lembrando que

Locaização Fitragem de Kaman Exempo - Fitro de Kaman Estendido A abordagem apresentada assume que a associação entre cada medida com o andmark já conhecido é feita corretamente, sem erros. Na prática, esta associação pode não ser tão fáci!! já que os andmarks podem ser muito parecidos. Este probema é chamado Associação de Dados, ou Data Association. A idéia básica para a associação de dados é considerar para cada medida i ( y i (k+1)) e andmark j um vaor de inovação v ij A medida y i (k+1) é associada ao andmark j que produza a menor inovação de acordo com a norma de Mahaanobis. Esta norma incorpora as incertezas associadas à predição e às medidas.

Locaização Fitragem de Kaman Exempo - Fitro de Kaman Estendido Figura extraída de [1]

Simpe SLAM - Fitragem de Kaman Estado do sistema Posição do robô Veocidade no eixo x e no eixo y Posições dos andmarks Erros associados ao desocamento A cada instante de tempo o robô consegue ver todos os andmarks, e pode distingui-os. Não temos o probema de associação de dados.

Simpe SLAM - Fitragem de Kaman Estimativa da posição para o andmark i Saída produzida peo Fitro Através deste conjunto de equações para o Fitro de Kaman Estendido, estamos estimando tanto a posição do robô quando dos andmarks Matriz de covariância associada ao ruído w(k)

Simpe SLAM - Fitragem de Kaman Como transformar este exempo em um SLAM efetivo, capaz de fornecer uma estimativa sobre a posição do robô e dos andmarks desconhecidos presentes no ambiente? A chave é verificar se um andmark é novo ou é agum já armazenado no mapa. Isto é feito através norma de Mahaanobis apicada ao termo de inovação Se o vaor mínimo encontrado é maior que um dado imiar, então o andmark é novo devendo ser iniciaizado e adicionado ao mapa.

BIBLIOGRAFIA [1] H. Choset, K. Lynch, S. Hutchinson, G. Kantor, W. Burgard, L.Kavraki, S. Thrun. Principes of Robot Motion : Theory, Agorithms, and Impementations. MIT Press. 2005. [2] D. Fox, W. Burgard and S. Thrun. Markov Locaization for mobie robots in dynamic environments. Journa of Artificia Inteigence Research (JAIR), 11: 391-427, 1999. [3] S.Thrun. Learning Metric-Topoogica Maps for Indoor Mobie Robot Navigation. Artificia Inteigence, v.99, n. 1, 21-71,1998. [4]. S. Thrun, W. Burgard, and D. Fox. Probabiistic Robotics. MIT Press, Cambridge, MA, 2005.