Development

I believe that robots will change the world.  Robots are a natural extension of computers, and, just as computers have already done and continue to do, robots and robotic technology will have an enormous impact on society and our way of life.  The goal of my work is to realize that impact as soon as possible, so that we may see the benefits of robotics in our everyday lives.

Researchers are at work worldwide, trying to answer key scientific questions regarding robots.  Advances are made regularly, with each year’s conferences and journals offering myriad new algorithms and approaches. But while researchers share their ideas via scholarly publications, they rarely share their code.

At the same time, hobbyists, engineers, and entrepreneurs are working to bring their creative ideas for robots to fruition.  I consider this group of non-researchers to be tomorrow’s “robot app developers,” analogous to smartphone app developers today.  Coming from a variety of backgrounds, these developers are motivated not by scientific inquiry, but by a passion for robots and a drive to build systems that provide value to users.  But they share a problem with the scientific community: the lack of a common platform.

Robotics is an experimental endeavor, and code, the software that is written to control the robot, is at the core of any research or development effort.  Innovation occurs best when we build on each others’ accomplishments; in robotics, this means accessing and directly reusing each others’ code.  I aim for two complementary goals: for the research community to share code as easily and naturally as they do publications; and for the developer community to build useful and commercially viable applications with a minimum of duplicated engineering effort.  I pursue these goals through open source robotics software.

Early in graduate school, I co-founded the Player Project to develop open source robot interface and control infrastructure.  Our goal was to package low-level software, like device drivers, in a way that others could easily reuse it.  We soon discovered that we could similarly share high-level software, including sophisticated algorithms.  We distributed our code and invited others to contribute.

I am astonished by the result: in ten years, software from the project has been downloaded tens of thousands of times. Our software is actively used in major academic, government, and industrial research labs around the world, as well as in undergraduate and graduate courses.  Given the extensive set of drivers, algorithms, and tools developed by the Player Project, a beginning robotics student or hobbyist has a significant head start, bringing closer the great scientific contribution or product idea that lies in her future.

I am expanding on the success of the Player Project in my current work on the Robot Operating System (ROS) project.  ROS is an open source robot development framework, designed specifically to support the forthcoming generation of robots that have arms and hands, and can manipulate their environment.  In just three years, ROS has eclipsed Player in all usage metrics (downloads, known users, contributed software, etc.), become a de facto standard in the scientific community, is the basis for large government-funded research programs in Europe and the United States (including being required by performers on some DARPA efforts), and is used and supported commercially by several robotics companies.

We are developing ROS to support not only the research community, but also the business community, aiming to create a situation similar to that which preceded the Internet boom: a rich set of tools ready for use in the development of new technology.  I believe that this environment will foster a kind of innovation that we cannot anticipate today.