What software skills I had to learn as a mechanical engineer in robotics and controls - summary

Article status: In progress

Some mechanical engineers going into robotics may lack some of the initial software skills to fully function in robotics.

For me, these were early shortcomings that I tried to self-teach, and then later ones once in a more collaborative environment.

For most who want to pursue robotics, I recommend balancing a few critical software classes or concepts with mechanical engineering courses while pursuing the robotics course load.

The best beginner software skills and projects I can recommend for a mechanical engineer interested in writing robotic controls software are:

  1. Learn Object Oriented Programming:
    • If you can take a quality introduction to programming course that can help, but many courses are also available online that offer a certificate like Coursera or MITx.
    • Python is a great language to start with for getting familiar with coding. After you are comfortable with Python, I recommend learning a compiled language like C++ additionally:
      • You can also learn programming through Arduino and apply it to Mechatronics or Robotics. Note: Mechatronics is what got me into robotics.
    • Understand data structures and algorithms.
  2. Get familiar with bash scripting and the terminal

  3. Get familiar with Git and Version Control

  4. Learn the ROS architecture and apply it in a robotics project:
    For me, I read Robotic Operating System (ROS) for Absolute Beginners by Lentin Joseph, but you can learn this online—with the newer ROS2:
    • Recommendation: Learn how to install Ubuntu, this is required to run ROS. You can learn to dual boot, or use a virtual machine to begin.
    • Additionally, ROS offers a lot of plug-in support allowing you to experiment with robotic arms, path planning, and writing robotic software:
      • An example I utilized in my thesis is the Universal Robot simulation
      • The MoveIt plugin is a great place to start where you can work through simulation-based tutorials

After, you can also dig into more complex subjects in theoretical computer science that are applicable to robotics, including:

  1. Path planning: The means by which we determine a path for the robot to reach a desired pose:
  2. Reinforcement Learning: Enables learning through trial and error—training with reward functions:
    • A great textbook I read on this was: Reinforcement Learning: An Introduction by Andrew Barto and Richard S. Sutton
  3. Robotic Perception