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:
- 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.
-
Get familiar with bash scripting and the terminal
-
Get familiar with Git and Version Control
- 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:
- Path planning: The means by which we determine a path for the robot to reach a desired pose:
- The MoveIt repo is a great place to start.
- The Open Motion Planning Library
- 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
- Robotic Perception