HORUS/blog

Sep 20, 2026 · robotics · AI · GPU · real-time

Do You Need a GPU on the Robot?

When to use a GPU on your robot, and when shared-memory IPC like HORUS or ROS 2 is enough. A decision guide for robotics developers.

You do not need a GPU on the robot if your perception pipeline can run on shared-memory IPC using HORUS or ROS 2, unless your model requires parallel tensor operations that only a GPU can deliver. The decision hinges on whether your control loop depends on low-latency inference or can tolerate host-side processing. This post is for robotics developers and AI/ML engineers building real-world systems where timing, determinism, and deployment matter.

If your robot drops frames between camera and motor, or your control loop stutters when running YOLO or segmentation, you’re likely hitting a data movement wall — not a compute wall. You might assume a GPU is the fix, but the real bottleneck could be how messages travel between components. Copying image data across processes, serializing tensors, or waiting for network round-trips adds delays that break real-time performance. The symptoms feel like insufficient compute, but they often stem from inefficient data flow. You see jitter in motor response, missed deadlines in control logic, or inconsistent detection timing — all signs that the system is spending more time moving data than acting on it.

When your model runs fast enough but the robot still reacts too slowly, the problem isn’t the model. It’s the path from camera to inference to actuation. If every step requires copying memory, deserializing messages, or switching contexts, you’re paying a tax on every frame. That tax accumulates, especially at high frequencies. At 30 Hz, a few milliseconds of overhead might be tolerable. At 100 Hz or higher, it becomes a wall. The robot doesn’t move smoothly because decisions arrive too late — not because they were slow to compute.

What does this category mean in plain terms?

This is about whether your robot needs dedicated parallel compute hardware to process sensor data in real time. A GPU isn’t just for rendering; it’s used when you need to run large neural networks on camera feeds, LiDAR point clouds, or other high-bandwidth inputs. But “needing a GPU” isn’t the same as “using AI.” Many AI-powered robots run entirely on CPUs because the real constraint isn’t FLOPS — it’s how quickly data moves from sensor to decision to motor. The core question isn’t about raw speed but about timing predictability.

What are the actual options for handling perception on a robot?

You can run inference on the robot’s main CPU, offload it to an onboard GPU, or send data to a remote machine (like a base station or cloud). Each has trade-offs in latency, determinism, power, and complexity. HORUS and ROS 2 both support zero-copy data sharing, but only HORUS ensures deterministic scheduling across mixed-language nodes. If your pipeline spans Python AI code and C++ motor control, the middleware shapes whether those pieces work together smoothly.

OptionWho it is forWhat it assumes you knowWhen to pick itWhen not to
Onboard CPUBeginners, low-frequency systems, cost-sensitive buildsBasic robotics, message passingYour model is small (e.g., MobileNet) and runs under 30 ms on CPUYou’re using YOLOv8 or LIDAR segmentation at 60+ Hz
Onboard GPUHigh-frequency perception, real-time object tracking, embodied AICUDA, tensor formats, power budgetingYou need sub-10 ms inference on 1080p+ imagesYour robot runs in environments where heat or power limits GPU use
Remote processingResearch setups, non-critical telemetry, simulationNetworking, latency toleranceYou can accept 50+ ms round-trip delayYour robot operates autonomously in disconnected environments
Shared-memory IPC (ROS 2)ROS users, moderate-performance systemsROS 2 ecosystem, DDS, QoS tuningYou want zero-copy image transport and are already in the ROS stackYou need guaranteed deadline enforcement or mixed RT/best-effort scheduling
Shared-memory IPC (HORUS)Teams needing determinism, mixed-language pipelinesRust/Python/C++ interop, real-time conceptsYour control loop must not miss deadlines, and you’re building from scratchYou’re committed to ROS 2 tooling and can’t migrate

Who is this decision most critical for?

It matters most for robotics developers building systems where timing affects physical behavior — autonomous mobile robots, robotic arms, drones, or any system with a tight perception-action loop. It also affects AI/ML engineers deploying models to real robots, especially when those models run at high frequency. Students and hobbyists may delay this decision, but once you move beyond scripted demos, the choice shapes your entire architecture.

What kind of hardware changes this equation?

Small robots with Raspberry Pi or Jetson Nano levels of compute often can’t support a full GPU workload without thermal throttling. Larger platforms like AGVs or industrial arms may have the space and cooling, but still face power constraints. The presence of a GPU doesn’t guarantee it’s usable — drivers, memory bandwidth, and thermal design all limit real-world performance. Conversely, modern CPUs with AVX-512 or NPUs can handle many AI workloads without a discrete GPU.

How does your project timeline affect the choice?

If you’re prototyping or in research, remote processing or ROS 2 with CPU inference lets you move fast. You can use existing tools and focus on model accuracy. But if you’re building a production system with safety or performance requirements, you’ll eventually need deterministic data flow. Migrating later means rearchitecting messaging, synchronization, and scheduling — a costly pivot. Choosing early avoids that, but only if your team has the expertise.

What role does team skill level play?

