Description
Efnisyfirlit
- Title Page
- Copyright and Credits
- Learning Robotics using Python Second Edition
- Dedication
- Packt Upsell
- Why subscribe?
- PacktPub.com
- Contributors
- About the author
- About the reviewer
- 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
- Conventions used
- Get in touch
- Reviews
- Getting Started with Robot Operating System
- Technical requirements
- Introduction to ROS
- ROS concepts
- The ROS filesystem
- The ROS Computation Graph
- The ROS community level
- Installing ROS on Ubuntu
- Introducing catkin
- Creating a ROS package
- Hello_world_publisher.py
- Hello_world_subscriber.py
- Introducing Gazebo
- Installing Gazebo
- Testing Gazebo with the ROS interface
- Summary
- Questions
- Understanding the Basics of Differential Robots
- Mathematical modeling of the robot
- Introduction to the differential drive system and robot kinematics
- Forward kinematics of a differential robot
- Explanations of the forward kinematics equation
- Inverse kinematics
- Summary
- Questions
- Further information
- Modeling the Differential Drive Robot
- Technical requirements
- Requirements of a service robot
- Robot drive mechanism
- Selection of motors and wheels
- Calculation of RPM of motors
- Calculation of motor torque
- The design summary
- The robot chassis design
- Installing LibreCAD, Blender, and MeshLab
- Installing LibreCAD
- Installing Blender
- Installing MeshLab
- Creating 2D CAD drawing of a robot using LibreCAD
- The base plate designs
- Base plate pole design
- Wheel, motor, and motor clamp design
- Caster wheel design
- Middle plate design
- Top plate design
- Working with a 3D model of the robot using Blender
- Python scripting in Blender
- Introduction to Blender Python APIs
- Python script of the robot model
- Creating a URDF model of the robot
- Creating a Chefbot description ROS package
- Summary
- Questions
- Further reading
- Simulating a Differential Drive Robot Using ROS
- Technical requirements
- Getting started with the Gazebo simulator
- The Gazebo’s graphical user interface
- The Scene
- The Left Panel
- Right Panel
- Gazebo toolbars
- Upper toolbar
- Bottom toolbar
- Working with a TurtleBot 2 simulation
- Moving the robot
- Creating a simulation of Chefbot
- Depth image to laser scan conversion
- URDF tags and plugins for Gazebo simulation
- Cliff sensor plugin
- Contact sensor plugin
- Gyroscope plugin
- Differential drive plugin
- Depth camera plugin
- Visualizing the robot sensor data
- Getting started with Simultaneous Localization and Mapping
- Implementing SLAM in the Gazebo environment
- Creating a map using SLAM
- Getting started with Adaptive Monte Carlo Localization
- Implementing AMCL in the Gazebo environment
- Autonomous navigation of Chefbot in the hotel using Gazebo
- Summary
- Questions
- Further reading
- Designing ChefBot Hardware and Circuits
- Technical requirements
- Specifications of the ChefBot’s hardware
- Block diagram of the robot
- Motor and encoder
- Selecting motors, encoders, and wheels for the robot
- Motor driver
- Selecting a motor driver/controller
- Input pins
- Output pins
- Power supply pins
- Embedded controller board
- Ultrasonic sensors
- Selecting an ultrasonic sensor
- Inertial measurement unit
- Kinect/Orbbec Astra
- Central processing unit
- Speakers/mic
- Power supply/battery
- How ChefBot’s hardware works’?
- Summary
- Questions
- Further reading
- Interfacing Actuators and Sensors to the Robot Controller
- Technical requirements
- Interfacing DC geared motor to Tiva C LaunchPad
- Differential wheeled robot
- Installing Energia IDE
- Motor interfacing code
- Interfacing quadrature encoder with Tiva C Launchpad
- Processing encoder data
- Quadrature encoder interfacing code
- Working with Dynamixel actuators
- Working with ultrasonic distance sensors
- Interfacing HC-SR04 to Tiva C LaunchPad
- Working of HC-SR04
- Interfacing Code of Tiva C Launchpad
- Interfacing Tiva C LaunchPad with Python
- Working with the IR proximity sensor
- Working with Inertial Measurement Units
- Inertial navigation
- Interfacing MPU 6050 with Tiva C LaunchPad
- Setting the MPU 6050 library in Energia
- Interfacing code of Energia
- Summary
- Questions
- Further reading
- Interfacing Vision Sensors with ROS
- Technical requirements
- List of robotic vision sensors and image libraries
- Pixy2/CMUcam5
- Logitech C920 webcam
- Kinect 360
- Intel RealSense D400 series
- Orbbec Astra depth sensor
- Introduction to OpenCV, OpenNI, and PCL
- What is OpenCV?
- Installation of OpenCV from the source code in Ubuntu
- Reading and displaying an image using the Python-OpenCV interface
- Capturing from the web camera
- What is OpenNI?
- Installing OpenNI in Ubuntu
- What is PCL?
- Programming Kinect with Python using ROS, OpenCV, and OpenNI
- How to launch the OpenNI driver
- The ROS interface with OpenCV
- Creating a ROS package with OpenCV support
- Displaying Kinect images using Python, ROS, and cv_bridge
- Interfacing Orbbec Astra with ROS
- Installing the Astra–ROS driver
- Working with point clouds using Kinect, ROS, OpenNI, and PCL
- Opening the device and generating a point cloud
- Conversion of point cloud data to laser scan data
- Working with SLAM using ROS and Kinect
- Summary
- Questions
- Further reading
- Building ChefBot Hardware and the Integration of Software
- Technical requirements
- Building ChefBot hardware
- Configuring ChefBot PC and setting ChefBot ROS packages
- Interfacing ChefBot sensors to the Tiva-C LaunchPad
- Embedded code for ChefBot
- Writing a ROS Python driver for ChefBot
- Understanding ChefBot ROS launch files
- Working with ChefBot Python nodes and launch files
- Working with SLAM on ROS to build a map of the room
- Working with ROS localization and navigation
- Summary
- Questions
- Further reading
- Designing a GUI for a Robot Using Qt and Python
- Technical requirements
- Installing Qt on Ubuntu 16.04 LTS
- Working with Python bindings of Qt
- PyQt
- Installing PyQt in Ubuntu 16.04 LTS
- PySide
- Installing PySide on Ubuntu 16.04 LTS
- Working with PyQt and PySide
- Introducing Qt Designer
- Qt signals and slots
- Converting a UI file into Python code
- Adding a slot definition to PyQt code
- Operation of the Hello World GUI application
- Working with ChefBot’s control GUI
- Installing and working with rqt in Ubuntu 16.04 LTS
- Summary
- Questions
- Further reading
- Assessments
- Chapter 1, Getting Started with the Robot Operating System
- Chapter 2, Understanding the Basics of Differential Robots
- Chapter 3, Modeling the Differential Drive Robot
- Chapter 4, Simulating a Differential Drive Robot Using ROS
- Chapter 5, Designing ChefBot Hardware and Circuits
- Chapter 6, Interfacing Actuators and Sensors to the Robot Controller
- Chapter 7, Interfacing Vision Sensors with ROS
- Chapter 8, Building ChefBot Hardware and Integration of Software
- Chapter 9, Designing a GUI for a Robot Using Qt and Python
- Other Books You May Enjoy
- Leave a review – let other readers know what you think