Robotic systems are a complex beast, requiring the combination of carefully picked mechanical, electrical, and programmed parts.
Before a line of code is written, you have to pore over spec sheets to determine which mechanical components stand a chance of achieving your end goal. Every robot also requires sensors to understand the world around them, then rely on mapping algorithms to move where we want them to, not just where the code tells them (old programming joke).
After you have something that proves your concept, you need to test more to fine tune the idea over time. Testing is another sophisticated and arduous process, to measure and analyze what the robot is seeing relative to what you see and want.
If you’re tired of reading this already, that’s understandable. Even with this high-level summary of the process, there are still so many combinations of places where choices need to be made and things can go wrong.