HORUS/blog

Sep 5, 2026 · beginner-robotics · ros-2 · robotics-middleware · learning-robotics

Is There a Simpler Version of ROS 2 for Beginners?

No, ROS 2 ships no beginner edition. The simpler starting points are a plain Python program, your kit's own toolkit, or a lighter middleware.

No, ROS 2 has no beginner edition, and the simpler routes are a single Python program, your kit's own toolkit, or a smaller middleware. What makes ROS 2 hard is not its code but everything you must set up before a wheel turns, which is why a lighter option such as HORUS feels easier to start. The condition that flips this: if you need borrowed mapping or navigation, learn ROS 2. The rest of this post is for someone on their first or second robot who opened a ROS 2 tutorial, felt lost, and wants to know what else exists.

You wanted to make a robot move. You bought a small board, two motors and a distance sensor, and someone told you the real way to do this is ROS. So you opened the documentation, and three hours later you had installed something, created a workspace, learned that a workspace needs building, hit an error about sourcing a file, fixed that, hit another about a message type you had not knowingly asked for, and the motors still had not turned once.

You are not sure whether you are missing something obvious or whether this is simply normal. Every tutorial assumes you already know what a node is, why there is a build step for a Python file, and which of the four things with almost the same name you were supposed to install. The forum answers come from people on a different version and a different machine, and they end with "should work now". Meanwhile the short script you wrote on the first evening, the one that just spun a wheel, still works perfectly. You cannot tell whether keeping it is sensible or whether you are avoiding the thing you are supposed to be learning.

Is there a simpler version of ROS 2 for beginners?

No. ROS 2 ships no lite edition, no beginner mode and no cut-down build, and the closest thing to one is deciding to use a smaller part of it. The difficulty people hit is not the code they write; a small publisher in Python is a handful of lines and reads fine. The difficulty is everything standing between installing ROS 2 and watching those lines run: a workspace, a build step even for Python, a file you must load into every new terminal, message definitions, launch files, and a vocabulary where several different things are called almost the same word. None of that is a failure of understanding on your part, and in a normal setup none of it is optional.

There is a version aimed at microcontrollers, and beginners often hear the name and hope it is the easy one. It is not. That version adds a helper process on the main computer and a cross-compiling toolchain to the pile, which is more to learn rather than less. So the useful question is not which ROS 2 is simpler. It is whether your robot needs ROS 2 at all yet, and for most first robots the honest answer is no.

What does a robotics framework actually do for you?

A robotics framework does four jobs, and only one of them is about making your motors turn. First, it carries data between separate programs, so a camera program and a wheel program each run at their own pace without one waiting for the other. Second, it fixes a shared vocabulary, so any two programs mean the same thing by a distance reading or a steering command, and any tool can display either. Third, it starts and stops a whole group of programs together with their settings, so a robot made of eight running pieces comes up the same way every time. Fourth, and this is where the real value sits, it gives you other people's finished work: mapping, navigation, arm planning, sensor drivers, visualisation.

The price is that you accept its way of laying out a project. Your code lives in its workspace, is built by its tools and is described in its files. For a robot with one program and one job, that is entirely cost and no benefit. For a robot that has to build a map of your flat and drive to the kitchen, it is one of the better bargains in software.

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

Almost every beginner writes one loop that reads a sensor, decides something, drives the motors and repeats, and that loop stops being enough the day one step inside it starts taking its time. The first script is not a mistake. It is genuinely the right way to begin, and plenty of working robots never become anything else. The trouble arrives with a camera, or a network connection, or the log file you started writing. Suddenly the wheels keep turning for a moment while the program is busy elsewhere, and the robot clips the chair leg it used to avoid.

The first repair is to do the slow thing less often, and that works. The second is a thread and a shared variable, which works until it does not, in a way that only shows up while the robot is moving. The third is a second script and a socket between them, which works until you want a third script and find yourself inventing message formats. Each step is reasonable on its own. Together they are you building a small framework by hand, without meaning to, while also trying to build a robot.

What are your actual simpler options?

You have seven realistic starting points, and the common mistake is treating the largest one as the default. You can write a single program in Python or C++ with no framework at all, talking straight to the hardware. You can skip the small computer entirely and put a sketch on a microcontroller that drives the motors directly. You can use the toolkit that came with your kit, arm or rover, which handles everything the vendor sold you and nothing beyond it. You can use a thin slice of ROS 2: one language, two or three nodes, no borrowed packages, treating it purely as a way to pass messages. You can go all in on ROS 2 and take the mapping, navigation and driver packages with it. You can use a lighter middleware meant for programs sharing one computer, such as HORUS, an open-source real-time robotics middleware for Rust, Python and C++ where the three languages share the same shared-memory ring buffers, so messages between processes on one machine are not serialised, which suits a Python brain sitting above a Rust or C++ loop and asks much less setup than ROS 2 before anything runs. Or you can use a general message broker such as MQTT, already familiar to anyone who has done home automation.

