HORUS/blog

Sep 5, 2026 · beginner-robotics · learning-robotics · robot-projects · ros-2

Robotics Projects for Beginners That Teach the Software Side

A wheeled robot built in five stages teaches more software than any kit. Here are the beginner projects ranked, what to build them on, and when ROS 2 wins.

Build a wheeled robot that avoids obstacles and then maps a room, in stages, on plain Python before ROS 2 or HORUS. Staged projects teach software because each stage breaks the one before it and forces a fix you keep. That flips if you already know why your program stalls under load, in which case a simulated arm teaches more per evening than another rover. The rest of this post ranks the projects worth your first few months and says plainly which one suits which kind of beginner.

You want to build robots and you can already write code, so the advice you get feels wrong in a way you cannot quite name. Buy this kit. Follow this tutorial. Learn this framework. You do the tutorial, the robot drives in a square, and you have learned nothing you could not have read on the train.

The kits are the worst of it. A box arrives, you follow twenty photographs, and at the end there is a rover on the carpet responding to a phone app somebody else wrote. It works. You could not change it. Nothing in the process asked you to decide anything, and the moment you want the robot to do something the instructions did not cover, you are back at the beginning.

Meanwhile the forums argue about frameworks, and every answer assumes you have already picked a project. You have not. You have a laptop, a modest budget, some free evenings, and a suspicion that the interesting half of robotics is the software, with no idea which project would actually make you learn it.

Which beginner project teaches the most software?

A small wheeled robot built in five stages teaches more software than any other beginner project, because each stage breaks the one before it. Stage one, the robot drives when your own code says so, not when an app does. Stage two, it reads a distance sensor and reports what it sees. Stage three, it stops before it hits the table leg, which is the first time your code has to act faster than you can watch it. Stage four, it follows a route you gave it and notices when it has drifted off that route. Stage five, it builds a rough picture of the room and uses that picture to choose where to go next. Every stage adds one hard idea — timing, sensing, reacting, state, memory — and every stage breaks something that worked the week before. That breaking is the teaching. A kit that arrives already working skips all five, which is why people finish one feeling they learned assembly rather than software.

What does the software side of robotics actually mean?

The software side is everything between a sensor reading and a motor command, and almost none of it looks like the code you have written before. Four things live in that gap. Reading sensors on a rhythm, so measurements arrive before the decision that needs them. Deciding, which is the part that resembles ordinary programming. Getting the decision to the hardware before it goes stale, which is where most beginners are caught out. And noticing when any of the first three did not happen, which turns out to be most of the code in a machine that works. The mechanical side is brackets, motors and wiring, and you can buy your way past a good deal of it. The model side is data and training, and you can borrow your way past most of it for a while. The software side is the part nobody can hand you finished, because it is specific to your machine, your sensors, and what you decided the robot should do when a wheel slips.

What do you actually build a beginner robot project on?

You have about eight foundations to choose between, and the honest answer for most beginners is the plainest one on the list. A single Python script on a small computer will carry a rover through the first three stages and part of the fourth, and it will then fail in a way that teaches you exactly why the other options exist: one loop trying to read a camera and hold a wheel speed at the same time, doing neither when it should. When that day arrives there are two sensible directions. ROS 2 gives you a large ecosystem, published drivers, navigation and simulation, at the price of a vocabulary you must learn before anything runs, while HORUS, an open-source Apache-2.0 middleware for Rust, Python and C++ whose three languages share the same shared-memory ring buffers, suits a first robot that has become several processes on one small computer where a Python script and a C++ loop need to see the same data. Read the rows below as situations rather than a scoreboard.

OptionWho it is forWhat it assumes you knowWhen to pick itWhen not to
One Python script on a small computerAlmost every first-time builderEnough Python to write a loop and call a libraryStages one to four of a rover, and every early experimentThe camera and the wheels are fighting over one loop
A microcontroller sketchPeople who like wiring and want motion tonightReading a datasheet and flashing a boardBalancing, line following, anything with no cameraThe project needs a map, a model or a filesystem
A simulator with no hardware at allAnyone with a laptop and no budget yetInstalling a large program and reading its examplesLearning the software half before spending moneyThe lesson you want is slip, glare, wear or drift
ROS 2Beginners aiming at a job, a lab or a clubWorkspaces, build tools and a message vocabularyMapping, navigation, published drivers, shared vocabularyNothing moves yet and you are still learning to loop
HORUSA first robot that grew into several programs on one computerYour message shapes and how your loops are scheduledA Python script and a C++ or Rust loop share data locallyYou have one script and no second process yet
The kit vendor's own app or SDKPeople who want a working machine on day oneFollowing instructions and editing somebody else's codeLearning the wiring, then deleting the supplied softwareYou want to understand why anything was arranged that way
A game engine or browser robot simVisual learners and people with a weak laptopBasic scene editing and scripting inside the engineMaking something demonstrable that you can show a friendSensor behaviour needs to resemble the real thing
Your own messaging between two processesCurious builders who want to see the problem first-handProcesses, sockets or shared memory, and a lot of patienceOne deliberate weekend spent learning why middleware existsYou have a robot to finish rather than a lesson to learn

