Description: https://images.manning.com/360/480/resize/book/4/9d28fdb-9d68-448e-97a9-efbed9461940/Bihlmaier-MEAP-HI.png

An excerpt from Robotics for Software Engineers by Andreas Bihlmaier

This article talks about various common types of robots.

Read this if you are a software developer who is interested in learning more about robotics.


Take 25% off Robotics for Software Engineers by entering fccbihlmaier into the discount code box at checkout at manning.com.


When getting into a new field, it is often useful to sort the large variety of things into a few broad categories. This is also true for robotics. The following three fundamental types of robots seem like clear and distinct categories to subdivide all robots at first. However, you will encounter edge cases and gray areas in your robotics journey. Nevertheless, distinguishing these types is very useful both now and later on.

Manipulators

The first fundamental type of robots are stationary manipulators. This category of robot includes the “classic” industrial robot arms that have shaped the commercial robotics industry since its beginning. Until recently they also made up the majority of robots in the world. The two important properties required for a robot to fall into the manipulator category are:

  • The robot’s purpose is to manipulate objects, i.e. to purposefully move objects through space.
  • The robot itself is stationary.

Figure 1 shows examples of different manipulators.


Figure 1. Examples of different robot manipulators.


Now that you know what manipulators are and what they look like, the important question is what we can do with them. As exemplified in figure 1, manipulators come in various shapes and sizes. Also the ways in which they can move varies widely, depending on their construction. Nevertheless, the basic operation for each manipulator is to move its so-called end effector to different positions. The end effector is either the last part of a robot manipulator, with the base of the robot being the first part, or the tool attached there. See figure 2 for an illustration.


Figure 2. The different parts making up a manipulator.


Some additional robot terminology was introduced in this figure, let’s look at each term in a bit more detail.

  • Joint: The moveable parts in the robot hardware. The most common joint types are those that can rotate, like a hinge, and those that can extend linearly, like a drawer slide or telescopic pole. Joints contain the actuators that make the robot move.
  • Link: A rigid mechanical part connecting the joints. The links give the manipulator its shape and make up the bulk of what is visible when looking at a robot.
  • Robot Base: The first link of the robot. The base attaches the robot to the environment.
  • End Effector (EE): The last link of the robot, i.e. the link farthest away when counting from the robot base.
  • Tool Flange: A standardized mounting plate that allows to fasten tools to the last link of the robot. The tool flange is often simply referred to as flange.
  • Tool: A device attached to the tool flange that enables the robot to perform the intended process. Another common term here is End Of Arm Tooling (EOAT). The most common robot tools are grippers. However, the variety of robot tools is as big as the applications performed by manipulators. Other examples of tools are welding equipment, tool changers, force-torque sensors, paint sprayers, material removal equipment and 3D printing nozzles.

The term end effector (EE) is unfortunately used ambiguously depending on whether we are talking about the bare manipulator or about one with tools attached. If no tool is attached, the EE is identical to the robot’s last link that provides the tool flange. If a tool is attached, the tool or rather a specific location on the tool is usually considered the EE. Just remember to check what has been defined as the EE when working with robot systems.

Now that we have learned some important robot terms, let’s come back to the fact that the essential operation with a manipulator is moving the EE to different positions. Thus, the abstract API for manipulators is:

 
 robot.move(pose)
  

Mobile Robots

Mobile robots move themselves through the environment. As discussed in the previous section, this contrasts with robot manipulators that move objects around, while the manipulator itself is stationary as it fixed to the environment.


Figure 3. Examples of different mobile robots.


In some cases having the robot traverse the environment is already the robot’s objective. In other cases the objective is to move something other than the robot along with it, i.e. the robot carries a payload. Let’s start with this second case.

Moving objects from A to B using some kind of carrier device is a very common task. Once you start thinking about all the tasks that fall into this category, so many examples come to mind that it is hard to select a few instances from this abundance of cases. Nearly all types of traffic at land, sea, air and space is about transporting discrete objects from A to B, including transporting humans. As it is still challenging to operate mobile robots fully autonomously in outdoor environments, the majority of object transporting mobile robots work in indoor environments today. Most of these indoor transportation robots can be found in logistics and manufacturing. The enormous gap between all transportation tasks and the tiny segment that mobile robots are actually deployed in shows the untapped potential of this rapidly growing industry.

Let’s move on to the other type of mobile robot mentioned, the ones not intended to carry payloads, but to simply move themselves around. The value of having a robot transport objects is quite obvious. After all, who of us wouldn’t sometimes enjoy getting coffee delivered to our desks instead of having to walk to the coffee maker ourselves? The purpose of a robot just moving around without transporting any payload is less obvious outside entertainment purposes. We need to look at all the components that are part of the robot system and what value they could bring beyond allowing the robot to move through the environment.

