Sep 5, 2026 · getting-started · beginner-projects · learning-robotics · project-planning
How to Choose Your First Robotics Project
Choose the smallest project that senses something and moves something, not a humanoid or a self-driving car, and let the project pick your tools for you.
Choose a small wheeled robot that senses something and reacts, not an arm, a drone or a humanoid, because your first project has to finish. A first project only teaches the full loop from sensor to decision to motor if you reach the end, and small projects get finished. That flips if you already write software professionally, where a kit arm on ROS 2 or HORUS is a fair start. The rest of this post is for someone with a browser full of tabs, no robot yet, and a fear of choosing something that turns out embarrassing.
You have been circling this for weeks. There is a folder on your desktop with three project ideas in it, and each one has a document that stops halfway through the parts list. The robot dog looked achievable until you priced the actuators. The autonomous rover looked achievable until you read what happens when the wheels slip. The arm that sorts things by colour looked achievable until you realised you would need to build the arm.
So you have been watching videos instead. Someone's quadruped climbing stairs. Someone's desk robot that follows a face. Someone's warehouse simulation with a fleet of machines routing around each other. All of it looks like a weekend to the person who filmed it, and none of it looks like anything you could start on a Tuesday evening.
Meanwhile there is a nagging worry that picking wrong wastes months. That you will spend a season on something that turns out to be a toy, or something so hard you stop before it works, and either way you end up where you are now with less time left and a shelf of parts.
How do you choose your first robotics project?
Choose the smallest thing that senses something, decides something, and moves something, and be ruthless about how small that is. One sensor. One decision. One motor. A rover that stops before it hits a wall qualifies. A camera on a servo that turns to keep a face in view qualifies. A plant waterer that checks soil moisture and runs a pump qualifies. What all three share is a complete loop from the world, through your code, back into the world, and that loop is the entire subject. Everything else in robotics is that loop repeated, refined and made faster. What disqualifies a project is not difficulty but indivisibility: if nothing can be shown until every part exists, you have no feedback, and beginners run out of motivation long before they run out of ability. Pick the version you can demonstrate after one evening, then make it better every session. The ambitious version is not cancelled — it is your third project, and by then you will design it differently anyway.
What actually counts as a robotics project?
A robotics project is any program that reads the physical world and changes it, which is a much wider door than most beginners assume. It does not need wheels. It does not need to look like a robot. A camera that watches a doorway and moves a latch is robotics. A device that reads a temperature and opens a vent is robotics. Beginners exclude these because they lack the shape of the machines in videos, and then spend months trying to build something that looks impressive instead of something that teaches. The line worth drawing is different: does the program have to cope with the world being uncooperative? A script that renders a chart does not. A program that has to decide what to do when a sensor returns nothing, when a motor stalls, or when a reading is obviously wrong is doing the real work. That coping is the skill, and you can practise it on a machine made of cardboard and a hot glue gun. If you want examples with the software as the point, beginner projects that teach the software side lists several worth copying.
What are the actual options for a first build?
There are six honest starting points, and the popular advice only ever mentions two. You can start on a microcontroller with two motors, where the board decides most things for you and there is nothing to install. You can start on a single-board computer with plain Python, no framework at all, which is the right answer far more often than the internet admits. You can buy a finished kit and program its SDK, skipping the mechanical problems entirely. You can stay in simulation and postpone hardware. You can start on ROS 2, which brings mapping, navigation and drivers other people already wrote, at the cost of a heavy first week. Or you can use a lighter middleware once several programs must run at once: HORUS is an open-source real-time middleware for Rust, Python and C++ that puts all three languages on the same shared-memory ring buffers, so programs on one machine trade messages without serialising them, whereas ROS 2 assumes a network between them and gives you its package library in return.
| Option | Who it is for | What it assumes you know | When to pick it | When not to |
|---|---|---|---|---|
| Microcontroller and two motors | Complete beginners who want something moving tonight | How to flash a board and read a wiring diagram | The project is one sensor, one decision, one motor | You want a camera, a map, or recorded logs |
| Plain Python on a small computer | People who already code and are new to hardware | Installing packages and reading an error message | The whole robot fits in one or two programs | Several programs must stay in step with each other |
| A finished kit with its own SDK | Beginners who want to skip mechanics and wiring | The vendor's documented commands and nothing more | The machine already does roughly what you want | You plan to add hardware the vendor never imagined |
| Simulation only | Learners with no budget, no space, or no parts yet | Basic geometry and patience with model files | Hardware is months away and you want to start now | The interesting part of your idea is physical |
| ROS 2 | Builders whose project needs maps, navigation or drivers | Linux, the terminal, and workspace tooling | Borrowed packages are most of your project's value | You need something watchable within two weekends |
| HORUS | Builders mixing Python with C++ or Rust on one computer | Your message shapes and how your loops are timed | Several programs on one machine must stay in step | The value of the project sits in ROS 2 packages |
What should you build if you are a software developer with no hardware experience?
Build something deliberately below your coding ability, because the difficulty is not going to come from the code. Experienced developers consistently choose a first project sized to their software skill and then get stopped by things no programming background prepares them for: a motor that needs more current than the board can supply, a sensor whose readings jitter for no reason, a battery that sags and resets everything mid-run, a connector that works until it is nudged. None of that is intellectually hard. All of it is unfamiliar, and unfamiliar problems eat evenings. So pick a project whose software you could write in an afternoon, and let the physical half of the learning happen without a deadline attached. There is a bonus in this that developers underrate. Working on something small enough to hold in your head means when the robot misbehaves you can genuinely reason about why, rather than guessing between eleven candidate causes. That habit of narrowing down a physical failure is most of what separates people who finish robots from people who accumulate parts.
What should you build if all you own is a laptop?
Build in simulation, and pick a project where the interesting part is the decision-making rather than the mechanics. A simulator gives you a robot, a world, physics and sensors for nothing, and lets you practise the parts that transfer: structuring a program that runs continuously, writing a controller that keeps something steady, planning a route, handling a sensor that reports nonsense. Those skills move to hardware intact. Choose deliberately, though. A project about grasping delicate objects will teach you a simulator's opinions about friction rather than anything true. A project about navigating a room, following a wall, or chasing a moving target transfers well. And set an exit condition before you start, because simulation is comfortable and the gap to real hardware grows the longer you stay. When your simulated robot does its job, buy the cheapest physical thing that can attempt the same job badly. Watching the same code fail on real hardware is one of the most instructive afternoons in this field, and what happens when simulation and hardware disagree is worth reading before that afternoon rather than during it.
What should you build if you only have a few weekends?
Build the sensor-to-motor loop and nothing else, and treat every additional feature as a separate project. A few weekends is roughly one working behaviour, and that is genuinely enough to finish something. Concretely: a robot that drives forward and stops before it hits something. That is a distance sensor, a decision, and two motors. It is unglamorous, it can be built from a kit chassis or a shoebox, and it teaches you the entire structure of every robot you will ever write. The trap in a short timeline is the feature that sounds like a small addition and is not. Adding a camera is not one weekend, because a camera brings image processing, lighting problems and a computer big enough to run it. Adding a map is not one weekend. Adding a second robot is not one weekend. Each of those is its own project with its own surprises, and stacking three of them onto a first build is the most common way a beginner project dies. Ship the boring version, then decide what the next weekend is for.
What should you build if you have never written code before?
Build with a kit and pre-written examples first, and change one thing at a time. This is the only case where I would push someone towards a kit without hesitation, because learning to program and learning to build hardware at the same time makes every failure ambiguous. When nothing happens, is the code wrong, the wiring wrong, the motor unpowered, or the sensor dead? A beginner cannot answer that, and weeks vanish into it. A kit with working example code removes half the ambiguity: if the example ran and your version does not, the problem is in what you changed. Start there. Run the example. Change a number and watch what happens. Change a condition. Add a second sensor reading to the print output. Each small change teaches you cause and effect in a system where you can see the effect physically, which is a far better way to learn programming than a text tutorial. When the kit stops being able to do what you want, that frustration is the signal to move on, and whether to start with a kit or build from scratch covers that transition properly.
Why do first projects stall so often?
They stall because the project was chosen to be impressive rather than to be finishable, and impressiveness has no early feedback. The pattern is remarkably consistent. Someone picks a humanoid, a self-driving model car or a robot arm that folds laundry. The parts list gets long. The mechanical design turns out to be a discipline of its own. Two months in, nothing has moved, and there is no partial version to show anyone, so motivation has nothing to feed on. The project does not get abandoned dramatically; it just stops being opened. A second, quieter failure mode is the opposite: someone gets a rover driving in week one, then spends four months adding features to a codebase that has become one enormous file, until every change breaks something else and the whole thing becomes unpleasant to touch. Both failures are about structure rather than skill. The fix for the first is to shrink until something works this week. The fix for the second is to split the program into separate pieces before it becomes painful, and why most beginner projects stall goes through the warning signs in detail.
What changes when the project starts asking for more?
The bugs change character: they stop being about wrong code and start being about late code. In a first project every fault is a logic fault. The wheel spins backwards, the units are wrong, the condition never triggers. You find those by reading. Then you add a camera, and a program that plans, and a program that drives, all running at once, and something new appears. The robot works, and then occasionally does not, and nothing you wrote changed. The rover holds a straight line and briefly veers whenever the vision code is busy. The arm stops short of the cup once in ten tries. Adding a print statement changes the behaviour. This is the moment the plumbing between your programs becomes a real topic rather than an abstract one, because what you are watching is a message arriving after the moment it was needed, and a correction that arrives late is not a smaller correction — it is the wrong one. Almost nobody meets this on project one, and almost everybody meets it on project three.
What do you give up by starting with something small?
You give up the demo, and for some people that genuinely matters. A rover that stops before a wall does not get shared, does not impress a recruiter at a careers fair, and does not look like the videos that made you want to do this. If you need a portfolio piece by a specific date, or you are trying to win a competition, the small-first advice actively works against you and you should ignore it. You also give up the chance to learn certain topics at all, because some problems only appear at scale: coordinating several robots, planning around moving obstacles, running a model on board that eats most of the computer. Those are real subjects and a tiny project will never introduce them. The counterweight is that people who start small tend to reach the ambitious project anyway, roughly a season later, holding skills that make it go faster. People who start ambitious usually reach a shelf of parts. That is the whole trade, and it is less about capability than about how many finished loops you have behind you.
When is ROS 2 the better choice?
ROS 2 is the better choice the moment your project's value lives in code someone else already wrote. If you want a robot to build a map of your flat and navigate through it, do not write that yourself — that is a career's worth of work available as packages, and using it is the entire point. If you want an arm to plan a path around an obstacle, same answer. If the specific sensor you bought ships one usable driver and it is a ROS 2 package, the decision has been made for you. If you are aiming at a research lab, joining a university team, or reproducing a published result, the shared vocabulary is worth more than any technical property. And if you are choosing this project partly to become employable, ROS 2 is the name that appears on the adverts. HORUS is not the answer in those cases; picking it there means rebuilding plumbing that already exists in order to lose the packages that were the reason for the project. Lighter tools earn their place on one machine, with a small team, and with a project whose value is not sitting in someone else's repository.
Is a small first project too easy to teach you anything real?
No, and here is why: the difficulty in robotics is not in the size of the machine, it is in the fact that the world does not cooperate, and a small machine delivers that lesson in full. A rover that stops before a wall will teach you that the distance sensor sometimes returns nonsense, that it reads a soft object differently from a hard one, that it misses a wall approached at an angle, that stopping takes distance you did not account for, and that a battery running low changes how the motors respond. Every one of those is a real robotics problem, and every one of them appears again, unchanged in nature, on machines a thousand times more capable. Beginners who chase complexity often never meet these lessons cleanly, because on a large project several of them arrive at once and get misdiagnosed as one confusing failure. Small projects isolate. That isolation is what makes them educational, and it is exactly what a first project should be optimising for.
Should you pick the project that looks best to employers?
Partly, but not the way you think. It is true that a project on your profile influences hiring, and it is true that some projects read better than others. What is false is the assumption that reading well means looking difficult. The people evaluating you have built robots, and they are not impressed by a repository containing an ambitious title and no evidence the machine ever ran. What they respond to is completeness and honesty: a small robot that demonstrably works, a readable description of what it does, a video of it doing that, and a paragraph about the one thing that went badly wrong and what you changed. That last item is the most valuable and the most commonly missing. It shows you have debugged something physical, which is the skill they are actually screening for. So choose for finishability and then document like an adult. A finished small project with a good write-up beats an unfinished ambitious one every time, and it beats a tutorial reproduction with no failures in it.
How do you decide which project to start this weekend?
Write down the one thing you want to watch the robot do, in a single sentence with no "and" in it. That constraint does most of the work. "It drives forward and stops before hitting something" survives. "It maps the room and navigates to a goal and avoids the cat" does not, because it is three projects wearing one coat. Then ask what you already own, because a project you can start tonight beats a better project that waits on a delivery. Then ask what the failure will look like, and whether you would be able to tell why it failed — if the answer is no, the project is too big or you need a simpler version first. One tie-break for people stuck between two ideas: choose the one where the interesting part is the decision rather than the mechanism, because building mechanisms is a separate hobby that will happily consume your entire season. If you are also weighing what to learn alongside the build, whether students should learn ROS 2 or a modern alternative answers the other half of the question.
Decide by situation rather than by ambition:
- If you have never written code -> a kit with working examples, because you need one source of failure, not two.
- If you write software already -> a project below your coding level, because the hardware half is where your evenings will go.
- If you own only a laptop -> a simulated navigation project, because the decision-making transfers and the mechanics do not.
- If you have a few weekends -> one sensor, one decision, one motor, because that is genuinely what fits.
- If your idea needs maps or borrowed drivers -> a ROS 2 project, because rewriting that work is not a first project.
- If you need a portfolio piece by a date -> the most finishable impressive thing, because an unfinished demo shows nothing.
When the plumbing question eventually arrives, 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. If your projects keep growing into several programs on one machine, with a Python layer and a C++ layer that have to stay in step, star HORUS on GitHub so it is in your list when you start building.