Throughout this book, we will build a robot and create programs for it that give the robot behaviors that make it feel intelligent and able to make decisions. We will write code to use sensors to observe the robot's surroundings, and build real-world examples of advanced topics such as vision, speech recognition, and talking.
You will see how the simple build techniques, when combined with a little bit of code, will result in a machine that feels like some kind of pet. You will also see how to debug it when things go wrong, which they will, and how to give the robot ways to indicate problems back to you, along with selecting the behavior you would like to demonstrate. We will connect a joypad to it, give it voice control, and finally show you how to plan a further robot build.
Before we start building a robot, it's worth spending a little time on an introduction to what robotics really is, or what a robot is. We can explore some of the types of robots, along with the basic principles that distinguish a robot from another type of machine. We will think a little about where the line between robot and non-robot machines are, then perhaps muddy that line a little bit with the somewhat fuzzy truth. We will then look at the types of robots that people start building in the hobbyist and amateur robotics scene.
In this chapter, we will be covering the following topics:
- What does robot mean? Where the word comes from, and what exactly defines a robot.
- Top robots, where we'll take a look at some amazing real robots.
- Robots in industry, to explore robots seen in factories and warehouses.
- Robots in the home, to show how robots are already with us in our lives.
- We'll look at competitive, educational, and hobby robots where people are using robots for fun, learning, and showing off.
A robot is a machine that is able to make autonomous decisions based on input from sensors. A software agent is a program that is designed to automatically process input and produce output. Perhaps a robot can be best described as an autonomous software agent with sensors and moving outputs. Or, it could be described as an electromechanical platform with software running on it. Either way, a robot requires electronics, mechanical parts, and code.
The word robot conjures up images of fantastic sci-fi creations, devices with legendary strength and intelligence. These often follow the human body plan, making them an android, the term for a human-like robot. They are often given a personality and behave like a person who is in some simple way naive. Refer to the following diagram:
The word robot comes from sci-fi. The word is derived from the Czech for slave, and was first used in the 1921 Karel Capek play, Rossums Universal Robots. The science fiction author Isaac Asimov coined the word robotics as he explored intelligent robot behavior.
Most real robots in our homes and industries have a few cutting edge and eye catching examples standing out. Most do not stand on two legs, or indeed any legs at all. Some are on wheels, and some are not mobile but still have many moving parts and sensors.
Robots like washing machines, autonomous vacuum cleaners, fully self regulating boilers, and air sampling fans have infiltrated our homes and are part of everyday life. They aren't threatening, and have became just another machine around us. The 3D printer, robot arm, and learning toys are a bit more exciting though. Take a look at the following diagram:
At their core, robots can all be simplified down to what is represented in the preceding diagram with outputs, such as a motor, inputs, and a controller for processing or running code. So, the basis of a robot, represented as a list, would look something like this:
- A robot has inputs, and sensors to measure, and sample a property of its environment
- A robot has outputs, motors, lights, sounds, valves, sounds, heaters, or other types of output to alter it's environment
- A robot will use the data from its inputs to make autonomous decisions about how it controls its outputs
Now you have an overview of robots in general, I'll introduce some specific examples that represent the most impressive robots around, and what they are capable of. These robots are technical demonstrations, and with the exception of the Mars robots, have favored their closeness to human or animal adaptability and form over their practical and repeated use.
Take a look at the following picture and understand the similarities between robots and humans/animals:
A selection of human and animal-like robots. Cog: an Mit Project, Honda ASIMO By Morio, Nao From Softbank Robotic, Boston Dynamics Atlas, Boston Dynamics BigDog (https://commons.wikimedia.org/)
What these robots have in common is that they try to emulate humans and animals in the following ways:
- The first robot on the left is Cog, from the Massachusetts Institute of Technology. Cog attempted to be human-like in its movements and sensors.
- The second robot is the Honda ASIMO, which walks and talks a little like a human. ASIMO's two cameras perform object avoidance, and gestures and face recognition, and have a laser distance sensor to sense the floor. It can follow marks on the floor with infrared sensors. ASIMO is able to accept voice commands in English and Japanese.
- The third robot in this selection is the Nao robot from Softbank Robotics. This rather cute, 58 cm tall robot was designed as a learning and play robot for users to program. It has sensors to detect its motion, including if it is falling, and ultrasonic distance sensors to avoid bumps. Nao uses speakers and a microphone for voice processing. Nao includes multiple cameras to perform similar feats to the ASIMO.
- The fourth robot is Atlas from Boston Dynamics. This robot is speedy on two legs and is capable of natural looking movement. It has a laser radar (LIDAR) array, which it uses to sense what is around it to plan and avoid collisions.
- The right-most robot is the Boston Dynamics BigDog, a four legged robot, or quadruped, which is able to run and is one of the most stable four legged robots, capable of being pushed, shoved, and walking in icy conditions while remaining stable.
We will incorporate some features like these in the robot we will build, using distance sensors to avoid obstacles, a camera for visual processing, line sensors to follow marks on the floor, and voice processing to follow and respond to spoken commands. We will use ultrasonic distance sensors like Nao, and experiment with distance sensors a little like Asimo. We will also look at pan and tilt mechanisms for camera a little like the head used in Cog.
The Mars rover robots are designed to function on a different planet, where there is no chance of human intervention if something goes wrong. They are robust by design. New code can only be sent to a Mars rover via a remote connection as it is not practical to send up a person with a screen and keyboard. The Mars rover is headless by design. Refer to the following photo:
Mars rovers depend on wheels instead of legs, since this is far simpler to make a robot stable, and there is far less that can go wrong. Each wheel on the Mars rovers has it's own motor. They are arranged to provide maximum grip and stability to tackle the rocky terrain and reduced gravity on Mars.
The Curiosity rover was deposited on Mars with its sensitive camera folded up. After landing, the camera was unfolded and positioned with servo motors. The camera package can be positioned using a pan and tilt mechanism so it can take in as much of the Mars landscape as it can, sending back footage and pictures to NASA for analysis.
Like the Mars robot, the robot we will build in this book will use motor-driven wheels. Our robot will also be designed to run without a keyboard and mouse, being headless by design. As we expand the capabilities of our robot in this book, we will also use servo motors to drive a pan and tilt mechanism.
Many robots have already infiltrated our homes. They are overlooked as robots because on first glance they appear commonplace and mundane. However, they are more sophisticated than they seem.
Let's start with the washing machine. This is used every day in some homes, with a constant stream of clothes to wash, spin, and dry. But how is this a robot? Let us understand this by referring to the following diagram:
The preceding diagram represents a washing machine as a block diagram. There is a central controller connected to the display, and with controls to select a program. The lines going out of the controller are outputs, and the lines going into the controller are data coming in from sensors. The dashed lines from outputs to the sensors show a closed loop of output actions in the real world causing sensor changes; this is feedback, an essential concept in robotics.
The washing machine uses the display and buttons to let the user choose the settings and see the status. After the start button is pressed, the machine will check the door sensor and sensibly refuse to start if the door is open. Once the door is closed and the start button is pressed, it will output to lock the door. After this, it uses heaters, valves, and pumps to fill the drum with heated water, using sensor feedback to regulate the water level and temperature.
Each process could be represented by a set of statements like these, which simultaneously fill the drum and keep it heated:
start water pump
turn on water heater
while water is not filled and water is not at the right temperature:
if water filled then
stop water pump
if water is at the right temperature then
turn off heater
turn on water heater
Note the else there, which is in case the water temperature drops below the right temperature a bit. The washing machine then starts the drum spinning sequence: slow turns, fast spins, sensing the speed to meet the criteria. It will drain the drum, spin the clothes dry, release the door lock, and stop.
This washing machine is in every respect a robot. A washing machine has sensors and outputs to affect its environment. Processing allows it to follow a program and use sensors with feedback to reach and maintain conditions. A washing machine repair person may be more of a roboticist than I.
A gas central heating boiler has sensors, pumps, and valves and uses feedback mechanisms to maintain the temperature of the house, water flow through heating, gas flow, and ensure that the pilot light stays lit.
Smart fans use sensors to detect room temperature, humidity, and air quality, then output through the fan speed and heating elements.
A computer printer is also a robot, with moving part outputs and sensors to detect all those pesky paper jams.
Perhaps the most obvious home robot is the robot vacuum cleaner. Refer to the following diagram:
This wheeled mobile robot is like the one we will build here, but prettier. They are packed with sensors to detect walls, bag levels, and barrier zones, and avoid collisions. They most represent the type of robot we are looking at.
As we build our robot, we will explore how to use its sensors to detect things and react to them, forming the same feedback loops we saw in the washing machine.
Another place robots are commonly seen is in industry. The first useful robots have been used in factories, and have been there for a long time.
Robot arms range from very tiny and delicate robots for turning eggs, to colossal monsters moving shipping containers. Robot arms tend to use stepper and servo motors. We will look at servo motors in the pan and tilt mechanism used in this book. An impressive current industrial arm robot is Baxter from Rethink Robotics:
Many robot arms are unsafe to work next to and could result in accidents. Not so with Baxter; it can sense a human and work around or pause for safety. In the preceding image, these sensors can be seen around the "head." The arm sensors and soft joints also allow Baxter to sense and react to collisions.
Baxter also has a training and repeat mechanism for workers to adapt it to work, using sensors in the joints to detect their position when being trained or playing back motions. Our robot will use encoder sensors so we can precisely program wheel movements.
Another common type of robot used in industry is those that move items around a factory floor or warehouse.
There are giant robotic crane systems capable of shifting pallets in storage complexes. They receive instructions on where goods need to be moved from and to within shelving systems:
Smaller item-moving robot vehicles often employ line sensing technology, by following lines on the floor, wire underneath the floor via magnetic sensing, or marker beacons like ASIMO does. Our robot will follow lines like these. These line-following carts frequently use wheeled arrangements because these are simple to maintain and can form stable platforms.
The most fun robots can be those built by amateur robot builders. This is an extremely innovative space.
Robotics always had a home in education, with academic builders using them for learning and experimentation platforms. Many commercial ventures have started in this setting. University robots tend to be group efforts, with access to increasingly hi-tech academic equipment to create them, as shown in the following picture:
Kismet was created at MIT in the late 90s. There are a number of hobbyist robots that are derived from it. It was groundbreaking at the time, using servo motors to drive face movements intended to mimic human expressions. This has been followed in the community with OhBot, an inexpensive hobbyist kit using servo motors, which can be linked with a Raspberry Pi, using voice recognition and facial camera processing to make a convincing display.
Hobby robotics is strongly linked with open source and blogging, sharing designs, and code, leading to further ideas. Hobbyist robots can be created from kits available on the internet, with modifications and additions. The kits cover a wide range of complexity from simple three-wheeled bases to drone kits and hexapods. They come with or without the electronics included. An investigation of kits will be covered in Chapter 6, Building Robot Basics - Wheels, Power, and Wiring. I used a hexapod kit to build SpiderBot to explore walking motion. Refer to the following photo:
Skittlebot was my Pi Wars 2018 entry, built using toy hacking, repurposing a remote control excavator toy into a robot platform. Pi Wars is an autonomous robotics challenge for Raspberry Pi-based robots, which has both manual and autonomous challenges. There were entries with decorative cases and interesting engineering principles. Skittlebot uses three distance sensors to avoid walls, and we will investigate this kind of sensor in Chapter 11, Programming Distance Sensors with Python. Skittlebot uses a camera to seek out colored objects, as we will see in Chapter 13, Robot Vision - Using A Pi Camera And OpenCV. Here is a photo of Skittlebot:
Some hobbyist robots are built from scratch, using 3D printing, laser cutting, vacuum forming, woodwork, CNC, and other techniques to construct the chassis and parts. Refer to the following set of photos:
I built the robot from scratch, for the London robotics group the Aurorans, in 2009. The robot was known as eeeBot in 2009, since it was intended to be driven by an Eee PC laptop. The Aurorans were a community who met to discuss robotics. The robot was later given a Raspberry Pi, and a robot arm kit seemed to fit it, earning it the name Armbot. In the current market, there are many chassis kits and a beginner will not need to measure and cut materials in this way to make a functioning robot. This was not built to compete, but to inspire other robot builders and kids to code. Towards the end of the book, we will cover some of the communities where robots are being built and shared, along with starting points on using construction techniques to build them from scratch.
The television series Robot Wars is a well known competitive robot event with impressive construction and engineering skills. There is no autonomous behavior in Robot Wars though; these are all manually driven, like remote control cars. Washing machines, although less exciting, are smarter, so they could be more strictly considered robots.
In this chapter, we have looked at what the word robot means, and the facts and fiction with robots. We have defined what a real robot is, and gained some idea of what a machine needs to do to be considered a robot.
We've investigated the robots seen in the home, and in industry, and those that are designed to amaze or have traveled to other planets. We've also looked at hobbyist and education robots, and how some of these are just built for fun. You've seen some block diagrams of real-world devices that may not have been considered robots, and have seen how our homes may already have a number of robots present.
Now we know what robots are, let's move on to the next chapter, in which we'll look at how to plan a robot so we can build it.
Based on the topics covered in this chapter, answer the following questions:
- What element of a robot is used to monitor its environment?
- What type of robot element do motors represent?
- What are the three elements of a robotic system?
- Where have robots been operating the longest in regular usage?
- Why are wheels used more often than legs?
- What is the principle connecting output, input, and control in a loop?
- Why might a household washing machine be considered more robotic than a UK Robot Wars entry?
Refer to the following links:
- Honda Asimo: http://asimo.honda.com/
- Baxter at Rethink Robotics: https://www.rethinkrobotics.com/baxter/
- Kistmet at MIT: http://www.ai.mit.edu/projects/humanoid-robotics-group/kismet/kismet.html
- The OhBot: http://www.ohbot.co.uk/
- The Mars Science Laboratory at NASA: https://mars.nasa.gov/msl/