Build Autonomous Mobile Robot from Scratch using ROS: Simulation and Hardware

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Start from scratch and build a variety of features for autonomous mobile robots both in simulation and hardware. This book will show you how to simulate an autonomous mobile robot using ROS and then develop its hardware implementation.

You'll start by gaining an understanding of the basic theoretical concepts underlying the development of autonomous robots, including history, mathematics, electronics, mechanical aspects, 3D modelling, 3D printing, Linux, and programming. In subsequent chapters, you will learn how to describe kinematics, simulate and visualize the robot, how to interface Arduino with ROS, tele-operate the robot, perform mapping, autonomous navigation, add additional sensors, sensor fusion, laser scan matching, web interface, and more. Not only will you learn theoretical aspects, you’ll also review the hardware realization of mobile robots.

Projects start with a very basic two-wheeled mobile robot and progress to complex features such as mapping, navigation, sensor fusion, autodocking, and web interface. Upon completing this book, you’ll have incorporated important robot algorithms including SLAM, Path Finding, Localization, and Kalman Filters – and you will be ready to start designing and building your own autonomous robots.

What You Will Learn

  • Design and build your customized physical robot with autonomous navigation capability
  • Create a map of your house using the robot’s lidar scanner
  • Command the robot to go to any accessible location on the map
  • Interact with the robot using a mobile app, joystick, keyboard, push-button, or remote computer
  • Monitor robot updates via LCD, a mobile app, sound, and status LEDs
  • Automate delivery of small payloads and return to home base
  • Utilize autodocking to home base for battery charging
  • Leverage sensor fusion to improve accuracy
  • Interface with the robot via the Web to monitor and control it remotely

Who This Book Is For

Complete beginners who want to build customized robots from scratch. No experience is expected, although basic programming knowledge could be handy.

Author(s): Rajesh Subramanian
Series: Maker Innovations Series
Edition: 1
Publisher: Apress
Year: 2023

Language: English
Commentary: Publisher PDF | Published: 29 November 2023
Pages: xxii, 563
City: Berkeley, CA
Tags: Robotics; ROS; Robot Operating System; Autonomous Robot; Simulation; Hardware; Navigation; Build Robot; ROS Robot; Autonomous Navigation; ROS Basics; Navigation Stack; ROS Navigation; Robot Navigation

