HORUS/blog

Sep 5, 2026 · simulation · learning-robotics · beginners · sim-to-real

Can You Learn Robotics Entirely in Simulation?

Yes for the software half, which is most of the work. Simulation stops teaching at wiring, bring-up and calibration, so plan that switch instead of avoiding it.

Yes, you can learn nearly all of robotics in simulation, and a simulator teaches more in the first year than a cheap robot kit. Simulation teaches perception, control, and the middleware that carries messages between the parts, whether that is ROS 2 or HORUS, without a single burnt motor driver. The verdict flips only when your goal is a physical product, because nobody learns bring-up in a simulator. The rest of this post is for beginners deciding whether to spend money on hardware now or spend six months learning with nothing but a laptop.

You have watched the video where somebody spawns an arm in a simulator, writes a short script, and the arm picks up a red cube. You want to be the person doing that. Then you price a real arm and close the tab.

So you go looking for permission to skip the hardware, and the internet hands you two confident answers. One says everything serious happens in simulation now, that whole research groups barely touch a machine, and that spending your rent on servos would be foolish. The other says simulation is a lie, that the gap between a simulated gripper and a real one is where careers go to die, and that you learn nothing until something has burnt in front of you.

Meanwhile you have installed two simulators. One will not start. The other starts, shows you a grey plane and a robot lying on its side, and offers no hint why. You have not learned any robotics yet. You have learned some package management. Before sinking another month into this, you would like to know whether the thing you are doing counts.

Can you actually learn robotics without owning a robot?

Yes, and most of what makes robotics difficult is learnable on a laptop with no machine in the room. The difficulty in robotics is not that motors are exotic. It is that a robot must decide things from incomplete information, hold several rhythms at once, and act while the world keeps moving. All three are fully present in a simulator. When your simulated arm swings past the cube because your controller reacted to a position that was already stale, you have met the actual subject. When your planner routes a path straight through a wall, that is the real thing too. What a laptop cannot hand you is the category of problem whose answer is a loose connector, a mislabelled wire, or a motor drawing current until something smells. Those matter, and they are a smaller share of the field than the forums suggest, and they are learned in days rather than years once hardware is in front of you. Start where the volume of learning actually is, which is software, and buy hardware when you have something worth putting on it.

What is a robot simulator actually doing?

A robot simulator steps a small physical world forward in slices and tells your program lies that are close enough to be useful. On each slice it works out where every body is, which bodies are touching, how hard they press, and where they end up next. Then it hands your code sensor readings drawn from that world and accepts motor commands back. The picture on screen is the least important part of the whole arrangement; it exists so humans can watch, and plenty of serious work runs with the window closed. What matters for learning is the shape of the boundary. Your program receives readings and emits commands, and that is exactly the boundary a real robot presents. Everything written above that line — filtering, working out where the robot is, deciding what to do next, driving a joint towards a target — is the same code with a different thing plugged in underneath. Simulators differ in how honestly they compute contact, how much setup they demand, and how convincing their cameras look. They do not differ in that boundary, which is why any of this transfers.

What are your actual options for learning without hardware?

You have roughly seven options, and they differ mostly in how much scaffolding you must accept before a joint moves. Gazebo with ROS 2 is the classroom default and the setup most tutorials assume. MuJoCo is the shortest path from Python to a moving arm and the standard in control and learning research. PyBullet is similar and forgiving to install. Isaac Sim is the photoreal option, aimed at camera-driven work and large-scale reinforcement learning, and it asks a great deal of your graphics hardware. You can also put a middleware layer between your code and the simulator so your programs are arranged the way they would be on a real machine: ROS 2 does this with its own message system, and HORUS does it as 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 are not serialised between processes on one machine. Or you skip simulation for a small real kit, or borrow hardware hours through a university lab or a shared robot service.

OptionWho it is forWhat it assumes you knowWhen to pick itWhen not to
Gazebo with ROS 2Learners aiming at robotics jobsLinux, workspaces, launch filesYou want the ecosystem most employers already runYou only want to try one control idea tonight
MuJoCoControl and learning-focused learnersPython and a little mechanics vocabularyHow bodies move and touch is the subjectYou need navigation packages and stock drivers
PyBulletBeginners who want something moving todayBasic PythonMomentum matters more than fidelity right nowFine contact behaviour decides your results
Isaac SimCamera-driven and reinforcement learning workA capable graphics machine and patienceVision is the whole projectYour laptop is the only computer you own
HORUS with a simulatorLearners rehearsing a multi-process robotYour message shapes and which loop must not waitYou want the wiring to survive the move to hardwareOne tutorial script is all your project needs
A small real kitPeople who learn by touching thingsWiring, and patience with driversYou have stalled and need something physicalThis month's goal is an algorithm
Borrowed or remote hardwareStudents and people near a labHow to book time and arrive preparedYou need hardware hours without owning hardwareNobody near you has a machine to lend

