1st Edition
A Systematic Approach to Learning Robot Programming with ROS
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.