• Nenhum resultado encontrado

Uso de Controladores no ROS

N/A
N/A
Protected

Academic year: 2021

Share "Uso de Controladores no ROS"

Copied!
30
0
0

Texto

(1)

Uso de Controladores no ROS

Manipuladores

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 ENG10051 Dinâmica e Controle de Robôs

(2)

Introdução

• Existem várias formas de implementar

controladores no ROS

• A maioria delas não suporta operação em

tempo-real

• O framework ros_control oferece

ferramentas real-time safe para implementação de controladores

• Aqui será criado um pacote para usar os

controladores já implementados no ROS

• Simulador Gazebo

(3)

Controle de Juntas

interface com o usuário

comando do usuário planejamento (MoveIt!) geração de trajetória navegação action server referência controlador de junta ação de in fr ae st ru tu ra do R O S

(4)

Framework ros_control

• A definição de controlador não é a clássica de

Sistemas de Controle

• Módulo que é carregado pelo gerenciador de

controladores

• Não necessariamente implementa um

controlador

(5)
(6)

Laço de Tempo Real

pos eff cmd vel setForce() getAngle() getVelocity() Gazebo GazeboRosControlPlugin readSim() writeSim() update() RobotHW

*cmd *vel *pos *eff

JointHandle getPosition()getVelocity()

setCommand() Controller JointStatePublisher getVelocity() getPosition() getEffort() ControllerManager update() update() unlockAndPublish() /joint_states /controller/command update() commandCB()

(7)

Plugin

para o Gazebo

• Incluir na descrição URDF

<gazebo>

<plugin name="gazebo_ros_control" filename=" libgazebo_ros_control.so">

<!-- <robotNamespace>/q2d</robotNamespace> -->

<controlPeriod>0.001</controlPeriod> </plugin>

(8)

Tipo dos Controladores

• Usualmente o namespace indica a grandeza de

saída do controlador

• Usualmente a classe indica a grandeza que é

controlada ou a lei de controle

• Às vezes a sintaxe é de path, outras é de C++

• namespace_do_controlador/ClasseDoControlador • namespace_do_controlador:: ClasseDoControlador • effort_controllers/JointPositionController • effort_controllers/JointVelocityController • velocity_controllers:JointPositionController

(9)

Estrutura do Pacote

q2d_bringup/ CMakeLists.txt launch/ bypass.launch -> ijc.launch gazebo.launch ijc.launch pid.launch -> ijc.launch config/ bypass.yaml pid.yaml package.xml

(10)

Dependências

• ros_control • control_toolbox • controller_interface • controller_manager • hardware_interface • joint_limits_interface • transmission_interface • realtime_tools

• Já incluídas na variante desktop do Melodic

(11)

Dependências

• ros_controllers

• position_controllers

• joint_position_controller

• Já incluído na variante desktop_full do

Melodic

• joint_state_controller

• joint_state_controller

(12)

Dependências

• ros_controllers • effort_controllers • joint_effort_controller • joint_position_controller • joint_velocity_controller • velocity_controllers • joint_position_controller • joint_velocity_controller

(13)

Dependências

• robot_model

• kdl_parser

• robot_state_publisher

• Já instalado na variante robot do ROS

• orocos_kdl

(14)

Dependências

• gazebo_ros_pkgs

• gazebo_ros_control

• Já incluído na variante desktop_full do Melodic

sudo apt−get install ros−indigo−gazebo−ros−pkgs ros−indigo−

(15)

Criação do Pacote

cd ~/catkin_ws/src

catkin_create_pkg q2d_bringup effort_controllers

(16)

package.xml

• Editar o arquivo q2d_bringup/package.xml • Descrição • Mantenedor • Licença • Autor • Dependências

(17)

Reconfigurar o Ambiente

cd ~/catkin_ws

catkin_make

(18)

ijc.launch

<launch>

<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen"

args="shoulder_controller elbow_controller joint_states_publisher

" />

</launch>

• bypass.launch->ijc.launch • pid.launch->ijc.launch

(19)

config/pid.yaml

shoulder_controller: type: effort_controllers/JointPositionController joint: shoulder_active_joint pid: {p: 2310, i: 4640, d: 0.299} elbow_controller: type: effort_controllers/JointPositionController joint: elbow_active_joint pid: {p: 339, i: 851, d: 0.351}

(20)

config/bypass.yaml

shoulder_controller: type: effort_controllers/JointEffortController joint: shoulder_active_joint elbow_controller: type: effort_controllers/JointEffortController joint: elbow_active_joint joint_states_publisher: type: joint_state_controller/JointStateController publish_rate: 100

(21)

gazebo.launch

• q2d_bringup/launch/gazebo.launch

<launch>

<arg name="paused" default="true"/>

<arg name="headless" default="false"/>

<arg name="use_sim_time" default="true"/>

<arg name="controller" default="pid"/>

<arg name="config" default="$(find q2d_bringup)/config/$(arg

(22)

gazebo.launch

<include file="$(find q2d_description)/launch/gazebo.launch" >

<arg name="paused" value="$(arg paused)"/>

<arg name="headless" value="$(arg headless)"/>

<arg name="use_sim_time" value="$(arg use_sim_time)"/>

</include>

<rosparam file="$(arg config)" command="load"/>

<include file="$(find q2d_bringup)/launch/$(arg controller).launch"

/>

(23)

Download

e Instalação do Pacote

cd ~/catkin_ws/src wget http://www.ece.ufrgs.br/ros−pkgs/indigo−q2d−bringup.tgz tar −xvzpf indigo−q2d−bringup.tgz cd .. catkin_make source ~/catkin_ws/devel/setup.bash

(24)

Simulação no Gazebo

(25)

Gráfico de Computação

(26)

Reconfiguração Dinâmica

• Permite a alteração de parâmetros dos nodos em

tempo de execução

• Nem todos os nodos do ROS utilizam

• PID do control_toolbox utiliza

• joint_state_controller não utiliza • CLI

rosrun dynamic_reconfigure dynparam

• GUI

(27)
(28)

Mover o Robô

• Para mover o robô deve-se publicar nos tópicos

das referências dos controladores

rostopic pub /shoulder_controller/command std_msgs/Float64 1 −1

rostopic pub /elbow_controller/command std_msgs/Float64 "{data:

−0.5}" −1

rosrun q2d_bringup ijc_step.sh 1 −0.5

rosrun q2d_bringup ijc_square.py /shoulder_controller/command

(29)

rqt

• Framework para GUIs

• Pode-se vizualizar várias instâncias do

(30)

Sem Saturação

rosrun q2d_bringup ijc_square.py /shoulder_controller/command

Referências

Documentos relacionados

Moreover, the results obtained for both time panels (before and after the crisis) show that reverse causality ( running from economic growth to public debt) is not only negative

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

para fazer cumprir o disposto no Memorando de Entendimento estatuía critérios demasiado vagos, ob.. 25 Da definição de discriminação indireta prevista no artigo 23.º, nº1,

7 – Contribuições do capítulo: os sujeitos e as palavras como fonte sócio-histórica .... Capítulo IV - COM A PALAVRA, OS SUJEITOS DA INVESTIGAÇÃO: REVELANDO E

O objectivo do presente estudo centra-se em comparar a diversidade e estrutura da comunidade de macroinvertebrados bentónicos associados à espécie invasora não

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

Em casos excepcionais de iliquidez dos ativos financeiros componentes da carteira do FUNDO, inclusive em decorrência de pedidos de resgates incompatíveis com a liquidez existente,