How do those options compare side by side?

They differ in two things that matter to a beginner: how much you must learn before the robot moves, and how much finished work you can borrow afterwards. Find the row that matches your situation this month rather than the one that matches the robot you imagine in a year.

OptionWho it is forWhat it assumes you knowWhen to pick itWhen not to
One Python programAnyone on a first robotPython and a hardware libraryEvery step finishes before the next reading mattersOne slow job is making another job wait
A microcontroller sketchBuilders with motors, servos and simple sensorsThe board's editor and a little CThe robot needs timing more than thinkingThe robot needs a camera or heavy computation
Your kit's own toolkitOwners of a complete arm, rover or humanoid kitOnly the vendor's guideThe kit already does what the project needsYou add hardware the vendor never sold
A thin slice of ROS 2Learners who want the vocabulary without the ecosystemLinux, terminals, one build stepYou will move to full ROS 2 later and want a head startYou wanted less to learn, not a smaller amount of more
Full ROS 2Builders who need mapping, navigation or a specific driverLinux, workspaces, message types, launch filesBorrowed packages are most of the robot's valueYou want something moving in three evenings
HORUSBeginners whose robot has grown into a Python brain plus a timed loopYour message shapes and how your loops are timedSeveral programs on one computer share data while the robot movesYou need many borrowed packages or several computers
A general message brokerPeople arriving from web or home-automation workBrokers, topics, message formatsParts are spread over a network and timing is looseA control loop depends on messages arriving in time

Nothing here is permanent. Every row on this table has been somebody's first choice and somebody else's second.

Which option fits if you are learning alone at a kitchen table?

Write one program with no framework, and let the robot tell you when that has stopped being enough. Working alone, your scarcest resource is momentum, and every evening spent on a build system is an evening not spent discovering that your distance sensor reports nonsense on dark carpet, that one motor is slightly stronger than the other, and that your robot drifts left on the rug and not on the floorboards. Those discoveries are the actual content of robotics, and a framework sits between you and all of them at the exact moment you can least afford the distance.

Protect yourself with habits instead of tools. Read the sensor in one function, decide in a second, drive the motors in a third, and never let the deciding function reach out and touch hardware. That costs nothing today, and it means the day you split the program into separate pieces you are moving functions rather than untangling them. If you want the fuller argument for waiting, whether beginners need middleware at all is worth an evening before you commit.

What if your robot is a small board with two motors and a camera?

That combination is where a framework starts to earn its place and the largest framework starts to hurt. A camera hands you frames on its own schedule whether or not you are ready, and motors want attention on a rhythm; put both in one loop and every frame becomes a small hesitation you can see in how the robot moves. So this robot genuinely wants two programs, one thinking and one keeping time, which is the problem middleware exists to solve.

What it does not need is a network. Both programs live on the same small computer, so anything that carries data between them over a network stack is doing extra work for no reason, and on a modest board that work competes with the thinking you actually wanted. Full ROS 2 is also a heavy tenant on a small board: the install, the build and the background processes all take a share of a machine that has little to spare. A lighter option built for one computer fits this shape better, and what to use instead of ROS 2 on a small robot goes through the candidates properly.

What if you only have a few weekends before you need it working?

Then do not learn ROS 2 now. A few weekends is enough time to build a small robot that works, or enough time to install and understand ROS 2, but not both, and the version of you that has a working robot will learn ROS 2 far faster later because every concept will map onto a problem already met in person. Pick the thing you can already write and spend the weekends on the robot.

This is not a shortcut you pay for afterwards. A robot that drives around badly, in code you wrote yourself, is a much better teacher than a tutorial workspace that builds cleanly and does nothing. You will discover which of your assumptions about the hardware were wrong, which is knowledge no framework supplies. Write down the compromises you made under time pressure, so that later you know which lines were decisions and which were patches. Then, when nothing is at stake, restructure at your own pace. Deadlines and new frameworks are a famously poor combination, and the failure is always the same: the plumbing breaks in a way you have never debugged, on the evening before it matters.

What if you have never used Linux or a terminal?

Then ROS 2 is the wrong first step this month, because you would be learning two hard things at once and only one of them is robotics. ROS 2 assumes terminal comfort at every turn: paths, environment files, package managers, permissions on serial devices, several windows open at once. None of that is beyond you, but all of it arrives before the robot moves, and beginners who quit usually quit somewhere in that stretch rather than at anything to do with robots.

