Knowledge and Skills Required for Robotics
As robotics is interdisciplinary, or in other words: a robot is built by involving various engineering skills and knowledge, here I will list several important knowledge and skills required for robotics by classifying them into their engineering branches.
Knowledge and skills from mechanical engineering: The critical knowledge and skills include basic knowledge in kinematics and dynamics. What I mean is actually the basic knowledge in rigid body kinematics and dynamics. As some roboticists do not come from mechanical engineering background, several practical methods to deal with spatial rigid body kinematics and dynamics have been developed and taught. These include, but not limited to, vector representation of translation and rotation, some widely used representations of rotation, homogeneous transformation, D-H parameters, inverse and forward kinematics of serial and tree-like robots, and some common methods to model rigid body dynamics as well as its inverse and forward dynamics solution. All of these aspects are commonly called the modeling of robot.
Another complementary but important skill is a skill to use a computer-aided design (CAD) software such as Creo, Solidworks, Inventor, Blender, etc. Using such platforms, one can conveniently design a robot mechanism and simulate its motion.
Some more advanced mechanical modeling skills are required in a more complex robotic system. For example, flexible-body kinematics and dynamics are required in modeling compliant or soft robots. Advanced kinematics and dynamics formulations and methods are used for parallel (closed-chain) and hybrid serial-parallel robots.
When it comes to build a new robot (meaning a robot with a new topology), the requirements on the mechanical engineering side actually becomes dominant. This is because creating a new robot is basically a mechanical engineering work. Control subsequently will make the robot move in a controlled manner. The computer science and software engineering work is basically only used to an already-existing robot. Building a new robot involve a lot more knowledge and skills in mechanical engineering, including CAD, materials engineering, strength of materials (discussing something like mechanical stresses, deflection, failure, safety factor, etc, which is basically required to create a robot which can withstand the expected loads/payload), statics, kinematics, dynamics, vibration, Finite Element Analysis (FEA), manufacturing/fabrication, and even fluid dynamics and probably heat transfer. For example, to create a good rotor-based robot or a flapping-wing aerial robot, one may need to design and analyze the fluid flow going through the rotor(s) and the wings, respectively. A very interesting example is how the NASA coaxial-rotor copter for Mars was designed. A robot to be deployed in high temperature environment would need a heat transfer analysis in its design phase.
Knowledge and skills from control engineering: The critical knowledge and skills include basic knowledge about open- and closed-loop control system, motion/servo system and its components (motor/actuator, servo drive, controller, and sensors), motor selection and sizing, basic PID control and how to tune PID gains, motion profiles, motion/trajectory interpolation, data acquisition techniques (including noise removal), calibration (which involves estimation of the robot kinematic parameters), and classical control theory. It is also very useful to have knowledge in vision-based control, commonly known as visual servoing, including image-based, position-based, and hybrid visual servoing.
Other complementary but useful skills include a skill to work with popular microcontrollers such as Arduino and single-board computer (SBC) such as Raspberry Pi. Also it is very useful to be able to design a control scheme in MATLAB/Simulink and/or LABView and perform a rapid control prototyping (RCP), hardware in the loop (HIL) simulation, and software in the loop (SITL) simulation.
Furthermore, it would also be useful to have some knowledge on advanced control tools such as linear state-space control, optimal control, state and parameter estimation using Extended and Unscented Kalman Filter (EKF/UKF), model-based and data-driven system identification, sensor data fusion, model-based control, adaptive control, robust control, force and hybrid motion/force control, and various advanced control algorithms such as Model Predictive Control (MPC) and Sliding Mode Control (SMC).
Knowledge and skills from electric and electronic engineering: Basic knowledge about electricity and electronics is a must, including a solid understanding about voltage, current, resistance, capacitance, power, relationship between all these parameters and how to measure/calculate them, as well as understanding electrical and electronic circuits. Some knowledge about electronic components such as batteries, transformers, resistors, capacitors, diodes, transistors, integrated circuits (ICs), etc is also compulsory. A practical skill to make good, reliable, and less-noise wiring and connection as well as to troubleshoot some problem in a circuit is very important. When one needs to make a custom electronic circuit, a decent electrical and electronic knowledge is definitely required.
Knowledge and skills from computer science and software engineering: It is not enough to have skill to use Windows operating system (OS). It is also required to have some skill to use Linux Ubuntu operating system. Basic knowledge about programming and object-oriented programming is a must. Practically, it is required to be able to program using an object-oriented programming language, preferably Python and/or C++. Furthermore, it is required to have some knowledge on communication protocols and computer networking.
A skill to develop/code a state finite machine is also very important as a robot typically needs to perform multiple tasks during its operation. The use of finite state machine to deal with such situation is very common.
It is also useful to have some knowledge on computer vision for vision-based object recognition and tracking. A practical knowledge to use OpenCV and to manipulate pointcloud data using Point Cloud Library (PCL) library is very useful. With the quick and vast development of artificial intelligence (AI), it is good to have some skill on the deep learning-based object recognition, particularly the real-time algorithms such as Fast RCNN, Faster RCNN, and YOLO. But the use of AI in robotics is not limited to object recognition and tracking. AI is also used in robotics for path planning with obstacle avoidance. Besides supervised learning, a promising and useful machine learning (ML) skill for robotics is reinforcement learning.
Finally, I should mention that some skill to work with Robotic Operating System (ROS) is very useful. This robotic middleware was developed to help the roboticists to avoid reinventing the wheel. Its modular architecture makes it quite convenient to build a complex robotic system. The community using this robotic middleware is growing very fast, and its use in industry becomes more common, particularly after the recent deployment of ROS2. ROS is currently the de facto robotic middleware most widely used in robotics community.