A component, such as a sensor or actuator, is considered part of the robot if it is connected to the sensing or acting part of the robot. Otherwise the component is considered to be a payload. Take the example of a camera drone. If the camera images are only streamed to a display for the person piloting the drone, then the camera sensor is a payload and not part of the robot system. On the other hand, if the camera images are (also) processed by the drone’s sensing part, e.g. for automatic collision avoidance, then the sensor is part of the robot system. Have a look at the difference in connection between the camera sensor and the sensing part in figure 4.


Figure 4. Distinction between a sensor that (a) is part of the robot system and (b) is only a payload.


The value of carrying around payloads has already been discussed above. Given the distinction between payloads and robot system parts that we just defined, it becomes easier to see the value that parts of the robot can provide, beyond allowing the robot to function. We continue with the example of an autonomous camera drone that is able to explore an environment without requiring a human pilot. While the value of having the drone just fly around might be low, being able to look at a 3D model of the explored environment or even just the recorded camera images after the flight can be of high value. Think of surveying a construction side, inspecting an oil pipeline or supporting recovery management after a natural disaster. There are many examples where the data available from the sensors required for the robot’s operation provides additional information value. But there are also examples for the actuator side.

One such example where a mobile robot moving through the environment without an additional payload already results in doing something useful is an autonomous steamroller. The objective of a steamroller is to flatten a surface by driving across it. Our steamroller robot uses its special wheels, the rolls, as actuators to move around. Thus, they are an integral part of the robot system and not an additional payload. Although these examples exist, as just demonstrated, it is interesting to note that most mobile robots that serve a practical purpose either carry some kind of additional payload or they are of the information gathering type.

Now that we have a basic understanding of the purpose of mobile robots, let’s have a look at the abstract API for them:

 
 robot.navigate(pose)
  

Mobile Manipulators

Since we have already discussed robot manipulators and mobile robots in the previous sections, it is straight forward to define mobile manipulators: A mobile manipulator is a manipulator mounted on a mobile robot. The assumption here of course is that the combined robot is still mobile and that the manipulator can still function.


Figure 5. Examples of mobile manipulators.


There are different motivations behind having mobile manipulators in terms of new capabilities.

  1. Using a manipulator in different places. The mobile aspect removes the stationary property from the manipulator by transporting it. The focus is on manipulation.
  2. Enhancing the mobile robots payload transportation flexibility. The manipulator aspects allows loading and unloading of payloads. The focus is on transportation.
  3. Extending the manipulator workspace to infinity. The mobile and manipulation aspect are intimately linked by simultaneously using the motion capabilities of the manipulator with those of the mobile base. This is also known as whole-body control.

The equivalent functionality to the case 1 could be achieved by having a separate mobile robot and manipulator. The mobile robot lifts up the manipulator as a payload, transports it to another location and sets it down at a new location. During transportation the manipulator is a pure payload–it does not even have to be powered.

For case 2, we can also think of a solution that does not involve mobile manipulation, but separate mobile robots and manipulators. We would put a stationary manipulator at the loading and the unloading site instead of mounting one to the mobile robot. Thereby achieving the same capability. Given there are only a few pre-defined loading and unloading sites, this is a practical alternative. However, if there are either many sites or their exact location is unknown or changes over time, this would not be a real alternative.

Finally, in case 3 we cannot separate the mobile robot and manipulator and still achieve the same functionality from a practical point of view. The mobile base basically acts as a set of additional manipulator joints. What makes it impractical to replicate these joints with a fixed base is that they would have to be of infinite size–or at least unreasonable large size.

Closely related to the three cases just discussed are the following two basic approaches for integrating the mobile and manipulation functionality.

  • Independent successive
  • Coupled simultaneous

Independent successive means that we perform a sequence of manipulator move() and mobile robot navigate() commands. In other words, at any point in time we either move the mobile base or the manipulator. For this approach we do not need any new abstract API. We only need to use the manipulator and mobile robot API already known from the previous two sections. The various aspects that need to be taken into account to make this combination work in real applications include coordinate systems, calibration routines, and essential sensing functions.

For the coupled simultaneous approach, we need a way to control the mobile base and the manipulator together in a unified manner. This is an advanced topic (which I cover in the book). And while it is tempting to dive right into advance functionality, the best path is to learn all the basics first.

And this concludes our introduction to basic robot types.

If you want to learn more about the book, check it out on Manning’s liveBook platform here.