Which beginner projects are worth your time, ranked?

Ranked by software learned per evening spent, the staged rover comes first, because it is the only common project that forces timing, sensing, state and recovery in that order. Second is a simulated pick-and-place arm, which teaches coordinate frames and the difference between a plan and what actually happened, with no parts to replace when you get it wrong. Third is a self-balancing robot, which teaches control loops more directly than anything else here and teaches very little else. Fourth is a camera-based follower, a robot that keeps a coloured object in view, which is the cheapest honest introduction to perception feeding a loop. Fifth is writing the logging and the live view for somebody else's robot, an unglamorous project that teaches more about robot software than three tutorials. Sixth is splitting a working robot into two programs that talk to each other, which is the moment middleware stops being an abstract argument. Last, and it is genuinely last, is the boxed kit built to instructions, which teaches patience and wiring and leaves the software untouched.

What should you build if you already write web or app software?

Build the staged rover, and resist the urge to rebuild it as a web service. Your instincts carry you a long way — version control, splitting a problem up, logging, testing — and three of them will actively mislead you. The first is that a request either succeeds or fails; on a robot a command half-succeeds constantly, and the wheel turns partway before the surface changes underneath it. The second is that a retry is free; on hardware a retry moves something in the physical world and may move it into a wall. The third is that being slow is a property of one request rather than of the whole machine, when in fact a robot that answers late has already driven somewhere it should not be. The concrete advice is to write the first version as one plain script with a fixed loop, and add a second process only when a real problem forces you to, so that you feel the reason. If you want that argument in full, whether beginners need middleware at all covers it.

What hardware do you need, and can you start with none?

You can start with none, and most people should for the first fortnight. A simulator gives you a robot model, a world, sensors that report roughly what real ones report, and permission to break things at no cost, which is exactly what stages one to four of the rover need. What a simulator will not teach you is the category of problem that ruins real robots: a wheel that slips on one kind of floor, a camera that whites out when a window sits behind the target, a connector that works loose over a week, a battery that sags so the same command does something different. So use a simulator to learn the software and buy hardware to learn the physics. When you do buy, the shopping list is short — a small single-board computer, a chassis with two driven wheels, a motor driver, a distance sensor, a camera — and the property that matters most is that somebody has already written a working driver for every part. Which simulator to start in is a separate decision worth making deliberately.

How long before a first project teaches you anything?

The first useful lesson arrives on the first evening, and the first uncomfortable one about a fortnight later. On evening one the robot moves because your code told it to, which is a real milestone even though it only proves the wiring. The next week or two is quick and pleasant: sensors read, numbers print, the robot avoids a wall. The uncomfortable lesson comes when you add the third thing. The camera arrives, the loop that was holding the wheels steady starts missing its turn, and the robot that worked yesterday now wanders. That week teaches more than the two before it put together, because it is the first time the shape of the program matters rather than its content. Plan for that week instead of being ambushed by it. A sensible rhythm is one stage a week, with the rule that you do not begin the next stage until the current one runs ten times with nobody's hands nearby. Beginners who skip that rule spend month three debugging month one.

What do you need to know before starting your first project?

One language, well enough to write a loop, read a file and call a library, plus the willingness to read a datasheet without understanding all of it. That is genuinely the bar. You do not need linear algebra to make a rover avoid a table leg, you do not need C++ in the first months, and you certainly do not need a degree. What helps far more than mathematics is a habit: change one thing, run it, write down what happened. Robots punish the alternative brutally, because three changes at once produce a failure with three possible causes and no way to separate them. Two specific skills are worth learning early because they save weeks later. The first is how to see what your program is doing while it runs, since a robot cannot be debugged by staring at it. The second is what happens to your program when one step takes longer than expected, which is the most common reason a robot that worked on Tuesday does not work on Thursday.

What do beginners try first, and why does it stall?

