I have known for a while now that robotics is something I am very passionate about. Im beginning my studies now in university and am trying to decide between the best major to prepare me for advanced robotics work.

I'm currently in between Math/CS ECE/CS and Stats/CS

I know that Mech E is not for me.

Thoughts on the matter? What is the best for general development? Research/ theoretical? Applied robotics?

Specifically I would love to hear how each major may be more useful to each aspect of robotics development.


I understand this post lacks a specific problem, but I figured I may ask any way given the collective knowledge of this community - if there is a more appropriate place to post this please let me know!

  • $\begingroup$ Welcome to Robotics, JSMorgan. As explained below, saying you want to "study robotics" is akin to saying you want to "study cars." Fuel chemistry, battery management, structural engineering, sensing and signal conditioning, power electronics, kinematics, dynamics, control theory, path planning... the field is huge. Some things you will enjoy and some you won't. Pick the field that encompasses the most of what you want. $\endgroup$
    – Chuck
    Apr 28 '17 at 12:07
  • $\begingroup$ Questions like this are off-topic for the site, but you're free to join us in Robotics Chat to talk more about it. Life questions are specific to you and what you want to do, so they're not likely to help future visitors to the site. And again, it's all about what you want; there is no "answer" here. $\endgroup$
    – Chuck
    Apr 28 '17 at 12:08
  • $\begingroup$ Hi @Chuck, thanks for the clarification, and I'll visit the chatroom - a more appropriate location for this. $\endgroup$
    – JSMorgan
    Apr 28 '17 at 12:09

It depends on the kind of robotics you want to get into. Robotics is, as you know, tremendously multidisciplinary.

Math will be beneficial in having PDE and linear algebra knowledge. There is basically no getting away from these. Discrete math, game theory, and graph theory will also be really valuable to robotics, especially if you like the more theoretical/design aspects of robotic systems. You'll get those in CS. Vector calculus is great for drivetrains, supporting mechanical systems and manipulators, etc. All the math will also help with advanced physics problems in the sensor data realm. You should go out of your way to learn Jacobians. A shocking number of math majors I've met get out of school not knowing them.

ECE would provide you some good embedded systems knowledge (seek it out wherever you can). Learning DSP, FPGAs, CPLDs, control systems, etc. is highly valuable. Understanding low-level code, being prepared to understand and extend microcontroller code, and knowing a hardware description language will be beneficial. Understanding wireless communications and knowing a little something about electrodynamics, waves, optics will help a ton. Ultimately, this is useful for sensor systems, control systems, and robot software as a whole.

Stats is necessary even if you don't take it as a major. You should be familiar with Bayesian methods, be thinking about the distribution of the data you're dealing with, know how to measure covariance properly, be comfortable with the associated matrix algebra, etc. This all comes in handy for state estimation, which is a huge piece of almost every robotic system.

CS is largely going to be valuable for abstract thinking. And knowing C++. In addition to all of the basics being really valuable, if you take the time to learn machine learning or computer vision, you'll be ahead of the game. And always be thinking about algorithms. In particular (you'll get it in your ECE as well, possibly as an elective), you should take some time to study RTOS. Being able to write deterministic algorithms is the difference between life and death in some robots. Not every robot needs to be real-time safe, but if you have that skill, it opens up a whole range of really need opportunities.

You probably already knew most of this. Generally, the roboticist needs to know a little about everything. Don't shy away from mechanical- even if you don't like it, you should spend some time in physics, statics, dynamics, and strengths of materials. Noise and vibes is a lot of math, but I find it really useful for robotics, and it translates right into ECE and embedded systems. It doesn't need to be your major, but you shouldn't draw a blank with terms like Cauchy stress tensor and moment of inertia. You're going to be working with a lot of mechanical engineers in robotics, and the knowledge will only help you better integrate systems.

I watched a team spend three weeks tuning an aerobot's PID, then I stepped in and made some electrical tweaks to reduce reflections, noise, and EMI. Suddenly the robot had much better stability and the team was able to tune the PID much more easily.

I changed the stiffness of a beam and saved another team a great deal of debugging headache.

I swapped a material on a plate and significantly improved the wireless range of another robot.

I once programmed a robot drivetrain with inspiration from torque vectoring differentials.

In a FIRST Robotics Competition, I studied the fluid dynamics of a frisbee and implemented software to autonomously launch that frisbee with the needed angle, velocity, and angular velocity based on the robot's state vector which came largely from computer vision.

Point being, robotics is all about integration. So building the broadest base of knowledge you can and thinking about problems holistically is key, and thus being ready to apply any field to your work depending on the situation, or at least speaking the language to help others apply their knowledge to the problem, is the hallmark of the roboticist.

  • $\begingroup$ Hi @Nate, Thanks for the response, its sounds like being well versed in all three areas is critical! $\endgroup$
    – JSMorgan
    Apr 28 '17 at 12:12

Not the answer you're looking for? Browse other questions tagged or ask your own question.