There is a sensible order. Learn the terminal on its own, in a week where nothing else is new, until moving around directories and reading an error message feel ordinary. Build your first robot in whatever environment you already have, including Windows or macOS, using a microcontroller board or a plain Python script. Then, when a project genuinely needs borrowed packages, take on Linux and ROS 2 as one deliberate project rather than as an ambush. What your options are on Windows and macOS covers the middle ground, including the arrangements that half work and why they frustrate people.

What do you give up by not starting with ROS 2?

You give up other people's finished work, and that is a genuine loss rather than a rhetorical one. Mapping a room, planning a path around furniture, planning an arm movement that avoids the table, calibrating a camera against a laser scanner: these are hard problems that many capable people have already solved inside ROS 2 packages, and outside that ecosystem you either write them yourself or do without. You also give up the tools that come free with the framework: the ability to record everything the robot saw during a run and replay it at your desk, and a viewer that draws what the robot believes about the world.

Two smaller losses are worth naming. When you ask for help, ROS 2 gives you a shared vocabulary, so strangers can picture your setup from three sentences; without it, every question starts with a paragraph of explanation. And job adverts name ROS more than anything else, so skipping it entirely leaves a gap you will eventually want to fill. None of this argues for starting there. It argues for being clear about what waiting costs.

When is ROS 2 the better choice?

ROS 2 is the better choice the moment your robot needs something other people have already built. A machine that must map a room and drive to a chosen spot is a ROS 2 project, because mapping and navigation represent years of work that nobody reproduces in evenings. If the sensor you bought ships only a ROS 2 driver, that settles it too. ROS 2 also wins when your robot spans more than one computer, when you want to record a run and replay it later, when you are heading for a lab or a job where ROS 2 is simply what everyone speaks, and when you want an answer to a strange problem to already exist somewhere on the internet.

HORUS is not the answer for those projects, and choosing it there means rebuilding, alone, work that thousands of people have already debugged together. The cost of ROS 2 is equally worth stating plainly: a substantial stretch of learning before your robot does anything new, a strong preference for Linux, and a habit of breaking in ways that require understanding the whole machine rather than one file.

Is ROS 2 only hard because the documentation is bad?

No, and here is why: the documentation is uneven in places, but the difficulty survives even the parts that are written well. What you are learning is a distributed system, and distributed systems are hard in a way that no tutorial can smooth away. Two programs that were never introduced must find each other, agree on the shape of the data they exchange, and behave sensibly when one of them is slower, restarts, or was never started at all. Every framework that solves that problem has the same shape of difficulty underneath.

Three things make it feel worse than it is. Versions matter enormously, so an answer written for one release quietly fails on another, and beginners cannot tell the difference between old advice and wrong advice, which is also why an assistant's robot advice stops working so often. The tooling is layered, so an error can come from your code, the build system, the message layer or the network settings, and the message rarely says which. And the vocabulary overlaps confusingly with ordinary English. The specific things that trip newcomers up is a more useful list than any general complaint.

Will starting somewhere simpler hurt your chances of a robotics job?

Partly, but not the way you think. Job adverts do name ROS, and a team that runs on it will expect you to learn it, so pretending the ecosystem does not matter would be dishonest. What does not happen is anybody rejecting a candidate for having built their first robot without a framework. What gets people hired is a robot that works, and the ability to explain why it works, which parts were hard, and what you would do differently.

The gap that actually hurts is different from the one people worry about. It is not missing ROS 2 on your list of tools; that can be picked up in a focused month once you understand what problem it solves. It is having only ever followed tutorials, so you have never debugged something nobody wrote about. A slightly messy robot you built and fixed yourself demonstrates more than a clean tutorial workspace, because the interview questions are all about the messy parts. Learn the ecosystem eventually, for real reasons. Do not learn it early out of fear.

How do you decide where to start?

Count how many things on your robot must happen without waiting for each other, and if the answer is one, start with one program and no framework. That single test settles most cases. Then ask a second question: how much of your robot's value comes from work other people have already done? If the answer is most of it, because you need a map of a room or a specific sensor driver, ROS 2 is where to go and the setup is the entry fee. If the answer is very little, because your robot is your own idea driving your own hardware, the framework is buying you plumbing you could get more cheaply elsewhere.

The third question is about you rather than the robot: how much patience do you have for setup before something moves? Answer honestly. A beginner who needs visible progress every evening and picks a large framework will usually stop altogether, and a stopped project teaches nothing.

Decide by situation rather than by what sounds serious:

When two options stay close, weigh them on the five axes of the HORUS Fit Framework: ecosystem size, setup effort, team size fit, deployment target, and licence. No scores and no numbers, just five honest questions about your situation rather than about the software. And when your first robot does outgrow its single script, star HORUS on GitHub so it is in your list when you start building.

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