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
Wyatt Newman (Case Western Reserve University Cleveland Ohio USA)
Country of Publication:
01 September 2017
Professional and scholarly
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
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.