O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

ROS Robotics Projects

Book Description

Build a variety of awesome robots that can see, sense, move, and do a lot more using the powerful Robot Operating System

About This Book

  • Create and program cool robotic projects using powerful ROS libraries
  • Work through concrete examples that will help you build your own robotic systems of varying complexity levels
  • This book provides relevant and fun-filled examples so you can make your own robots that can run and work

Who This Book Is For

This book is for robotic enthusiasts and researchers who would like to build robot applications using ROS. If you are looking to explore advanced ROS features in your projects, then this book is for you. Basic knowledge of ROS, GNU/Linux, and programming concepts is assumed.

What You Will Learn

  • Create your own self-driving car using ROS
  • Build an intelligent robotic application using deep learning and ROS
  • Master 3D object recognition
  • Control a robot using virtual reality and ROS
  • Build your own AI chatter-bot using ROS
  • Get to know all about the autonomous navigation of robots using ROS
  • Understand face detection and tracking using ROS
  • Get to grips with teleoperating robots using hand gestures
  • Build ROS-based applications using Matlab and Android
  • Build interactive applications using TurtleBot

In Detail

Robot Operating System is one of the most widely used software frameworks for robotic research and for companies to model, simulate, and prototype robots. Applying your knowledge of ROS to actual robotics is much more difficult than people realize, but this title will give you what you need to create your own robotics in no time!

This book is packed with over 14 ROS robotics projects that can be prototyped without requiring a lot of hardware. The book starts with an introduction of ROS and its installation procedure. After discussing the basics, you’ll be taken through great projects, such as building a self-driving car, an autonomous mobile robot, and image recognition using deep learning and ROS. You can find ROS robotics applications for beginner, intermediate, and expert levels inside!

This book will be the perfect companion for a robotics enthusiast who really wants to do something big in the field.

Style and approach

This book is packed with fun-filled, end-to-end projects on mobile, armed, and flying robots, and describes the ROS implementation and execution of these models.

Downloading the example code for this book. You can download the example code files for all Packt books you have purchased from your account at http://www.PacktPub.com. If you purchased this book elsewhere, you can visit http://www.PacktPub.com/support and register to have the code file.

