Making a robot learn how to move — Intro

(or: where Artificial Intelligence meets Robotics)

ICub, a famous humanoid robot developed at Italian Institute of Technology (IIT), Genova, Italy.

The popular image that comes to mind to many people when thinking about AI is often of some sort of humanoid robot, possibly in a shiny and elegant white body, playing chess or other stuff. In many famous cases, sci-fi stories portray Artificial Intelligence as embodied in a robot, or more widely, in a synthetic body. This allows the AI to interact with the physical world, to move, to perform actions, and so on. And that, also, means that the robot knows how to move with dexterity like a human being.

In this series of posts, I will briefly talk about a project I’ve been working on in the past month: how to use Machine Learning/AI techniques to teach a robotic manipulator to move, following as closely as possible a desider trajectory.

Robotics and AI, often, are seen in the academic literature as two different subjects, and for a good reason. Robotics, in the most classic sense, deals with modelling and controlling robotic manipulators, or mobile robots. They are often required to do specific and repetitive tasks, many times in an industrial setting, and do it with a very high precision. Designing a control architecture that achieves those task isn’t trivial, but these robots are rarely seen as «intelligent», being able to do just a pre-programmed task. On the other hand, Artificial Intelligence is a branch of computer science, studying how to design algorithms that «simulate an intelligent behaviour». There are numerous definitions of intelligence, but in this topic it is often referred as the ability to act based on sensor inputs and experience and being able to deal with uncertainties and unexpectd events. It is not surprising then that, in recent times, these two scientific areas have found an intersection in what it is sometimes referred as intelligent robotics.

A carefully designed machine learning algorithm can learn to move in a trial-and-error fashion.

As I briefly mentioned in the introduction, robotic manipulators are often moved by precisely designed control algorithms, that are based on an accurate knowledge of the structural and physical parameters of the manipulator. These includes angles between joints, lenghts of links, masses, frictions, and so on. The more accurate these parameters are given, the more precisely a control architecture can be designed. But what happens if these parameters are not known? This is where machine learning (ML) comes along. ML allows computers to learn directly from data and is intuitive to understand why it is useful in this case. Much as a human baby, a robot can learn how to move simply by moving. A carefully designed machine learning algorithm can learn to move in a trial-and-error fashion, doing many trials and analyzing the effects of its actions. In our case the actions are torques applied to the joints, and the effects are how these joints move.

The dynamical model of a robot, i.e. the mathematical model describing how inputs affect the movement of each joints, can be very complex, especially when dealing with robots with many Degrees of Freedom (DOFs). Links are often dynamically coupled: the movement, velocity and acceleration of a link affects the other in complex ways. There are inertia effects, centrifugal, Coriolis and gravitational effects, non-linear frictions and so on. All of these can be hard to model mathematically. So, the question is: can the robot learn how to move? In the next series of posts, I will show different approaches, techniques and algorithms that I’ve developed along with a colleague of mine. You can find all the code developed for this project in this GitHub repository.

Read part one now.