07-01-2021 | | By Mark Patrick
In this series of six blogs, we take a look at the key technologies defining the way robots are being designed and used today, and how that may evolve in the future. It will cover developments at the hardware and software level, and how innovations such as AI are already shaping the future of robotics.
Blog 4: Key Technologies Defining Robotics – Robot Operating Systems
Blog 5: Key Technologies Defining Robotics – CoBots and AI
Blog 6: The Future of Robotics
A primary characteristic of any robot is that it can be programmed to do precisely what you want it to do. The earliest robots did not run software programs by today's standards, but they were programmable - using physical, electromechanical switches.
There are several ways to programme a robot. One of the easiest is by manually guiding the robot through the motions you want it to reproduce. The robot will record each position and replicate the same series of movements.
The same approach is now achieved using software. A graphical user interface, or GUI, shows icons representing the motion required. The operator programs the movements and positions needed. This technique features in educational or toy robots, such as Lego® Mindstorms® but it is highly effective and can make programming a robot simple and even fun!
Manufacturers of industrial robots typically use a more conventional programming language of their own design. Fortunately for engineers, many of them are based on Pascal. While Pascal is no longer widely used, it was one of the first real programming languages, along with Fortran.
More popular languages, including C/C++, are now preferred, used for low-level design in almost all areas of electronics, including robotics. Manufacturers are also starting to choose the C/C++ programming languages.
The open-source Robot Operating System, or ROS, is a project that is bringing some interoperability to the robotics industry. Although it is called an operating system, ROS is essentially middleware. It sits between the software that controls the robot's hardware and the user interface.
ROS has its own language, which uses the XML format. Engineers use this language to describe the features of their particular robot in a standard way. A message-based system is used to send commands to tell the robot what to do. This helps create a common platform for robot design.
The ROS framework includes a library of functions designed to control the various sensors needed by robots to move and navigate. The third blog in this series has more on this topic.
The control system will probably need to respond quickly, with low latency. In the embedded domain, this means using a Real-Time Operating System (RTOS). The engineers may choose to use a real-time version of a high-level operating system, such as Linux.
If a real-time operating system is in use, the ROS middleware would still be useful. The ROS project provides support for its integration with real-time operating systems that are based on a Linux distribution. ROS can also coexist with other RTOS’s. The ROS stack can run on many different processor architectures, including Arm Cortex-A cores. Cross-compiling to Arm Cortex-M based microcontrollers is also supported using tools such as µROSnode, Rosbridge and Rosserial.
For a more direct approach, there is micro-ROS, which enables part of the ROS 2 stack to run on a microcontroller. The approach taken is to use a Portable Operating System Interface (POSIX)
The client can communicate over a conventional interface (Bluetooth, Ethernet etc..) to the ROS 2 agent running on a desktop OS. There is support for micro-ROS across a growing number of microcontroller families, including:
The PIC32MX family
Robotics is possibly unique amongst applications. It has a software-centric approach at multiple levels. For electronic design engineers, it includes low-level control code, perhaps running on bare metal. The use of an embedded RTOS is also likely. The software extends all the way, at a higher level, to the user interface. This interface will be software-based and an essential element in the overall customer experience.
The programmable nature of robots requires this software-centric design approach. At a system level, we are rapidly approaching a time when it will be hard to see the hardware/software divide. The next blog in this series explores this and looks at the evolution of robots, CoBots and the use of Artificial Intelligence.
Check out Mouser's other online resources to learn more about robotics technology.
Follow us on Twitter