Skip to content

Roadmap for Robotics

Robotics is a vast field which often overlaps with many other disciplines ranging from machine learning to physics. For a beginner this can be pretty intimidating, we know, we’ve been there. To make it easier to get started, we have collected the following resources. You can also find more resources at our website.

A common beginning

As a beginner, the most important thing is to start learning a language since it opens up a lot of opportunities in terms of projects to work on and things to do. Also keep in mind that once you know one language well, it’s relatively easy to pick up another one quickly.

In robotics, different languages have different uses:

  1. Automation: Machine Learning: python for basic stuff, C++ for more advanced stuff
  2. Embedded systems and electronics: C
  3. Modelling: python, MATLAB

We would recommend starting with either python or C/C++. Knowing both is pretty much essential for advanced robotics. Here are some places where you can get started:

Python

C

C++

  • MATLAB Onramp and Simulink Onramp. These courses introduce you to the MATLAB and Simulink environments. Many other self paced courses can be found here.
  • This interesting “How to” playlist by MATLAB teaches some basics how to’s with MATLAB & Simulink, check out the videos which are required for solving any doubts.
  • Versioning with Git this video will help with using Git & Version control with your Simulink projects.

Development Environment

Writing code isn’t just as simple as typing into a text editor. Usually there are many other components involved such as a compiler, external libraries, path environments, a terminal, version control, documentation etc… Don’t worry if you don’t know what these things mean, together they are generally known as your development environment. To begin with, make sure you are comfortable with the following

  • Linux Operating System: Linux is an open source operating system - this means that anyone can view and propose changes to its source code. It comes in many variants, Ubuntu being the recommended choice for beginners. It’s essential to have access to linux (either through dual booting, virtual machine or WSL - more on these here) due to its tight integration with many of the tools used to program robots (and development in general).
  • Linux Terminal: While most of us are familiar with the point and click based interface of windows, computers first started off as terminals - text based prompts that you had to type into. The terminal is still used for pretty much everything in software development and is an essential skill. YouTube Tutorial
  • Git: When working on complex code, or as part of a team, keeping track of changes to the code becomes very important. Git provides a way to do this and much more. Platforms such as GitHub and GitLab have become the bedrock of the open source community in recent years. YouTube Tutorial

Electronics

The Electronics part of Robotics can be divided into 3 parts : Microcontroller, Sensors and Actuators. Sensors and Actuators (through drivers) are interfaced with the microcontroller to form the electronics system of the robot. Basic electronics components like wires, resistors, capacitors are used in interfacing and this whole assembly is mounted on a breadboard, prototyping board or a printed circuit board (Based on the stage of the project).

To start off with learning about microcontrollers (structure, layout, how to program) one is advised to start with learning Arduino. Arduino is a low cost, open source and easy to learn microcontroller. The syntax used to program Arduino is similar to that of C/C++ and a software called Arduino IDE is used to program it. Arduino has its own set of official tutorials. One can also find many tutorials on YouTube channels like Jeremy Blum, Paul McWhorter, etc. There is also a basic tutorial and more info regarding Arduino IDE, from us over here. There is an online simulator which is capable of simulating Arduino projects, called TinkedCad, in case one is not willing to buy an Arduino board.

After learning Arduino and understanding the basic concepts regarding working of a microcontroller one can dive deep and try out other microcontrollers like STM32 (BluePill), etc.

Sensors are electronic components used by the robot to get information about the environment. Some few examples of sensors are wheel encoders, temperature sensors, depth cameras (Kinect), LiDARs, Ultrasound sensors, etc. On the other hand actuators are components using which the robot brings about changes in the environment. Ex. Motors (DC, Stepper, Servo, BLDC), Linear Actuators (Solenoid or a linear servo), etc. Actuators are interfaced with the microcontroller using drivers because of the different power budgets of the microcontroller and the actuators.

After interfacing one might want to assemble it on a prototyping board or even a PCB (for long term use). A software called EAGLE is used to design a PCB. One can download and install it free of cost from the official website of AutoDesk. Tutorials on Jeremy Blum’s and Terminal Two’s YouTube Channel are a great place to start PCB designing using EAGLE.

Automation

Robot Operating System (ROS)

Think about how you might go about automating a human like robot that helps out at home. Would you just write one big program to control all its behaviour (navigation, motion, obstacle detection, battery monitoring, speech processing etc..)? The much smarter thing to do would be to have smaller independent programs for each of these which can communicate with each other (i.e one program for moving around, one for talking, one for picking things up etc..). The problem that arises now is how would these individual programs communicate. The Robot Operating System provides a solution for this. It is not an actual OS, rather a framework which makes communication and coordination easier. Check out this and this video, and this text for more.

To setup your ROS environment check out this.

The official ROS tutorials are very good for introduction. The concepts are given in a concise manner, and a lot of example code (Python as well as C++) is given for understanding. Also read about various ROS parameters here.

In case of specific questions, try googling them. Many questions might have been asked before by someone else and an answer might be available on ROS Answers.

