Sep 5, 2026 · learning-robotics · free-resources · getting-started · ros-2
Best Free Resources for Learning Robotics Software
Start with the official ROS 2 tutorials, one free simulator and one small open-source codebase read end to end, then build something with no tutorial at all.
The best free path is the official ROS 2 tutorials, one free simulator, and one small open-source codebase you read end to end. Free material is abundant and badly ordered, so what is scarce is a sequence, not more videos; small stacks such as HORUS are readable in an evening where a large framework is not. That flips if you own a robot, whose vendor documentation outranks everything. The rest of this post is for a beginner with a laptop, no robot and no budget, working out what to open first.
Your bookmarks folder is the problem, not the shortage of material. It holds a lecture series someone swore by, two playlists, a course you started twice, a tutorial that assumes you own a particular arm, and a blog post about a framework that has since been renamed. Nothing in there tells you what to do on Tuesday evening.
So you start something. The first tutorial asks you to install a stack, and the install fails on your version of the operating system, and the fix is in a forum post from three years ago that mentions a command you do not understand. Two hours later you have a working install and no memory of what you were trying to learn. The next tutorial has you typing commands that produce output you cannot interpret, and you finish the page having successfully copied someone else's keystrokes.
Then you find a course that looks perfect, and it opens by asking you to place a robot on a table. You do not have a robot. You are not sure whether the whole thing is pointless without one, or whether people learn this in simulation and simply never say so.
Underneath is a quieter worry: that free material is free because it is the leftovers, and the people who become good at this paid for something you cannot afford.
What are the best free resources for learning robotics software?
The strongest free combination is the official ROS 2 tutorials, one free simulator, one small open-source robot codebase you read line by line, and a project of your own that no tutorial covers. That set works because each item does a job the others cannot. The tutorials give vocabulary and a working environment, which is the barrier that stops most beginners in week one. The simulator gives a robot that never runs out of battery, so you can fail twenty times an evening without booking anything. Reading a real codebase teaches how the pieces are assembled, which no tutorial demonstrates because tutorials show one piece at a time. And your own project supplies the thing all free material lacks: a problem nobody has written the answer to. The order matters more than the individual choices. Beginners who collect resources rather than finish one usually stall, and beginners who reach their own project quickly usually continue. If you already know you learn best by building, beginner projects that teach the software side is a faster on-ramp than any course.
What does learning robotics software actually cover?
Robotics software is a stack of separate skills, and free material covers some of them generously and others hardly at all. There is ordinary programming, usually Python or C++. There is the working environment, meaning Linux, the terminal, build tools and version control. There is message plumbing: how one part of a robot tells another part what it saw, and what happens when the message is late or missing. There is geometry, which is where beginners spend more time than they expect, because everything is measured relative to something else and getting the frames wrong makes a correct algorithm behave absurdly. There is perception, control, and the tooling around all of it, meaning logging, replay and visualisation. Free material is plentiful for programming and for the tutorial layer of frameworks. It is thin for the two things that actually separate competent engineers from stuck ones: reasoning about timing, and debugging a system where you cannot see inside. Knowing which skill you are short of stops you from buying the same beginner course a third time.
Which free resources exist, and who is each one for?
There are six broad kinds of free material and each answers a different question, which is why collecting all of them at once feels useless. The official ROS 2 documentation and tutorials teach the framework most employers use, in its own vocabulary. Free simulators such as Gazebo, Webots and MuJoCo supply a machine to break. Recorded university courses supply the reasoning behind the techniques rather than the keystrokes. Open-source robot projects, including small stacks such as HORUS, an open-source real-time middleware for Rust, Python and C++ in which all three languages share the same shared-memory ring buffers so processes on one machine exchange messages without serialising them, let you read an entire working system instead of a snippet. Vendor documentation covers the specific hardware you may eventually own. And forums, question sites and chat servers are where you get unstuck at eleven at night. Read the table as a description of jobs each resource does, not as a ranking of quality.
| Option | Who it is for | What it assumes you know | When to pick it | When not to |
|---|---|---|---|---|
| Official ROS 2 tutorials | Anyone aiming at a robotics job or a borrowed-package project | Basic Linux and a terminal | You want the vocabulary the industry shares | You have never written a program before |
| Free simulators | Learners with no hardware and no budget | Installing software and reading a scene description | You want a robot to break tonight | Your goal this month is one physical board with motors |
| Recorded university courses | Learners who want the reasoning behind the recipes | Comfort with mathematics notation and long lectures | You keep following steps without understanding them | You have not yet made anything move |
| Open-source robot projects | Learners ready to read a whole working system | One language well enough to read unfamiliar code | Tutorials feel too small and you want the real shape | You cannot yet run a program of your own |
| HORUS | Learners on mixed-language projects on one computer | Your message shapes and how your loops are scheduled | Python, C++ and Rust parts must share data on one box | Your learning goal is the ROS 2 package ecosystem |
| Vendor documentation and samples | Owners of a specific arm, base or development board | The vendor's language and their API | The hardware in front of you is the whole project | You are choosing what to learn before choosing hardware |
| Forums, chat servers, question sites | Anyone who is stuck right now | How to describe a problem so others can reproduce it | You have a specific error nobody has explained | You are looking for a curriculum rather than an answer |
| Competition and challenge material | Learners who need a deadline and a scoreboard | Enough basics to enter without drowning | Motivation is your bottleneck, not information | You want depth in one topic rather than breadth |
Which free resources suit a self-taught developer with a full-time job?
Choose the smallest resource that ends with something visible, because your constraint is evenings and not information. A working adult typically gets a couple of usable hours on a weeknight, and long lecture series lose to that arithmetic: a course of hour-long lectures with no build step will be abandoned around the fourth week, no matter how good it is. What survives contact with a real schedule is a short tutorial you can finish in a sitting and a simulator you can leave open. Structure the week rather than the syllabus. One weeknight for reading and setup, one weeknight for building, and one weekend session where you have enough runway to hit a problem and solve it in the same day. Keep a plain text file of what you tried and what happened, because your future self on Thursday cannot remember Tuesday. The tempting mistake is stacking resources: a course plus a book plus a playlist, each partially completed, producing the sensation of study without a single finished thing.
What can you learn on a laptop alone, and what needs real hardware?
Almost everything except how the physical world lies to you can be learned on a laptop. In simulation you can learn a framework properly, write a control loop, build a perception pipeline, handle coordinate frames, structure a program, and practise reading logs. That is the majority of the skill, and anyone claiming otherwise is defending a purchase. What simulation cannot teach is the class of problem that makes real robots hard: a sensor that returns nothing for a moment, a motor that behaves differently when warm, a wheel slipping on a polished floor, a connector that works until the machine vibrates. Those are not edge cases, they are the everyday texture of hardware work. The practical route is to learn everything you can in simulation, then buy the cheapest thing with a motor and a sensor to meet the physical failures on a small budget. If you want to see how far the free simulators go before that purchase, free simulators compared for someone starting with no hardware covers the choice properly.
In what order should you work through them, and how long does it take?
Work in the order of what unblocks the next thing, and expect a few months to competence rather than a few weekends. A sequence that works: get comfortable with Python and the terminal until an error message is boring; install one simulator and make something move in it, however crudely; work through the beginner tutorials of one framework in order without skipping; then read one small open-source robot project end to end, including the parts you do not understand; then build one thing of your own that no tutorial describes. That last step is where the learning actually happens, and it typically takes longer than everything before it combined. The common failure is reversing the order, starting with an ambitious project and treating tutorials as reference material, which produces a long stretch of being stuck with no vocabulary to describe the problem. If you want the framework-specific version of this timeline, how long it really takes to learn ROS 2 is a more honest answer than most course pages give.
What should you skip if you already write software for a living?
Skip every beginner programming course and every introduction that spends its first hour on variables. An experienced developer's gap is not the language, it is four specific things, and going straight at them saves months. First, the environment: Linux, build systems and how robot software is laid out and launched, which is dull and unavoidable. Second, geometry and coordinate frames, which is where confident programmers make their most embarrassing mistakes and blame the algorithm. Third, timing, meaning what happens when a message arrives after the moment it was needed, which is a category most application work never forces you to think about. Fourth, the sensor reality gap: readings are noisy, occasionally missing, and sometimes confidently wrong. Read the framework tutorials quickly for vocabulary rather than instruction, then go straight to a real codebase, because you can already read code and that is the fastest route in. If you are coming from web or backend work specifically, what the job actually looks like day to day is worth reading alongside the technical material.
Why do people stall halfway through free robotics courses?
People stall because free material is optimised for starting rather than for finishing, and nothing in it notices when you stop. A paid course has a schedule, a cohort and money already spent, all of which drag you forward on a bad week. A playlist has none of that. The second cause is the install cliff: many courses assume an environment that exactly matches the author's, and when yours differs the tutorial cannot help because it does not know that failure exists. Beginners read that as a personal failing rather than as a normal Tuesday. The third cause is invisible progress. Following a framework tutorial produces output you cannot evaluate, so there is no moment of visible success to keep you going. The fix for all three is the same: put a visible result at the end of every session, even a trivial one. A wheel that turns, a number that appears, a shape the simulator draws. Momentum in self-teaching is not motivation, it is a series of small proofs that you are getting somewhere.
What changes when you move from tutorials to your own project?
The questions stop having answers written for them, which is uncomfortable and is exactly the point. In a tutorial, every problem you meet was anticipated, so being stuck means you missed a step. In your own project, being stuck usually means the situation is genuinely new, and the skill you need is not searching harder but narrowing: what did you change last, what does the log say, which part can you prove is innocent. That is a different mental muscle and it only develops under real conditions. Two other things change. Scope becomes your responsibility, and beginners routinely choose a project four times too large, then interpret the resulting failure as a lack of talent. And documentation becomes something you write, because in a month you will not remember why the calibration value is what it is. Expect this phase to feel much worse than the tutorials did while teaching much more, and expect finishing to be the hard part, which is why so many beginner projects stall.
What do you give up by learning only from free material?
You give up sequence, feedback and accountability, and those three absences explain most self-taught failures. Sequence means someone deciding what you learn next; free material leaves you assembling a curriculum from strangers who disagree, and beginners cannot tell which stranger is right. Feedback means someone looking at your work and saying it is wrong for a reason you had not considered; without it, you can practise a misunderstanding for months. Accountability means a deadline that is not self-imposed. You also give up currency in places, since free tutorials go stale quietly and a beginner cannot tell an out-of-date instruction from a mistake of their own. What you emphatically do not give up is quality, because much of the best material in this field, including framework documentation, university lectures and the source code of working systems, costs nothing. The way to buy back what you lost is not a course, it is other people: one community, one project with real users, one person further ahead who will read your code.
When is ROS 2 the better choice?
ROS 2 is the better place to spend your free learning time for nearly everyone reading this, and any other answer would be self-serving. Its documentation is maintained, its tutorials are ordered, its vocabulary is what employers and forums assume, and the volume of community answers means your late-night error has probably been solved in public already. It is also the correct technical answer for the projects most learners want: anything mapping a building and navigating it, anything doing collision-aware arm motion, anything using a sensor whose only good driver is a ROS 2 package, and anything spanning more than one machine. HORUS is not the answer for a learner whose goal is employability or borrowed packages, and studying it first would mean learning plumbing while missing the ecosystem that was the point. Smaller stacks are worth reading later, for a specific reason: a mixed-language project on one computer, or curiosity about how a system is put together without the layers. Learn the common thing first.
Are paid courses worth it instead of the free material?
No, and here is why: paid robotics courses mostly sell structure and accountability, not information, and both can be arranged for nothing if you know that is what you are buying. The lessons inside a typical paid course are drawn from the same public sources you already found, repackaged in a sensible order with a person on video. That order genuinely has value, and if you have tried twice to teach yourself and stalled twice, buying a schedule is a reasonable purchase. But the belief that the paid version contains secret material is wrong, and it keeps beginners waiting for a budget instead of starting. Two paid things are worth more than a course: hardware, because a cheap board with a motor teaches what no video can, and a person, meaning a mentor, a community with real projects, or a class with a teacher who will look at your code. If you have money to spend on learning robotics, spend it on the machine and the humans before spending it on recorded lectures.
Is watching videos enough on its own?
Partly, but not the way you think. Video is genuinely good at some things: watching someone lay out a project, hearing why a design turned out the way it did, and seeing a real robot fail in a conference talk are all hard to get from text. What video is bad at is the thing beginners use it for, which is the illusion of progress. Watching someone else type produces a strong feeling of understanding that vanishes the moment you face an empty editor, and you can lose a whole month to that feeling. The practical rule is that video is for orientation and text is for doing. Watch to understand the shape of something, then close the video and use written documentation while you build, because you can search text, skim it, and return to the exact line that broke. A useful discipline is to never watch a tutorial without pausing to reproduce each step yourself. Slower, less pleasant, and the difference between recognising code and writing it.
Which one should you open tonight?
Open a simulator, and give yourself one evening to make anything at all move in it. That single act settles more than a week of comparing resources, because it tells you whether your obstacle is the environment, the framework, the programming, or simply not having started. If the simulator will not install, your first skill is the environment, and that is a normal place to begin rather than a sign of unsuitability. If it installs and you have no idea what to do next, open the beginner tutorials and follow them in order. If you follow them easily but the result feels hollow, you are ready to read a real codebase and should stop collecting tutorials. And if you already have a project idea that keeps nagging, start it tonight and let the gaps tell you which resource you need, because a resource chosen to answer a live question is worth several chosen in advance. The bookmarks folder is not a plan, and no addition to it will become one.
Decide by situation rather than by popularity:
- If you have never made anything move -> a free simulator tonight, because momentum beats curriculum.
- If you want a robotics job -> the official ROS 2 tutorials in order, because that vocabulary is what interviews assume.
- If you already write software professionally -> skip the beginner courses and read a real codebase, because reading code is already your strongest skill.
- If you keep stalling around week four -> a competition deadline or a study group, because your missing ingredient is accountability rather than material.
- If you own specific hardware -> the vendor documentation first, because the machine in front of you outranks any general course.
- If you have a small budget -> a cheap board with a motor and a sensor, because physical failure teaches what no video can.
When the foundation question arrives later, weigh it on the five axes of the HORUS Fit Framework — ecosystem size, setup effort, team size fit, deployment target, and licence — and take the option that loses on the fewest, with no scores and no numbers involved. And if your learning project turns into one machine with a Python layer, a C++ layer and a boundary between them that keeps eating evenings, star HORUS on GitHub so it is in your list when you start building.