Sep 5, 2026 · getting-started · beginners · robotics-middleware · first-robot
How Long Does It Take to Get a Robot Moving for the First Time?
An evening for a wheel to turn, a weekend for a robot that survives the floor, and months before it runs unattended. Here is what decides which.
Getting a robot moving takes an evening with plain code, a weekend with a kit, and a week or two through ROS 2 or HORUS. Those timings assume the movement is dumb — a wheel turning, an arm nudging — and that you have chosen the smallest thing that could possibly move. The estimate doubles the moment a camera has to be in the loop before anything moves at all. The rest of this post is for someone with parts on the desk who wants a realistic calendar before they commit an evening or a month.
The parts arrived three weeks ago. They are still on the desk, in the anti-static bags, next to a small pile of cables you bought because you were not sure which one you needed. You have read a great deal since then.
What you have not done is make anything move. Every guide you find starts somewhere further along than you are. One assumes a working install of something you spent an evening failing to install. One says the first step takes ten minutes and then spends four screens on a build system. One is written for a robot that costs more than your car. The forum thread that matches your exact board ends with the original poster saying they figured it out, with no further detail.
Meanwhile the question in your head is smaller than any of that. Not how to build an autonomous machine. Not which architecture is correct. Just: how many evenings, honestly, until this wheel turns when I tell it to, and am I already behind?
How long does it take to get a robot moving for the first time?
One evening, if you deliberately choose the smallest possible movement and refuse to add anything else to it. A motor, a driver board, a battery and a dozen lines of code will produce a spinning wheel before bedtime, and that is a real milestone rather than a toy one, because everything afterwards is a variation on it. A robot that drives across a floor without falling off the edge of a table is a few weekends. A robot that does the same thing while you are in another room, without you rescuing it, is months. Those three milestones feel like one job when you plan the project, and they are three different jobs with three different kinds of difficulty. Almost every timeline a beginner quotes to a friend is the first milestone, and almost every timeline they feel guilty about missing is the third. If nothing has moved after three weekends, the cause is nearly always that too many new things were introduced at once, not that the work is beyond you.
What sits between your code and the motor?
Three layers sit there, and only one of them is optional at the start. Closest to the hardware is a driver: the code that knows how to speak to your particular motor controller or sensor, usually a library from the manufacturer or a community. Above that is your own loop, the part that reads something and decides something. Between them, on a robot with more than one program, is a messaging layer, which carries values from one program to another and decides who waits when one side is slower. That middle layer is what people mean by middleware, and it is the one you can leave out entirely on the first evening, because a single program calling functions needs no messages. Knowing the three layers exist is what stops the early days feeling arbitrary. When something does not move, the fault is in exactly one of them, and asking which one turns a vague afternoon of searching into three specific checks you can do in order.
What are the actual routes to a first movement?
Six routes, and they trade setup time against how much of the robot you will later have to write yourself. The quickest is a microcontroller with a motor driver, where nothing is installed and the code runs on power-up. Next is the software that came with your kit, which usually has a working example you can edit. Third is plain Python or C++ on a small Linux computer, talking to a motor board over a cable. Fourth is a vendor SDK, if you bought a finished arm or base. Fifth is ROS 2, the large open ecosystem, which delays your first movement by a week or two of learning packages, workspaces and launch files, and repays that later with drivers, mapping, navigation and recording tools; alongside it sits HORUS, an open-source real-time robotics middleware for Rust, Python and C++ where all three languages share the same shared-memory ring buffers, so messages between programs on one machine are not serialised, released under Apache-2.0 at github.com/softmata/horus and validated in simulation. The sixth is a simulator, where movement happens this afternoon and no wire is ever wrong.
How do the routes to a first movement compare?
Read the last column first this time. On a first project the question is not which route is best in the abstract but which one is disqualified by something you already know about your situation, and the disqualifications are usually obvious once written down. Then read the third column, because a route that assumes knowledge you do not have will convert an evening into a fortnight without ever announcing that it has done so. Nothing here is ranked by how quickly it gets a wheel turning, since the row that moves soonest is rarely the row you finish on. Most builders use two of these in sequence and a few use two at once, with a board driving the motors and a larger computer thinking about what to do next, so treat the table as a description of where to begin rather than a commitment you are stuck with.
| Option | Who it is for | What it assumes you know | When to pick it | When not to |
|---|---|---|---|---|
| Microcontroller and motor driver | Anyone who has never made hardware move | Wiring, pins, a little embedded code | You want movement tonight | The robot needs vision or a map |
| The kit's example software | Learners on a bought platform | The kit's language and its examples | The parts came in one box | You are adding hardware the kit ignores |
| Plain Python on a small computer | Beginners who already write Python | One language and a motor library | The motor board has a usable library | Something slow shares the same program |
| Vendor SDK | Owners of a finished arm or base | The vendor's API and supported language | The machine should do its documented job | The vendor never planned for your sensor |
| ROS 2 | Builders who will need borrowed algorithms | Packages, workspaces, launch files, topics | Mapping or arm planning is coming | You need a wheel to turn this week |
| HORUS | One computer running parts in several languages | Your own control code and message shapes | Separate programs must share data on one box | You have not made anything move yet |
| Simulator first | People whose hardware has not arrived | A model format and its quirks | The robot is expensive or absent | The thing being tested is a cable |
Who gets a robot moving soonest?
People who have made something else move before, in any field, get there soonest, and the reason is not skill but expectation. Someone who has flashed a board, wired a light or fixed a printer already knows that the first attempt fails for a boring physical reason, so they check the boring physical reasons. A beginner from a pure software background loses the first two evenings assuming the code is wrong, because in their experience the code usually is. Students on a course move quickly because the hardware is chosen for them and someone nearby has seen the same error. Solo builders with a self-chosen robot move slowest, not for lack of ability but because every decision is theirs and each one can be reopened. If you are in that last group, the useful trick is to borrow constraints on purpose: pick the board with the most tutorials, the motor with the most examples, and refuse to reconsider either until something has moved.
What hardware gets moving soonest?
A microcontroller with a matched motor driver board gets there soonest, by a wide margin and for an unglamorous reason: there is nothing to install and nothing to start in the right order. Power arrives, the code runs, the wheel turns. A small Linux computer adds an operating system, a package manager, permissions on the serial port and a boot sequence, each of which is a place to lose an evening before any robotics happens. That trade is worth making when a camera is part of the plan, since handling pictures needs the memory and libraries a microcontroller does not have. The choice people get wrong is buying the most capable computer they can afford and assuming it will be the least trouble. A larger board makes each test slower to start, gives you more configuration to get wrong, and solves none of the questions that actually stand between you and movement. Match the board to the sensor you are certain about, not to the robot you imagine in a year.
What can you realistically finish in one weekend?
One weekend gets you a robot that moves under its own control and reacts to one sensor, and that is a genuinely satisfying place to stop. Saturday morning is wiring and the first spin. Saturday afternoon is discovering the motors run at different speeds and the robot curves, then deciding whether to fix that in code or accept it. Sunday is adding a distance sensor and making the machine stop before it touches a wall, which is the moment it stops being a remote-controlled toy and starts being a robot. What does not fit into a weekend is anything with a camera, anything that must recover on its own from a failure, and anything involving a map. Builders who attempt those in the same two days end the weekend with a pile of parts and a strong sense of having failed at something easy, when in fact they scheduled three weekends into one and the way most beginner projects stall is exactly this.
How much does your programming experience change the timeline?
Less than you would expect, and in a direction that surprises people. An experienced programmer is usually faster to the first turning wheel and slower to a robot that behaves, because the second part is not really a programming problem. The habits that transfer are debugging discipline and version control. The habits that mislead are a belief that behaviour is deterministic and an instinct to build the right structure before anything works. Robots are not deterministic, and a structure designed before the hardware has surprised you will be wrong in ways you cannot yet see. The difference shows up in what each type of builder does after a run that failed for no visible reason: one repeats it and watches more closely, the other starts rearranging code that was never at fault. A confident beginner who changes one thing at a time frequently reaches a working machine before a senior developer who designs a full architecture in week one. What experience genuinely buys is the pace of the second robot, where knowing why the first one hesitated turns months into weeks, and where a considered choice of framework starts to matter.
What actually eats the time between ordering parts and first movement?
Power, cables and drivers eat it, in that order, and none of them are the thing you were expecting to work on. Power comes first: a supply that cannot deliver enough current under load makes the computer reset or the readings vanish whenever the motors start, and every symptom looks like a software fault. Cables come second, because a connector wired the other way round is invisible and produces silence rather than an error message. Drivers come third: a library that assumes a slightly different board revision, a serial port your user account is not allowed to open, a version that changed after the tutorial was written. Notice that none of these are robotics. This is why the honest estimate for a first movement is one evening of work spread across three, and why builders who own a multimeter and a spare battery reach movement sooner than builders who own a better computer. Check the boring physical things before you read your code again.
What do you give up by optimising for a fast first movement?
You give up structure that you will have to add later, and you should give it up anyway. A robot built for movement tonight has everything in one file, no way to record what happened, no plan for what the motors do when the program stops, and no separation between the code that reads a sensor and the code that decides. Every one of those is a real debt, and each becomes a day's work at the moment it starts hurting. The reason to accept the debt is that beginners who build the structure first usually never make anything move, and a project that never moves teaches nothing about which structure it needed. There is one exception worth honouring even on the first evening: keep your control logic in plain functions that take readings and return commands. That single habit costs nothing now and means the eventual move to a framework is a couple of evenings of plumbing rather than a rewrite.
When is ROS 2 the better choice?
ROS 2 is the better choice when the robot you are actually building needs work that already exists and would take you years. If the machine must build a map of a room and drive to a point on it, start with ROS 2 and accept the slower first week, because mapping and localisation are not things you will write. If an arm must plan a path around obstacles, the same applies. If the only working driver for the sensor you already bought ships as a ROS 2 package, that decides it on its own. If this project is coursework, or a step towards a robotics job, learn the ecosystem that the coursework and the job adverts name, since the vocabulary has value beyond your machine. And if the robot is several computers coordinating over a network, ROS 2 has been in that world for years. HORUS is not the answer in any of those cases, and how long ROS 2 really takes to learn is the honest companion question to this one.
Is getting a robot moving quickly a sign you skipped something important?
No, and here is why: the fast first movement and the careful engineering are different phases, not competing philosophies. Nothing you learn by designing a structure in advance survives contact with hardware that behaves differently from your model of it, so the design you write before first movement is speculative fiction with indentation. Moving early is how you find out which problems your robot actually has, and it is far cheaper to discover a motor is undersized in week one than in month three. The skipping that does cause harm is different and specific: leaving out a way to stop the machine by hand, running motors with no fuse or current limit, and having no record of what happened before a failure. Those three take an hour between them and save whole evenings later. Fit the cut-off before the first spin rather than after the first surprise, because a motor that will not stop is the single failure that costs you hardware and nerve at the same time. Everything else labelled as skipping is just work you have sensibly deferred until you know whether you need it.
Does an AI assistant get a robot moving sooner?
Partly, but not the way you think. An assistant is genuinely good at the parts that made you hesitate before you started: reading a datasheet you find intimidating, producing the first draft of a motor loop, explaining an error message that assumes knowledge you do not have. That does compress the first evening, sometimes dramatically. What it cannot do is see your robot. It will confidently produce code for a slightly different board revision, invent a library function that never existed, and suggest a framework because the internet mentions that framework often, not because your project needs one. The failure it causes most often is a large, plausible program arriving before you have made anything move, so when nothing works there is no small piece to isolate. The pattern that works is asking for one function at a time and testing each on the bench before asking for the next. Use an assistant to shorten each step and keep the steps small, and treat any suggestion involving a full stack as something to check against the frameworks that suit beginners.
How do you decide which route to take this week?
Decide by the smallest thing that could move, and let the rest of the project argue with you later. Write down the single simplest motion your robot could perform that would prove the chain from your code to the hardware works. Then pick whichever route on the table above reaches that motion with the fewest new things to learn, and commit to it for two weeks without reopening the question. If a map or a planner is definitely in your future, take the slower start and learn the ecosystem now rather than migrating in anger later. If your robot has not arrived, start in a simulator this afternoon rather than waiting, and expect the wiring to still surprise you when the box turns up. If you already have movement and the trouble began when a camera joined the program, that is a different problem with a different answer, and what nobody tells you about a first robot covers where it leads.
Decide by situation rather than by principle:
- If nothing has moved yet -> a microcontroller and a motor driver, because it removes every layer that could be at fault.
- If the parts came in one box -> the kit's example, because it is already known to work on your hardware.
- If mapping or arm planning is certain -> ROS 2, because the slower start buys work you cannot write.
- If a camera and a control loop must share one computer -> a shared-memory middleware, because that boundary is what makes the loop hesitate.
- If the hardware has not arrived -> a simulator, because an afternoon of approximate movement beats a week of waiting.
- If three weekends have passed with nothing moving -> remove parts until one motor turns, because the problem is scope.
When two of those lines fit, weigh them on the five axes of the HORUS Fit Framework — ecosystem size, setup effort, team size fit, deployment target, and licence — and keep the option that loses on the fewest. No scores and no numbers: five honest questions about your situation rather than about the software. If your answers keep landing on one computer, more than one language, and behaviour nobody has written for you, star HORUS on GitHub so it is in your list when you start building, and read which middleware has the easiest first day before you commit an evening to anything.