1st Edition

A Systematic Approach to Learning Robot Programming with ROS

By Wyatt Newman Copyright 2018
    530 Pages 50 Color Illustrations
    by Chapman & Hall

    530 Pages 50 Color Illustrations
    by Chapman & Hall

    530 Pages 50 Color Illustrations
    by Chapman & Hall

    A Systematic Approach to Learning Robot Programming with ROS provides a comprehensive, introduction to the essential components of ROS through detailed explanations of simple code examples along with the corresponding theory of operation. The book explores the organization of ROS, how to understand ROS packages, how to use ROS tools, how to incorporate existing ROS packages into new applications, and how to develop new packages for robotics and automation. It also facilitates continuing education by preparing the reader to better understand the existing on-line documentation.

    The book is organized into six parts. It begins with an introduction to ROS foundations, including writing ROS nodes and ROS tools. Messages, Classes, and Servers are also covered. The second part of the book features simulation and visualization with ROS, including coordinate transforms.

    The next part of the book discusses perceptual processing in ROS. It includes coverage of using cameras in ROS, depth imaging and point clouds, and point cloud processing. Mobile robot control and navigation in ROS is featured in the fourth part of the book

    The fifth section of the book contains coverage of robot arms in ROS. This section explores robot arm kinematics, arm motion planning, arm control with the Baxter Simulator, and an object-grabber package. The last part of the book focuses on system integration and higher-level control, including perception-based and mobile manipulation.

    This accessible text includes examples throughout and C++ code examples are also provided at https://github.com/wsnewman/learning_ros

    SECTION I ROS FOUNDATIONS

    Introduction to ROS: ROS tools and nodes

    Some Ros Concepts

    Writing Ros Nodes

    Some More Ros Tools: Catkin_Simple, Roslaunch, Rqt_Console, And Rosbag

    A Minimal Simulator and Controller Example

    Wrap-Up

    Messages, Classes and Servers

    Defining Custom Messages

    Introduction to Ros Services

    Using C++ Classes in Ros

    Creating Library Modules In Ros

    Introduction to Action Servers and Action Clients

    Introduction to The Parameter Server

    Wrap-Up

    SECTION II SIMULATION AND VISUALIZATION IN ROS

    Simulation in ROS

    The Simple Two-Dimensional Robot Simulator

    Modeling for Dynamic Simulation

    The Unified Robot Description Format

    Introduction to Gazebo

    A Minimal Joint Controller

    Using A Gazebo Plug-In for Joint Servo Control

    Building A Mobile Robot Model

    Simulating The Mobile Robot Model

    Combining Robot Models

    Wrap-Up

    Coordinate Transforms in ROS

    Introduction to Coordinate Transforms In Ros

    The Transform Listener

    Using The Eigen Library

    Transforming Ros Datatypes

    Wrap-Up

    Sensing and Visualization in ROS

    Markers And Interactive Markers In Rviz

    Displaying Sensor Values in Rviz

    Wrap-Up

    SECTION IIIPERCEPTUAL PROCESSING IN ROS

    Using Cameras in ROS

    Projective Transformation Into Camera Coordinates

    Intrinsic Camera Calibration

    Intrinsic Calibration Of Stereo Cameras

    Using Opencv with Ros

    Wrap-Up

    Depth Imaging and Point Clouds

    Depth from Scanning Lidar

    Depth from Stereo Cameras

    Depth Cameras

    Wrap-Up

    Point Cloud Processing

    A Simple Point-Cloud Display Node

    Loading and Displaying Point-Cloud Images From Disk

    Saving Published Point-Cloud Images to Disk

    Interpreting Point-Cloud Images with Pcl Methods

    An Object Finder

    SECTION IV MOBILE ROBOTS IN ROS

    Mobile-Robot Motion Control

    Desired State Generation

    Robot State Estimation

    Differential-Drive Steering Algorithms

    Steering with Respect to Map Coordinates

    Wrap-Up

    Mobile-Robot Navigation

    Map Making

    Path Planning

    An Example Move-Base Client

    Modifying The Navigation Stack

    Wrap-Up

    SECTION V ROBOT ARMS IN ROS

    Low-Level Control

    A One-Dof, Prismatic-Joint Robot Model

    An Example Position Controller

    An Example Velocity Controller

    An Example Force Controller

    Trajectory Messages for Robot Arms
    A Trajectory Interpolation Action Server For A 7-Dof Arm

    Wrap-Up

    Robot Arm Kinematics

    Forward Kinematics

    Inverse Kinematics

    Wrap-Up

    Arm Motion Planning

    Cartesian Motion Planning

    Dynamic Programming for Joint-Space Planning

    Cartesian-Motion Action Servers

    Wrap-Up
    Arm Control with the Baxter Simulator

    Running The Baxter Simulator

    Baxter Joints and Topics

    Baxter's Grippers

    Head Pan Control

    Commanding Baxter Joints

    Using The Ros Joint Trajectory Controller

    Joint-Space Record and Playback Nodes

    Baxter Kinematics

    Baxter Cartesian Moves

    Wrap-Up

    An Object-Grabber Package

    Object-Grabber Code Organization

    An Object Manipulation Query Service

    Generic Gripper Services

    An Object-Grabber Action Server

    An Example Object-Grabber Action Client

    Wrap-Up

    SECTION VI SYSTEM INTEGRATION AND HIGHER-LEVEL CONTROL

    Perception-Based Manipulation

    Extrinsic Camera Calibration

    Integrated Perception and Manipulation

    Mobile Manipulation

    Mobile Manipulator Model

    Mobile Manipulation

    Wrap-Up

    Conclusion

    Biography

    Wyatt Newman is a professor in the department of Electrical Engineering and Computer Science at Case Western Reserve University, where he has taught since 1988. His research is in the areas of mechatronics, robotics and computational intelligence, in which he has 12 patents and over 150 technical publications. He received the S.B. degree from Harvard College in Engineering Science, the S.M. degree in Mechanical Engineering from M.I.T. in thermal and fluid sciences, the M.S.E.E. degree from Columbia University in control theory and network theory, and the Ph.D. degree in Mechanical Engineering from M.I.T. in design and control. A former NSF Young Investigator in robotics, Prof. Newman has also held appointments as: a senior member of research staff, Philips Laboratories; visiting scientist at Philips Natuurkundig Laboratorium; visiting faculty at Sandia National Laboratories, Intelligent Systems and Robotics Center; NASA summer faculty fellow at NASA Glenn Research Center; visiting fellow in neuroscience at Princeton University; distinguished visiting fellow at Edinburgh University, School of Informatics, and the Hung Hing Ying Distinguished Visiting Professor at the University of Hong Kong. Prof. Newman led robotics teams competing in the 2007 DARPA Urban Challenge and in the 2015 DARPA Robotics Challenge, and he continues to be interested in wide-ranging aspects and applications of robotics.