Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Copyright and Credits
Hands-On ROS for Robotics Programming
About Packt
Why subscribe?
Contributors
About the author
About the reviewers
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Code in Action
Conventions used
Get in touch
Reviews
Section 1: Physical Robot Assembly and Testing
Assembling the Robot
Understanding the GoPiGo3 robot
The robotics perspective
The programming perspective
Robot kit and resources
Getting familiar with the embedded hardware
The GoPiGo3 board
Raspberry Pi 3B+
Why does a robot need a CPU?
Deep diving into the electromechanics
The most useful sensors
Distance sensor
Line follower
IMU sensor
Pi Camera
Putting it all together
Quick hardware test
Resources
Getting started with DexterOS
Coding with Bloxter
Calibrating the robot
Driving the robot
Checking the sensors
Shutting down the robot
Summary
Questions
Further reading
Unit Testing of GoPiGo3
Technical requirements
Getting started with Python and JupyterLab
Launching JupyterLab for GoPiGo3
Hardware testing
Testing battery, LEDs, and motors/encoders
Battery level
Hardware information and current voltage levels
LEDs and blinkers
Motors and encoders test
Unit testing of sensors and drives
Quick start with sensors and motors
Driving around
Distance sensor
Check port connections
Distance sensor unit test
GoPiGo3 API library
DI sensors API library
Servo package
Servo package unit test
Line follower
Line follower unit test
Inertial Measurement Unit (IMU)
IMU unit test
Raspberry Pi
Pi unit test
GoPiGo3 projects
Summary
Questions
Further reading
Getting Started with ROS
Technical requirements
ROS basic concepts
The ROS graph
roscore
Workspaces and catkin
Configuring your ROS development environment
Installing ROS
Ubuntu and ROS in the Raspberry Pi
Integrated Development Environment (IDE)
Installing RoboWare Studio
Communication between ROS nodes – messages and topics
Creating a workspace
Creating a workspace and building it using RoboWare
Setting up the ROS package
Accessing package files and building the workspace using RoboWare
A node publishing a topic
A node that listens to the topic
Combining the publisher and subscriber in the same node
Using publicly available packages for ROS
Summary
Questions
Further reading
Section 2: Robot Simulation with Gazebo
Creating the Virtual Two-Wheeled ROS Robot
Technical requirements
Getting started with RViz for robot visualization
Building a differential drive robot with URDF
Overview of URDF for GoPiGo3
URDF robot body
Caster
The URDF model's left and right wheels
Inspecting the GoPiGo3 model in ROS with RViz
Understanding the roslaunch command
Using Roboware to execute a launch file
Controlling the GoPiGo3 robot's wheels from RViz
Using the joint_state_publisher package
Robot frames of reference in the URDF model
Using RViz to check the model while building
Changing the aspect of the model in the RViz window
Helpful ROS tools for checking purposes
Summary
Questions
Further reading
Simulating Robot Behavior with Gazebo
Technical requirements
Getting started with the Gazebo simulator
Making modifications to the robot URDF
Extending URDF to produce an SDF robot definition
Collisions and physical properties
Gazebo tags
Verifying a Gazebo model and viewing the URDF
Launching the GoPiGo model in Gazebo
Explaining configurable launch files using the <arg> tag
Moving your model around
Guidelines for tuning the Gazebo model
Summary
Questions
Further reading
Section 3: Autonomous Navigation Using SLAM
Programming in ROS - Commands and Tools
Technical requirements
Setting up a physical robot
Downloading and setting up Ubuntu Mate 18.04
Access customization
Updating your system and installing basic utilities
Enabling SSH access
Setting up a VNC server (x11vnc)
Setting up autostart on boot
Forcing the HDMI output and screen layout
The Geany IDE
Installing drivers for the GoPiGo3 and DI Sensors
Setting up the Pi Camera
Installing ROS Melodic
Installing a Pi Camera ROS package
A quick introduction to ROS programming
Setting up the workspace
Cloning a ROS package
Our first execution of a ROS node
Case study 1 – writing a ROS distance-sensor package
Creating a new package
Producing your source code
Including the required libraries – rospy and msgs.msg
Assigning a node name to the script
Defining the publisher
Setting up the msg_range object
Changing units to the International System of Units
Adding a measured distance and timestamp to the msg_range object
Setting the reading frequency
Running an infinite loop
Publishing each new event
Waiting until the next reading
Launching the ROS execution environment
Working with ROS commands
Shell commands
Changing the current location
Listing files and folders inside a package
Editing any file inside a package
Execution commands
The central process of the ROS environment
Executing a single node
Information commands
Exploring topics
Exploring nodes
The rosmsg command
The rosbag command
Packages and the catkin workspace
Creating and running publisher and subscriber nodes
Automating the execution of nodes using roslaunch
Case study 2 – ROS GUI development tools – the Pi Camera
Analyzing the ROS graph using rqt_graph
Displaying image data using rqt_image_view
Graphing time series of sensor data with rqt_plot
Playing a recorded ROS session with rqt_bag
Distance sensor
The Pi Camera
Customizing robot features using ROS parameters
Summary
Questions
Further reading
Robot Control and Simulation
Technical requirements
Setting up the GoPiGo3 development environment
ROS networking between the robot and the remote computer
Communication between ROS environments
Robot network configuration
Laptop network configuration
Launching the master node and connecting
Case study 3 – remote control using the keyboard
Running the gopigo3 node in the robot
Inspecting published topics and messages
Teleoperation package
Running teleoperation on a laptop
Teleoperation with the mouse
Remote control using ROS topics
The motion control topic – /cmd_vel
Using /cmd_vel to directly drive GoPiGo3
Checking the X, Y, and Z axes of GoPiGo3
Composing motions
Remotely controlling both physical and virtual robots
Reverting the ROS master to the local computer
Simulating GoPiGo3 with Gazebo
Adding the controller to the Gazebo model of the robot
Real-world and simulation at once
Summary
Questions
Further reading
Virtual SLAM and Navigation Using Gazebo
Technical requirements
ROS navigation packages
ROS master running on the local computer
Dynamic simulation using Gazebo
Adding sensors to the GoPiGo3 model
Camera model
Simulating the camera
Distance sensor
Simulating the distance sensor
Components in navigation
Costmaps for safe navigation
Robot perception and SLAM
Adding a Laser Distance Sensor (LDS)
Simulating the LDS
SLAM concepts
Occupancy Grid Map (OGM)
The SLAM process
The navigation process
Practising SLAM and navigation with the GoPiGo3
Exploring the environment to build a map using SLAM
Driving along a planned trajectory using navigation
Summary
Questions
Further reading
SLAM for Robot Navigation
Technical requirements
Setting the ROS master to be in the robot
Preparing an LDS for your robot
Setting up YDLIDAR
Integrating with the remote PC
Running the YDLIDAR ROS package
Integrating with Raspberry Pi
Checking that YDLIDAR works with GoPiGo3
Visualizing scan data in the Raspberry Pi desktop
Grouping launch files
Visualizing scan data from the remote laptop
Processing YDLIDAR data from a remote laptop
Creating a navigation application in ROS
Practicing navigation with GoPiGo3
Building a map of the environment
Navigating GoPiGo3 in the real world
Summary
Questions
Further reading
Section 4: Adaptive Robot Behavior Using Machine Learning
Applying Machine Learning in Robotics
Technical requirements
Setting up the system for TensorFlow
Installing pip
Installing the latest version
Installing TensorFlow and other dependencies
Achieving better performance using the GPU
ML comes to robotics
Core concepts in ML
Selecting features in ML
The ML pipeline
From ML to deep learning
ML algorithms
Regression
Logistic regression
Product recommendation
Clustering
Deep learning
Deep learning and neural networks
The input layer
The hidden layer(s)
The output layer
A methodology to programmatically apply ML in robotics
A general approach to application programming
Integrating an ML task
Deep learning applied to robotics – computer vision
Object recognition in Gazebo
Object recognition in the real world
Summary
Questions
Further reading
Machine Learning with OpenAI Gym
Technical requirements
An introduction to OpenAI Gym
Installing OpenAI Gym
Without Anaconda (optional)
Installing gym in development mode (optional)
Installing OpenAI ROS
Agents, artificial intelligence, and machine learning
The cart pole example
Environments
Spaces
Observations
Running the full cart pole example
Q-learning explained – the self-driving cab example
How to run the code for the self-driving cab
Reward table
Action space
State space
Self-driving cab example using the RL algorithm
Evaluating the agent
Hyperparameters and optimization
Running an environment
Configuring the environment file
Running the simulation and plotting the results
Checking your progress with the logger
Summary
Questions
Further reading
Achieve a Goal through Reinforcement Learning
Technical requirements
Preparing the environment with TensorFlow, Keras, and Anaconda
TensorFlow backend
Deep learning with Keras
ROS dependency packages
Understanding the ROS Machine Learning packages
Training scenarios
ROS package structure for running a reinforcement learning task
Setting the training task parameters
Training GoPiGo3 to reach a target location while avoiding obstacles
How to run the simulations
Scenario 1 – travel to a target location
Scenario 2 – travel to a target location avoiding the obstacles
Testing the trained model
Summary
Questions
Further reading
Assessment
Chapter 1: Assembling the Robot
Chapter 2: Unit Testing of GoPiGo3
Chapter 3: Getting Started with ROS
Chapter 4: Creating the Virtual Two-Wheeled ROS Robot
Chapter 5: Simulating Robot Behavior with Gazebo
Chapter 6: Programming in ROS - Commands and Tools
Chapter 7: Robot Control and Simulation
Chapter 8: Virtual SLAM and Navigation Using Gazebo
Chapter 9: SLAM for Robot Navigation
Chapter 10: Applying Machine Learning in Robotics
Chapter 11: Machine Learning with OpenAI Gym
Chapter 12: Achieve a Goal through Reinforcement Learning
Other Books You May Enjoy
Leave a review - let other readers know what you think
← Prev
Back
Next →
← Prev
Back
Next →