Table of Contents
ROS Robotics By Example
Credits
About the Authors
About the Reviewer
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Downloading the color images of this book
Errata
Piracy
Questions
1. Getting Started with ROS
What does ROS do and what are the benefits of learning ROS?
Who controls ROS?
Which robots are using ROS?
Installing and launching ROS
Configuring your Ubuntu repositories
Setting up your sources.list
Setting up your keys
Installing ROS Indigo
Initialize rosdep
Environment setup
Getting rosinstall
Troubleshooting – examining your ROS environment
Creating a catkin workspace
ROS packages and manifest
ROS manifest
Exploring the ROS packages
rospack find packages
rospack list
ROS nodes and ROS Master
ROS nodes
Nodes can publish and nodes can subscribe
ROS Master
Invoking the ROS Master using roscore
Parameter Server
ROS commands to determine the nodes and topics
Turtlesim, the first ROS robot simulation
Starting turtlesim nodes
rosrun command
Turtlesim nodes
Turtlesim topics and messages
rostopic list
rostopic type
rosmsg list
rosmsg show
rostopic echo
Parameter Server of turtlesim
rosparam help
rosparam list for /turtlesim node
Change parameters for the color of the turtle's background
rosparam get
rosparam set
ROS services to move turtle
rosservice call
ROS commands summary
Summary
2. Creating Your First Two-Wheeled ROS Robot (in Simulation)
Rviz
Installing and launching rviz
Using rviz
Displays panel
Views and Time panels
Mouse control
Toolbar
Main window menu bar
Creating and building a ROS package
Building a differential drive robot URDF
Creating a robot chassis
Using roslaunch
Adding wheels
Adding a caster
Adding color
Adding collisions
Moving the wheels
A word about tf and robot_state_publisher
Adding physical properties
Trying URDF tools
check_urdf
urdf_to_graphiz
Gazebo
Installing and launching Gazebo
Using roslaunch with Gazebo
Using Gazebo
Environment toolbar
World and Insert panels
Joints panel
Main window menu bar
Simulation panel
Modifications to the robot URDF
Adding the Gazebo tag
Specifying color in Gazebo
A word about <visual> and <collision> elements in Gazebo
Verifying a Gazebo model
Viewing the URDF in Gazebo
Tweaking your model
Moving your model around
Other ROS simulation environments
Summary
3. Driving Around with TurtleBot
Introducing TurtleBot
Loading TurtleBot simulator software
Launching TurtleBot simulator in Gazebo
Problems and troubleshooting
ROS commands and Gazebo
Keyboard teleoperation of TurtleBot in simulation
Setting up to control a real TurtleBot
TurtleBot standalone test
Networking the netbook and remote computer
Types of networks
Network addresses
Remote computer network setup
Netbook network setup
Secure Shell (SSH) connection
Summary of network setup
Troubleshooting your network connection
Testing the TurtleBot system
TurtleBot hardware specifications
TurtleBot dashboard
Move the real TurtleBot
Using keyboard teleoperation to move TurtleBot
Using ROS commands to move TurtleBot around
Writing your first Python script to control TurtleBot
Introducing rqt tools
rqt_graph
rqt message publisher and topic monitor
TurtleBot's odometry
Odom for the simulated TurtleBot
Real TurtleBot's odometry display in rviz
TurtleBot automatic docking
Summary
4. Navigating the World with TurtleBot
3D vision systems for TurtleBot
How these 3D vision sensors work
Comparison of 3D sensors
Microsoft Kinect
ASUS
Obstacle avoidance drawbacks
Configuring TurtleBot and installing the 3D sensor software
Kinect
ASUS and PrimeSense
Camera software structure
Defining terms
Testing the 3D sensor in standalone mode
Running ROS nodes for visualization
Visual data using Image Viewer
Visual data using rviz
Navigating with TurtleBot
Mapping a room with TurtleBot
Defining terms
Building a map
How does TurtleBot accomplish this mapping task?
Autonomous navigation with TurtleBot
Defining terms
Driving without steering TurtleBot
rviz control
How does TurtleBot accomplish this navigation task?
rqt_reconfigure
Exploring ROS navigation further
Summary
5. Creating Your First Robot Arm (in Simulation)
Features of Xacro
Expanding Xacro
Building an articulated robot arm URDF using Xacro
Using the Xacro property tag
Using roslaunch for rrbot
Using Xacro include and macro tags
Adding mesh to the robot arm
Controlling an articulated robot arm in Gazebo
Adding Gazebo-specific elements
Fixing the robot arm to the world
Viewing the robot arm in Gazebo
Adding controls to the Xacro
Defining transmission elements for joints
Adding a Gazebo ROS control plugin
Creating a YAML configuration file
Creating a control launch file
Controlling your robot arm with the ROS command line
Controlling your robot arm with rqt
Trying more things in rqt
Summary
6. Wobbling Robot Arms Using Joint Control
I...