• Nenhum resultado encontrado

Robot Operating System (ROS)

N/A
N/A
Protected

Academic year: 2021

Share "Robot Operating System (ROS)"

Copied!
27
0
0

Texto

(1)

Robot Operating System

(ROS)

Walter Fetter Lages

fetter@ece.ufrgs.br

Universidade Federal do Rio Grande do Sul Escola de Engenharia

Departamento de Sistemas Elétricos de Automação e Energia ENG10026 Robótica A

(2)

Introdução

ROS é um pseudo sistema operacional com

bibliotecas e ferramentas para desenvolvimento de

software para robôs:

• Gerenciamento de pacotes • Abstração de hardware

• Bibliotecas com algoritmos comumente

utilizados

• Simuladores

• Mecanismos de comunicação

(3)

Porque ROS?

• Código aberto

• Centralização das informações • Reuso de código

• Desenvolvimento em grupo

• Processamento inerentemente distribuído • Nodos fracamente acoplados

(4)

Histórico

• Sistema desenvolvido em Stanford em 2000 para

o robô STAIR 1

• Aperfeiçoado em 2007 pela Willow Garage para

(5)

Versões do ROS

• Kinetic Kame - maio de 2016 • Jade Turtle - maio de 2015

• Indigo Igloo - julho de 2014

• Hydro Medusa - setembro de 2013

• Groovy Galapagos - dezembro de 2012 • Fuerte Turtle - abril de 2012

• Electric Emys - agosto de 2011 • Diamond Back - março de 2011 • C Turtle - agosto de 2010

(6)

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

(7)

Conceitos

• O ROS é organizado em pacotes

• Nodos (processo do sistema operacional

hospedeiro que utiliza o ROS)

• programas utilitários • Bibliotecas

• Definições de mensagens • Arquivos de configuração

Plugins

(8)

Pacotes

• Menor nível na organização do ROS • Dedicados a uma única funcionalidade

• Cada pacote deve ser implementado em um

(9)

Estrutura de um Pacote

catkin_ws/ build/ nome_do_pacote/ ...Temporários devel/ lib/ ...Bibliotecas nome_do_pacote/ ...Executáveis

setup.bash ...Script de configuração

src/

nome_do_pacote/

src/ ... Códigos-fonte launch/ ...Scripts de carga

scripts/ ...Outros scripts include/ ...Arquivos de cabeçalho

package.xml ...Metadados e dependências CMakelist.txt ..Configuração do Cmake

(10)

Metapacotes

• Agrupam pacotes que em conjunto oferecem uma

funcionalidade mais abstrata

(11)

roscore

• roscore é um conunto de nodos e programas

que são pré-requisitos para um sistema ROS

• Deve ser executado para que os nodos do ROS

possam se comunicar

• É lançado com o comando roscore

• O comando roslaunch também lança o

roscore, se ele ainda não estiver executando

• O roscore inicia os seguintes nodos: • ROS master

• ROS parameter server • rosout

(12)

ROS Master

• Nodo que provê serviços de registro e consulta de

nomes de nodos, tópicos e serviços

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

mestre

• Ao subscrever um tópico, os nodos consultam o

mestre e estabelecem conexão diretamente entre si

• É lançado pelo comando roscore

O computador onde o ROS Master está

executando é especificado através da variável de ambiente ROS_MASTER_URI

(13)

Servidor de Parâmetros

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

demais 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

(14)

Comunicação através de Tópicos

Nodo: processo do S.O. hospedeiro

Tópico: mecanismo de comunicação entre nodos do

tipo publisher/subscriber

Mensagem: dados publicados nos tópicos

Gráfico de computação: Representa a comunicação

(15)

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ários

tópicos

• Publicadores e assinantes não sabem da

existência um dos outros

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

(16)

Serviços

• Tópicos não são apropriados para solicitação de

serviços entre nodos

Serviço: mecanismo de comunicação entre nodos do

tipo remote procedure call (RPC)

• Serviços oferecem um mecanismo de

(17)

Action Servers

• Apropriados para serviços exigem longo tempo

de execução

• Permitem o cancelamento da requisição

Permitem receber informações sobre o status da

(18)

Gazebo

• Simulador 3D

Suporta diversos backends

Open Dynamics Engine (ODE)

Bullet

(19)
(20)

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 fixa

(21)

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>

(22)

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>

(23)

Meta-pacote ufrgs_wam

• Pacote para o robô Barrett WAM adaptado para o

robô da UFRGS ufrgs_wam/ CMakelist.txt package.xml wam_description/ wam_controllers/

(24)

Pacote wam_description

wam_description/ launch/ wam.launch wam_sim.launch package.xml meshes/ wam1.stl . . . wambase.stl xacro/ wam_base.urdf.xacro . . . wam.urdf.xacro

(25)

Pacote wam_controllers

wam_controllers/ CMakeLists.txt config/ computed_torque_control.yaml include/ wam_controllers/ computed_torque_controller.h launch/ computed_torque.launch package.xml src/ computed_torque_controller.cpp wam_controllers_plugins.xml scripts/ move_home.sh move_zero.sh

(26)
(27)

Referências

Documentos relacionados

Por conta disso, preocupados com a extinção deste campo de dunas e seus ecossistemas adjacentes, e para que estes se conservem para usufruto das próximas

C om a participa- ção de repre- sentantes de 30 entidades das 36 com direito a voto, e se- guindo os protocolos de cuidados em rela- ção ao vírus Covid-19, o Conselho Interativo

tl.2 FORMULAÇÃO DAS EQUAÇÕES DE EQUILÍBRIO DINÂMICO USANDO O PRINCÍPIO DE HAMILTON Não tendo sido feita qualquer restrição ao princípio de Hamilton em

1.º Período (todo o período) Treinos e competições no âmbito da Atividade Externa do Clube do Desporto Escolar  Incentivar e promover Atividades

Tem-se, portanto, que a partir do momento em que o Direito se mostra incapaz de alcangar seus objetivos, como, por exemplo, definir os fenomenos que deseja regular, ou ate

Tendo sido o foco deste estudo a população sem queixa vocal, seria esperado que, nos casos de alterações vocais presentes, essas fossem decorren- tes mais de alterações irritativas

Se esta zona fazia já parte do Rali de Portugal até 2001 – ano da sua saída do WRC e posterior passagem para os troços alentejanos e algarvios - desde o seu

CLASSIFICAÇÃO CONTRATOS INTERNA PNAFE LEI 8727 LEI 9496 DMLP PMAE PEF I PEF II CASAN SISTE.. JOINVILLE