Table of Contents
About the Author
About the Technical Reviewer
Introduction
Chapter 1: Introduction to Robotics: Part I
Outline
The History of Robotics
Definition of a Robot
Generations of Robots
First Generation
Second Generation
Third Generation
Fourth Generation and Above
Basic Mathematics for Robotics
Coordinate Frames
Transformations
2D Translation
2D Rotation
2D Translation and Rotation
Kinematics of Mobile Robots
Forward Differential Kinematics
Inverse Differential Kinematics
Basic Electronics for Robotics
Single-Board Computer (SBC)
Single-Board Microcontroller (SBM)
Motor Controller
Motor
AC Motors
Brushed DC Motors
Geared DC Motors
Servo Motors (Geared DC Motors with Encoders)
Brushless DC Motors (BLDC)
Stepper Motors
Linear Actuators
Encoder
Lidar
Battery
Proximity Sensor
IMU
Drive Systems for Mobile Robots
Differential Drive
Skid Steer
Tricycle
Ackermann
Omni-Directional
Mecanum
Ball-bot
Summary
Chapter 2: Introduction to Robotics: Part II
Outline
Basic 3D Modeling and 3D Printing
3D Modeling
3D Printing
Basic Linux
Basic Linux Commands
Basic Programming
Variables
Data Types
Operators
Branches
If…else
Else-if Ladder
Switch
Loops
For
While
Do-while
Functions
Lists
Dictionaries
Files
Classes
Multi-threading
Basics of Autonomous Robot Navigation
Map-Based Navigation
Mapping
Navigation Algorithms
Summary
Chapter 3: Setting Up a Workstation for Simulation
Outline
Workstation Setup
Ubuntu MATE (Focal Fossa) Installation
Prerequisites
Installation Steps
ROS Noetic Installation
Visual Studio Code Installation
VS Code Extensions
ROS Extension
Python Extension
Pylint Extension
CMake Extension
C/C++ Extension
Other Useful Software
Summary
Chapter 4: The ROS Framework
Outline
What Is ROS?
Why Use ROS?
Applications of ROS
The ROS Architecture
The Filesystem
The Computation Graph
The ROS Community
Creating a Workspace and Building It
Publishers/Subscribers
Services
Actions
Implementing the Publisher/Subscriber Using Python
Publisher Code
Code Description
Subscriber Code
Code Description
Implementing the Service Using Python
Service Server
Service Client
Service Server Code
Code Description
Service Client Code
Code Description
Implementing Actions Using Python
Action Server Code
Code Description
Action Client Code
Code Description
Creating Custom Messages, Custom Service Definitions, and Custom Actions
Create a Custom Message Definition
Procedure
Publishing the Custom Message
Subscribing to the Custom Message
Create a Custom Service Definition
Procedure
Writing a Custom Service Server
Writing a Custom Service Client
Create a Custom Action Definition
Procedure
Creating a Custom Action Server
Creating a Custom Action Client
Basic ROS, Catkin, and Git Commands
ROS Debugging Tools
Visual Studio Code
Catkin_make/Catkin build
RViz
Rqt_graph
Rosbag
Rqt_reconfigure
Tf View Frames
Rqt_console
Rqt_logger_level
Rqt_launchtree
Rqt
Rosnode/rostopic/rosservice list
Rosnode/rostopic/rosservice info
Rqt_top
Roswtf
Coordinate Transformation in ROS
Example
Right-Hand Rule for Coordinate Transformation
ROS Navigation Stack
Move Base
Sensor Nodes
Sensor Transforms
Odometry
Base Controller
Map Server
AMCL
Summary
Chapter 5: Robot Simulation and Visualization
Outline
Simulation and Visualization
Gazebo
RViz
Turtlebot3: Mobile Robot
Setting Turtlebot3 Up
Simulation
Teleoperation
Mapping
Navigation
OpenMANIPULATOR-X: Robot Arm
Setting Up OpenMANIPULATOR-X
Simulation
Controlling the Arm
Turtlebot3 with OpenMANIPULATOR-X: Mobile Manipulator
Setting Up
Simulation
Visualization and Motion Planning
Teleoperation
Mapping
Navigation
Summary
Chapter 6: Arduino and ROS
Outline
Arduino Basics
Arduino Board Models
Arduino Uno (Rev3)
Arduino Mega (2560 Rev3)
Arduino Due
Arduino Nano
Arduino Programming Basics
Arduino Examples
LED Blink
Buzzer
Switch
LCD Display
Interfacing Arduino with ROS
Installation
Rosserial Installation
Arduino IDE Installation and Configuration
Port Configuration
Defining Rules
Arduino and ROS Integration Examples
LED Blink Using ROS Publisher-Subscriber
LED Trigger Using the ROS Service
Buzzer Control Using the ROS Publisher-Subscriber
Switch Control Using the ROS Publisher-Subscriber
LCD Control Using the ROS Publisher-Subscriber
Summary
Chapter 7: Simulating Bumblebot: A Simple Two-Wheeled Robot
Outline
Preliminary Setup
Building the Robot Model (URDF)
Links
Joints
URDF
Designing Robot Parts Using 3D Modeling Software
Using the 3D Models in URDF
Robot Visualization
Robot Simulation
Teleoperation
Teleoperation Using the Keyboard
Teleoperation Using a Joystick
Teleoperation Using an Android Device
Mapping
Navigation
Tuning Navigation
Summary
Chapter 8: Building Bumblebot in Hardware
Outline
The Preliminary Robot Setup Process
Udev Rules
Defining Rules
Configuring Arduino to Control Peripherals
3D Printing the Robot Parts
Electronics
Assembling and Wiring
Wiring
Assembling the Robot
Motor Gear Ratio Calculation
Custom Motor Driver and ROS Interface
Differential Driver and Odometry
twist_to_motors.py
diff_tf.py
Teleoperation
Teleoperation Using Keyboard
Odometry Correction
Rotation Test
Translation Test
Map Building
Autonomous Navigation
Tuning the Navigation
Robot Upstart
Autonomous Delivery Application
Summary
Chapter 9: Additional Sensors and Sensor Fusion
Outline
Odometry Sensors
Lidar Based Odometry
Installation
Configuration
Simulation Using Bumblebot
IMU-Based Odometry
Adding IMU to the Robot
Adding Links and Joints for the IMU in the URDF
Adding a Gazebo Plugin for IMU in the URDF
Running the Simulation
Sensor Fusion
Installation
Configuration
Simulation
Summary
Chapter 10: Web Interface and Autodocking
Outline
Web Interface
Web Interface in ROS
Installing ROSBridge
Building a Simple Web Page
Launch File
Simulation with the Web Interface
Autodocking
Autodocking Using ROS
Installation
Configuration
Configuring URDF
Configuring Autodocking Parameters
Configuring the Launch File
Configuring the Web Interface
Simulation
Summary
Index