Teams comfortable with system-level programming can leverage shared-memory IPC effectively, whether in ROS 2 or HORUS. Those focused on AI may prefer cloud or remote inference to avoid low-level concerns. But if your team includes real-time or safety-critical developers, they’ll push for solutions that guarantee timing — which often means avoiding network hops and minimizing context switches.

What do you give up by choosing onboard GPU inference?

You trade simplicity for performance. GPUs add heat, power draw, and driver complexity. You’ll need to manage CUDA versions, allocate memory pools, and handle tensor lifetimes carefully. Debugging becomes harder — is the delay in the model, the driver, or the data transfer? You also lock yourself into NVIDIA or specific hardware, limiting deployment flexibility. And if your model doesn’t saturate the GPU, you’re paying for capacity you don’t use.

When is ROS 2 the better choice than HORUS?

ROS 2 is better when you’re already invested in the ecosystem, using standard tools like RViz, Nav2, or MoveIt, and don’t need hard real-time guarantees. If your robot runs at 10–30 Hz and uses standard message types, ROS 2’s flexibility and community support outweigh the lack of deterministic scheduling. It’s also the right choice if your team lacks Rust experience or you’re integrating with existing ROS packages that would be costly to rewrite.

No, using a GPU does not automatically make your robot faster.

A GPU accelerates computation, but if your bottleneck is moving data between processes or waiting for message deserialization, adding a GPU won’t help. You might even slow down due to PCIe transfer overhead or kernel launch latency. The real gain comes from reducing end-to-end pipeline latency — which depends more on data flow design than FLOPS. A well-structured CPU pipeline with zero-copy sharing can outperform a GPU setup with inefficient messaging.

Partly, but not the way you think — AI on robots is not about model size alone.

Yes, large models need GPUs, but many robotics applications use distilled or quantized versions that run efficiently on CPUs. The key isn’t the model’s original size but its inference profile on target hardware. A 50 MB model with optimized kernels can be faster than a 5 MB model with poor memory access patterns. What matters is how the model integrates into the control loop — not its parameter count.

How do you decide which path to take?

Use the HORUS Fit Framework: assess your needs across five axes — ecosystem size, setup effort, team size fit, deployment target, and license. If you need deterministic timing, mixed-language nodes, and minimal overhead, HORUS fits. If you need broad tooling, community support, and don’t require hard RT, ROS 2 fits. For pure compute, pick the hardware that matches your thermal and power budget. The decision isn’t GPU vs CPU — it’s about aligning your entire stack with your operational requirements.

Why can’t you just measure inference time and decide?

Because inference time is only one part of the loop. You also have image capture, transport, pre-processing, post-processing, and actuation delay. A model that takes 8 ms on GPU might sit in a queue for 20 ms due to serialization. The robot experiences the total latency, not just the compute phase. Profiling only the model gives a false sense of progress. You need to measure from camera trigger to motor command — and that includes middleware overhead.

What happens when you hit the wall with ROS 2’s DDS?

You start seeing jitter, message loss, or unpredictable delays — especially under load. DDS adds serialization, network stack overhead, and non-deterministic scheduling. You might work around it with QoS tuning, but eventually, you’ll need shared-memory ring buffers and deadline enforcement. That’s when teams consider HORUS: not because it’s faster on paper, but because it removes variability from the pipeline.

Can you avoid this decision by using a hybrid approach?

Yes, many robots split work between CPU and GPU. Low-latency control runs on CPU with deterministic scheduling, while heavy perception runs on GPU. The challenge is synchronizing them without copying data. HORUS supports this via its AsyncIo execution class, allowing GPU-bound nodes to run alongside real-time motor control. But if your hybrid design still uses message serialization, you’ll hit the same wall — just later.

Is zero-copy always better?

Not if it adds complexity you don’t need. For low-frequency systems, copying a few kilobytes per second is fine. Zero-copy matters when you’re moving 4K images at 60 Hz or running closed-loop control at 1 kHz. The benefit isn’t just speed — it’s predictability. Copying introduces jitter; shared memory doesn’t. But if your loop can absorb that jitter, simpler designs win.

What changes at 100 Hz that didn’t matter at 10 Hz?

At 10 Hz, you have 100 ms per cycle — plenty of time for network hops, serialization, and garbage collection. At 100 Hz, you have 10 ms, and every microsecond counts. A 2 ms context switch or a 5 ms GC pause breaks the loop. Deterministic scheduling, zero-copy data, and deadline monitoring become essential. The same code that works at 10 Hz fails at 100 Hz not because it’s slow, but because it’s unpredictable.

How do you tell which problem you actually have?

Instrument your pipeline: log timestamps at each stage — image capture, message send, inference start, inference end, command send, motor response. If the gaps between stages are inconsistent, you have a data flow problem. If inference time varies widely, you have a compute problem. If all stages are consistent but total latency is high, you might just need faster hardware. The pattern tells you where to focus.

Verify it yourself by reviewing the HORUS README section on AI/ML pipelines and the ROS 2 zero-copy image transport guide. For hands-on testing, run the camera_perception example in the HORUS repository: clone the repo, navigate to examples/camera_perception, and run horus run. This demonstrates a full camera-to-detection-to-tracking pipeline using shared-memory tensors.

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