A Recommended course: Hello (Real) World with ROS - Robot Operating System - TU Delft OCW

Also refer Morgan Quigley’s Programming Robots with ROS

Path Planning

Path planning is the process of “finding” a path or a trajectory for a robot by avoiding obstacles or following set dynamic or kinematic constraints of a robot. Quite literally, it’s something we as humans do quite instinctively, but robots find it difficult and we try to make them “intelligent” by using some algorithms which can be called as path planning algorithms. Path planning plays an integral part in robot automation because most of the robots have to plan a path. Even in the case of robotic arms, moving the end effector from a given spatial coordinate to another given spatial coordinate requires “planning of a trajectory” the arm must follow. However, the constraints and dimensions for planning the path or trajectory are different from that used to plan in a ground robot. Read more over here.

Most of the old planning algorithms have many implementations. Check out this book for an in-depth introduction. The best way to learn about any planning algorithm is to look for the research paper and go through it. Read about Graph based algorithms like A Star and Dijkstra here. Some information about a Sampling based algorithm - RRT can be found here.

However, to find some implementations of the algorithms, you can refer to the Open Motion Planning Library for industry-level implementations of the algorithms. (OMPL is written in C/C++, beware!!). For a better understanding and visualisation of how various algorithms work, take a look at this repository. It’s written in python!

Simultaneous Localization and Mapping (SLAM)

As the name suggests, what SLAM achieves is simultaneously map and localise in an environment. Historically, mapping and localization were done individually. Doing both of them simultaneously poses some difficulties. Check out the playlist by Cyrill Stachniss on SLAM for an in-depth course. Linear algebra and Probability and Statistics are quite important for a better understanding.

Robot Perception

Robot Perception is something that is really underappreciated by beginners as the difficulties behind it are not properly understood. It’s quite hard to comprehend how hard can seeing, analysing and extracting useful data from a 3D world can be for a robot, as we as humans are quite comfortable in picking and placing objects that are in front of us with utmost precision. It’s easy for us to avoid tripping over a branch while walking(of course if we see it). But the same is very complex for robots. Robot Perception specifically deals with this aspect of making intelligent robots.

To understand how a robot perceives the environment, you need to know about the depth map, how we create it and what are its uses (this is a resource using which you can make a depth map yourselves. Generally, depth maps are made by using two cameras, each giving a different perspective of the same scene, thus creating a depth image, just like our eyes). Using depth maps is one of the classical methods of analysing a 3D environment.

Sensors play an important role in any robotic task. High-quality Cameras, LiDARs etc are used. To get started with perception by using images, OpenCV is a good starting point. For perception using Point Clouds, Point Cloud Library is a good starting point(PCL can only be used using C++).

There are many advancements that are taking place. With the advent of Neural Networks, Convolution Neural Networks(CNN’s) are used to extract and analyse important information from depth maps thus enabling image and point cloud segmentation, classification tasks etc.

Machine Learning / AI

Much of the computer based tools we use follow the same principle - they are a collection of straightforward instructions for the computer to follow so that it can solve a task. Machine Learning on the other hand, is about how the computer can learn to solve a task from examples, much like we humans learn.

Control Systems

Control systems help to control the movements and functions of the robot. We need the controllers because the dynamics vary with the time. When the robot moves up in a slope and then down in the slope, or first travels on smooth concrete, then on a carpeted floor. So physical modelling of the “System” becomes crucial for designing a good controller.

We give a reference state to a controller. The controller also has sensor feedback, using the reference state and sensor feedback controller generates a control signal needed to reach the reference state. This control signal is fed to the “System”. The system dynamics determine how the system behaves to this control input. If the controller is good, hopefully, the “System” will reach our desired reference state. For more check this.

  • To get started with control systems and theory - Control of Mobile Robots course by Magnus Egerstedt (Georgia Tech), also on Coursera by the same name.
  • Understanding PID Control - Playlist by MATLAB explains PID control in detail. Also read about the controller over here.
  • Read about more advanced controllers like Linear-Quadratic Regulator (LQR) and Model Predictive Control (MPC) here.
  • This playlist teaches some more basic concepts of Control Theory and how to practically apply them.
  • This playlist teaches State space equations, pole placement and concepts like controllability. These become essential when dealing with the math behind Control Theory.

Mechanical Design

CAD

Fusion360 is a good starting point to get yourself familiar with 3D modelling to model anything you can think of! This is the link from where it can be downloaded. Make sure you have an Autodesk account linked with your institute id for free access.

To get started with it check out official tutorials on Autodesk website.

SOLIDWORKS by Dassault Systems is a major CAD platform that is used for 3D design and basic simulations. It has slightly more functionalities than F360 and is very good for the design of manufactured goods and design engineering. You can easily find SW tutorials on Youtube, however, this Lynda tutorial series on SW is very nice- Lynda Tutorials SolidWorks. [Use BITS mail]

For more information on how to get Solidworks, get in touch with an ERC member.