Embedded Robotics Mobile Robots with Raspberry Pi and Arduino 4th Edition Thomas Bräunl 2024 Scribd Download
Embedded Robotics Mobile Robots with Raspberry Pi and Arduino 4th Edition Thomas Bräunl 2024 Scribd Download
com
https://ebookmeta.com/product/embedded-robotics-mobile-
robots-with-raspberry-pi-and-arduino-4th-edition-thomas-
braunl/
OR CLICK HERE
DOWLOAD NOW
https://ebookmeta.com/product/beginning-robotics-with-raspberry-pi-
and-arduino-using-python-and-opencv-pdfdrive-com-1st-edition-jeff-
cicolani/
ebookmeta.com
https://ebookmeta.com/product/raspberry-pi-home-automation-with-
arduino-1st-edition-andrew-k-dennis-2/
ebookmeta.com
https://ebookmeta.com/product/disfluency-and-proficiency-in-second-
language-speech-production-1st-edition-simon-williams-2/
ebookmeta.com
Multicultural Skin Treatments Revised Edition Learn How to
Effectively Treat Skin of Color by Combining Chemical Peel
and Laser Treatments Joelle Lee
https://ebookmeta.com/product/multicultural-skin-treatments-revised-
edition-learn-how-to-effectively-treat-skin-of-color-by-combining-
chemical-peel-and-laser-treatments-joelle-lee/
ebookmeta.com
https://ebookmeta.com/product/what-proust-heard-novels-and-the-
ethnography-of-talk-1st-edition-michael-lucey/
ebookmeta.com
https://ebookmeta.com/product/last-seen-in-silver-creek-silver-creek-
lawmen_second-generation-3-1st-edition-delores-fossen/
ebookmeta.com
Thomas Brä unl
Embedded Robotics
From Mobile Robots to Autonomous Vehicles with
Raspberry Pi and Arduino
4th ed. 2022
Thomas Brä unl
School of Engineering, The University of Western Australia, Perth, WA,
Australia
This work is subject to copyright. All rights are solely and exclusively
licensed by the Publisher, whether the whole or part of the material is
concerned, specifically the rights of translation, reprinting, reuse of
illustrations, recitation, broadcasting, reproduction on microfilms or in
any other physical way, and transmission or information storage and
retrieval, electronic adaptation, computer software, or by similar or
dissimilar methodology now known or hereafter developed.
The publisher, the authors and the editors are safe to assume that the
advice and information in this book are believed to be true and accurate
at the date of publication. Neither the publisher nor the authors or the
editors give a warranty, expressed or implied, with respect to the
material contained herein or for any errors or omissions that may have
been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.
This Springer imprint is published by the registered company Springer
Nature Singapore Pte Ltd.
The registered company address is: 152 Beach Road, #21-01/04
Gateway East, Singapore 189721, Singapore
Preface
This book gives a practical, in-depth introduction to embedded systems
and autonomous robots, using the popular Raspberry Pi and Arduino
microcontrollers. We demonstrate how to build a variety of mobile
robots using a combination of these controllers, together with powerful
sensors and actuators. Numerous application examples are given for
mobile robots, which can be tested either on the real robots or on our
freely available simulation system EyeSim.
This book combines teaching and research materials and can be
used for courses in embedded systems as well as in robotics and
automation. We see laboratories as an essential teaching and learning
method in this area and encourage everybody to reprogram and
rediscover the algorithms and systems presented in this book.
Although we like simulations for many applications and treat them
in quite some depth in several places in this book, we do believe that
students should also be exposed to real hardware in both areas,
embedded systems and robotics. This will deepen their understanding
of the subject area and, of course, create a lot more fun, especially when
experimenting with small mobile robots.
We started this robotics endeavor over twenty years ago, when we
first interfaced a digital image sensor to our own processor board. The
EyeBot-1 was based on a Motorola 68332 and our own operating
system RoBIOS. The controller was soon followed by a variety of
driving, walking, flying, swimming and diving robots that we called the
EyeBot family. More powerful (and more expensive) controller
architectures followed, until the availability of cheap, powerful boards
like the Raspberry Pi and the Arduino Uno let us reconsider our
approach. We redesigned our robot family around these popular
controllers, but maintained the look and feel of our easy-to-use
operating software.
Even on the simulation side, we have gone new ways. Our original
stand-alone robot simulation has now been replaced by our new
EyeSim VR package, which uses the Unity game environment with a
much more realistic physics engine. The companion book Robot
Adventures in Python and C (Springer 2020) concentrates on the
software aspect of mobile robots and extends the hardware/software
approach of this book.
For any embedded application, the processor power (and cost)
needs to match to the given problem. For low-level control of a mobile
robot with two DC motors and a few simple sensors, an 8-bit controller
such as the Arduino might be sufficient. However, if we want to do
image processing or learning, we need a more powerful controller like
the 32-bit Raspberry Pi.
The EyeBot family consists of mobile robots with all sorts of
propulsion systems. We and numerous other universities use these
robots and simulation systems for laboratory experiments in
embedded systems as part of the computer engineering, electrical
engineering and mechatronics curriculum.
Thomas Bräunl
Perth, Australia
Acknowledgements
A number of colleagues and students contributed to the chapters,
software systems and robotics projects presented in this book.
Working on the RoBIOS robot operating system were Remi Keat
(base system), Marcus Pham (high-level control), Franco Hidalgo (low-
level control) and Klaus Schmitt (driving routines).
The EyeBot controller board layout was done by Ivan Neubronner,
and the EyeSim VR simulator was implemented by Travis Povey (Unity),
Joel Frewin (robot models and applications), Michael Finn (terrain,
underwater, swarms) and Alexander Arnold (VR).
The following colleagues and former students contributed to this
book: Adrian Boeing on the evolution of walking gaits, Mohamed
Bourgou on car detection and tracking, Christoph Braunschä del on PID
control graphs, Louis Gonzalez and Michael Drtil on AUVs, James Ng on
Bug and Brushfire algorithms, David Venkitachalam on genetic
algorithms, Joshua Petitt on DC motors, Bernhard Zeisl on lane
detection, Alistair Sutherland on balancing robots, Jordan King on
traffic sign recognition and Nicholas Burleigh on deep learning for
autonomous driving.
Additional Materials
Thomas Bräunl
All system software discussed in this book, the RoBIOS operating
system, C/C++ compilers for Windows, MacOS and Linux, system tools,
image processing tools, simulation system, and a large collection of
example programs are available free from:
http://robotics.ee.uwa.edu.au/eyebot/
http://robotics.ee.uwa.edu.au/eyesim/
Software specific to the Raspberry Pi and Arduino (Nano)
controllers can be downloaded from:
http://robotics.ee.uwa.edu.au/rasp/
http://robotics.ee.uwa.edu.au/nano/
As further reading, please refer to our companion book on
programming of mobile robots: Robot Adventures in Python and C. This
book makes heavy use of the EyeSim simulator, so it can be used for
practical experiments without the need for a physical robot.
Perth, Australia
January 2022
Contents
Part I: Embedded Systems
1 Robots and Controllers
1.1 Mobile Robots
1.2 Embedded Controllers
1.3 Robot Design
1.4 Operating System
1.5 Simulation
1.6 Tasks
2 Central Processing Unit
2.1 Logic Gates
2.2 Function Units
2.3 Registers and Memory
2.4 Retro
2.5 Arithmetic Logic Unit
2.6 Control Unit
2.7 Central Processing Unit
2.8 Structured Design
2.9 Tasks
3 Arduino
3.1 Arduino Hardware
3.2 Arduino Programming
3.3 Arduino Interfacing
3.4 Arduino Communication
3.5 Beyond Arduino
3.6 Tasks
4 Raspberry Pi
4.1 Raspberry Pi Operating System and Setup
4.2 Raspberry Pi Tools and Programming
4.3 Raspberry Pi Input/Output Lines
4.4 Raspberry Pi Communication
4.5 Integration Development Environments
4.6 Tasks
5 Sensors and Interfaces
5.1 Sensor Categories
5.2 Synchronous Serial and I2C Interfaces
5.3 Binary Sensors
5.4 Shaft Encoders
5.5 A/D Converters
5.6 Position Sensitive Devices—Sonar, Infrared, Laser
5.7 Lidar Sensors
5.8 Orientation Sensors
5.9 Inertial Measurement Units
5.10 Global Navigation Satellite Systems
5.11 Digital Image Sensors
5.12 Tasks
6 Actuators
6.1 DC Motors
6.2 H-Bridge
6.3 Pulse Width Modulation
6.4 Stepper Motors
6.5 Servos
6.6 Tasks
7 Control
7.1 On-Off Control
7.2 PID Control
7.3 Derivative Controller
7.4 Velocity Control and Position Control
7.5 Multiple Motors—Driving Straight
7.6 V-Omega Interface
7.7 Tasks
8 Multitasking
8.1 Preemptive Multithreading
8.2 Synchronization
8.3 Scheduling
8.4 Interrupts and Timer-Activated Tasks
8.5 Tasks
9 Communication
9.1 Communication Channels
9.2 File Transfer and Remote Access
9.3 Radio Library
9.4 Robot to Robot Communication
9.5 Robot to PC Communication
9.6 Tasks
Part II: Robot Hardware
10 Driving Robots
10.1 Single Wheel Drive
10.2 Differential Drive
10.3 Tracked Robots
10.4 Synchro-Drive
10.5 Ackermann Steering
10.6 Omni-Directional Robots
10.7 Drive Kinematics
10.8 Tasks
11 Walking Robots
11.1 Balancing Robots
11.2 Six-Legged Robots
11.3 Biped Robots
11.4 Static Balance
11.5 Dynamic Balance
11.6 Tasks
12 Autonomous Boats and Planes
12.1 Autonomous Boats
12.2 Autonomous Underwater Vehicles
12.3 Unmanned Aerial Vehicles (UAVs)
12.4 Tasks
13 Robot Manipulators
13.1 Homogeneous Coordinates
13.2 Manipulator Kinematics
13.3 Manipulator Simulation
13.4 Teaching and Programming
13.5 Industrial Manipulators
13.6 Tasks
Part III: Robot Software
14 Localization and Navigation
14.1 Localization
14.2 Environment Representation
14.3 Quadtree
14.4 Visibility Graph
14.5 Voronoi Diagram and Brushfire Algorithm
14.6 Potential Field Method
14.7 Wandering Standpoint Algorithm
14.8 Bug Algorithm Family
14.9 Dijkstra’s Algorithm
14.10 A* Algorithm
14.11 Probabilistic Localization
14.12 SLAM
14.13 Tasks
15 Maze Navigation
15.1 Micro Mouse Contest
15.2 Maze Exploration Algorithms
15.3 Simulated Versus Real Maze Program
15.4 Tasks
16 Image Processing
16.1 Camera Interface
16.2 Image File Formats
16.3 Edge Detection
16.4 Motion Detection
16.5 Color Spaces
16.6 RBG-to-HSI Conversion
16.7 Color Object Detection
16.8 Image Segmentation
16.9 Image Coordinates Versus World Coordinates
16.10 Tasks
17 Automotive Systems
17.1 Autonomous Automobiles
17.2 Drive-By-Wire and Safety Systems
17.3 Computer Vision for Autonomous Driving
17.4 OpenCV and KITTI
17.5 ROS
17.6 Carla Simulator
17.7 Lane Detection
17.8 Vehicle Recognition and Tracking
17.9 Automatic Parking
17.10 Autonomous Formula-SAE
17.11 Autonomous Shuttle Bus
17.12 Tasks
Part IV: Artificial Intelligence
18 AI Concepts
18.1 Software Architecture
18.2 Behavior-Based Systems
18.3 Behavior Framework
18.4 Behavior-Based Applications
18.5 Tasks
19 Neural Networks
19.1 Neural Network Principles
19.2 Feed-Forward Networks
19.3 Backpropagation
19.4 Neural Network Examples
19.5 Neural Robot Control
19.6 Tasks
20 Genetic Algorithms
20.1 Genetic Algorithm Principles
20.2 Genetic Operators
20.3 Evolution Example
20.4 Implementing Genetic Algorithms
20.5 Genetic Robot Control
20.6 Starman
20.7 Evolving Walking Gaits
20.8 Tasks
21 Deep Learning
21.1 TensorFlow and Caffe
21.2 Carolo-Cup Competition
21.3 Traffic Sign Recognition
21.4 End-To-End Learning for Autonomous Driving
21.5 Tasks
22 Outlook
Appendix A:RoBIOS Library
Appendix B:EyeBot-IO7 Interface
Appendix C:Hardware Description Table
Appendix D:Robot Programming Projects
Another Random Document on
Scribd Without Any Related Topics
Kuopion asemalta kortteeriini.
Niin niin, nyt ollaan Kuopiossa. Ollappa nyt oikein hyvä kynästään,
kun muistot mieleen palautuvat! Mutta niitä tulee niin tulvimalla,
ettei käypäläisen kynä, hyväkään, niitä kerralla kuvaisi. Pitäisi
oleutua, kulkea läpi kaikki ennen juostut paikat. Pitäisi mennä
Pappilanpurolle nahkiaisia kourin koukkimaan — niitä lienee siellä
vielä. Olisi ehkä asemallakin istuttava 'vekslausta' katselemassa.
Kukaties, vaikka siihen vieläkin eläytyisi. Tullessa oli huoli ajurista,
mutta ehkä omia aikojaan sinne kuljettuaan pääsisi kiinni entiseen
tunnelmaan.
Niin mutta tosiaan: sittenhän olisi mentävä paljasjaloin kadulle ja
tapella nujuutettava kaupunkilaispoikain kanssa, ennenkuin
aikaisemman poikuusajan muistojen kertaaminen olisi täydellistä.
Muistan vielä Tatu Kolehmaisen leveän naaman niiltä ajoilta. Tatulta
minä taisin saada selkääni muutaman kerran. Mitenkähän kävisi nyt?
— Mutta herranen aika, eihän se sovi. Tatu on Helsingissä, eikä siksi
toiseksi tämänikäisen miehen sovi lähteä tappelua hakemaan.
Jaa jaa, niinhän sitä siihen aikaan kannettiin, mutta siitä onkin niin
äärettömän kauan.
Kukkuu, kukkuu,
Kokkonen nukkuu
kasarmin pitkällä penkillä.
Vänrikki tulloo ja nykäsöö,
Kokkonen kiäntyy ja rykäsöö.
Nyt tulee mies kotiseudulleen kuin hiljan sieltä lähtenyt, onhan tämä
jo toinen kesä peräkkäin. Viime suvena, oltuani poissa kokonaista
kuusitoista vuotta, tulin arkaillen kuin johonkin syyllinen. Mies, joka
asuu lapsuudenkotiani, tuli auton pysäyspaikalle vastaan ja otti
huostaansa matkalaukkuni. Hän oli ystävällinen ja yleensä niinkuin
olisi eilen tavattu. Mutta kun hän matkalla pyysi muuatta yhteistä
tuttavaa puistoonsa kahville, jouduin minä ymmälle. Olinko jo
todellakin niin unohtanut lapsuudenkotini? Eihän siellä minun
muistini mukaan pitänyt olla mitään puistoa.
Jaa, sitä ollaan nyt sitten taas "omassa" pitäjässä. Tästä lähdettiin
opin teille ja käydä juntattiin kansakoulua pienestä seitsenvuotisesta
vekarasta. Se kansakoulu täytti viime syksynä kolmekymmentä
vuotta. Ensimmäinen oli pitäjässä, muuatta tehtaan koulua
lukuunottamatta.