Implementação de Controladores no ROS

Tamanho: px
Começar a partir da página:

Download "Implementação de Controladores no ROS"

Transcrição

1 Implementação de Controladores no ROS Walter Fetter Lages 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 Copyright (c) Walter Fetter Lages p.1

2 Introdução Implementação de controladores no ROS Exemplo: Controlador por torque calculado τ = M(q) [ q r + K d ( q r q) + K p (q r q)]+v (q, q)+g(q) Modelo do robô calculado através da classe ChainIdSolver_RNE class da KDL Copyright (c) Walter Fetter Lages p.2

3 Controle de Juntas interface com o usuário infraestrutura do ROS comando do usuário planejamento (MoveIt!) geração de trajetória navegação action server referência controlador de junta ação de controle realimentação hardware do robô Copyright (c) Walter Fetter Lages p.3

4 Arquitetura de Controladores Copyright (c) Walter Fetter Lages p.4

5 Laço de Tempo Real /joint_states JointHandle getvelocity() getposition() geteffort() setcommand() getvelocity() getposition() Controller unlockandpublish() JointStatePublisher *cmd *vel *pos *eff update() update() Gazebo setforce() getangle() getvelocity() cmd vel pos RobotHW eff ControllerManager commandcb() readsim() writesim() /controller/command update() GazeboRosControlPlugin update() Copyright (c) Walter Fetter Lages p.5

6 computed_torque_controller computed_torque_controller/ CMakeLists.txt computed_torque_controller_plugins.xml include/ computed_torque_controller/ computed_torque_controller.h package.xml src/ computed_torque_controller.cpp Copyright (c) Walter Fetter Lages p.6

7 Dependências ros_control control_toolbox controller_interface controller_manager hardware_interface joint_limits_interface transmission_interface realtime_tools sudo apt get install ros indigo ros control Copyright (c) Walter Fetter Lages p.7

8 Dependências robot_model kdl_parser Já instalado no ROS desktop orocos_kdl Já instalado no ROS desktop gazebo_ros_pkgs gazebo_ros_control sudo apt get install ros indigo gazebo ros pkgs ros indigo gazebo ros control Copyright (c) Walter Fetter Lages p.8

9 Criação do Pacote source /opt/ros/indigo/setup.bash source $HOME/catkin_ws/devel/setup.bash cd ~/catkin_ws/src catkin_create_pkg computed_torque_controller controller_interface controller_manager trajecotry_msgs urdf kdl_parser orocos_kdl cmake_modules s Eigen Copyright (c) Walter Fetter Lages p.9

10 package.xml Editar o arquivopackage.xml Descrição Mantenedor Licença Autor Dependências Exportações controller_interface Copyright (c) Walter Fetter Lages p.10

11 Plugin nopackage.xml <export> <controller_interface plugin="${prefix}/ computed_torque_controller_plugins.xml"/> </export> Copyright (c) Walter Fetter Lages p.11

12 computed_torque_controller_plugins.xml <library path="lib/libcomputed_torque_controller"> <class name="effort_controllers/computedtorquecontroller" type="effort_controllers::computedtorquecontroller" base_class_type="controller_interface::controllerbase"> <description> The ComputedTorqueController implements a computed torque controller in joint space for a robot with open chain dynamic model. The reference inputs (command in the ROS nomenclature) are joint positions, velocities and accelerations. This type of controller expects an EffortJointInterface type of hardware interface. </description> </class> </library> Copyright (c) Walter Fetter Lages p.12

13 AjustarCMakeLists.txt CMakeLists.txt deve ser editado para configurar os detalhes de compilação e linkagem EditarCMakeLists.txt para descomentar: catkin_package( ) INCLUDE_DIRS include LIBRARIES computed_torque_controller Copyright (c) Walter Fetter Lages p.13

14 AjustarCMakeLists.txt include_directories( include ${catkin_include_dirs} ) add_library(${project_name} ) src/computed_torque_controller.cpp target_link_libraries(${project_name} ${catkin_libraries} ${Eigen_LIBRARIES} ) Copyright (c) Walter Fetter Lages p.14

