20 years of Robotics

What Changed, what didn't,

what the future holds

What is this all about?

  • How robotic changed in the recent years.

  • Why robotic software is written the way it is.

  • Effective Design Patterns in robotics.

Who am I ?

  • A passionate roboticist.

  • A senior software developer.

  • Project Manager, Business Developer, Mechanical Engineer, Startup Founder, Geek, etc...

A younger and thinner version of me (on the right side)

A weird email...

Dude, it is 2018, where is my  robot?

Robotics is hard

  • Requires complex Domain Specific knowledge.
  • Close to the hardware. A lot of work is was required on the driver side.
  • Difficult to model uncertainty and real-world environments.
  • Depends on scientific progresses in other domains.

Software wise...

  • Non trivial problem requires concurrency and parallelism.
  • You never have enough CPU.
  • Robotic engineers are bad Software engineers.
  • Complexity.
  • Lot of sensors.
  • Many actuators.
  • On board batteries.
  • Brutal space and weight constraints.
  • Biped locomotion was not a solved problem.
  • Complex software architecture.


 all the way down...


  • Historically, Robotics was about embedded computing
  • You want to squeeze the last CPU cycle
  • Domino effect... the ecosystem is mostly C++, so no one change


  • Steep learning curve for newbies.
  • A complex computing language used by inexperienced software developers.



Robotic Software Frameworks everywhere






Very ambitious but...

  • Academic :-/
  • Difficult to install.
  • Cherry-picked use-cases.
  • No documentation.
  • No tools.
  • Few drivers.
  • "I can't get my PhD solving bugs".
  • "Not invented here" syndrome


In other words:

no critical mass

All these middlewares had many things in common

Component Based Design...

... but not well formalized.

Inter process communication...

... a SEGFAULTs workaround?


Concurrency / Parallelism...

... because time constraints suck.

... just spawn more processes.

Algorithms / Drivers separation...

... with my ad-hoc interface.

Component Based Software Engineering

Component-based software engineering (CBSE) is a branch of software engineering that emphasizes the separation of concerns with respect to the wide-ranging functionality available throughout a given software system.

It is a reuse-based approach to defining, implementing and composing loosely coupled independent components into systems.


In robotics we want:

  • To distribute data to multiple clients.
  • Often, we don't need synchronous communication.
  • Robustness against unreliable data producers.
  • Freedom to use multiple computational nodes.

2008: and then ROS came...

ROS was bound to win the "middlewares war"

Technically speaking:

  • Easy to learn
  • No-bullshits API
  • Many Tools
  • Many Drivers
  • Easy to install
  • Well documented
  • C++ Package management

ROS was bound to win the "middlewares war"

They had:

  • Many talented people
  • Multi-years effort
  • Smart marketing
  • Uncompromising Vision
  • Community building
  • Focused on real-world
  • in other words: "Lot of meny"

I am not being cynic.

World domination requires money

  • It accelerated 3x-5X the development of robotic systems.
  • It became the "standard" that we desperately needed (the winner takes it all).
  • Open Source

The good:

The bad:

  • ROS is a just a (very good) tool,  but people rely too much on it.
  • Resource hungry in some cases.
  • Thrown away many important lesson from CBSE.
  • Open Source.

Biggest challenges in robotics (until 2014)

  • It is a small market (*)
  • Small investments and little capital
  • Depends on innovation in other fields
  • Technology is not mature
  • Hard to industrialize

2014 - today

  • It is a small market
  • Small investments and little capital
  • Depends on innovation in other fields (Autonomous cars?)
  • Technology is not mature (?)
  • Hard to industrialize

The most important bottleneck:

Computer Vision and Perception

Robotic Perception. How hard could it be?

Computer Vision... is hard!

"This AI and Machine Learning stuff is useless"

Me 2001

The A.I. Winter

Deep Learning


the previous state-of-the-art benchmarks


ImageNET 2012: everything changes...

We had intuition, but not the mathematical foundation...

...We didn't know that we "just" needed:

  • A bigger engine (Computational Power)
  • Much more fuel (Data)

Since 2012, the amount of compute used in the largest AI training runs has been increasing exponentially with a 3.5 month-doubling time.

By comparison, Moore’s Law had an 18-month doubling period.

Since 2012, this metric has grown by more than 300,000x

This is just just the beginning:

  • A.I. will evolve more and more, in a non linear way.
  • Robotics will be able to solve more Business Cases and Use Cases.
  • Riding the hype wave, many startups will be created.
  • More Fundamental Research is needed.
  • More Applied Research, too.
  • Nevertheless, serial production of complex robots is still hard.

Thank you for

your attentionn

20 years of Robotics

By Davide Faconti

20 years of Robotics

  • 356