HORUS/blog

Sep 5, 2026 · robotics-maths · learning-robotics · beginners · robotics-careers

How Much Maths Do You Really Need for Robotics Software?

Less than you fear for most robotics software: coordinate geometry and vectors carry the everyday work, and the heavy mathematics already lives in libraries.

You need less maths than you fear for most robotics software work: coordinate geometry and vectors carry you, and the heavy mathematics lives in libraries. Almost every robot borrows its estimation and planning maths from someone else, whether that someone is ROS 2, a vendor kit, or your own code sitting on HORUS. That flips if you intend to write the estimator or the controller yourself. The rest of this post is for someone who can program, wants to build robots, and is quietly worried the maths will stop them.

You open a robotics syllabus and the first module is rigid-body transforms, the second is quaternions, the third is something called a Jacobian, and somewhere around the fourth you close the tab. Job adverts ask for a strong mathematical background without saying which parts. A tutorial you tried to follow spent forty minutes at a whiteboard before any code appeared, and the code, when it finally came, was three lines calling a library that did the whole thing for you.

Meanwhile you can build things. You have shipped software that people use, you can read a stack trace, you can hold a system in your head and reason about where it went wrong. But every robotics conversation seems to assume a course you never took, and you cannot tell whether that course is genuinely load-bearing or whether it is the robotics version of being told you must learn assembly before you are allowed to write anything.

Underneath it is a specific fear: that you will spend six months on hardware only to discover the wall was maths all along, and that everyone who is good at this had the wall knocked down for them at university.

Should you learn more maths before you start building robots?

No, start building, and let the machine tell you which maths you are missing. Mathematics learned ahead of a problem evaporates, because there is nothing to attach it to and no way to judge which parts matter. Mathematics learned because a robot is doing something visibly wrong sticks permanently, since it arrives welded to the memory of an arm swinging towards a table leg. There is a second reason, and it is the stronger one: most of the mathematics inside a working robot is already written down in libraries that other people maintain, and your job is usually to understand what a library is doing well enough to notice when it is doing it wrongly for your machine. That is a far lower bar than being able to derive the same thing from scratch. The exception is real and worth stating early. If you want to write the estimator, the controller or the planner itself, meaning the code that decides where the robot believes it is or how it ought to move, then you need the mathematics properly, and no amount of documentation reading substitutes.

What kind of maths does robot software actually use day to day?

Nearly all of it is geometry: where things are relative to each other, and how to convert one point of view into another. The camera sees a cup somewhere in front of the camera. The arm needs to know where that cup is relative to the arm's own base. The wheels know how far they have turned, and something has to convert that into where the robot now stands in a room. That conversion, performed over and over between different frames of reference, is the bulk of the everyday mathematics in robot software. Rotations are the part that catches people out, because rotations do not add up the way distances do, and turning before moving is not the same as moving before turning. Beyond geometry there is a little probability, mostly as intuition: every reading is somewhat wrong, and combining two imperfect readings sensibly gives you something better than either alone. And there are units, which sound too trivial to mention and cause more genuine failures than any theorem in the syllabus.

What are your actual routes into robotics software?

There are roughly seven routes, and they ask for wildly different amounts of mathematics. You can stay on a vendor's kit or a hobby platform and command the machine through an API that hides the geometry almost entirely. You can adopt ROS 2, the large open ecosystem where mapping, navigation, planning and drivers already exist, and where a great deal of the mathematics has been written, tested and argued over by other people for years. You can adopt HORUS, an open-source real-time robotics middleware for Rust, Python and C++ under Apache-2.0, where the three languages share the same shared-memory ring buffers, so a Python process and a C++ process on one machine exchange messages without serialising them, leaving you to supply whatever mathematics belongs to your own robot. You can learn behaviour from demonstrations instead of deriving it. You can write the estimator and the controller yourself. You can stay in simulation. Or you can work on the software around the robot, where the mathematics is ordinary.

OptionWho it is forWhat it assumes you knowWhen to pick itWhen not to
A hobby kit or vendor APIBeginners who want a machine moving this weekThe vendor's Python API and nothing elseYou want motion before you want theoryYou need behaviour the kit was never built for
ROS 2People who want mapping and planning without deriving eitherLinux, workspaces, launch files, package layoutThe robot's job matches what the packages doYou must show motion before you can learn tooling
HORUSBuilders with a Python brain and a compiled control loop on one computerYour message shapes and how your loops are scheduledLarge data crosses between languages on a single machineThe value of your project lives in ROS 2 packages
Learning behaviour from demonstrationsPeople happier with data than with derivationsTraining loops and how to collect clean demonstrationsThe task is awkward to describe in rulesThe task has a clean geometric description
Writing your own estimator or controllerEngineers who want to own the loopLinear algebra, probability, thinking in discrete stepsNothing off the shelf fits your machineYou have a deadline this quarter
Simulator-first learningPeople with no hardware yetYour simulator's API and its conventionsHardware is months awayA real machine is already sitting on the bench
Robot-adjacent softwareStrong programmers who like systems workOrdinary software engineeringYou want a robotics job without derivationsYou want to design the motion itself

