X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a 21 de setembro de 2011 São João del-Rei - MG - Brasil ESTABILIZAÇÃO FUZZY DA POSTURA DE UM ROBÔ HUMANÓIDE Felipe Brandão Cavalcanti∗, Nelson Buzeto∗, Adolfo Bauchspiess∗, Geovany A. Borges∗ ∗ LARA - Laboratório de Automação e Robótica Departamento de Engenharia Elétrica - Universidade de Brası́lia 70910-970 Brası́lia, DF, Brasil Emails: [email protected], [email protected], [email protected], [email protected] Abstract— This work focuses on the implementation of a Fuzzy pose stabilitzation controller for humanoid robots’ equilibrium, relying only on the actuation of the hip, foot and knees of the robot. Expert knowledge is translated into Fuzzy sets and rules, using angular speed and inclination as the inputs of the controller. Results show that the Fuzzy controller is an interesting alternative to traditional non-linear controllers when a model is not available or when the complexity of such implementation is considered. Keywords— Fuzzy control, humanoid robotics, bipedal robotics, robot equilibrium. Resumo— Esse trabalho implementa de um controlador Fuzzy de pose para o equilı́brio de robôs do tipo humanóide, atuando apenas nos quadris, pés e joelhos do robô. O conhecimento especialista é traduzido em conjuntos Fuzzy e regras para equilı́brio, com a velocidade angular e inclinação do robô como entradas. Os resultados mostram que o controlador Fuzzy é uma alternativa interessante aos controladores não-lineares tradicionais quando o modelo é não está disponı́vel ou quando se considera a complexidade de tal implementação. Palavras-chave— 1 Controle Fuzzy, robótica humanóide, robótica bı́pede, equilı́brio de robôs. Introdução O robô humanóide sempre foi um dos principais representantes do estado da arte no campo da robótica - robôs que se parecem com humanos e muitas vezes agem como tais são, para muitos, fascinantes em vários aspectos, tornando-os excelentes objetos para pesquisas na área de controle. Dentro do universo de tópicos que podem ser abordados no campo da robótica bı́pede, uma área que recebe destaque é o controle de postura, considerada parte essencial de um robô humanóide autônomo (Hirai et al., 1998). Na classe de robôs com pés, os robôs bı́pedes apresentam uma vantagem clara na questão da manobrabilidade - eles precisam de pouco espaço para se locomover. Entretanto, isso prejudica o equilı́brio, exigindo um bom sistema de controle de postura para viabilizar o seu uso. Os robôs humanóides também combinam as vantagens do robô bı́pede com as de um robô manipulador, permitindo uma interação muito grande com o ambiente e as ferramentas utilizadas por seres humanos. Uma das principais restrições dos robôs móveis equipados com rodas é a limitação de locomoção em ambientes acidentados ou projetados para seres humanos, locais onde os robôs com pés, especialmente os robôs bı́pedes, são claramente mais apropriados (Prahlad et al., 2008). Além disso, a solução do problema de estabilização do robô humanóide pode ser adaptado para controlar próteses de forma ativa, auxiliando pessoas com restrições de locomoção. O desafio de controlar a postura do robô humanóide já vem sendo estudado desde o final da década de 60 (Vukobratovic and Borovac, 2004), o que levou a criação de várias abordagens para ISSN: 2175-8905 - Vol. X a solução do problema. Nota-se que todas exigem uma grande quantidade de medidas sobre o estado atual do robô e seu ambiente - informações normalmente disponibilizadas por meio de uma rede de sensores instalada no próprio robô, e algumas vezes no ambiente onde este se encontra. Notase também que um modelo dinâmico é necessário para a implementação de uma estratégia de controle convencional. A estabilização estática do robô é o primeiro passo para se realizar um controle completo de marcha. O principal objetivo desse trabalho é o estudo e a implementação de um sistema de controle de estabilização do robô humanóide baseado em lógica Fuzzy, melhorando sua resposta a pertubações, como forças externas, colisões e variações no ambiente tais como degraus ou inclinações. Este trabalho utiliza o robô Bioloid (Robotis, 2009), ilustrado na Figura 1, da empresa coreana Robotis. Ao robô foram acrescentados sensores para ser uma plataforma completa de pesquisa (Cavalcanti and Borges, 2009) (Globo, 2011), e os estimadores de orientação e um controle proporcional foi desenvolvido em (Cavalcanti and Borges, 2010). O robô conta com 18 graus de liberdade, Linux embarcado com a extensão em tempo real Xenomai (Xenomai, 2011), sensores de Zero Moment Point (ZMP), unidade de medidas inerciais e uma Application Programming Interface (API) completa de aquisição de dados e controle. Este trabalho está organizado da seguinte maneira: a seção 2 trata da descrição da plataforma de pesquisa utilizada; a seção 3 apresenta a implementação do algoritmo de controle Fuzzy, os resultados são apresentados na seção 4, e na seção 5 estão relatadas as conclusões. 123 X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a 21 de setembro de 2011 São João del-Rei - MG - Brasil Figura 2: Modelo enumerando as juntas da plataforma Bioloid/UnB. Figura 1: A plataforma Bioloid, da Robotis, acrescida de instrumentação UnB. 2 2.1 A plataforma Bioloid/UnB Construção mecânica A plataforma Bioloid/UnB conta com 18 servomotores AX-12+, capazes de fornecer 16,7 kgf·cm de torque, além de fornecer dados de posição, torque e velocidade em tempo real (Robotis, 2006). Cada junta conta com um servo-motor dedicado. Para este estudo de estabilidade, a plataforma original foi modificada através da remoção dos braços do robô, diminuindo em 6 a quantidade de juntas a serem atuadas. Esta modificação foi feita visando a construção de um sistema de controle que dependesse somente da ação abaixo do torso do robô, permitindo que os braços manipuladores fossem dedicados a outra tarefa. Além disso, todo o estudo foi feito somente no plano sagital, tendo em vista que podemos considerar os pertubações nos planos frontal e sagital independentes. A plataforma como utilizada conta então com 6 juntas executando o controle de estabilidade os dois pés, os dois joelhos e as duas juntas do quadril. Na prática, como os movimentos de cada par de servos são idênticos, o sistema conta com 3 graus de liberdade efetivos, o que facilita bastante o ajuste dos controladores Fuzzy e a captura do conhecimento especialista em equilı́brio. Um modelo ilustrativo do robô, substituindo as estruturas por massas pontuais, pode ser vista na Figura 2. (Cavalcanti and Borges, 2009). A principal modificação foi a parte de software - o código do controlador original foi substituı́do por um código cuja única função era de repassar as referências do sistema de controle, com garantia de determinismo e o acesso às funcionalidades mais avançadas dos servo-motores das juntas. Além do software do controlador, um computador embarcado Gumstix Verdex XL6-P foi instalado no robô. O sistema foi preparado com Linux modificado pela extensão em tempo real Xenomai, e drivers apropriados foram desenvolvidos a fim de garantir a operação em tempo real. Esse sistema embarcado é o responsável por toda estimação e controle da plataforma. Essa abordagem permite 1 s. o controle em intervalos de até 33 A fim de suprir os dados necessários para o controle do robô, uma unidade de medidas inerciais (Inertial Measurement Unit - IMU), com girômetros e acelerômetros de 3 eixos foi instalada no torso do robô, permitindo que a inclinação em relação a gravidade fosse estimada através de um Filtro de Kalman. Uma visão geral da arquitetura do sistema do Bioloid/UnB pode ser vista na Figura 3. Esta arquitetura permitiu a implementação de todos os algoritmos em C. Os controladores Fuzzy foram projetados, validados e sintetizados utilizando o XFuzzy 3.0 (Xfuzzy Team, 2003). A arquitetura também permite a aquisição de dados offline e online, facilitando a avaliação dos resultados obtidos. 3 3.1 2.2 Arquitetura de sistema O que viabilizou a implementação do controlador de postura na platarma Bioloid/UnB é o trabalho de instrumentação, descrito em detalhes em ISSN: 2175-8905 - Vol. X O controlador Fuzzy Funcionamento do processo de controle O controlador proposto atua diretamente sobre a referência de posição e o módulo da velocidade de cada junta do robô, que já contam com controladores PIDs locais. O controlador Fuzzy tem como 124 X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a 21 de setembro de 2011 São João del-Rei - MG - Brasil Girômetros Placa de Sensores 3.2 IMU ATMega8 Acelerômetros TTL 3.3V Dynamixel AX-12+ - Junta 1 Filtro de Kalman Gumstix Verdex XL6P Dynamixel AX-12+ - Junta 2 ... RS232 Dynamixel AX-12+ - Junta 18 RS232 CM-5 Sensor de ZMP - Pé 1 Bioloid Bus (TTL) Controlador de Alto Nível / Computador Sensor de ZMP - Pé 2 Figura 3: Arquitetura de sistema do robô Bioloid/UnB. entrada a velocidade e posição angular do robô em relação ao vetor gravidade. A ação de controle (ou seja, a referência do controlador PID local da junta) é a soma entre o ângulo da junta determinado pela pose atual, e a componente Fuzzy multiplicada por uma constante: ui = θref + Ki δf uzzy (v, φ) (1) γi = Ki0 γf uzzy (v, φ) (2) O Controlador O controlador utilizado foi um controlador Fuzzy do tipo Mamdani (Aguiar and Junior, 2007), o qual permite uma facilidade maior em definir regras e conjuntos de pertinência baseados em conhecimento especialista sobre o processo. Utilizando como base funções de pertinência diferenciadas para cada entrada ou saı́da do sistema de controle foi obtida uma dinâmica especı́fica para cada junta. As funções de pertinência escolhidas para a posição angular de entrada (ou seja, o erro em relação a gravidade) se resumem a apenas 5 posições diferentes. Tais funções de pertinência se encontram evidenciadas na imagem a seguir onde o ângulo mı́nima apresentado é de -90◦ e o máximo é de 90◦ . As funções a seguir estão respectivamente da esquerda para a direita nomeadas como: “Muito Negativo”, “Pouco Negativo”, “Equilı́brio”, “Pouco Positivo” e “Muito Positivo”, como ilustradas pela Figura 5. O alinhamento do robô com a gravidade (ou seja, 0◦ ) é a posição de equilı́brio do robô. onde, • ui é a referência ângular da i-ésima junta • γi é a velocidade da i-ésima junta • θref é o ângulo planejado da i-ésima junta • δf uzzy é o fator de modificação da referência (controlador Fuzzy) • γf uzzy é o fator de modificação da velocidade (controlador Fuzzy) • v é a velocidade angular • φ é a estimação da inclinação do torso do robô em relação à vertical • Ki e Ki0 são constantes de atenuação da iésima junta O sistema se baseia em levar o robô como um todo para uma pose de referência, ou seja, uma pose marginalmente estável. Quando uma pertubação é detectada através dos sensores de aceleração e velocidade angular, o controlador Fuzzy modifica as referências das juntas, a fim de manter o equilı́brio do robô. Quando a pertubação deixa de existir, o controlador Fuzzy volta lentamente a ter ação zero - ou seja, o único sinal de atuação nas juntas passa a ser a referência angular da pose original. Esse controle atua nas juntas dos pés, joelhos e quadril do robô. Tal arranjo é ilustrado na Figura 4. ISSN: 2175-8905 - Vol. X Figura 5: Funções de pertinência para a inclinação do robô. Tabela 1: Legenda da Figura 5. Legenda Mnemônico 1 Muito Negativo 2 Pouco Negativo 3 Estável 4 Pouco Positivo 5 Muito Positivo A influência do módulo da velocidade angular instantânea do robô foi definida pelas seguintes funções de pertinência respectivamente mostradas na Figura 6: ”Muito Devagar”, ”Devagar”, ”Normal”, ”Rápido”, ”Muito Rápido”. Tabela 2: Legenda da Figura 6. Legenda Mnemônico 1 Muito Devagar 2 Devagar 3 Normal 4 Rápido 5 Muito rápido 125 X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a 21 de setembro de 2011 São João del-Rei - MG - Brasil Referência de velocidade da i-ésima junta Referência de posição da i-ésima junta Pose de referência Controlador Fuzzy + + - θi Controlador local da junta - posição ++ + - θ˙i Controlador local da junta - velocidade Estimação de inclinação e velocidade angular Estado do robô Motor da i-ésima junta Dinâmica do robô Filtro de Kalman Acelerômetro Inclinação com a gravidade Girômetro Velocidade angular do robô Figura 4: Diagrama do controlador Fuzzy. Figura 6: Funções de pertinência para o módulo da velocidade angular do robô. Para as saı́das do sistema foram projetadas funções de pertinência para a referência de posição e velocidade angular desejada para o controlador PID local do pé, joelho, e quadril. Dessa forma, foram desenvolvidos os seguintes grupos de funções de pertinência para a saı́da angular correspondente ao quadril, apresentados na Figura 7: “Muito Negativo”, “Pouco Negativo”, “Ligeiramente negativo”, “Parado”, “Ligeiramente positivo”, “Pouco Positivo” e “Muito Negativo”. O conjunto de regras que definem o modelo segue uma lógica empı́rica de forma a descrever ao sistema o que um ser humano usualmente faz quando sobre as mesmas influências e condições. A base de todo o sistema de equilı́brio implementado consiste em levar o centro de massa do sistema para um ponto de equilı́brio. Dessa forma, quando o sistema sofre uma perturbação na velocidade a reação implementada é de o robô primeiramente levar seu centro de gravidade para uma posição de altura inferior proporcionalmente a velocidade adquirida. Para isso seus joelhos e pés se inclinam para a frente mantendo seu tronco estável. Caso o sistema seja levado para um ângulo diferente do referencial (no caso, o vetor gravidade) esse agirá de forma a compensar o deslocamento com um deslocamento do tronco (e.g. caso o robô caia para trás esse há de inclinar seu tronco para a frente proporcionalmente à inclinação sofrida e proporcionalmente à velocidade adquirida). Dessa forma o conjunto de regras que se aplicam a movimentação do joelho se resumiu as regras indicadas pela Tabela 3. Tabela 3: Conjunto de regras para o pé e joelho. Módulo da Velocidade Muito Devagar Devagar Normal Rápido Muito Rápido Figura 7: Funções de pertinência para a angulação de saı́da para pé e joelho. Para o joelho e pé as funções de pertinência utilizadas para o ângulo de saı́da (referência do controlador PID local) são as semelhantes às utilizadas para o erro angular de entrada. Para a velocidade de deslocamento das juntas dos joelhos e pé foram escolhidas 5 funções de pertinência semelhantes as apresentadas para velocidade de entrada. Para as funções de pertinência constam os mesmos mnemônicos apresentados para a entrada de velocidade porém com apenas a diferença de escala para os valores. Dessa forma se torna dispensável a apresentação gráfica da saı́da de velocidade para pé e joelhos. ISSN: 2175-8905 - Vol. X Delta do pé/Joelho Estável Pouco Positivo Pouco Positivo Muito Positivo Muito Positivo Velocidade de saı́da Muito Devagar Pouco Devagar Normal Pouco Rápido Muito Rápido Quanto ao posicionamento do quadril foi necessária uma quantia maior de regras (Tabela 4). Basicamente as regras servem para definição para o sistema que esse deve se posicionar na direção oposta a inclinação que esta sendo sofrida pelo sistema de forma a levarmos seu centro de massa para um ponto de equilı́brio. Observa-se que o robô corrigirá sua postura de forma mais brusca quando estiver mais desestabilizado e deverá agir de forma mais sutil quando levemente deslocado da referência ou deslocado mais porém com velocidade angular relativamente reduzida. Após a definição das funções de pertinência e regras apropriadas houve um processo iterativo de forma a determinar os coeficientes de atenuação para cada junta obtendo uma resposta mais satisfatória quanto ao equilı́brio e à dinâmica do sistema. 126 X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a 21 de setembro de 2011 São João del-Rei - MG - Brasil Tabela 4: Conjunto de regras para o quadril. Erro do ângulo Muito para trás Pouco para trás Estável Pouco para frente Muito para frente Muito para trás Muito para frente Muito para trás Muito para frente Estável Estável Módulo da Velocidade Não é devagar Não é devagar Não é devagar Não é devagar Não é devagar Devagar Devagar Muito devagar Muito devagar Devagar Muito Devagar 4 4.1 Delta do Quadril Pouco Positivo Pouco Positivo Parado Pouco Negativo Pouco Negativo Pouco Positivo Pouco Negativo Muito Positivo Muito Negativo Parado Parado Resultados Análise Qualitativa Após várias iterações nas funções de pertinência e no conjunto de regras, um controlador com bom desempenho foi derivado. O método inicial de análise foi a resposta a pequenas pertubações nesse caso, pequenos empurrões no torso do robô. O robô agia como esperado - em um primeiro momento, o controlador fazia com que o robô cedesse a pertubação, enquanto abaixava o centro de gravidade através da atuação nos joelhos e pés. Com o tempo, o robô voltava a sua posição de referência. Contudo, a pertubação não era suficiente para desestabilizar o robô sem o sistema de controle. Para pertubações muito pequenas, o robô simplesmente não reagia, pois a própria inércia do robô já era o suficiente para estabilização. Os melhores resultados foram para grandes pertubações e para quando os pés eram mantidos em algum ângulo em relação ao solo e o robô era solto no plano. Nesses casos, o robô desceu o centro de gravidade, e a ação do quadril tendeu a diminuir o efeito da pertubação. Após a absorção do impacto, o robô voltava lentamente a sua referência. O sistema de controle aparentou aumentar as oscilações do sistema em geral, mas aumentou a faixa de rejeição de pertubações do robô - ou seja, a resposta transiente foi sacrificada em nome da estabilidade. 4.2 Análise Quantitativa A análise quantitativa foi realizada aplicando uma pertubação controlada e analisando os gráficos de atuação (Figura 8) e inclinação do robô (Figura 9). A pertubação escolhida foi a força exercida por uma pequena massa, acelerada por uma mola, no torso do robô. Podemos classificar a pertubação como pequena, ou seja, o robô era capaz de se estabilizar sem a ação do sistema de controle Fuzzy. As Figuras 8 e 9 só mostram os servos do lado direito do robô, pois a ação do lado esquerdo é análoga. O momento da pertubação está marcado no gráfico. O que nota-se é que os controladores internos das juntas tentam manter a referência a todo custo ISSN: 2175-8905 - Vol. X na ausência do controlador Fuzzy - ou seja, as referências dos controladores locais não mudam e as pequenas pertubações nas juntas sem controle na Figura 8 são devido a ruı́dos no sistema. Já com o controlador Fuzzy, observa-se a ação de controle nos pés e joelhos, e algumas pequenas ações de controle no quadril. Pelo gráfico de inclinação, observa-se que o robô sem controle cede a pertubação, e depois volta a referência pela inércia - a oscilação se deve a configuração natural de pêndulo invertido do robô humanóide. Já o sistema de controle fez com que o robô se inclinasse de forma contrária ao pertubação, oscilasse um pouco, e voltasse lentamente ao ponto de operação (com um pequeno erro de regime pemamente). Essa ação de assemelha a ação de um ser humano, e confirma a suspeita que o regime transiente foi sacrificado em nome de uma maior faixa de estabilidade. Esses gráficos mostram que o sistema de controle está agindo como esperado, mas também mostram que ainda existe muita margem para melhoria na base de regras e nas funções de pertinência. 5 Conclusão Os resultados obtidos mostram claramente que a presença do sistema de controle aumenta a faixa de estabilidade do robô ao custo de oscilações no regime transitório. Tal comportamento era o esperado, pois é bastante semelhante ao comportamento do ser humano. No balanço geral, a inserção do controlador foi considerada vantajosa, salvo nos casos extremos (pequenas pertubações e necessidade de mudança de região de apoio). A principal dificuldade encontrada na solução Fuzzy é a captura do conhecimento especialista, pois o equilı́brio do ser humano é algo feito de forma autônoma. A ausência dos braços do robô também dificultaram muito a estabilização e a criação da base de regras. Outra dificuldade encontrada foi o custo computacional introduzido pelo controlador Fuzzy em torno de 30 milisegundos, o que limitou a taxa de amostragem do robô. Trabalhos futuros devem focar no uso dos braços como auxı́lio na estabilização de postura, e na captura mais sistemática do conhecimento especialista. O uso de informações extraı́da da cinemática direta e dos sensores de ZMP também podem ser incorporados para implementação de um sistema de controle completo. Agradecimentos Os autores agradecem o CNPq pelas bolsas concedidas através do ProIC-UnB e para os colegas do LARA pelo apoio ao longo do projeto. 127 X SBAI – Simpósio Brasileiro de Automação Inteligente 18 a 21 de setembro de 2011 São João del-Rei - MG - Brasil Figura 8: Gráfico de atuação dos servos. Figura 9: Gráfico de inclinação com uma pertubação controlada. Referências Aguiar, H. and Junior, O. (2007). Inteligência Computacional aplicada a administração, economia, engenharia em Matlab, Thomson Learning, São Paulo, São Paulo, Brasil. Cavalcanti, F. B. and Borges, G. A. (2009). Instrumentação inercial para um robô humanóide, XV Congresso de Iniciação Cientı́fica da Universidade de Brası́lia, Brası́lia, DF, Brasil. Robotis (2006). Dynamixel ax-12 user’s manual. URL: http://www.robotis.com/zbxe/ dynamixel_en Robotis (2009). Educational robot kit ‘bioloid’. URL: http://www.robotis.com/zbxe/ bioloid_en Vukobratovic, M. and Borovac, B. (2004). Zero moment point - thirty five years of its life, International Journal of Humanoid Robotics 1(1): 157–173. Cavalcanti, F. B. and Borges, G. A. (2010). Estabilização de marcha para um robô humanóide, XVI Congresso de Iniciação Cientı́fica da Universidade de Brası́lia. Xenomai (2011). Xenomai: Real-time framework for linux. URL: http://www.xenomai.org/index. php/Main_Page Globo (2011). Universitário inventor ganha bolsa para estudar nos estados unidos, Entrevista para Flávia Marsola - DFTV - TV Globo, concedida dia 8 de Abril de 2011. URL: http://dftv.globo.com/ Xfuzzy Team, Instituto de Microeletronica de Sevilla, C. N. d. M. (2003). Xfuzzy 3.0. URL: http://www2.imse-cnm.csic.es/ Xfuzzy/ Hirai, K., Hirose, M., Haikawa, Y. and Takenaka, T. T. (1998). The development of honda humanoid robot, IEEE International Conference on Robotics and Automation, Vol. 2, pp. 1321–1326. Prahlad, V., Dip, G. and Meng-Hwee, C. (2008). Disturbance rejection by online zmp compensation, Robotica 26: 9–17. ISSN: 2175-8905 - Vol. X 128