Mobile Robotics
1
Locomotion
1.1 Introduction
1.1.1 Key Issues for Locomotion
1.2 Legged Mobile Robots
1.2.1 Examples of Legged Robot Locomotion
1.3 Wheeled Mobile Robots
1.3.1 Design
1.3.2 Stability
1.3.3 Manoeuvrability
1.3.4 Controllability
1.3.5 Case Studies for Wheeled Motion
1.3.6 Walking Wheels
2 Perception
2.1 Introduction
2.1.1 Sensors for Mobile Robotics
2.1.2 Sensor Classification
2.1.3 Characterising Sensor Performance
2.1.4 Wheel and Motor Sensors
2.2 Active Ranging
2.2.1 The Ultrasonic Sensor
2.2.2 Motion and Speed Sensors
2.3 Vision Based Sensors
2.3.1 CMOS Technology
2.3.2 Visual Ranging Sensors
2.3.3 Depth from Focus
2.4 Feature Extraction
2.4.1 Defining Feature
2.4.2 Using Range Data
3 Mobile Robot Localisation
3.1 Introduction
3.2 The problems of Noise and Aliasing
3.2.1 Sensor Noise
3.2.2 Sensor Aliasing
3.2.3 Effector Noise
3.3 Localisation v. Hard-Coded Navigation
3.4 Representing Belief
3.4.1 Single Hypothesis Belief
3.4.2 Multiple Hypothesis Belief
3.5 Representing Maps
3.5.1 Continuous Representation
3.5.2 Decomposition Methods
3.5.3 Current Challenges
3.6 Probabilistic Map-Based Localisation
3.6.1 Introduction
3.6.2 Markov Localisation
3.6.3 Kalman Filter Localisation
3.6.4 An Implementation of Kalman Filter
3.7 Other Examples of Localisation Methods
3.7.1 Landmark-based Navigation
3.7.2 Globally Unique Localisation
3.7.3 Positioning Beacon systems
3.7.4 Route-Based Localisation
3.8 Building Maps
3.8.1 Stochastic Map Technique
3.8.2 Other Mapping Techniques
4 Welcome to Linux
4.1 Learning the Linux Command Line
4.1.1 A Short History on Computer Interfaces
4.1.2 Linux is a Nutshell
4.1.3 Linux Distributions
4.2 Installation
4.3 Docker
4.3.1 Dockerfile
4.3.2 Running the Container
5 Command Line Fundamentals
5.1 Introduction
5.2 The Structure of Commands
5.2.1 Some Rules Regarding the Syntax
5.3 Helpful Keyboard Shortcuts for the Terminal
5.4 When you need help with Commands
5.5 Additional Information
5.5.1 Use Tab completion on the Shell
5.5.2 The info command
5.5.3 The whatis command
6 Working with Files and Folders
6.1 Introduction
6.2 A Detailed Look in ls Command
6.3 Creating and Removing Folders
6.4 Move, Copy and Delete Files and Folders
6.5 Role to Users and sudo
6.6 File Permissions
6.7 Hard and Symbolic Links
6.7.1 Symbolic Links
6.8 The Linux File System
6.9 Common Command-Line Tools and Tasks
6.9.1 The UNIX Philosophy
6.9.2 Connecting Commands with Pipes
6.9.3 Viewing Text Files with cat, head, tail, and less
6.10 Advanced Topics
6.10.1 Find Linux Distribution and Kernel Information
6.10.2 Find System Hardware and Disk Information
7 Installation
7.1 ROS 2 Humble Hawksbill
7.1.1 Introduction
7.1.2 Setting up the Local
7.1.3 Setting Up the Source Files
7.1.4 Install ROS 2 Packages
7.1.5 Setting Up the Environment
7.2 Auto-Install Script
8 ROS Concepts
8.1 Introduction
8.2 Publisher and Subscriber Architecture
8.3 Nodes - The Building Blocks
8.4 The Discovery Process
8.5 Communication Between Nodes
8.5.1 Description
8.5.2 Messages
8.6 Topics
8.6.1 Publisher - Subscriber Architecture
8.6.2 Anonymity
8.6.3 Strongly-Typed
8.7 Services
8.7.1 Service Server
8.8 Actions
8.8.1 Action Server
8.8.2 Action Client
8.9 Parameters
8.9.1 A Detailed Look
8.9.2 Parameter Interaction
8.10 Working with Command Line
8.11 Launch File
9 Command Line Tools
9.1 Setting the Environment
9.2 Turtles and Graphs
9.3 A Deeper Look into Nodes
9.4 Working with Topics
9.5 Working with Services
9.6 Working with Parameters
9.7 A Practical Look into Actions
9.8 Launching Nodes
10 Client Libraries
10.1 Getting Started with Colcon
10.2 Creating a Workspace
10.3 Creating a Package
10.4 Writing a Simple Publisher & Subscriber
10.4.1 Writing the Publisher Node
10.4.2 Writing the Subscriber Node
10.4.3 Building and Running
10.5 Writing a Simple Service and Client
10.5.1 Writing the Service Node
10.5.2 Writing the Client Node
10.6 Creating Custom msg and srv Files
10.6.1 Creating Custom Definitions
10.6.2 Testing the Newly Built Interfaces
10.7 Using Parameters in a Class
10.8 Managing Dependencies
10.8.1 Explaining Rosdep
10.8.2 Explaining Pacakge Manifesto
10.9 Creating an Action
10.10 Writing an Action Server and Client
10.11 Writing a Launch File
11 Transform Library
11.1 A Gentle Introduction
11.2 Writing a Static Broadcaster
11.3 Writing a Listener
11.4 Adding a Frame
11.5 Writing a Broadcaster
Bibliography
1.1 Introduction
1.1.1 Key Issues for Locomotion
1.2 Legged Mobile Robots
1.2.1 Examples of Legged Robot Locomotion
1.3 Wheeled Mobile Robots
1.3.1 Design
1.3.2 Stability
1.3.3 Manoeuvrability
1.3.4 Controllability
1.3.5 Case Studies for Wheeled Motion
1.3.6 Walking Wheels
2 Perception
2.1 Introduction
2.1.1 Sensors for Mobile Robotics
2.1.2 Sensor Classification
2.1.3 Characterising Sensor Performance
2.1.4 Wheel and Motor Sensors
2.2 Active Ranging
2.2.1 The Ultrasonic Sensor
2.2.2 Motion and Speed Sensors
2.3 Vision Based Sensors
2.3.1 CMOS Technology
2.3.2 Visual Ranging Sensors
2.3.3 Depth from Focus
2.4 Feature Extraction
2.4.1 Defining Feature
2.4.2 Using Range Data
3 Mobile Robot Localisation
3.1 Introduction
3.2 The problems of Noise and Aliasing
3.2.1 Sensor Noise
3.2.2 Sensor Aliasing
3.2.3 Effector Noise
3.3 Localisation v. Hard-Coded Navigation
3.4 Representing Belief
3.4.1 Single Hypothesis Belief
3.4.2 Multiple Hypothesis Belief
3.5 Representing Maps
3.5.1 Continuous Representation
3.5.2 Decomposition Methods
3.5.3 Current Challenges
3.6 Probabilistic Map-Based Localisation
3.6.1 Introduction
3.6.2 Markov Localisation
3.6.3 Kalman Filter Localisation
3.6.4 An Implementation of Kalman Filter
3.7 Other Examples of Localisation Methods
3.7.1 Landmark-based Navigation
3.7.2 Globally Unique Localisation
3.7.3 Positioning Beacon systems
3.7.4 Route-Based Localisation
3.8 Building Maps
3.8.1 Stochastic Map Technique
3.8.2 Other Mapping Techniques
4 Welcome to Linux
4.1 Learning the Linux Command Line
4.1.1 A Short History on Computer Interfaces
4.1.2 Linux is a Nutshell
4.1.3 Linux Distributions
4.2 Installation
4.3 Docker
4.3.1 Dockerfile
4.3.2 Running the Container
5 Command Line Fundamentals
5.1 Introduction
5.2 The Structure of Commands
5.2.1 Some Rules Regarding the Syntax
5.3 Helpful Keyboard Shortcuts for the Terminal
5.4 When you need help with Commands
5.5 Additional Information
5.5.1 Use Tab completion on the Shell
5.5.2 The info command
5.5.3 The whatis command
6 Working with Files and Folders
6.1 Introduction
6.2 A Detailed Look in ls Command
6.3 Creating and Removing Folders
6.4 Move, Copy and Delete Files and Folders
6.5 Role to Users and sudo
6.6 File Permissions
6.7 Hard and Symbolic Links
6.7.1 Symbolic Links
6.8 The Linux File System
6.9 Common Command-Line Tools and Tasks
6.9.1 The UNIX Philosophy
6.9.2 Connecting Commands with Pipes
6.9.3 Viewing Text Files with cat, head, tail, and less
6.10 Advanced Topics
6.10.1 Find Linux Distribution and Kernel Information
6.10.2 Find System Hardware and Disk Information
7 Installation
7.1 ROS 2 Humble Hawksbill
7.1.1 Introduction
7.1.2 Setting up the Local
7.1.3 Setting Up the Source Files
7.1.4 Install ROS 2 Packages
7.1.5 Setting Up the Environment
7.2 Auto-Install Script
8 ROS Concepts
8.1 Introduction
8.2 Publisher and Subscriber Architecture
8.3 Nodes - The Building Blocks
8.4 The Discovery Process
8.5 Communication Between Nodes
8.5.1 Description
8.5.2 Messages
8.6 Topics
8.6.1 Publisher - Subscriber Architecture
8.6.2 Anonymity
8.6.3 Strongly-Typed
8.7 Services
8.7.1 Service Server
8.8 Actions
8.8.1 Action Server
8.8.2 Action Client
8.9 Parameters
8.9.1 A Detailed Look
8.9.2 Parameter Interaction
8.10 Working with Command Line
8.11 Launch File
9 Command Line Tools
9.1 Setting the Environment
9.2 Turtles and Graphs
9.3 A Deeper Look into Nodes
9.4 Working with Topics
9.5 Working with Services
9.6 Working with Parameters
9.7 A Practical Look into Actions
9.8 Launching Nodes
10 Client Libraries
10.1 Getting Started with Colcon
10.2 Creating a Workspace
10.3 Creating a Package
10.4 Writing a Simple Publisher & Subscriber
10.4.1 Writing the Publisher Node
10.4.2 Writing the Subscriber Node
10.4.3 Building and Running
10.5 Writing a Simple Service and Client
10.5.1 Writing the Service Node
10.5.2 Writing the Client Node
10.6 Creating Custom msg and srv Files
10.6.1 Creating Custom Definitions
10.6.2 Testing the Newly Built Interfaces
10.7 Using Parameters in a Class
10.8 Managing Dependencies
10.8.1 Explaining Rosdep
10.8.2 Explaining Pacakge Manifesto
10.9 Creating an Action
10.10 Writing an Action Server and Client
10.11 Writing a Launch File
11 Transform Library
11.1 A Gentle Introduction
11.2 Writing a Static Broadcaster
11.3 Writing a Listener
11.4 Adding a Frame
11.5 Writing a Broadcaster
Bibliography