Saturday, 28 July 2018

Levels of robotics education


Warm-up level:
  1. Learn coding: Start picking up at least one handy programming language. Arduino IDE is good. Python is great. C/C++ will be fantastic. My suggestion would be: Python. There are several reasons for this and later in the road map you will see why.
  2. Learn electronics: Start building basic electronic circuits. It can be as simple as lighting up an LED. Next light up more LEDs. Make a simple traffic signal. Implement switches. Learn the theoretical ideas behind how voltage, current, resistors, transistors, series & parallel circuits work. Explore sensors and servo motors too!
  3. Learn basic assembling: As kids we loved making toys and building stuff. Do the same here. Learn to make some basic structures using wood, acrylic, fiber, or plastic.
  4. Integrate with micro-controller: With knowledge of the above concepts, you should try and test them on a basic micro-controller. After all, you want your circuit to “react”. The most popular choice among hobbyists and beginners is to go with Arduino. Arduino has truly simplified the process of coding and implementing basic reactionary circuits.
(Resources: YouTube, Khan Academy, Code, Coursera, Udemy)
Beginner level:
  1. Learn Object-Oriented Programming: It is not only important to code in robotics but also how to code well. Object-oriented programming (OOP) is a tremendous muscle to grow and earlier you can do this, the more you will thank yourself in the future. OOP isn’t exclusive to Python. However, in Python you can implement these easily and practice. Through OOP, you will learn about classes, methods, inheritance, etc and this is an excellent technique for writing functional, modular, and efficient codes.
  2. Learn physics, probability, and linear algebra: As you are growing from an infant roboticist to an adolescent, it is important that you also know how robotics is written, read, and spoken by others in the community. This robotics language heavily uses physics, probability, and linear algebra. Yes, you may not enjoy these subjects in school or university but trust me you need them if you are serious about robotics. You cannot do computer vision without knowing about matrices. You cannot do path planning without knowing about physics. You cannot do artificial intelligence or machine learning without knowing about probability.
  3. More involved computer skills: Now what do I mean by that? A lot of newcomers to robotics get stumped (I was too!) that they need to learn this new alien looking operating system that has a penguin somewhere next to it. I am talking about Linux operating system. It is imperative that for someone looking to get deeper into robotics should familiarize themselves with Linux. A lot of libraries, packages, and software developed for robotics are distributed very easily and efficiently on Linux environments. Popular linux OS choice: Ubuntu
  4. Embedded systems: Now that you have developed better knowledge of coding, circuitry, theoretical concepts, and familiarity with Linux, we need to implement these on a smaller computer than our laptop. So go ahead and try warmup level concepts along with the above concepts on a mini-computer such as Raspberry Pi or the BeagleBone. Hook on some sensors, servos, and a camera to one of these min-computers, and write some code to sense, move, and detect stuff!
(Resources: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Intermediate level:
  1. Develop theoretical foundations: Here depending on what area of robotics you are interested in, you need to learn more into the theory behind it. Learn about robotic arm manipulation (kinematics & control), perception (computer vision, linear algebra, matrices), machine learning/artificial intelligence (probability, statistics, maths). Do you see how some of the previous concepts are fundamental to these core robotics areas?
  2. Use advanced libraries: Now you need to implement machine learning and/or computer vision algorithms on your robot. After all, the robot should be able to see and think and learn, right? On Python, there are amazing libraries written for implementing machine learning and computer vision algorithms e.g. tensor flow and OpenCV. Similarly, a lot of AI can be practiced on Python as well. Of course you can do the same in C/C++. However, I am trying to keep it consistent here.
  3. Get familiar with ROS: With the knowledge of all of the above, an excellent middle-ware that one should learn is the Robot Operating System (ROS). It can be a little tricky to pick up at first. However, ROS opens up your doors to test advanced algorithms and simulations on robots that you don’t even have! Want to fly a quadcopter? Or navigate a robot autonomously in a map? How about getting an industrial arm to pick up an object? You can do that in ROS via its simulation environment named Gazebo.
  4. More CAD: You may be interested to develop and design complex robots. Start learning 3D design software such as Blender or SolidWorks so that you can design your own robots.
Expert level:
  1. Keep learning and growing: Each concept mentioned above is endless by its own virtue, and to become an expert in robotics, you will need to invest the time and keep learning. You will realize that you need to learn more classifiers or models to detect objects/images better. Or you might need to learn more about control algorithms to optimize your solutions.
  2. More software/hardware: Depending on your area of interest and specialization, you will be doing more and more of coding, algorithmic development, ROS, and/or robotic designing.

References: 



Robotics Key Concepts:

  1. Kinematics and Dynamics
  2. Control Systems
  3. Perception and Sensing
  4. Robot Localization and Mapping
  5. Path Planning and Navigation
  6. Robot Manipulation and Grasping
  7. Machine Learning for Robotics
References: