Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Arrow up icon
GO TO TOP
Mastering ROS for Robotics Programming

You're reading from   Mastering ROS for Robotics Programming Design, build, and simulate complex robots using the Robot Operating System

Arrow left icon
Product type Paperback
Published in Dec 2015
Publisher Packt
ISBN-13 9781783551798
Length 480 pages
Edition 1st Edition
Languages
Concepts
Arrow right icon
Author (1):
Arrow left icon
Lentin Joseph Lentin Joseph
Author Profile Icon Lentin Joseph
Lentin Joseph
Arrow right icon
View More author details
Toc

Table of Contents (14) Chapters Close

Preface 1. Introduction to ROS and Its Package Management FREE CHAPTER 2. Working with 3D Robot Modeling in ROS 3. Simulating Robots Using ROS and Gazebo 4. Using the ROS MoveIt! and Navigation Stack 5. Working with Pluginlib, Nodelets, and Gazebo Plugins 6. Writing ROS Controllers and Visualization Plugins 7. Interfacing I/O Boards, Sensors, and Actuators to ROS 8. Programming Vision Sensors using ROS, Open-CV, and PCL 9. Building and Interfacing Differential Drive Mobile Robot Hardware in ROS 10. Exploring the Advanced Capabilities of ROS-MoveIt! 11. ROS for Industrial Robots 12. Troubleshooting and Best Practices in ROS Index

Understanding pr2_mechanism packages


The pr2_mechanism stack contain packages for writing ROS real-time controllers. The first package that we are going to discuss is the pr2_controller_interface package.

pr2_controller_interface package

A basic ROS real-time controller must inherit a base class called pr2_controller_interface::Controller from this package. This base class contains four important functions: init() , start(), update(), and stop(). The basic structure of the Controller class is given as follows:

namespace pr2_controller_interface
{
  class Controller
  {
  public:
    virtual bool init(pr2_mechanism_model::RobotState *robot,
                     ros::NodeHandle &n);
    virtual void starting();
    virtual void update();
    virtual void stopping();
  };
}

The workflow of the controller class is shown as follows.

Figure 1: Workflow of the controller

Initialization of the controller

The first function executing when a controller is loaded is init(). The init() function will not...

lock icon The rest of the chapter is locked
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime
Banner background image