Autonomous robots have come a long way since the demanding Roomba. In recent years, artificially intelligent systems have been deployed in self-driving cars, last mile food delivery, restaurant service, patient screening, hospital cleaning, meal preparation, building security and warehouse packaging.
Each of these robotic systems is the product of an ad hoc design process specific to that particular system. When designing an autonomous robot, engineers must perform numerous empirical simulations, often based on intuition. These simulations are tailored to the components and tasks of a particular robot to fine-tune and optimize its performance. In some ways, designing an autonomous robot today is like baking a cake from scratch, using no recipe or prepared mix to ensure a successful result.
Now, MIT engineers have developed a common design tool that roboticists can use as a sort of automated recipe for success. The team has devised an optimization code that can be applied to simulations of virtually any autonomous robotic system and used to automatically identify how and where a system can be modified to improve a robot’s performance.
The team showed that the tool was able to quickly improve the performance of two very different autonomous systems: one in which a robot navigated a path between two obstacles, and another in which a pair of robots worked together to move a heavy box. .
The researchers hope the new general purpose optimizer can help accelerate the development of a wide variety of autonomous systems, from walking robots and self-driving vehicles to soft and agile robots and teams of collaborative robots.
The team, consisting of Charles Dawson, an MIT graduate student, and ChuChu Fan, an assistant professor in MIT’s Department of Aerospace, will present his findings later this month at the annual Robotics: Science and Systems conference in New York.
Dawson and Fan realized the need for an overall optimization tool after observing a wealth of automated design tools available for other engineering disciplines.
“If a mechanical engineer wanted to design a wind turbine, they could use a 3D CAD tool to design the structure and then use a finite element analysis tool to verify that it withstands certain loads,” Dawson says. “However, there is a lack of these computer-aided design tools for autonomous systems.”
Typically, a roboticist optimizes an autonomous system by first developing a simulation of the system and its many interacting subsystems, such as planning, control, perception, and hardware components. She then needs to tune certain parameters of each part and run the simulation to see how the system would perform in that scenario.
Only after performing many trial and error scenarios can a roboticist identify the optimal combination of ingredients to deliver the desired performance. It’s a tedious, overly-customized and time-consuming process that Dawson and Fan wanted to turn on its head.
“Instead of saying, ‘Given a design, what’s the performance?’ we wanted to turn this around to say, “Given the performance we want to see, what’s the design that gets us there?” explains Dawson.
The researchers developed an optimization framework, or computer code, that can automatically find tweaks that can be made to an existing autonomous system to achieve a desired result.
The heart of the code is based on automatic differentiation, or “autodiff,” a programming tool developed within the machine learning community and initially used to train neural networks. Autodiff is a technique that can quickly and efficiently evaluate “the derivative”, or the sensitivity to change of a parameter in a computer program. Dawson and Fan built on recent advances in autodiff programming to develop a general-purpose optimization tool for autonomous robotic systems.
“Our method automatically tells us how to take small steps from an initial design to a design that achieves our goals,” says Dawson. “We’re using autodiff to essentially dig into the code that defines a simulator and figure out how to do this inversion automatically.”
Building better robots
The team tested their new tool on two separate autonomous robotic systems and showed that the tool quickly improved the performance of each system in lab experiments, compared to conventional optimization methods.
The first system consisted of a robot on wheels that had to plan a path between two obstacles, based on signals it received from two beacons placed in different locations. The team looked for the optimal placement of the beacons that would provide a clear path between the obstacles.
They found that the new optimizer quickly worked back through the robot’s simulation and identified the best beacons placement within five minutes, compared to 15 minutes for conventional methods.
The second system was more complex and consisted of two-wheeled robots that work together to push a box to a target position. A simulation of this system included many more subsystems and parameters. Nevertheless, the team’s tool efficiently identified the steps the robots needed to achieve their goal, in an optimization process that was 20 times faster than conventional approaches.
“If your system has more parameters to optimize, our tool can do even better and save exponentially more time,” Fan says. “It’s actually a combinatorial choice: as the number of parameters increases, so do the choices, and our approach can reduce that all at once.”
The team has made the general-purpose optimizer available for download and plans to further refine the code for application to more complex systems, such as robots designed to communicate and collaborate with humans.
“Our goal is to empower people to build better robots,” Dawson says. “We’re providing a new building block for optimizing their system so they don’t have to start from scratch.”
This research was supported in part by the Defense Science and Technology Agency in Singapore and by IBM.