Programming Robots with ROS. A Practical Introduction to the Robot Operating System - Helion
ISBN: 978-14-493-2550-3
stron: 448, Format: ebook
Data wydania: 2015-11-16
Księgarnia: Helion
Cena książki: 160,65 zł (poprzednio: 186,80 zł)
Oszczędzasz: 14% (-26,15 zł)
Want to develop novel robot applications, but don’t know how to write a mapping or object-recognition system? You’re not alone, but you’re certainly not without help. By combining real-world examples with valuable knowledge from the Robot Operating System (ROS) community, this practical book provides a set of motivating recipes for solving specific robotics use cases.
Ideal for enthusiasts, from students in robotics clubs to professional robotics scientists and engineers, each recipe describes a complete solution using ROS open source libraries and tools. You’ll learn how to complete tasks described in the recipes, as well as how to configure and recombine components for other tasks. If you’re familiar with Python, you’re ready to go.
- Learn fundamentals, including key ROS concepts, tools, and patterns
- Program robots that perform an increasingly complex set of behaviors, using the powerful packages in ROS
- See how to easily add perception and navigation abilities to your robots
- Integrate your own sensors, actuators, software libraries, and even a whole robot into the ROS ecosystem
- Learn tips and tricks for using ROS tools and community resources, debugging robot behavior, and using C++ in ROS
Osoby które kupowały "Programming Robots with ROS. A Practical Introduction to the Robot Operating System", wybierały także:
- Learn Python Programming 299,00 zł, (29,90 zł -90%)
- Learn Web Development with Python 199,33 zł, (29,90 zł -85%)
- Python: Advanced Guide to Artificial Intelligence 199,33 zł, (29,90 zł -85%)
- Hands-On Simulation Modeling with Python 175,88 zł, (29,90 zł -83%)
- Hands-On Genetic Algorithms with Python 175,88 zł, (29,90 zł -83%)
Spis treści
Programming Robots with ROS. A Practical Introduction to the Robot Operating System eBook -- spis treści
- Preface
- Who Should Read This Book?
- Who Should Not Read This Book?
- What Youll Learn
- Prerequisites
- Conventions Used in This Book
- Using Code Examples
- Safari Books Online
- How to Contact Us
- Acknowledgments
- I. Fundamentals
- 1. Introduction
- Brief History
- Philosophy
- Installation
- Summary
- 2. Preliminaries
- The ROS Graph
- roscore
- catkin, Workspaces, and ROS Packages
- catkin
- Workspaces
- ROS Packages
- rosrun
- Names, Namespaces, and Remapping
- roslaunch
- The Tab Key
- tf: Coordinate Transforms
- Poses, Positions, and Orientations
- tf
- Summary
- 3. Topics
- Publishing to a Topic
- Checking That Everything Works as Expected
- Subscribing to a Topic
- Checking That Everything Works as Expected
- Latched Topics
- Defining Your Own Message Types
- Defining a New Message
- Using Your New Message
- When Should You Make a New Message Type?
- Mixing Publishers and Subscribers
- Summary
- Publishing to a Topic
- 4. Services
- Defining a Service
- Implementing a Service
- Checking That Everything Works as Expected
- Other Ways of Returning Values from a Service
- Using a Service
- Checking That Everything Works as Expected
- Other Ways to Call Services
- Summary
- 5. Actions
- Defining an Action
- Implementing a Basic Action Server
- Checking That Everything Works as Expected
- Using an Action
- Checking That Everything Works as Expected
- Implementing a More Sophisticated Action Server
- Using the More Sophisticated Action
- Checking That Everything Works as Expected
- Summary
- 6. Robots and Simulators
- Subsystems
- Actuation: Mobile Platform
- Actuation: Manipulator Arm
- Sensors
- Visual cameras
- Depth cameras
- Laser scanners
- Shaft encoders
- Computation
- Complete Robots
- PR2
- Fetch
- Robonaut 2
- TurtleBot
- Simulators
- Stage
- Gazebo
- Other Simulators
- Summary
- Subsystems
- 7. Wander-bot
- Creating a Package
- Reading Sensor Data
- Sensing and Actuation: Wander-bot!
- Summary
- II. Moving Around Using ROS
- 8. Teleop-bot
- Development Pattern
- Keyboard Driver
- Motion Generator
- Parameter Server
- Velocity Ramps
- Lets Drive!
- rviz
- Summary
- 9. Building Maps of the World
- Maps in ROS
- Recording Data with rosbag
- Building Maps
- Starting a Map Server and Looking at a Map
- Summary
- 10. Navigating About the World
- Localizing the Robot in a Map
- Getting a Good Initial Localization
- Whats Going on Behind the Scenes
- Tips for Setting a Better Initial Pose
- Using the ROS Navigation Stack
- The ROS Navigation Stack
- Navigating in rviz
- Seeing Whats Going On
- Navigating in Code
- Summary
- Localizing the Robot in a Map
- 11. Chess-bot
- Joints, Links, and Kinematic Chains
- Joint Space
- Inverse Kinematics
- The Key to Success
- Installing and Running a Simulated R2
- Moving R2 from the Command Line
- Moving R2 Around a Chessboard
- Operating the Hand
- Modeling a Chessboard
- Playing Back a Famous Chess Game
- Summary
- Joints, Links, and Kinematic Chains
- III. Perception and Behavior
- 12. Follow-bot
- Acquiring Images
- Detecting the Line
- Following the Line
- Summary
- 13. On Patrol
- Simple Patrolling
- State Machines
- State Machines in ROS
- Defining State Machines with smach
- A Slightly More Relevant Example
- Defining State Machines Procedurally
- Patrolling with State Machines
- A Better Way to Patrol
- Summary
- 14. Stockroom-bot
- Stockroom Simulation
- Driving to Bins
- Picking Up the Item
- Summary
- IV. Bringing Your Own Stuff into ROS
- 15. Your Own Sensors and Actuators
- Adding Your Own Sensors
- A (Fake) Sensor
- Designing the ROS Wrapper
- Design 1: Periodic Measurements over a Topic
- Design 2: Streaming Measurements over a Topic
- Design 3: Streaming Measurements Published at a Fixed Rate
- Design 4: Sensor Measurements on Demand
- Adding Your Own Actuators
- A (Fake) Actuator
- Designing the ROS Wrapper
- Design 1: Continuous Actuation
- Design 2: Infrequent, Instantaneous Actuation
- Design 3: Infrequent, Extended Actuation
- Summary
- Adding Your Own Sensors
- 16. Your Own Mobile Robot
- TortoiseBot
- ROS Message Interface
- Hardware Driver
- Modeling the Robot: URDF
- Simulation in Gazebo
- Summary
- 17. Your Own Mobile Robot: Part 2
- Verifying Transforms
- Adding a Laser Sensor
- Configuring the Navigation Stack
- Using rviz to Localize and Command a Navigating Robot
- Summary
- 18. Your Own Robot Arm
- CougarBot
- ROS Message Interface
- Hardware Driver
- Modeling the Robot: URDF
- Simulation in Gazebo
- Verifying Transforms
- Configuring MoveIt
- Using rviz to Send Goals
- Summary
- 19. Adding a Software Library
- Make Your Robot Talk: pyttsx
- Action Interface
- Parameters
- Event Loops
- The Speech Server
- The Speech Client
- Checking That Everything Works as Expected
- Summary
- Make Your Robot Talk: pyttsx
- V. Tips and Tricks
- 20. Tools
- The Master and Friends: roscore
- Parameters: rosparam
- Navigating the Filesystem: roscd
- Starting a Node: rosrun
- Starting Many Nodes: roslaunch
- Testing a Many-Node System: rostest
- Introspection: rosnode, rostopic, rosmsg, rosservice, and rossrv
- Summary
- 21. Debugging Robot Behavior
- Log Messages: /rosout and rqt_console
- Generating Log Messages: /rosout
- Logger Levels
- Reading Log Messages: rqt_console
- /rosout Versus /rosout_agg
- Nodes, Topics, and Connections: rqt_graph and rosnode
- Visualizing the Graph: rqt_graph
- Problem: Mismatched Topic Names
- Problem: Mismatched Topic Types and/or Checksums
- Problem: Incorrect Network Settings
- Sensor Fusion: rviz
- Plotting Data: rqt_plot
- Data Logging and Analysis: rosbag and rqt_bag
- Logging and Playing Back Data: rosbag
- Visualizing Bags: rqt_bag
- Analyzing ROS Bags with Other Tools: rostopic echo -b
- Summary
- Log Messages: /rosout and rqt_console
- 22. The ROS Community: Online Resources
- Etiquette
- The ROS Wiki
- ROS Answers
- Trackers (Bugs and Feature Requests)
- Mailing Lists and Special Interest Groups
- Finding and Sharing Code
- Summary
- 23. Using C++ in ROS
- When Should You Use C (or Some Other Language)?
- Building C++ with catkin
- package.xml
- CMakeLists.txt
- catkin_make
- Translating from Python to C++ (and Back Again)
- A Simple Node
- Topics
- Services
- Summary
- Index