19
$\begingroup$

My company will soon be starting a brand new robotics project, and we are still trying to decide whether we should design and code a robotics software platform from scratch, or if there are any good existing ones.

It would be very useful if there was a software platform which was commonly used among both academics and industry so that our robotic system was generally compatible with others, and so that people were already familiar with it.

We would like the software platform to be able to:

  • Integrate new robotic hardware components easily.
  • Already contain a wide array of useful data processing and visualisation tools
  • Make efficient use of computing hardware
$\endgroup$

closed as not constructive by Mark Booth, JavaCake, embedded.kyle, ronalchn, Manishearth Oct 26 '12 at 6:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 5
    $\begingroup$ Isn't this a survey question that is subjective? Which is against the spirit of StackExchange. blog.stackoverflow.com/2010/09/good-subjective-bad-subjective $\endgroup$ – Chris Mansley Oct 23 '12 at 20:13
  • 2
    $\begingroup$ But, we can craft the quality of this StackExchange. We should set a precedent of high quality, objective questions that can be answered and learned from. $\endgroup$ – Chris Mansley Oct 23 '12 at 20:24
  • 2
    $\begingroup$ I agree with you but 1) This was the top voted question in the definition, and 2) a small number of such questions don't hurt the site (look at electronics for example). 3) Such questions produce answers which are genuinely useful to many users. $\endgroup$ – Rocketmagnet Oct 23 '12 at 20:53
  • 4
    $\begingroup$ If we are going to let this stand then it should at least be made community wiki, ideally with a single community wiki answer with all of the best descriptions. This would be better than many answers all describing different options and/or providing different descriptions/opinions of the same options. $\endgroup$ – Mark Booth Oct 23 '12 at 23:25
  • 5
    $\begingroup$ I think that survey questions are actually great, because they can save a lot of time for someone figuring out where to look. Googling will not find even all the popular choices in many cases. I think making it a Community Wiki answer is a fine outcome. $\endgroup$ – Jon Watte Oct 24 '12 at 0:44
20
$\begingroup$

ROS is quickly becoming the new standard for both industrial and research robotics. Most research groups I know of are adopting ROS for their work and then pushing their results back into the open for everyone to use and improve. Willow Garage is developing a suite of hardware and software platforms which are all centered around ROS at their core. ROS is a good place to start your search.

$\endgroup$
  • $\begingroup$ Note: although ROS can work on most operating systems, it's most thoroughly tested to work on the Ubuntu distribution of Linux. $\endgroup$ – giogadi Oct 23 '12 at 19:58
  • 1
    $\begingroup$ Additionally, I think that the ROS Introduction Page does a fantastic job of covering the core premise and ideals of the ROS platform. From a developer's perspective, the ROS platform can be used as a very "thin" wrapper around existing libraries (like drivers), to quickly get access to the larger ROS ecosystem. $\endgroup$ – mjcarroll Oct 23 '12 at 20:04
5
$\begingroup$

The Robot Construction Kit is an alternative to ROS. It is driven towards model-driven engineering and design/management of complex systems. It also is driven towards "not being tightly dependent on Rock". Most of the algorithms / drivers in Rock are independent of the component layer. See also this page for a quick summary of the differences between Rock and ROS.

As a previous answer points out, ROS is mainly used as a thin communication library. Rock's component layer is thicker, to provide the tools necessary to scale to complex systems.

What you have to understand is this: in this day and age, the only open-source robotic software worth looking at is framework-independent (OpenCV, PCL, OpenRave, Gazebo, ...). Even Willow Garage finally understood this. Therefore, it can be integrated with a minimal amount of work in any framework.

Now: your best pick also depends on your aim. If what you want is sell hardware, then it is well possible that having a ROS node is your best choice (even though having a good driver library that is then integrated into a ROS node is even better).

$\endgroup$
  • $\begingroup$ Maybe to add on this answer, Rock is based on Orocos which is listed in another answer and thus makes it much easier for systems based on it to be realtime capable. $\endgroup$ – Jakob Oct 25 '12 at 10:25
5
$\begingroup$

Orocos

It is one of the oldest open source framework in robotics, under development since 2001, and with professional industrial applications and products using it since about 2005. The focus of Orocos has always been to provide a hard real- time capable component framework — the so-called Real-Time Toolkit (RTT) implemented in C++ — and as independent as possible from any communication middleware and operating system.

As @BarretAmes said there are integrations which allows the implementation of hybrid systems, where Orocos and other Software Framework work together.

$\endgroup$
  • $\begingroup$ There are also ways to pair Orocos with other frameworks. For example, leveraging ROS with Orocos. $\endgroup$ – Barrett Ames Oct 25 '12 at 20:10
  • 1
    $\begingroup$ FYI, Rock is using Orocos/RTT as its component implementation - just adding a lot of tooling and libraries around it $\endgroup$ – sylvain.joyeux Oct 26 '12 at 11:55
  • $\begingroup$ orocos may be good, but now their official website and forums are no more updating anything and no new users can sign in to their forums so orocos sucks now. $\endgroup$ – user14148 Mar 3 '18 at 10:58
3
$\begingroup$

My preferred platform is ROS. However, there is another strong contender from... dare I say it... Microsoft. It is called Robotics Developer Studio (RDS). Begin your search here: http://www.microsoft.com/robotics/

They have many videos of impressive applications. To me, the largest benefit is the built-in support for Kinect via Microsoft's Kinect SDK. Technically, the one which ROS uses from OpenNI has the same capabilities but it seems comforting to know the SDK which RDS uses is written by the same company which produced the hardware.

$\endgroup$
2
$\begingroup$

Player/Stage is still one of the most popular open source robotics projects out there. It's been around for a long time and some of its developers have moved on to start ROS, but that doesn't detract from Player's usefulness. Indeed, all three main components, Player (the framework), Stage (the 2D simulator), and Gazebo (the 3D simulator), have been made to be somewhat compatible with ROS.

$\endgroup$
1
$\begingroup$

MOOS is Oxford's ROS analog. http://www.robots.ox.ac.uk/~mobile/MOOS/wiki/pmwiki.php It's used for a number of naval applications, from harbor-sweeping to low-power, UUVs that surface to report in intervals counted in months.

$\endgroup$
1
$\begingroup$

OpenRTM

OpenRTM-aist is developed by Japanese National Institute of Advanced Industrial Science and Technology which also contributes to definition of the RT-middleware standard.

It is an open-source component-based framework, which provides real-time capabilities. Beside the framework some tools are available:

  • RTC Builder: a tool for skeleton-code generation. It is launched in the eclipse developmental environment. OpenRTM-aist also supports RTC-template which is a command-line type skeleton-code generation tool.
  • RT System Editor: an Eclipse based toolchain for designing components and component-based systems.
  • rtshell is a command-line tool which provides following services
  • RTC debugger: a debugging tool for RTCs. RTC debugger is an Eclipse plug-in.
$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.