Table of Contents

  1. ROS Robotics Projects
    1. ROS Robotics Projects
    2. Credits
    3. About the Author
    4. Acknowledgements
    5. About the Reviewer
    6. www.PacktPub.com
      1. Why subscribe?
    7. Customer Feedback
    8. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Reader feedback
      6. Customer support
        1. Downloading the example code
        2. Downloading the color images of this book
        3. Errata
        4. Piracy
        5. Questions
    9. 1. Getting Started with ROS Robotics Application Development
      1. Getting started with ROS
        1. ROS distributions
        2. Supported operating systems
        3. Robots and sensors supported by ROS
        4. Why ROS
      2. Fundamentals of ROS
        1. The filesystem level
        2. The computation graph level
        3. The ROS community level
        4. Communication in ROS
      3. ROS client libraries
      4. ROS tools
        1. Rviz (ROS Visualizer)
        2. rqt_plot
        3. rqt_graph
      5. Simulators of ROS
      6. Installing ROS kinetic on Ubuntu 16.04 LTS
        1. Getting started with the installation
          1. Configuring Ubuntu repositories
          2. Setting up source.list
          3. Setting up keys
          4. Installing ROS
          5. Initializing rosdep
          6. Setting the ROS environment
          7. Getting rosinstall
      7. Setting ROS on VirtualBox
      8. Setting the ROS workspace
      9. Opportunities for ROS in industries and research
      10. Questions
      11. Summary
    10. 2. Face Detection and Tracking Using ROS, OpenCV and Dynamixel Servos
      1. Overview of the project
      2. Hardware and software prerequisites
        1. Installing dependent ROS packages
          1. Installing the usb_cam ROS package
            1. Creating a ROS workspace for dependencies
      3. Interfacing Dynamixel with ROS
        1. Installing the ROS dynamixel_motor packages
      4. Creating face tracker ROS packages
        1. The interface between ROS and OpenCV
      5. Working with the face-tracking ROS package
        1. Understanding the face tracker code
        2. Understanding CMakeLists.txt
        3. The track.yaml file
        4. The launch files
        5. Running the face tracker node
        6. The face_tracker_control package
          1. The start_dynamixel launch file
          2. The pan controller launch file
        7. The pan controller configuration file
        8. The servo parameters configuration file
        9. The face tracker controller node
        10. Creating CMakeLists.txt
        11. Testing the face tracker control package
        12. Bringing all the nodes together
        13. Fixing the bracket and setting up the circuit
        14. The final run
      6. Questions
      7. Summary
    11. 3. Building a Siri-Like Chatbot in ROS
      1. Social robots
      2. Building social robots
      3. Prerequisites
      4. Getting started with AIML
        1. AIML tags
        2. The PyAIML interpreter
        3. Installing PyAIML on Ubuntu 16.04 LTS
        4. Playing with PyAIML
        5. Loading multiple AIML files
        6. Creating an AIML bot in ROS
        7. The AIML ROS package
          1. Installing the ROS sound_play package
            1. Installing the dependencies of sound_play
            2. Installing the sound_play ROS package
            3. Creating the ros_aiml package
            4. The aiml_server node
            5. The AIML client node
            6. The aiml_tts client node
            7. The AIML speech recognition node
            8. start_chat.launch
            9. start_tts_chat.launch
            10. start_speech_chat.launch
      5. Questions
      6. Summary
    12. 4. Controlling Embedded Boards Using ROS
      1. Getting started with popular embedded boards
        1. An introduction to Arduino boards
          1. How to choose an Arduino board for your robot
          2. Getting started with STM32 and TI Launchpads
          3. The Tiva C Launchpad
        2. Introducing the Raspberry Pi
          1. How to choose a Raspberry Pi board for your robot
        3. The Odroid board
      2. Interfacing Arduino with ROS
        1. Monitoring light using Arduino and ROS
        2. Running ROS serial server on PC
        3. Interfacing STM32 boards to ROS using mbed
        4. Interfacing Tiva C Launchpad boards with ROS using Energia
      3. Running ROS on Raspberry Pi and Odroid boards
        1. Connecting Raspberry Pi and Odroid to PC
        2. Controlling GPIO pins from ROS
          1. Creating a ROS package for the blink demo
          2. Running the LED blink demo on Raspberry Pi and Odroid
      4. Questions
      5. Summary
    13. 5. Teleoperate a Robot Using Hand Gestures
      1. Teleoperating ROS Turtle using a keyboard
      2. Teleoperating using hand gestures
      3. Setting up the project
      4. Interfacing the MPU-9250 with the Arduino and ROS
        1. The Arduino-IMU interfacing code
      5. Visualizing IMU TF in Rviz
      6. Converting IMU data into twist messages
      7. Integration and final run
      8. Teleoperating using an Android phone
      9. Questions
      10. Summary
    14. 6. Object Detection and Recognition
      1. Getting started with object detection and recognition
      2. The find_object_2d package in ROS
        1. Installing find_object_2d
          1. Installing from source code
        2. Running find_object_2d nodes using webcams
        3. Running find_object_2d nodes using depth sensors
      3. Getting started with 3D object recognition
      4. Introduction to 3D object recognition packages in ROS
        1. Installing ORK packages in ROS
      5. Detecting and recognizing objects from 3D meshes
        1. Training using 3D models of an object
        2. Training from captured 3D models
      6. Recognizing objects
      7. Questions
      8. Summary
    15. 7. Deep Learning Using ROS and TensorFlow
      1. Introduction to deep learning and its applications
      2. Deep learning for robotics
      3. Deep learning libraries
      4. Getting started with TensorFlow
        1. Installing TensorFlow on Ubuntu 16.04 LTS
        2. TensorFlow concepts
          1. Graph
          2. Session
          3. Variables
          4. Fetches
          5. Feeds
        3. Writing our first code in TensorFlow
      5. Image recognition using ROS and TensorFlow
        1. Prerequisites
        2. The ROS image recognition node
          1. Running the ROS image recognition node
      6. Introducing to scikit-learn
        1. Installing scikit-learn on Ubuntu 16.04 LTS
      7. Introducing to SVM and its application in robotics
        1. Implementing an SVM-ROS application
      8. Questions
      9. Summary
    16. 8. ROS on MATLAB and Android
      1. Getting started with the ROS-MATLAB interface
      2. Setting Robotics Toolbox in MATLAB
        1. Basic ROS functions in MATLAB
          1. Initializing a ROS network
        2. Listing ROS nodes, topics, and messages
      3. Communicating from MATLAB to a ROS network
      4. Controlling a ROS robot from MATLAB
        1. Designing the MATLAB GUI application
        2. Explaining callbacks
        3. Running the application
      5. Getting started with Android and its ROS interface
        1. Installing rosjava
          1. Installing from the Ubuntu package manager
          2. Installing from source code
        2. Installing android-sdk from the Ubuntu package manager
          1. Installing android-sdk from prebuilt binaries
      6. Installing the ROS-Android interface
      7. Playing with ROS-Android applications
        1. Troubleshooting
          1. Android-ROS publisher-subscriber application
          2. The teleop application
          3. The ROS Android camera application
          4. Making the Android device the ROS master
      8. Code walkthrough
      9. Creating basic applications using the ROS-Android interface
        1. Troubleshooting tips
      10. Questions
      11. Summary
    17. 9. Building an Autonomous Mobile Robot
      1. Robot specification and design overview
      2. Designing and selecting the motors and wheels for the robot
        1. Computing motor torque
        2. Calculation of motor RPM
        3. Design summary
      3. Building 2D and 3D models of the robot body
        1. The base plate
        2. The pole and tube design
        3. The motor, wheel, and motor clamp design
        4. The caster wheel design
        5. Middle plate and top plate design
        6. The top plate
        7. 3D modeling of the robot
      4. Simulating the robot model in Gazebo
      5. Mathematical model of a differential drive robot
        1. Simulating Chefbot
          1. Building the URDF model of Chefbot
            1. Inserting 3D CAD parts into URDF as links
            2. Inserting Gazebo controllers into URDF
          2. Running the simulation
            1. Mapping and localization
      6. Designing and building actual robot hardware
        1. Motor and motor driver
        2. Motor encoders
        3. Tiva C Launchpad
        4. Ultrasonic sensor
        5. Ultrasonic sensor
        6. OpenNI depth sensor
        7. Intel NUC
        8. Interfacing sensors and motors with the Launchpad
        9. Programming the Tiva C Launchpad
      7. Interfacing robot hardware with ROS
        1. Running Chefbot ROS driver nodes
      8. Gmapping and localization in Chefbot
      9. Questions
      10. Summary
    18. 10. Creating a Self-Driving Car Using ROS
      1. Getting started with self-driving cars
        1. History of autonomous vehicles
          1. Levels of autonomy
      2. Functional block diagram of a typical self-driving car
        1. GPS, IMU, and wheel encoders
          1. Xsens MTi IMU
        2. Camera
        3. Ultrasonic sensors
        4. LIDAR and RADAR
          1. Velodyne HDL-64 LIDAR
          2. SICK LMS 5xx/1xx and Hokuyo LIDAR
          3. Continental ARS 300 radar (ARS)
          4. Delphi radar
        5. On-board computer
      3. Software block diagram of self-driving cars
      4. Simulating the Velodyne LIDAR
      5. Interfacing Velodyne sensors with ROS
      6. Simulating a laser scanner
      7. Explaining the simulation code
      8. Interfacing laser scanners with ROS
      9. Simulating stereo and mono cameras in Gazebo
      10. Interfacing cameras with ROS
      11. Simulating GPS in Gazebo
        1. Interfacing GPS with ROS
      12. Simulating IMU on Gazebo
      13. Interfacing IMUs with ROS
      14. Simulating an ultrasonic sensor in Gazebo
      15. Low-cost LIDAR sensors
        1. Sweep LIDAR
        2. RPLIDAR
      16. Simulating a self-driving car with sensors in Gazebo
        1. Installing prerequisites
        2. Visualizing robotic car sensor data
        3. Moving a self-driving car in Gazebo
        4. Running hector SLAM using a robotic car
      17. Interfacing a DBW car with ROS
        1. Installing packages
        2. Visualizing the self-driving car and sensor data
        3. Communicating with DBW from ROS
      18. Introducing the Udacity open source self-driving car project
        1. MATLAB ADAS toolbox
      19. Questions
      20. Summary
    19. 11. Teleoperating a Robot Using a VR Headset and Leap Motion
      1. Getting started with a VR headset and Leap Motion
      2. Project prerequisites
      3. Design and working of the project
      4. Installing the Leap Motion SDK on Ubuntu 14.04.5
        1. Visualizing Leap Motion controller data
        2. Playing with the Leap Motion visualizer tool
        3. Installing the ROS driver for the Leap Motion controller
          1. Testing the Leap Motion ROS driver
      5. Visualizing Leap Motion data in Rviz
      6. Creating a teleoperation node using the Leap Motion controller
      7. Building a ROS-VR Android application
      8. Working with the ROS-VR application and interfacing with Gazebo
      9. Working with TurtleBot simulation in VR
      10. Troubleshooting the ROS-VR application
      11. Integrating ROS-VR application and Leap Motion teleoperation
      12. Questions
      13. Summary
    20. 12. Controlling Your Robots over the Web
      1. Getting started with ROS web packages
        1. rosbridge_suite
        2. roslibjs, ros2djs, and ros3djs
        3. The tf2_web_republisher package
      2. Setting up ROS web packages on ROS Kinetic
        1. Installing rosbridge_suite
        2. Setting up rosbridge client libraries
      3. Installing tf2_web_republisher on ROS Kinetic
      4. Teleoperating and visualizing a robot on a web browser
        1. Working of the project
        2. Connecting to rosbridge_server
        3. Initializing the teleop
        4. Creating a 3D viewer inside a web browser
        5. Creating a TF client
        6. Creating a URDF client
        7. Creating text input
        8. Running the web teleop application
      5. Controlling robot joints from a web browser
        1. Installing joint_state_publisher_js
          1. Including the joint state publisher module
          2. Creating the joint state publisher object
          3. Creating an HTML division for sliders
        2. Running the web-based joint state publisher
          1. Prerequisites
          2. Installing prerequisites
        3. Explaining the code
        4. Running the robot surveillance application
      6. Web-based speech-controlled robot
        1. Prerequisites
        2. Enabling speech recognition in the web application
      7. Running a speech-controlled robot application
      8. Questions
      9. Summary