Almost everyone starts with a kit and a tutorial, and it stalls at the exact moment you want the robot to do something the tutorial did not cover. The kit was assembled by somebody who already made every decision, so the code you receive is an answer with no visible question attached. The second common start is choosing a framework before choosing a project, which produces a fortnight of installing and configuring and a robot that still does nothing. The third is building an ambitious machine — an arm, a drone, a humanoid — before anything simple works, which fails because no single failure can be isolated and each one costs parts. The pattern underneath all three is beginning with somebody else's finished answer. The repair is the same every time: shrink the project until the whole of it fits in your head, get that working, then add one thing. A robot that drives forward from your own code is worth more than a kit that maps a room from someone else's.

What do you give up by picking a software-heavy project?

You give up the impressive photograph, and it is worth knowing that going in. A staged rover looks like a plank with wheels for most of its life, while the person who assembled a walking spider from a kit has something that draws a crowd in week two. You also give up mechanical skill. Working in a simulator or on a plain chassis teaches you nothing about tolerances, gearboxes, backlash, or why a printed bracket snaps where it does, and those matter enormously on the day you design your own machine. You give up the satisfaction of a finished object, because a software-first project is never quite done — there is always one more failure to handle. And you give up visible progress, which is the real reason most people quietly switch back to a kit. What you get in exchange is the half that transfers. Chassis knowledge stays with that chassis; understanding why your loop missed its turn applies to every robot you touch for the rest of your life.

When is ROS 2 the better choice?

ROS 2 is the better choice as soon as your project depends on something other people have already built well. If stage five of your rover is mapping a room, ROS 2 hands you mapping and navigation that would otherwise be a year of your life, and reimplementing them from scratch teaches you less than using them and then reading them. If you bought a lidar and its only tested driver ships as a ROS 2 package, the decision was made in the shop. If you want a robotics job, ROS 2 appears in almost every posting, so a small ROS 2 robot is worth more on a CV than an elegant thing nobody recognises. If you are joining a university lab or a robotics club, they speak ROS 2 and so should you. HORUS is not the answer in any of those cases, because choosing it there means rebuilding plumbing in order to give up the packages and the shared vocabulary that were the whole point. What employers actually look for in a portfolio is worth reading before you commit.

Do you need to buy a robot to learn robotics software?

No, and here is why: nearly everything hard about robot software is equally hard in a simulator. The loop that misses its turn, the plan that assumed a world which has since changed, the two programs that disagree about where the robot is, the state machine with no path out of a half-finished action — every one of those shows up in a simulated robot on a laptop, at no cost and with no parts to replace. What hardware adds is a different category of problem: friction, slip, glare, wear, drift, connectors and batteries. Those are real and they will humble you eventually, and they are not the software side. So somebody with a laptop and no budget can learn the majority of this properly, publish it, and be genuinely employable, provided they are honest about the gap. The gap is that simulated sensors are politer than real ones, so a program that has only ever met a simulator tends to assume measurements arrive and make sense. Learning without buying a robot is a well-trodden path.

Will following a kit tutorial teach you the software side?

Partly, but not the way you think. A good kit tutorial teaches wiring, the shape of a working program, and the considerable confidence boost of a machine that moves on the first evening, and none of that is worthless. What it does not teach is any of the deciding. Somebody already chose the loop rate, the sensor, the way the program was split up, the behaviour when the sensor returns nothing, and the reason the whole thing is arranged as it is, and those choices are precisely the subject you came to learn. The way to get real value out of a kit is to break it on purpose. Delete the obstacle-avoidance code and write your own. Add a second sensor the tutorial never mentioned. Make the robot do something the instructions did not anticipate, and watch which assumption gives way first. A kit is a good starting body and a poor curriculum, and beginners who treat one as a curriculum finish with a working robot and no transferable skill.

How do you pick your first project?

Pick the smallest project whose failure you cannot predict. That one test sorts good first projects from bad ones better than any list. If you can describe exactly how the robot will behave before you build it, you will learn assembly and nothing else; if you genuinely cannot say what happens when a wheel slips on the rug, there is something in there to find out. Two supporting questions help. First, can you finish stage one this week? A project that takes a month before anything moves gets abandoned, and abandonment teaches nothing. Second, does each stage break the one before it? That property is what turns a project into a course. Given all of that, the default answer for most people reading this is a rover in a simulator for a fortnight, then the same rover on a cheap chassis, then a fifth stage that genuinely needs a map. Everything else on the ranked list makes a good second project, and choosing a second project is a far easier problem than choosing a first.

Decide by situation rather than by ambition:

When the foundation question does arrive, weigh the candidates 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 scoring involved. If your first robot is heading towards one small computer running Python beside C++ or Rust, star HORUS on GitHub so it is in your list when you start building.

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