15 AjustarCMakeLists.txt install(targets ${PROJECT_NAME} ARCHIVE DESTINATION ${ CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${ CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${ CATKIN_PACKAGE_BIN_DESTINATION} ) Copyright (c) Walter Fetter Lages p.15

16 computed_torque_controller.h #ifndef COMPUTED_TORQUE_CONTROLLER_COMPUTED_TORQUE_CONTROLLER #define COMPUTED_TORQUE_CONTROLLER_COMPUTED_TORQUE_CONTROLLER #include <cstddef> #include <vector> #include <string> #include <ros/node_handle.h> #include <hardware_interface/joint_command_interface.h> #include <controller_interface/controller.h> #include <trajectory_msgs/jointtrajectorypoint.h> #include <Eigen/Core> #include <kdl/frames.hpp> #include <kdl_parser/kdl_parser.hpp> #include <kdl/chainidsolver_recursive_newton_euler.hpp> Copyright (c) Walter Fetter Lages p.16

17 computed_torque_controller.h namespace effort_controllers { class ComputedTorqueController: public controller_interface:: Controller<hardware_interface::EffortJointInterface> { ros::nodehandle node_; hardware_interface::effortjointinterface hw_; std::vector<hardware_interface::jointhandle> joints_; int njoints_; ros::subscriber sub_command_; KDL::ChainIdSolver_RNE idsolver_; Copyright (c) Walter Fetter Lages p.17

18 computed_torque_controller.h KDL::JntArray q_; KDL::JntArray dq_; KDL::JntArray v_; KDL::JntArray qr_; KDL::JntArray dqr_; KDL::JntArray ddqr_; KDL::JntArray torque_; KDL::Wrenches fext_; Eigen::MatrixXd Kp_; Eigen::MatrixXd Kd_; Copyright (c) Walter Fetter Lages p.18

19 computed_torque_controller.h void commandcb(const trajectory_msgs::jointtrajectorypoint:: ConstPtr &referencepoint); public: ComputedTorqueController(void); ~ComputedTorqueController(void); } bool init(hardware_interface::effortjointinterface hw, ros::nodehandle &n); void starting(const ros::time& time); void update(const ros::time& time,const ros::duration& duration ); }; #endif Copyright (c) Walter Fetter Lages p.19

20 computed_torque_controller.cpp #include <sys/mman.h> #include <computed_torque_controller/computed_torque_controller.h > #include <pluginlib/class_list_macros.h> namespace effort_controllers { Copyright (c) Walter Fetter Lages p.20

21 Construtor e Destrutor ComputedTorqueController::ComputedTorqueController(void): q_(0),dq_(0),v_(0),qr_(0),dqr_(0),ddqr_(0),torque_(0),fext_(0) { } ComputedTorqueController::~ComputedTorqueController(void) { sub_command_.shutdown(); } Copyright (c) Walter Fetter Lages p.21

22 init() bool ComputedTorqueController:: init(hardware_interface::effortjointinterface hw,ros:: NodeHandle &n) { node_=n; hw_=hw; std::vector<std::string> joint_names; if(!node_.getparam("joints",joint_names)) { ROS_ERROR("No joints in controller. (namespace: %s)", node_.getnamespace().c_str()); return false; } Copyright (c) Walter Fetter Lages p.22

23 init() njoints_=joint_names.size(); for(int i=0; i < njoints_;i++) { try { joints_.push_back(hw >gethandle(joint_names[i])); } catch(const hardware_interface::hardwareinterfaceexception& e) { ROS_ERROR_STREAM("Exception thrown: " << e.what()); return false; } } Copyright (c) Walter Fetter Lages p.23

24 init() sub_command_=node_.subscribe("command",1, &ComputedTorqueController::commandCB, this); std::string robot_desc_string; if(!node_.getparam("/robot_description",robot_desc_string)) { ROS_ERROR("Could not find /robot_description."); return false; } Copyright (c) Walter Fetter Lages p.24

25 init() KDL::Tree tree; if (!kdl_parser::treefromstring(robot_desc_string,tree)) { ROS_ERROR("Failed to construct KDL tree."); return false; } std::string chainroot; if(!node_.getparam("chain/root",chainroot)) { ROS_ERROR("Could not find chain_root parameter."); return false; } Copyright (c) Walter Fetter Lages p.25

26 init() std::string chaintip; if(!node_.getparam("chain/tip",chaintip)) { ROS_ERROR("Could not find chain/tip parameter."); return false; } KDL::Chain chain; if (!tree.getchain(chainroot,chaintip,chain)) { ROS_ERROR("Failed to get chain from KDL tree."); return false; } Copyright (c) Walter Fetter Lages p.26

27 init() KDL::Vector g; node_.param("gravity/x",g[0],0.0); node_.param("gravity/y",g[1],0.0); node_.param("gravity/z",g[2], 9.8); if((idsolver_=new KDL::ChainIdSolver_RNE(chain,g)) == NULL ) { ROS_ERROR("Failed to create ChainIDSolver_RNE."); return false; } Copyright (c) Walter Fetter Lages p.27

28 init() q_.resize(njoints_); dq_.resize(njoints_); v_.resize(njoints_); qr_.resize(njoints_); dqr_.resize(njoints_); ddqr_.resize(njoints_); torque_.resize(njoints_); fext_.resize(chain.getnrofsegments()); Kp_.resize(nJoints_,nJoints_); Kd_.resize(nJoints_,nJoints_); Copyright (c) Walter Fetter Lages p.28

29 init() std::vector<double> KpVec; if(!node_.getparam("kp",kpvec)) { ROS_ERROR("No Kp in controller %s.",node_.getnamespace ().c_str()); return false; } Kp_=Eigen::Map<Eigen::MatrixXd>(KpVec.data(),nJoints_, njoints_).transpose(); Copyright (c) Walter Fetter Lages p.29

30 init() std::vector<double> KdVec; if(!node_.getparam("kd",kdvec)) { ROS_ERROR("No Kd in controller %s.",node_.getnamespace ().c_str()); return false; } Kd_=Eigen::Map<Eigen::MatrixXd>(KdVec.data(),nJoints_, njoints_).transpose(); } return true; Copyright (c) Walter Fetter Lages p.30

31 starting() void ComputedTorqueController::starting(const ros::time& time) { for(unsigned int i=0;i < njoints_;i++) { q_(i)=joints_[i].getposition(); dq_(i)=joints_[i].getvelocity(); } qr_=q_; dqr_=dq_; SetToZero(ddqr_); Copyright (c) Walter Fetter Lages p.31

32 starting() struct sched_param param; if(!node_.getparam("priority",param.sched_priority)) { ROS_WARN("No priority configured for controller %s. Using highest possible priority.",node_.getnamespace().c_str()); param.sched_priority=sched_get_priority_max(sched_fifo); } if(sched_setscheduler(0,sched_fifo,&param) == 1) { ROS_WARN("Failed to set real time scheduler."); return; } if(mlockall(mcl_current MCL_FUTURE) == 1) ROS_WARN("Failed to lock memory."); } Copyright (c) Walter Fetter Lages p.32

33 update() void ComputedTorqueController::update(const ros::time& time, const ros::duration& duration) { for(unsigned int i=0;i < njoints_;i++) { q_(i)=joints_[i].getposition(); dq_(i)=joints_[i].getvelocity(); } for(unsigned int i=0;i < fext_.size();i++) fext_[i].zero(); v_.data=ddqr_.data+kp_ (qr_.data q_.data)+kd_ (dqr_.data dq_.data); if(idsolver_ >CartToJnt(q_,dq_,v_,fext_,torque_) < 0) ROS_ERROR("KDL inverse dynamics solver failed."); Copyright (c) Walter Fetter Lages p.33

34 update() } for(unsigned int i=0;i < njoints_;i++) joints_[i].setcommand(torque_(i)); Copyright (c) Walter Fetter Lages p.34

35 Callback } void ComputedTorqueController::commandCB(const trajectory_msgs:: JointTrajectoryPoint::ConstPtr &referencepoint) { for(unsigned int i=0;i < njoints_;i++) { qr_(i)=referencepoint >positions[i]; dqr_(i)=referencepoint >velocities[i]; ddqr_(i)=referencepoint >accelerations[i]; } } Copyright (c) Walter Fetter Lages p.35

36 Exportação da Classe PLUGINLIB_EXPORT_CLASS(effort_controllers:: ComputedTorqueController, controller_interface::controllerbase) Copyright (c) Walter Fetter Lages p.36

37 Instalação source /opt/ros/indigo/setup.bash source $HOME/catkin_ws/devel/setup.bash cd ~/catkin_ws/src wget computed torque_controller.tgz tar xvzf indigo computed torque_controller.tgz cd.. catkin_make source $HOME/catkin_ws/devel/setup.bash Para utilizar é necessário criar os arquivos de configuração (.yaml) e de launch Estes arquivos devem ser criados em pacotes específicos para cada robô Copyright (c) Walter Fetter Lages p.37

38 Pacotewam_bringup wam_bringup/ CMakeLists.txt config/ computed_torque_controller.yaml pid_plus_gravity_controller.yaml launch/ gazebo.launch package.xml scripts/ set_home.sh step.sh step_home.sh step_zero.sh Copyright (c) Walter Fetter Lages p.38

39 computed_torque_controller.yaml joint_state_controller: type: joint_state_controller/jointstatecontroller publish_rate: 100 computed_torque_controller: type: effort_controllers/computedtorquecontroller joints: wam_joint_1 wam_joint_2 wam_joint_3 wam_joint_4 wam_joint_5 wam_joint_6 wam_joint_7 Copyright (c) Walter Fetter Lages p.39

40 computed_torque_controller.yaml Kp: [25.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 25.0] Kd: [10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.0] Copyright (c) Walter Fetter Lages p.40

41 computed_torque_controller.yaml gravity: {x: 0.0, y: 0.0, z: 9.8} chain: {root: "wam_origin", tip: "wam_tool_plate"} priority: 99 Copyright (c) Walter Fetter Lages p.41

42 step.sh #!/bin/bash if [ "$#" ne 7 ]; then echo "Error: There should be 7 parameters." exit 1; fi; rostopic pub /controller/command \ trajectory_msgs/jointtrajectorypoint \ "[$1, $2, $3, $4, $5, $6, $7]" \ "[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]" \ "[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]" \ "[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]" \ "[0.0, 0.0]" " 1" Copyright (c) Walter Fetter Lages p.42

43 Instalação source /opt/ros/indigo/setup.bash source $HOME/catkin_ws/devel/setup.bash cd ~/catkin_ws/src wget wam description.tgz tar xvzf indigo wam_description.tgz wget wam bringup. tgz tar xvzf indigo wam_bringup.tgz cd.. catkin_make source $HOME/catkin_ws/devel/setup.bash Copyright (c) Walter Fetter Lages p.43

44 Simulação no Gazebo roslaunch wam_bringup gazebo.launch controller:=computed_torque_controller Copyright (c) Walter Fetter Lages p.44

45 Gráfico de Computação rqt_graph & Copyright (c) Walter Fetter Lages p.45

46 Mover o Robô rosrun wam_bringup step.sh Copyright (c) Walter Fetter Lages p.46

47 Exercícios Usar orqt_graph para fazer o gráfico da posição das juntas Verificar o gráfico da posição juntas movendo o robô Adaptar o pacoteq2d_bringup para usar o controlador por torque calculado Fazer o arquivo de configuração do controlador Fazer um arquivo de launch para carregar o controlador que possa ser chamado pelo gazebo.launch quando passado o parâmetro com o nome do controlador Copyright (c) Walter Fetter Lages p.47

48 PID com Compensação de Gravidade É o controlador default do WAM e da maioria dos robôs industriais Instalação source /opt/ros/indigo/setup.bash source $HOME/catkin_ws/devel/setup.bash cd ~/catkin_ws/src wget pid plus gravity controller.tgz tar xvzf indigo pid plus gravity controller.tgz cd.. catkin_make source $HOME/catkin_ws/devel/setup.bash Copyright (c) Walter Fetter Lages p.48

49 pid_plus_gravity_controller.yaml joint_state_controller: type: joint_state_controller/jointstatecontroller publish_rate: 250 pid_plus_gravity_controller: type: effort_controllers/pidplusgravitycontroller joints: wam_joint_1 wam_joint_2 wam_joint_3 wam_joint_4 wam_joint_5 wam_joint_6 wam_joint_7 Copyright (c) Walter Fetter Lages p.49

50 pid_plus_gravity_controller.yaml # PID parameters from /etc/barrett/wam7w.conf wam_joint_1: {p: 900.0, i: 2.5, d: 10.0, i_clamp: 25.0} wam_joint_2: {p: , i: 5.0, d: 20.0, i_clamp: 20.0} wam_joint_3: {p: 600.0, i: 2.0, d: 5.0, i_clamp: 15.0} wam_joint_4: {p: 500.0, i: 0.5, d: 2.0, i_clamp: 15.0} wam_joint_5: {p: 50.0, i: 0.5, d: 0.5, i_clamp: 5.0} wam_joint_6: {p: 50.0, i: 0.5, d: 0.5, i_clamp: 5.0} wam_joint_7: {p: 8.0, i: 0.1, d: 0.05, i_clamp: 5.0} gravity: {x: 0.0, y: 0.0, z: 9.8} chain: {root: "wam_origin", tip: "wam_tool_plate"} priority: 99 Copyright (c) Walter Fetter Lages p.50

51 Simulação no Gazebo roslaunch wam_bringup gazebo.launch controller:=pid_plus_gravity_controller Copyright (c) Walter Fetter Lages p.51

52 Gráfico de Computação Copyright (c) Walter Fetter Lages p.52

53 Mover o Robô rosrun wam_bringup step.sh Copyright (c) Walter Fetter Lages p.53

54 Exercícios Usar orqt_graph para fazer o gráfico da posição das juntas Verificar o gráfico da posição juntas movendo o robô Adaptar o pacoteq2d_bringup para usar o controlador por PID com compensação de gravidade Fazer o arquivo de configuração do controlador Fazer um arquivo de launch para carregar o controlador que possa ser chamado pelo gazebo.launch quando passado o parâmetro com o nome do controlador Usar odynamic_reconfigure para ajustar os ganhos do controlador Copyright (c) Walter Fetter Lages p.54

55 Exercícios Usando o robô Quanser 2DSFJE, comparar o desempenho da resposta ao salto para os controladores: PID independene por junta PID com compensação de gravidade Torque calculado Copyright (c) Walter Fetter Lages p.55

Jacobiano no ROS. Walter Fetter Lages

Jacobiano no ROS. Walter Fetter Lages Jacobiano no 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 ENG10026 Robótica A Copyright

Leia mais

Criação de um Pacote ROS com o Modelo de um Robô

Criação de um Pacote ROS com o Modelo de um Robô Criação de um Pacote ROS com o Modelo de um Robô Walter Fetter Lages [email protected] Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e

Leia mais

Geração de Trajetórias no ROS

Geração de Trajetórias no ROS Geração de Trajetórias no 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 ENG10026 Robótica

Leia mais

Universidade Tecnológica Federal do Paraná (UTFPR) Disciplina: CPGEI/PPGCA - Robótica Móvel Experimentação Virtual

Universidade Tecnológica Federal do Paraná (UTFPR) Disciplina: CPGEI/PPGCA - Robótica Móvel Experimentação Virtual Universidade Tecnológica Federal do Paraná (UTFPR) Disciplina: CPGEI/PPGCA - Robótica Móvel Experimentação Virtual Prof. André Schneider de Oliveira Prof. João Alberto Fabro Experimentacao virtual São

Leia mais

Robot Operating System (ROS)

Robot Operating System (ROS) 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 ENG04479 Robótica

Leia mais

Robot Operating System (ROS)

Robot Operating System (ROS) 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 ENG10026 Robótica

Leia mais

Robot Operating System (ROS)

Robot Operating System (ROS) 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

Leia mais

Camera, Kinect e ROS. Andrey Masiero. 5 de fevereiro de 2016

Camera, Kinect e ROS. Andrey Masiero. 5 de fevereiro de 2016 Camera, Kinect e ROS Andrey Masiero 5 de fevereiro de 2016 Agenda 1 Utilizando Webcam e OpenCV Segmentação de Cor Detecção Facial 2 Exercício 3 Utilizando Kinect Controlando a Distância 4 Exercício 5 Apêndice

Leia mais

Unified Robot Description Format (URDF)

Unified Robot Description Format (URDF) Unified Robot Description Format (URDF) 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

Leia mais

GLPI Gestão total e gratuita do seu parque informático

GLPI Gestão total e gratuita do seu parque informático GLPI Gestão total e gratuita do seu parque informático Date : 20 de Maio de 2016 Quando se é administrador de um parque informático de escala média/grande é importante possuir as melhores plataformas para

Leia mais

Engenharia de Controle e Automação: ENG03316 Mecanismos I Engenharia Elétrica: ENG10017 Sistemas e Sinais e ENG04475 Microprocessadores I

Engenharia de Controle e Automação: ENG03316 Mecanismos I Engenharia Elétrica: ENG10017 Sistemas e Sinais e ENG04475 Microprocessadores I UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL ESCOLA DE ENGENHARIA DEPARTAMENTO DE SISTEMAS ELÉTRICOS DE AUTOMAÇÃO E ENERGIA PLANO DE ENSINO PERÍODO LETIVO 2018/2 DISCIPLINA: ROBÓTICA A ENG10026 Créditos:

Leia mais

Teorias do Módulo da Satisfatibilidade (Satisfiability Modulo Theories - SMT)

Teorias do Módulo da Satisfatibilidade (Satisfiability Modulo Theories - SMT) Universidade Federal do Amazonas Faculdade de Tecnologia PROGRAMA DE PÓS-GRADUAÇÃO EM ENGENHARIA ELÉTRICA Teorias do Módulo da Satisfatibilidade (Satisfiability Modulo Theories - SMT) Lucas C. Cordeiro

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ [email protected] Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Aplicação MVC com Class Library

Aplicação MVC com Class Library Aplicação MVC com Class Library Vamos considerar uma Class Library com o modelo de dados e com acesso à base de dados através do Entity Framework. Uma Class Library nunca funciona sozinha. Vamos usá-la

Leia mais

Backup do Samba 4. Introdução. Backup do samba4

Backup do Samba 4. Introdução. Backup do samba4 Backup do Samba 4 Introdução Este documento visa a orientação para a configuração de backup dos dados de configurações do Samba4. Porém, não é uma solução para backup dos arquivos dos usuários, servidor

Leia mais

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 6: Polimorfismo PCS3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 6: Polimorfismo Escola Politécnica da Universidade de São Paulo Conceito de polimorfismo 2 Polimorfismo A palavra vem

Leia mais

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015

PCS Laboratório de Programação Orientada a Objetos 1a. Prova. 02 de Setembro de 2015 PCS - 3111 Laboratório de Programação Orientada a Objetos 1a. Prova 02 de Setembro de 2015 Questão 1 (2,6) Deseja-se implementar um programa que recebe um mês e um dia atual de um ano e o mês e o dia de

Leia mais

Aprenda a instalar o GLPI no Centos 6.5

Aprenda a instalar o GLPI no Centos 6.5 Aprenda a instalar o GLPI no Centos 6.5 Date : 31 de Janeiro de 2014 Solução fantástica para Gestão total do seu parque informático: Experimente já aqui Quando se é administrador de um parque informático

Leia mais

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas

Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes. Ciência da Computação da PUC Minas Construindo Aplicações com ASP.NET MVC 2.0 Aula 03 Luiz Alberto Ferreira Gomes Ciência da Computação da PUC Minas 2 Camada responsável por armazenar em um repositório de dados e reconstituir objetos de

Leia mais

Introdução ao OpenCV

Introdução ao OpenCV Instituto Federal Sul-rio-grandense Campus Pelotas Engenharia Elétrica Processamento de Imagens Digitais Introdução ao OpenCV (Parte I) Glaucius Décio Duarte Atualizado em: 20 ago. 2018 OpenCV (Open Source

Leia mais

Laboratório 2. Configurando o Serviço DHCP

Laboratório 2. Configurando o Serviço DHCP Neste laboratório iremos falar sobre o serviço DHCP (Dynamic Host configuration Protocol). O DHCP faz com que as máquinas clientes da rede recebam os endereços IP, máscara de subrede, gateway, servidores

Leia mais

Palavras Reservadas da Linguagem Java

Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java Palavras Reservadas da Linguagem Java: Categorias Tipos de dados primitivos Literais Pseudo-variáveis Desvio e controle de fluxo Pacotes Exceções Modificadores de

Leia mais

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE

PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO Nº 006/2016 CONTRATO DE GESTÃO IGAM Nº 002/IGAM/2012 09/2017 1 PLATAFORMA SIGA RIO DAS VELHAS MANUAL DO CÓDIGO FONTE ATO CONVOCATÓRIO

Leia mais

Escrito por Luís Talora Qui, 19 de Maio de :32 - Última atualização Seg, 11 de Julho de :45

Escrito por Luís Talora Qui, 19 de Maio de :32 - Última atualização Seg, 11 de Julho de :45 O GO-Global, desenvolvido pela GraphOn, é uma solução de Server Based Computing, que permite o acesso remoto à aplicativos publicados em um servidor Windows ou Unix/Linux. A princípio, a GraphOn disponibiliza

Leia mais

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){

nome = n; cargo = c; salario = s; public void print() { System.out.println(nome cargo salario); public void aumento( double fator){ UNIVERSIDADE FEDERAL DE SANTA CATARINA - Departamento de Automação e Sistemas PROGRAMAÇÃO DE SISTEMAS AUTOMATIZADOS - 2016/2 - P2 Nome: ------------------------------------------------------------------------------------------------------

Leia mais

Gerência de Redes de Computadores Zabbix Instalação. Prof. Alex Furtunato

Gerência de Redes de Computadores Zabbix Instalação. Prof. Alex Furtunato Gerência de Redes de Computadores Zabbix Instalação Prof. Alex Furtunato [email protected] Introdução Sistema de monitoramento de rede enterprise open source, com solução de monitoramento distribuído

Leia mais

MONITORAMENTO COM ZABBIX

MONITORAMENTO COM ZABBIX Faculdade de Tecnologia SENAC Goiás Gestão da Tecnologia da Informação MONITORAMENTO COM ZABBIX Alunos: Desiron Gonçalves Costa Filho Iury Neres Santana Jader Figueiredo de Oliveira Jefferson Mendes DEZEMBRO

Leia mais

Pilhas. Profa Morganna Diniz

Pilhas. Profa Morganna Diniz Pilhas Profa Morganna Diniz Pilhas Geralmente pilhas são úteis em situações em que dados devem ser recuperados em ordem inversa a do armazenamento É uma estrutura de dados linear que permite acesso por

Leia mais

Envio de alertas por utilizando SMTP autenticado

Envio de alertas por  utilizando SMTP autenticado Envio de alertas por e-mail utilizando SMTP autenticado INTRODUÇÃO: O Zabbix tem suporte a envio de e mails, porém sem autenticação, para utilizar o recurso de autenticação é preciso recorrer a scritps

Leia mais

ROS Robot Operating System. Diones Fischer Felipe Almeida Luan Silveira Matheus Longaray Silvia S. C. Botelho

ROS Robot Operating System. Diones Fischer Felipe Almeida Luan Silveira Matheus Longaray Silvia S. C. Botelho ROS Robot Operating System Diones Fischer Felipe Almeida Luan Silveira Matheus Longaray Silvia S. C. Botelho Introdução Dificuldades na criação de softwares robóticos: Cada robô possui um protocolo de

Leia mais

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira # Estrutura de Dados # Aula - Revisão de C/C++ na Prática Prof. Leinylson Fontinele Pereira Na aula anterior... Ponteiros Funções Introdução 3 O que vamos aprender? Preparação do ambiente de testes Conceitos

Leia mais

Prof. Jhonatan Fernando

Prof. Jhonatan Fernando Prof. Jhonatan Fernando Métodos Programação OO Instâncias de variáveis (objetos) Mensagens Classes Herança Polimorfismo Encapsulamento Abstração Programação Estruturada Procedimentos e funções Variáveis

Leia mais

CONTEÚDO PROGRAMÁTICO

CONTEÚDO PROGRAMÁTICO CONTEÚDO PROGRAMÁTICO Python Básico Carga horária: 24 horas TreinaWeb Tecnologia LTDA CNPJ: 06.156.637/0001-58 Av. Paulista, 1765 - Conj 71 e 72 São Paulo - SP CONTEÚDO PROGRAMÁTICO 1 - Introdução Introdução

Leia mais

Administração de Redes Linux

Administração de Redes Linux Administração de Redes Linux Alberto Felipe Friderichs Barros [email protected] Users As contas de usuário são projetados para fornecer segurança no sistema operacional Linux. Cada pessoa no sistema

Leia mais

Crie a sua Wikipedia com o MediaWiki em 15 minutos

Crie a sua Wikipedia com o MediaWiki em 15 minutos Crie a sua Wikipedia com o MediaWiki em 15 minutos Date : 15 de Junho de 2013 Porque continuamos a construir sites? Esta é a questão que coloco depois de nos últimos tempos terem aparecido tantas ferramentas/plataformas,

Leia mais

Introdução à linguagem C++

Introdução à linguagem C++ Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 2: Introdução à linguagem C++ Introdução à linguagem C++ Conceitos básicos: variáveis, tipos de dados, constantes, I/O, etc. Estruturas

Leia mais

Configuração do Apache Cordova Lab. 13. Prof. Bruno C. Vani

Configuração do Apache Cordova Lab. 13. Prof. Bruno C. Vani Configuração do Apache Cordova Lab. 13 Prof. Bruno C. Vani [email protected] Apache Cordova Visão Geral [1/2] Permite acessar funcionalidades nativas dos dispositivos móveis (como câmera, GPS, etc.)

Leia mais

Configuração. Ubuntu Server Sistemas Distribuídos Engenharia da Computação

Configuração. Ubuntu Server Sistemas Distribuídos Engenharia da Computação + Sistemas Distribuídos Engenharia da Computação Prof. Jairson Rodrigues Universidade Federal do Vale do São Francisco Ubuntu Server 14.04 Configuração + Ubuntu Server 14.04 AGENDA Login Remoto Samba Server

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Paradigma Imperativo Matheus Hafner Tiago Xavier CET 087 - Conceitos de Linguagens de Programação (CLP) 17 de novembro de 2011 Aula Prática Instalação Fortran sudo apt-get install

Leia mais

osticket Aprenda como instalar no Ubuntu

osticket Aprenda como instalar no Ubuntu osticket Aprenda como instalar no Ubuntu Date : 17 de Julho de 2015 O osticket é uma plataforma Web opensource direccionada para o registo de pedidos de Help Desk (ex. pedidos de suporte, ou pedidos de

Leia mais

Criação de uma aplicação Web ASP.NET MVC 4

Criação de uma aplicação Web ASP.NET MVC 4 Criação de uma aplicação Web ASP.NET MVC 4 usando Code First, com Roles (VS2012) Baseado no artigo de Scott Allen Roles in ASP.NET MVC4 : http://odetocode.com/blogs/scott/archive/2012/08/31/seeding membership

Leia mais

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 2 Ambiente de Desenvolvimento

Leia mais

Linguagens de Programação Conceitos e Técnicas. Amarrações

Linguagens de Programação Conceitos e Técnicas. Amarrações Linguagens de Programação Conceitos e Técnicas Amarrações Conceituação Amarração (ou binding) é uma associação entre entidades de programação, tais como entre uma variável e seu valor ou entre um identificador

Leia mais

Programação Estruturada e Orientada a Objetos

Programação Estruturada e Orientada a Objetos INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE Programação Estruturada e Orientada a Objetos Docente: Éberton da Silva Marinho e-mail: [email protected] [email protected]

Leia mais

U.C. (21093) Programação por Objetos. XX de Julho de INSTRUÇÕES --

U.C. (21093) Programação por Objetos. XX de Julho de INSTRUÇÕES -- Ministério da Educação e Ciência p-fólio U.C. (21093) Programação por Objetos XX de Julho de 2015 -- INSTRUÇÕES -- O estudante deverá responder à prova na folha de ponto e preencher o cabeçalho e todos

Leia mais

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany [email protected] ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include

Leia mais

Instalação Apache Tomcat 8.5 no Debian 8

Instalação Apache Tomcat 8.5 no Debian 8 O Software Apache Tomcat é uma implementação de código aberto do Java Servlet, JavaServer Pages, Java Expression Language e Java WebSocket technologies. O software Apache Tomcat é desenvolvido em um ambiente

Leia mais

Manual de instalação do Maple para Linux

Manual de instalação do Maple para Linux Manual de instalação do Maple para Linux Antes de começar tenha em mente que este software só poderá ser ativado em um único computador, uma vez ativado não será possível a reativação em outro computador.

Leia mais

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados

PCS Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 5: Encapsulamento e Tipo Abstrato de Dados PCS 3111 Laboratório de Programação Orientada a Objetos para Engenharia Elétrica Aula 5: Encapsulamento e Tipo Abstrato de Dados Escola Politécnica da Universidade de São Paulo Agenda Questões Típicas

Leia mais

Dicas PET-Tele. Instalação do módulo CGILua no Apache 2.2

Dicas PET-Tele. Instalação do módulo CGILua no Apache 2.2 Universidade Federal Fluminense UFF Escola de Engenharia TCE Curso de Engenharia de Telecomunicações TGT Programa de Educação Tutorial PET Grupo PET-Tele Dicas PET-Tele Instalação do módulo CGILua no Apache

Leia mais

Alertas por e-mail utilizando SMTP autenticado

Alertas por e-mail utilizando SMTP autenticado Alertas por e-mail utilizando SMTP autenticado INTRODUÇÃO: O Zabbix tem suporte a envio de e mails, porém sem autenticação, para utilizar o recurso de autenticação é preciso recorrer a scritps externos,

Leia mais

Gerência de Redes de Computadores MRTG. Prof. Alex Furtunato

Gerência de Redes de Computadores MRTG. Prof. Alex Furtunato Gerência de Redes de Computadores MRTG Prof. Alex Furtunato [email protected] Introdução Multi Router Traffic Grapher Script criado para monitorar o tráfego em um site, com link de 64kbps, em

Leia mais

Criando um servidor de log

Criando um servidor de log Criando um servidor de log Date : Outubro 30, 2013 Vejo que um grande problema de muitos servidores é não saber administrar corretamente a rede, seus logs e acessos. Por este motivo vou ensinar neste post

Leia mais

Uso de PLC code display para monitoramento de lógica do PLC

Uso de PLC code display para monitoramento de lógica do PLC WinCC V1X Uso de PLC code display para monitoramento de lógica do PLC Denilson Pegaia Objetivo: indicar os passos necessários para configurar o objeto PLC code display no WinCC Professional V1X de modo

Leia mais