A beginning graduate student in robotics asked me the areas of mathematics that he should brush up on (prerequisites) to begin a masters research program in robotics. What are some good materials/books that are indispensable for a research student? Which ones should we suggest in order that the student develops a solid foundation in robotics?
Other answers are correct: It depends on where you are focusing, and what your topic will be. However, there are some common themes. I would say that a minor in mathematics from a decent university should cover the bases.
I would strongly recommend the following, based on my experience:
- Linear Algebra, at least one or two semesters. Plan on taking refresher courses and specializing if necessary. Because robots operate in the world, and the world is defined by coordinate frames, knowing something about matrix multiplication, inverses, rank, affine and projective transformations, etc is extremely helpful.
- Calculus, at least 3 semesters.
- Some numerical analysis, because robots use computers.
- Probabilities and Statistics, at least 1 semester, though this is becoming increasingly important
For my subfield (Algorithmic Robotics), the following things are very helpful:
- Algorithms and Data Structures, at least 2 semesters
- Formal Theory of Computation (Hardness and mappings of problems), at least one semester
- Matrix Theory, (another semester of a specialized linear algebra)
- Discrete Math (graphs, counting and enumueration), at least 1 semester,
This depends heavily on what the research topic will be on. For example, is it:
- image processing, machine vision...
- path planning
- robotic manipulators?
Without knowing the area of research, it is not simple to know what mathematics will be required. Having said that, any mathematics required is taught during undergraduate studies anyways, so there are no real requirements. Any domain-specific mathematics generally just needs basic knowledge of matrix algebra to build on top of.
Some programming experience is likely to be required as well.
Since robotics is a combination of Electrical, Mechanical and Software Engineering the maths for those fields is obviously relevant. On top of that I would argue that in robotics it is very helpful to have good knowledge of linear algebra, probability and control theory. A good grasp of mechanics obviously helps as well.
A good approach would just be to research robotics programs and see what books they have for different classes that could help build a foundation. Personally I've used this book for a robotics/mechatronics class but it was for undergrad
If you want to build more than a foundation, it would be wise to look up top schools in robotics and find out what books they use. Most would be in syllabus that can be found by searching the school, class title and maybe a current professors name.
I'll add my $0.02. As other answers have said, it matters what you're studying. The more comfortable you are with the mathematics, the easier it will be to understand the concepts so I'd bias heavily on the math as an undergrad, expecially IF you're expecting to go to grad school and do research in robotics.
- Linear algebra, 2 semesters
- Differential equations.
- Calculus, 3 semesters -- certainly through vector calculus, ideally with exposure to high dimensions (generalized Stokes' Theorem, differential forms, exterior algebra, etc)
- Real analysis. Good intro to proof-based math and provides a basis for high-level math
- Probability theory, 2 semesters. Ideally with some exposure to modern measure theory.
- Differential geometry (if you want to do path planning, geometric control, etc)
- Group theory, especially on Lie groups
You'll also want to take grad-level math courses in matrix analysis and maybe probability theory. My very favorite math class and book is Horn and Johnson's Matrix Analysis.
This list excludes non-math classes with a heavy math component like Lagrangian mechanics, data structures, algorithms, signals and systems, state-space control theory, etc.
In my humble opinion, a double major in CS and physics with classes in mechatronics and controls the ME/EE department would probably serve you best. You'll have a good grasp of the theory and then you can spend your summer internships getting practical experience.
The Springer Handbook of Robotics is a good resource that explains what the requirements are for any particular robotic field you want to specialize in.