What should you use if you are teaching yourself from scratch?

Pick one simulator, one robot shape, and one project you can describe in a single sentence, then finish it before looking at anything else. The most common self-taught failure is not choosing the wrong simulator; it is choosing four of them over eight months and finishing none. If the goal is employability, take Gazebo with ROS 2, because the vocabulary you pick up is the vocabulary of job descriptions and of most open code you will read. If the goal is understanding how motion works, take MuJoCo or PyBullet, because you can have an arm swinging from a Python file in an evening and spend your attention on the controller rather than on build systems. A good first project is small and awkward on purpose: drive a wheeled robot to a marked spot and stop cleanly, or move an arm to a cube and close a gripper. Then break it deliberately. Add a delay to your sensor readings and watch the behaviour degrade. That single exercise teaches more than three tutorials, and it is available to you the moment you have anything running.

What computer do you need to simulate a robot?

An ordinary laptop runs most of the simulation you will do while learning, and the graphics card matters far less than the forums imply. Physics work happens on the processor, so a machine that compiles code comfortably will step an arm or a wheeled base without complaint. What actually strains hardware is photoreal rendering, many cameras, or training a policy across many copies of a world at once, and none of those belong in your first months. When a simulator crawls on a modest laptop, the cause is usually a scene built for a workstation rather than any deficiency in your machine, and picking a lighter simulator fixes it faster than buying anything. Memory is the constraint people underestimate: a heavy simulator plus an editor plus a browser full of documentation is where a small machine gives up. If you are weighing a purchase, whether robot simulation needs a powerful GPU is worth reading before spending, because the honest answer for a beginner is usually no, and the money is better kept for hardware later.

What can you learn in a weekend, and what takes months?

A weekend buys you a moving robot and the vocabulary to describe it; the months go into judgement about why it moves badly. By Sunday evening you can reasonably expect a simulator installed, a robot loaded, a joint responding to your commands, and a script that drives towards a target and stops. That is a genuine milestone and you should treat it as one. What takes months is different in kind. Learning to tell a controller problem from a sensing problem takes months, because both look like the robot doing the wrong thing. Learning to structure a program so that a slow piece does not disturb a fast one takes months. Learning what to log so that yesterday's failure is explainable today takes months. So does building the instinct that says a number looks wrong before you can prove it. None of this is gated on hardware, which is the good news, and none of it is gated on cleverness either. It is gated on running many experiments, which is precisely the thing simulation makes cheap.

What if you have never written much code at all?

Start with Python and a simulator that runs from a plain script, because your first obstacle will be programming rather than robotics. Someone new to code who begins with Gazebo and ROS 2 usually spends the first fortnight fighting workspaces, build steps and launch files, and concludes they are bad at robotics when they have not attempted any yet. PyBullet or MuJoCo let you write a file, run it, and see a robot move, and that loop is short enough to keep you learning. Learn four things properly before worrying about anything robotic: loops, functions, lists and dictionaries, and reading an error message to its last line. Then meet the robotics concepts one at a time, each with something moving on screen: where the robot thinks it is, where it wants to be, and the difference between those two driving the motors. If you would rather have a map of the order to learn things in, learning robotics without buying a robot lays out a longer path.

What does simulation-only learning look like when it goes wrong?

It goes wrong when you become expert in a simulator rather than in robotics, and the symptom is that your skills do not survive changing tools. The pattern is recognisable. You know a dozen quirks of one particular scene format and cannot say what a controller gain does. You have tuned numbers until the arm behaved, without a story for why those numbers work. Your robot succeeds because the simulated gripper holds anything it touches, and you have never asked what would happen with an object that could slide. Every sensor reading in your world arrives clean, on time and in order, so your code has no opinion about a reading that never comes. The deeper version of the failure is that you start optimising the simulator: making the world simpler until the algorithm looks good, rather than making the algorithm survive a harder world. The cure is not hardware. It is deliberately degrading your own simulation — adding delay, noise, slippery contact and dropped readings — until the code has to earn its results.

What do self-taught learners try first, and why does it stop working?

