In the professional sphere, it's important to let go of the tools and traditions that no longer suit you. Every business leader knows that in order to stay relevant and profitable in their particular industry, it's important for their companies to adapt to changing practices, technologies and business models.
With the unbelievable development in Artificial Intelligence (AI) that developers have created in recent years, companies are continuously on the chase for the latest, cutting-edge software that will help them to retain their role as a leader in their industry.
What's the best way to start learning robotics?
He provides a road map that can guide someone to either start or develop themselves further in robotics. The road map has 4 levels and each level focuses on 4 core concepts. Each concept intertwines with itself and holistically develops your inner robotic genes:
Learn coding: Start picking up at least one handy programming language. Arduino IDE is good. Python is great. C or 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.
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!
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.
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.
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.
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.
More involved computer skills: Now what do I mean by that? A lot of newcomers to robotics get stumped 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 is Ubuntu
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 mini-computers, and write some code to sense, move, and detect stuff.
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?
Use advanced libraries: Now you need to implement machine learning 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 or C++. However, I am trying to keep it consistent here.
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.
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.
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.
More software and 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.