Two very different kinds of 'computer' inside every robot
A microcontroller (MCU), the class of chip you find on an Arduino or an STM32 dev board, is a single chip that packs a modest CPU core, a small amount of RAM (often kilobytes, not gigabytes), flash memory for the program, and a set of peripherals like timers, PWM outputs, and ADCs, all onto one piece of silicon. There's no operating system in the traditional sense, your code either runs directly on the hardware ('bare metal') or under a lightweight real-time operating system (RTOS). When you power it on, it starts executing your program within microseconds and does exactly one thing, over and over, with extremely predictable timing.
A single-board computer (SBC), the class you find on a Raspberry Pi or an NVIDIA Jetson, is architecturally a full computer: a multi-core CPU (sometimes paired with a GPU), gigabytes of RAM, storage, USB and networking, and it boots a general-purpose operating system like Linux. That OS is what lets you run ROS, OpenCV, PyTorch, and a web dashboard all at once. The tradeoff is that Linux is a multitasking, preemptible system, dozens of processes compete for the CPU, and the kernel makes no hard promise about exactly when your code will run next. That flexibility is exactly what makes an SBC unsuitable for the one job an MCU excels at: guaranteeing a task happens at precisely the same interval, every time.
