Anyone who tells you the robot apocalypse is upon us—that the machines will not stop stealing our jobs, that they are gearing up to chase us through the streets while doing backflips and fighting off stick-wielding humans—has never tried to program a robot. It’s difficult to get a machine to do so much as move an arm, which requires the precise control and coordination of joint angles and torque.

The difficulty of programming robots is a problem that Facebook, of all companies, wants to fix. Today the social network continues its unlikely dive into robotics by open-sourcing a new robot framework, known as PyRobot, that could simplify the way researchers program their machines, and could even make it easier for non-robotics types to jump into the field. If programming robots has so far been something like wading through a command-line interface, PyRobot promises to be like gliding through the sleekness of macOS. At least, that’s the hope: Many others have tried and failed to do this kind of thing.

PyRobot isn’t actually an operating system in and of itself, but a kind of layer above the catchily named Robot Operating System, or ROS, which is omnipresent in robotics research. Simply put, ROS is a platform that allows researchers to control every aspect of a robot, be it sensors or joints. It works across many different kinds of robots doing a wide variety of things. But researchers can still get bogged down in the granular details required to control a robot using ROS.

Matt Simon covers cannabis, robots, and climate science for WIRED.

With PyRobot, a roboticist can write simple code in Python to command a machine, which the platform then translates into the more complex instructions that ROS requires. That is, PyRobot is "abstracting" much of what ROS is doing to control the robot. “If I'm a machine learning researcher, and I only care about going to this X,Y location, I really do not want to be bothered by all the low-level details of how actually the robot ends up getting there,” says Facebook AI researcher Abhinav Gupta. “That's what we want to abstract away, so that these researchers can focus just on their applications.”

A central challenge of doing research with robots is that they come with a lot of baggage you’re not particularly interested in. Maybe you’re exploring computer vision: how a robot recognizes a particular object. And maybe to get a better look at that object, the robot needs to manipulate it, which happens to be one of the biggest challenges in robotics at the moment. The goal of PyRobot is to simplify as much detail as possible. “The idea is the whole pipeline of doing grasping is only a few lines of code,” says Gupta. “That's what makes it easier for a computer vision or machine learning researcher.”

Abstraction, though, comes with its downsides. “The idea of abstraction is good, but in practice when the robot breaks you're stuck trying to fix the abstraction,” says Stefanie Tellex, a roboticist at Brown. “Something goes wrong, the sensors not working anymore or something, and you've got to unpack the problem and break down the abstraction.”

PyRobot used to make a LoCoBot position its arm Facebook

Beyond abstraction, PyRobot promises to play nice with a range of robots. It’s working with two so far: LoCoBot, a single-armed robot on a mobile base that Gupta helped develop at Carnegie Mellon, and Sawyer, a commercial robot that’s also a single arm, but is stationary and has seven degrees of freedom compared to LoCoBot’s five. The two are fundamentally different beasts to program, but PyRobot can command both with the same code.