robot operating system (ros)fetter/ele228/ros.pdf · urdf • formato xml para descrição de...

30
Robot Operating System (ROS) Walter Fetter Lages [email protected] Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ELE228 Robótica A Copyright (c) Walter Fetter Lages – p.1

Upload: others

Post on 09-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Robot Operating System (ROS)Walter Fetter [email protected]

Universidade Federal do Rio Grande do Sul

Escola de Engenharia

Departamento de Sistemas Elétricos de Automação e Energia

ELE228 Robótica A

Copyright (c) Walter Fetter Lages – p.1

Page 2: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Introdução

ROS é um pseudo sistema operacional comferramentas para desenvolvimento de software pararobôs:

• Gerenciamento de pacotes• Abstração de hardware

• Bibliotecas com algoritmos comumenteutilizados

• Simuladores• Mecanismos de comunicação• scripts úteis

Copyright (c) Walter Fetter Lages – p.2

Page 3: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Porque ROS?

• Código aberto• Centralização das informações• Reuso de código• Desenvolvimento em grupo• Processamento inerentemente distribuído• Nodos fracamente acoplados• Parar de reinventar a roda

Copyright (c) Walter Fetter Lages – p.3

Page 4: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Histórico

• Sistema desenvolvido em Stanford em 2000 parao robô STAIR 1

• Aperfeiçoado em 2007 pela Willow Garage parao robô PR2 e denominado ROS

Copyright (c) Walter Fetter Lages – p.4

Page 5: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Versões do ROS

• Lunar Loggerhead - 23 de maio de 2017• Kinetic Kame - 23 de maio de 2016• Jade Turtle - 23 de maio de 2015• Indigo Igloo - 22 de julho de 2014• Hydro Medusa - 4 de setembro de 2013• Groovy Galapagos - 31 de dezembro de 2012• Fuerte Turtle - 23 de abril de 2012• Electric Emys - 30 de agosto de 2011• Diamond Back - 2 de março de 2011• C Turtle - 2 de agosto de 2010• Box Turtle - 2 de março de 2010

Copyright (c) Walter Fetter Lages – p.5

Page 6: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Sistema Operacional Host

• Linux é o sistema operacional host

• A distribuição "oficial" é a Ubuntu• Outras distribuição suportadas:

• Ubuntu ARM• OS X• Yocto• Debian• Arch Linux• Ângström• UDOO• Android• Código fonte• robotpkg Copyright (c) Walter Fetter Lages – p.6

Page 7: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Conceitos

• O ROS é organizado em pacotes• Nodos (processo do sistema operacional

hospedeiro)• programas utilitários• Bibliotecas• Definições de mensagens• Arquivos de configuração• Plugins

• Pacotes podem ser agrupados em metapacotes

Copyright (c) Walter Fetter Lages – p.7

Page 8: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Pacotes

• Menor nível na organização do ROS• Dedicados a uma única funcionalidade• Cada pacote deve ser implementado em um

diretório

Copyright (c) Walter Fetter Lages – p.8

Page 9: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Estrutura de um Pacote

catkin_ws/

build/nome_do_pacote/ ...........Temporários

devel/lib/ ...........................Bibliotecasnome_do_pacote/ ...........Executáveissetup.bash ..........Script de configuração

src/nome_do_pacote/src/ ......................Códigos-fontelaunch/ .................Scripts de cargascripts/ .................Outros scripts

include/ ...........Arquivos de cabeçalhopackage.xml ...Metadados e dependênciasCMakelist.txt ..Configuração do Cmake

Copyright (c) Walter Fetter Lages – p.9

Page 10: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Metapacotes

• Agrupam pacotes que em conjunto oferecem umafuncionalidade mais abstrata• Pacotes não podem depender de metapacotes

Copyright (c) Walter Fetter Lages – p.10

Page 11: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

roscore

• roscore é um conjunto de nodos e programasque são pré-requisitos para um sistema ROS

• Deve ser executado para que os nodos do ROSpossam se comunicar

• É lançado com o comando roscore• O comando roslaunch também lança oroscore, se ele ainda não estiver executando

• O roscore inicia os seguintes nodos:• ROS master• ROS parameter server• rosout

Copyright (c) Walter Fetter Lages – p.11

Page 12: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

ROS Master

• Nodo que provê serviços de registro e consulta denomes de nodos, tópicos e serviços

• Ao iniciar, os nodos devem registrar-se com omestre

• Ao subscrever um tópico, os nodos consultam omestre e estabelecem conexão diretamente entresi

• É lançado pelo comando roscore• O computador onde o ROS Master está

executando é especificado através da variável deambiente ROS_MASTER_URI

Copyright (c) Walter Fetter Lages – p.12

Page 13: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Servidor de Parâmetros

• Nodo que provê um dicionário acessível aosdemais nodos

• É lançado pelo comando roscore• Nodos podem usar o servidor de parâmetros para

armazenar e recuperar parâmetros• Não projetado para alto desempenho

• Adequado para parâmetros de configuração• Não é um substituto para aplicações de banco

de dados

Copyright (c) Walter Fetter Lages – p.13

Page 14: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Comunicação através de Tópicos

Nodo: processo do S.O. hospedeiro

Tópico: mecanismo de comunicação entre nodos dotipo publisher/subscriber