Almost everyone starts by following a tutorial to the red cube, and that stops working the moment they try to change one thing in it. Following the tutorial is right; it proves the tools are installed and gives you something moving. The failure comes next, when you swap the cube for a cylinder or the arm for a different arm and everything collapses in ways the tutorial never mentioned, because you were following steps rather than building a model of the system. Two habits follow, both bad. The first is collecting simulators, on the theory that the next one will be less confusing, which converts learning time into installation time. The second is asking an assistant to generate a whole project, which produces plausible code you cannot debug, because debugging robot behaviour means having a theory about what the robot believes. What breaks the pattern is small and unglamorous: take one working example and change exactly one thing, predict what will happen before you run it, and pay attention when you are wrong.

What do you give up by never touching hardware?

You give up the intuitions that only arrive through failure with mass, heat and time, and those matter more later than they do now. Real machines shake and the shaking gets into your sensor readings. Cables tug on joints and change what the arm can reach. Parts warm up and behave differently after an hour than they did at the start. A gripper that closes on the same object thirty times will drop it once for reasons nobody logs. Batteries sag under load and the whole computer misbehaves in a way that looks like a software bug. None of that is available on a laptop. You also give up the specific competence of bring-up: reading a wiring diagram, checking whether a device is even connected, and the discipline of a machine that can hurt you and therefore gets an off switch within reach. That competence is genuinely worth having and it is genuinely quick to acquire. It is a matter of weeks with a machine, not the years that mastering the software side takes.

When is ROS 2 the better choice?

ROS 2 is the better choice for almost every beginner learning in simulation, and that is not a hedge. The tutorials assume it, the simulator integration is written for it, the sensor drivers you will later want already exist for it, and the navigation and mapping packages represent work you are not going to reproduce while also learning what a controller is. If you want a robotics job, the vocabulary of ROS 2 is the vocabulary of the interview. If you want to read other people's robot code, most of the readable open code is written against it. HORUS is not the answer for a beginner whose goal is a portfolio, a job, or a mapping demo, and choosing it for those goals means rebuilding for yourself what you could have inherited. The narrower case where a shared-memory middleware earns its place is when several programs on one computer must look at the same camera frames without copying them around, which is a problem you will meet on real hardware rather than in your first simulated project.

Is simulation just a toy compared with a real robot?

No, and here is why: the majority of professional robotics work already happens in simulation, including work at companies whose robots you have seen walking. Policies are trained there because a real machine cannot survive the number of attempts required. Controllers are tested there because the failure mode being tested is the one that breaks hardware. Whole perception pipelines are developed against recorded and synthetic data long before anything is mounted. Simulation is not the beginner's version of the job; it is a large part of the job, and the ability to build a scene that actually poses the question you are asking is a skill people are hired for. Where the toy accusation lands is narrower than it sounds. A simulator makes things easy that hardware makes hard, especially contact and timing, so results obtained there tend to be optimistic. That is an argument for treating simulated success as a hypothesis rather than a conclusion. It is not an argument for spending your learning time waiting until you can afford a machine.

Does everything you build in simulation transfer to a real machine?

Partly, but not the way you think. The structure transfers almost completely: how your programs are split up, what talks to what, how state flows from sensing to decision to command. The numbers rarely transfer, because friction, mass distribution, sensor delay and motor response all differ from whatever the simulator assumed. So the code survives and the tuning does not, which is a much better outcome than the phrase sim-to-real gap usually implies. The failures that surprise people cluster in three places. Contact behaviour, because simulated grasps hold when real ones slip. Timing, because a simulator can pause the world while your program thinks and reality cannot. And sensing, because simulated readings are clean and punctual while real ones are late, noisy and occasionally missing entirely. You can rehearse all three before you own a machine by making your simulation worse on purpose. Why sim-to-real keeps failing covers what teams do about the gap when the machine matters commercially.

How do you decide when to stop simulating and buy hardware?

Buy hardware when simulation stops answering your questions, not when you feel guilty about not owning a robot. The signal is concrete: you have a working behaviour, you have degraded your own world until it is unflattering, and the next thing you want to know is something a simulator cannot tell you, such as whether your gripper design holds a real object or whether your loop keeps its rhythm on a small computer. That is the moment hardware buys you learning. Before it, hardware mostly buys you a shelf ornament and the sour feeling of a stalled project. Two other triggers are legitimate. If your motivation is dying and a physical machine would revive it, that is a real engineering consideration, and a cheap wheeled kit is a fine purchase. And if you intend to sell something, get hardware early, because product problems live there. When to stop simulating and build the real thing goes further into the switch itself.

Decide by situation rather than by budget anxiety:

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. Take whichever loses on the fewest — five honest questions about your situation rather than about the software, with no scores attached. And if your plan ends with a real machine where several programs share one computer, star HORUS on GitHub so it is in your list when you start building.

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