What fits a self-taught programmer who dropped maths early?

Take a route where the geometry is already written, and read the library rather than deriving what the library does. A self-taught programmer usually arrives with the two things that matter most in robotics software, namely the ability to debug something that is misbehaving and the patience to isolate a problem, and is missing vocabulary rather than capability. Vocabulary is a weekend, not a degree. Learn what a coordinate frame is. Learn that a transform is a way of saying "this thing, described from over there". Learn why a rotation cannot be treated as three independent numbers you are free to average. That much lets you read almost any robotics library's documentation without drowning in it. Then go and build something that moves. The order matters enormously: people who study first tend to stop, because there is no end to the studying and no signal telling them they have had enough, while people who build first hit a specific wall, look up the specific thing, and carry on. What actually makes robotics hard to learn turns out to be mostly not the mathematics.

What maths does a small robot on one board really demand?

A small wheeled robot on a single board demands almost no mathematics beyond geometry and a feedback loop you could sketch on a napkin. Turning wheel rotations into a position, holding a heading, driving towards a point, slowing down before an obstacle: that is arithmetic and trigonometry, and libraries exist for the parts that are not. The mathematics arrives with ambition rather than with hardware. Add a map and you meet estimation, because the robot must reconcile what the wheels claim with what the sensor sees. Add an arm and you meet kinematics, because a hand position has to become joint angles, and there may be several valid answers or none at all. Add a leg and you meet dynamics, because the machine now falls over if nobody is thinking about momentum. The practical consequence for a beginner is that the difficulty of your robot is set by what you ask it to do rather than by what you spent, and a cheap machine given an ambitious task is a mathematics project wearing a hardware costume.

What if you want to be hired in robotics within a year?

Spend the year building machines that work and writing down what broke, not on a mathematics curriculum. Hiring managers for robotics software roles read a portfolio looking for evidence that you can make hardware behave: a robot that does something, a clear description of what went wrong along the way, and an honest account of how you found it. That is more persuasive than any certificate. Within that year, the mathematics worth deliberately learning is narrow. Coordinate frames and transforms. Enough linear algebra to know what a matrix is doing to a vector. Enough probability to understand why two sensors get combined rather than one being trusted outright. That list is weeks of study spread across months of building, not a subject you take full-time. What will actually cost you the offer is different: being unable to explain why your robot behaved differently on two runs, or having only ever run your code inside a simulator. What employers look for in a robotics portfolio is the more useful checklist.

What if you have only ever written Python?

Python is enough to start and enough for a great deal of serious robot work, and the mathematics does not change with the language. What changes is where the timing-sensitive parts of your robot end up living. Enormous amounts of robotics are written in Python: the tooling, the data pipelines, the model side, the scripts that make a machine perform a task. The part that tends to migrate to a compiled language is the loop that must run on a steady rhythm no matter what else the computer is doing, because a language that occasionally pauses to tidy up its own memory makes a poor host for a loop that must never pause. That is not a mathematics problem and it is not a reason to delay learning anything. Build in Python, find the specific loop that stutters, then move only that loop. Which language to learn first for robotics covers the trade in more detail than most guides bother to.

What do beginners try first, and why does it stop working?

Most beginners try to learn the mathematics up front from a textbook or a course, and it stops working within about three weeks. The reason is not difficulty. It is that the material arrives with no problem attached, so there is no way to judge what matters, no feedback when you have misunderstood something, and no reward except the next chapter. Rotations in particular refuse to be learned this way, because the thing that finally makes rotations click is watching a robot arm swing to a position that is wrong in a way you can see with your eyes. The second common attempt is copying tutorial code without touching the mathematics at all, which works beautifully right up until the day the robot is wrong and the code offers no clue why. Both failures share one cause: the mathematics and the machine were kept apart from each other. The route that works is mixing them deliberately, by building something small, breaking it, and looking up only the specific thing that broke.

What does it look like when a maths gap is genuinely the problem?

A real mathematics gap shows up as a robot that is wrong in a consistent, structured way rather than a random one. The arm reaches for a point that is mirrored, or rotated by a quarter turn, or correct near the middle of the workspace and increasingly wrong towards the edges. The map builds cleanly while the robot drives straight and smears the moment the robot turns. The estimated position drifts steadily in one direction and never in the other. Patterns like these say that something in the geometry is wrong: an axis convention, a sign, a transform applied in the wrong order, or degrees supplied where radians were expected. That is a mathematics problem, and reading the library carefully will fix it. What is not a mathematics problem: motion that stutters, results that differ between identical runs, behaviour that changes when you add a log line, or a robot that works alone and fails once another process starts. Those are timing and plumbing, and no amount of geometry will touch them.