Mensagem: dados publicados nos tópicos

Gráfico de computação: Representa a comunicaçãoentre os nodos através de tópicos

Copyright (c) Walter Fetter Lages – p.14

Page 15: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Tópicos

• Nodos podem publicar mensagens em tópicos• Cada tópico pode ter vários publicadores e

assinantes

• Cada nodo pode publicar ou assinar váriostópicos

• Publicadores e assinantes não sabem daexistência um dos outros

• A ordem de execução não é garantida• Comunicação assíncrona

Copyright (c) Walter Fetter Lages – p.15

Page 16: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Serviços

• Tópicos não são apropriados para solicitação deserviços entre nodos

Serviço: mecanismo de comunicação entre nodos dotipo remote procedure call (RPC)

• Serviços oferecem um mecanismo derequisição/resposta

Copyright (c) Walter Fetter Lages – p.16

Page 17: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Action Servers

• Apropriados para serviços exigem longo tempode execução

• Permitem o cancelamento da requisição• Permitem receber informações sobre o status da

execução

Copyright (c) Walter Fetter Lages – p.17

Page 18: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Rviz

• Rviz é uma ferramenta do ROS para vizualização• Mostra de forma conveniente dados publicados

em tópicos

Copyright (c) Walter Fetter Lages – p.18

Page 19: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Gráfico de Computação

• A ferramenta rqt_graph Permite vizualizar osnodos e tópicos

Copyright (c) Walter Fetter Lages – p.19

Page 20: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Gazebo

• Simulador 3D• Suporta diversos backends

• Open Dynamics Engine (ODE)• Bullet

• O modelo do robô é descrito em URDF

Copyright (c) Walter Fetter Lages – p.20

Page 21: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Barrett WAM no Gazebo

Copyright (c) Walter Fetter Lages – p.21

Page 22: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

URDF

• Formato XML para descrição de robôs

• Descreve a geometria e propriedades de massa

• <robot name="twil" >: definição do nome do robô

• <link name="chassis" >: define um elo do robô

• <mass value="6.4923"/>: define a messa do ele

• <inertia= ... >: define a inércia do elo

• <geometry> <mesh

filename="package://twil/meshes/chassis.STL"/>

</geometry>: STL com a geometria do elo

• <joint

name="right_wheel_suport_joint"type="fixed"

>: define uma junta fixaCopyright (c) Walter Fetter Lages – p.22

Page 23: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Exemplo de URDF<robot name="twil">

<link name="chassis">

<inertial>

<origin xyz="6.3955E−06 −2.1963E−17 0.27338" rpy="0 0 0" /

>

<mass value="6.4923" />

<inertia ixx="0.67525" ixy="0.0014553" ixz="−0.00017525"

iyy="0.69058" iyz="−6.3289E−18" izz="0.28611" />

</inertial>

<visual>

<origin xyz="0 0 0" rpy="0 0 0" />

<geometry>

<mesh filename="package://twil/meshes/chassis.STL" />

</geometry>

</visual>Copyright (c) Walter Fetter Lages – p.23

Page 24: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Exemplo de URDF<collision>

<origin xyz="0 0 0" rpy="0 0 0" />

<geometry>

<mesh filename="package://twil/meshes/chassis.STL" />

</geometry>

</collision>

</link>

.

.

<joint name="right_wheel_suport_joint" type="fixed">

<origin xyz="0 −0.161 −0.002" rpy="0 0 0" />

<parent link="chassis" />

<child link="right_wheel_suport" />

<axis xyz="0 0 0" />

</joint>

</robot> Copyright (c) Walter Fetter Lages – p.24

Page 25: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Pacote wam_description

wam_description/

launch/wam.launchwam_sim.launch

package.xmlmeshes/wam1.stl...wambase.stl

xacro/wam_base.urdf.xacro...wam.urdf.xacro

Copyright (c) Walter Fetter Lages – p.25

Page 26: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Pacote pid_plus_gravity_controller

pid_plus_gravity_controller/

CMakeLists.txt

pid_plus_gravity_controller_plugin.xml

include/

pid_plus_gravity_controller/

pid_plus_gravity_controller.h

package.xml

src/

pid_plus_gravity_controller.cpp

Copyright (c) Walter Fetter Lages – p.26

Page 27: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Pacote computed_torque_controller

computed_torque_controller/

CMakeLists.txt

computed_torque_controller_plugin.xml

include/

computed_torque_controller/

computed_torque_controller.h

package.xml

src/

computed_torque_controller.cpp

Copyright (c) Walter Fetter Lages – p.27

Page 28: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Pacote wam_simulation

wam_simulation/

CMakeLists.txt

config/computed_torque_controller.yamlpid_plus_gravity_controller.yaml

package.xmllaunch/gazebo.launch

scripts/move_home.shmove_initial.shmove_zero.shset_home.shset_initial.sh

Copyright (c) Walter Fetter Lages – p.28

Page 29: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Gráfico de Computação do WAM

Copyright (c) Walter Fetter Lages – p.29

Page 30: Robot Operating System (ROS)fetter/ele228/ros.pdf · URDF • Formato XML para descrição de robôs • Descreve a geometria e propriedades de massa • :

Barrett WAM no Gazebo

Copyright (c) Walter Fetter Lages – p.30