The results are in from the January 2014 ROS user survey. Thanks to everyone who participated!
We had a total of 336 responses. We'll walk through the questions, one at a time:
In general, for what do you use ROS?
Not surprisingly, the lion's share of ROS users consider themselves to be doing research. That's where we started, and we expect to continue to see high participation in the research community. But we also see about 1/3 of respondents classifying themselves in education and 1/3 in product development, with a smaller share of self-identified hobbyists. Those are all areas for future growth in ROS usage.
What about ROS convinced you to use it?
Interestingly, the top response here is the communications system. When we set out to build ROS, we started with the communications system, because we believe that robotics problems are most naturally solved by developing distributed systems, and further that developing those systems is hard, requiring solid, easy to use tools. It looks like our users appreciate the effort that's been put into ROS middleware.
Also near the top are what we can call the "healthy open source project" benefits: friendly licensing, helpful community, and playing nicely with related open source projects.
How do you primarily use ROS?
Most users are working with a single robot, but a substantial number of people are working with multiple robots, which was outside the initial design of ROS. Multi-robot support definitely needs improvement, but clearly people are already getting something out of ROS in multi-robot environments.
With what type(s) of hardware do you use ROS?
At least in part because most robots in the world (or at least in research labs) are basically cameras and/or lasers on wheels, we see most of our users working on those platforms. But we also see a fair number of people working with arms and hands, and we expect that the number of legged systems will grow in the future.
Have you shared and/or released your own ROS packages?
Here we see a familiar pattern in open source development: most users don't share their code with the community. That's OK with us, because we know that not everybody is in a position to share their code (for example, commercial users who are building ROS-based products). But if you can share code, please do!
Which ROS packages are most important to you?
Here, we have some clear winners. Visualization is important: rviz is a critical piece of infrastructure in our community, and the rqt library of visualization components is also heavily used. Also highly ranked are planning libraries (navigation and MoveIt!), perception libraries (PCL and OpenCV), coordinate transform management (tf), and simulation (Gazebo). Interestingly, we see the OpenNI driver in the top ten, perhaps reflecting the long-standing connection between ROS and Kinect-like devices, dating back to the ROS 3D Contest.
Where should future ROS development focus?
Less clarity here; basically we should do more of everything.
What is your top priority for future ROS development?
The free-form answers we received in response to this question are challenging to quantify. At a high-level, here's a qualitative distillation of common themes, in no particular order:
- more / better documentation
- more / better / more up-to-date tutorials
- improved usability
- greater stability, less frequent releases
- better multi-master / multi-robot support
- consolidation of related parts into coherent wholes
- better / more mature middleware
- better / more attentive maintenance of core libraries and tools
- add features and fix bugs in rqt
- get to "production quality"
- IDE support
- real time support
Would you be willing to anonymously report usage statistics?
About 1/2 of respondents are willing to install a plugin to roscore that would track and anonymously report usage statistics, which would let us automatically collect data on which packages, nodes, launch files, etc. are most heavily used. Any volunteers to write that plugin?