What do you give up by borrowing other people's maths?

You give up the ability to tell when the borrowed code is quietly wrong for your machine, and that bill comes due later rather than never. A navigation stack assumes things about your robot: that the wheels do not slip much, that the sensor sees what the sensor claims to see, that the world is roughly flat. Those assumptions are usually written down somewhere in the documentation and almost never read. When one of them is false for your machine, the code does not fail loudly. It produces a map that is slightly wrong, or a path that hugs a wall for no visible reason, and you have no way to reason about the cause. You also give up flexibility at the edges. The moment your robot needs to do something the library's authors did not anticipate, you are either reading their mathematics under deadline pressure or working around it with hacks that accumulate. None of this argues for writing your own. It argues for reading the assumptions before trusting the output, which costs an afternoon.

When is ROS 2 the better choice?

ROS 2 is the better choice when the mathematics you need has already been written and tested by people who do that work professionally. Mapping and localisation are the clearest case, since writing a usable estimator from scratch is a serious project and the ecosystem contains several that thousands of robots have driven behind. Motion planning for an arm around obstacles is another. Sensor drivers are a third and less glamorous case, and often the deciding one, because the depth camera you bought may ship exactly one maintained driver and that driver may be a ROS 2 package. If your robot must map a building, plan a path and avoid a person, adopting ROS 2 is a decision to spend your learning on your own robot rather than on rewriting other people's geometry. HORUS is not the answer there. Choosing a leaner foundation in that situation means writing the estimator yourself, which is precisely the mathematics this post argues most people can happily borrow.

Do you need a degree in mathematics to work in robotics?

No, and here is why: the mathematics used in most robotics software jobs is a small and stable set that is documented everywhere, and a degree is a slow way to acquire it. A degree gives you range you will mostly not use, and it does not give you the two things that actually gate the work, which are the habit of assuming every reading might be missing and the patience to reproduce a failure that happened exactly once. Teams do hire mathematicians and physicists, and those people are genuinely valuable on the estimation and control side, where deriving something new is the job rather than a detour from it. That is one part of a robotics organisation. The rest of it, meaning drivers, integration, tooling, data, deployment and the code deciding what to do when a sensor stops answering, is software engineering with geometry in it. Read a few job adverts closely and you can usually tell which kind of role is on offer. Whether you need a robotics degree is the longer version of this answer.

Can an AI assistant do the maths for you?

Partly, but not the way you think. An assistant is genuinely good at the mechanical parts: writing the transform code, remembering the argument order of a library call, converting between conventions, and explaining the same formula patiently as many times as you need to hear it. That is a real change in what a beginner can attempt, and it removes much of the tedium that used to stop people early. What an assistant does not do is notice that the answer is wrong. Robotics mathematics fails silently, with a flipped sign, a frame applied in the wrong order, or degrees where radians belong, and the code runs perfectly while moving the arm to the wrong place. Judging that output needs exactly the understanding you were hoping to skip. The workable shape is an assistant writing the geometry while you own the checking: know roughly what the answer should look like, test on cases you can verify by eye, and never let generated code drive hardware unwatched.

How do you tell whether maths is your actual bottleneck?

Check whether your robot is wrong in the same way every time, because consistency is what separates a mathematics problem from everything else. Wrong the same way on every run points at geometry, conventions or units, and the fix is understanding rather than engineering. Wrong differently each run points at timing, ordering or missing data, and no amount of study will help you there. Then ask a second question: could you say out loud, in plain words, what the number your code just produced is supposed to mean? If yes, and the number is still wrong, you have an ordinary bug. If no, you have found the specific gap worth closing, and that gap is almost always narrower than the word "maths" suggests. People overwhelmingly overestimate this. The honest experience of most robotics software engineers is that they use a modest amount of geometry constantly, reach for probability occasionally, look up everything else when it appears, and spend their hard days on missing readings and stubborn machines instead.

Decide by where you want to spend the next year:

When the foundation question arrives, weigh it on the five axes of the HORUS Fit Framework: ecosystem size, setup effort, team size fit, deployment target, and licence. No scores and no league table, just the option that loses on the fewest axes for the robot in front of you. And if the part of robotics that pulls you in turns out to be making a Python brain and a compiled loop share one computer without tripping over each other, star HORUS on GitHub so it is in your list when you start building.

Found this useful? Share it:Discuss on HNShare on X