ROS Groovy Galapagos Released

| No Comments | No TrackBacks

ellingson_groovygalapagos.jpg

Hello ROS Community, 


As we close out 2012 we're happy to announce the release of ROS Groovy Galapagos.  The theme of this release has been building infrastructure to support the growing ROS development community.

Using the new rosdistro repository on GitHub as a microcosm, you can get a sense of scale for the Groovy development  There are 118 public forks of the project publicly available with 73 people having contributed commits to the repository.  Running a script over the history of just the releases/groovy.yaml file in the repository finds that during the groovy development cycle there have been over 1100 commits changing the revisions of packages. And counting each changed version number there have been more than 3500 releases submitted to be built on the build farm.   This means that there have been more than 10 releases every day for the last 9 months on average.  

These statistics only count the packages which have been converted to use the new build and release system which currently stands as about half the released repositories.  One of the goals going forward in Hydro development will be convert the majority of the unconverted packages. 

All these releases have been submitted to our upgraded build farm infrastructure.  The over 450 packages are built into binary packages on 6 different architectures.  The binary builds for packages take between 3 and 90 minutes each, and if run on a single computer would take more than 2 weeks to complete running continuously.  The automatic documentation jobs likewise would take several days to run if run on a single computer.  

The Groovy release cycle ran longer than originally planned however giving it the extra development time has allowed us to produce a much more polished release which will support us better as we start considering how ROS should progress forward.  Going forward the Hydro cycle is expected to be shortened to bring the releases back into sync with the Ubuntu releases with a target of Hydro Medusa for April 2013.  

In the near future we will begin the Hydro planning cycle and kick off a new round of SIGs.  If you have been thinking about something you would like to see in ROS the SIGs will be a great opportunities to find others interested in collaborating to make those thoughts reality.  

Below are the Release Notes.  They have been filled in for the core packages and anyone who sent me information has been integrated. If you have updates stacks or packages, please add your information to the version on the wiki to make it as complete as possible.  

In the final release there have been 82 packages patched since Beta 3.  Most of the focus in the run-up to the release has been on documentation and tutorials.  

Happy New Year!

Your ROS Groovy Release Team

ROS Groovy Galapagos

ROS Groovy Galapagos will be the sixth ROS distribution release and was released December 31st 2012. In this release we have focused on the core infrastructure of ROS to make it easier to use, more modular, more scalable, work across a larger number of operating systems/hardware architectures/robots and most importantly to further involve the ROS community.

Platforms

ROS Groovy Galapagos will be primarily targeted at the Ubuntu 12.04 (Precise) release, though compatibility with other Linux systems as well as Mac OS X, Android, and Windows is anticipated. For more information on compatibility, please see REP 3: Target Platforms.

Installation

Please see the installation instructions. There are binary packages available for Ubuntu distributions, Oneiric, Precise, and Quantal for both 32 and 64 bit architectures. There is also improved infrastructure for building from source, most heavily tested on OSX. And experimental instructions for other platforms.

Ubuntu Users: Please make sure to use the Python tools from apt and not pip. The pip based installs tend to go out of date and not get updated with the rest of the system.

Major Updates

Mass migration of code to GitHub

Traditionally, ROS code has been scattered across numerous version control systems (git, svn, hg, etc) across different hosting services throughout the world. Though the ROS wiki has acted as a central point of documentation, issue/ticket tracking has been just as disparate as the usage of VCS tools.

With ROS Groovy, an effort has been made to move core packages to GitHub along with all issue tracking. This has brought several benefits including making ROS more available to the wider open source community and providing VCS consistency for ROS packages. Most importantly, utilizing GitHub has involved the ROS community more and given it more ownership of the codebase. GitHub's pull requests have made it much easier for the core ROS development team to apply patches from the community as well as respond to design feedback more rapidly. In the last development cycle there have been 71 people who have contributed to the rosdistro file, using 239 pull requests and there exist 115 public forks of the rosdistro project on GitHub. The ease of forking and submitting pull requests has made this higher level of community engagement possible. GitHub additionally provides excellent tools for navigating code, managing issues/milestones, and increasing developer communication. All ROS package developers are highly encouraged, but not required, to utilize GitHub for their own repositories so as to further unify both the ROS codebase and community.

On GitHub, ROS repositories are spread across several GitHub "organizations" to group related repositories in an intuitive manner:

New Build System - catkin

The most striking and significant change in Groovy is the introduction of a new build system called catkin which will eventually fully replace the original rosbuild build system. catkin was developed to address several drawbacks inrosbuild so that ROS can continue to grow and scale. As opposed to rosbuild catkin promotes Filesystem Hierarchy Standard (FHS) compliance, making it much easier to distribute ROS packages on other operating systems and architectures.

Though a prototype version was already introduced in fuerte for a only few packages, catkin is now the official build system of ROS. rosbuild will continue to be supported for the forseeable future, but in time will be deprecated. catkin has been designed to be backwards compatible with existing rosbuild packages and stacks that have not yet migrated. Most of the core packages have already been migrated and new packages should utilize catkin.

The workflow of catkin is somewhat different from rosbuild, but great care has been taken to make the transition as smooth as possible. Here are some resources for getting started with catkin:

Removal of Stacks

With the new version of catkin in Groovy, the concept of Stacks has been removed. One of the main reasons for this was that there was a duplication of dependency tracking between packages and stacks. Previously packages only depend on packages, and stacks only depend on stacks, so the stack which contains a package must depend on all of the stacks which contain the dependencies of that package. Additionally, by removing stacks the code base has become more modular because you can install any package and its dependencies, where as in the past a package would often unnecessarily pull in its stack and other unused dependencies.

To preserve some of the benefits of stack, the concept of "metapackages" replaces the concept of stacks. A metapackage is not a container of packages like rosbuild stacks were, but a named set of references to packages. It can be used to preserve some structure using a catkin metapackage replacing an old rosbuild stacks (this helps with for backwards compatibility of documentation with rosbuild, e.g. in wikis). A metapackage can depend on packages which don't necessarily reside in the same folder or source repository. This allows for more flexibility of development workflows, allowing to have separate repositories for packages that belonged to a single stack.

This is captured more formally in REP 127

New Package Release System - bloom

With catkin also comes a new package release system known as bloombloom not only simplifies your workflow when releasing ROS packages to the world, but also provides features to make it easier to maintain released packages, version them, and patch/backport changes.

bloom takes your catkin packages and releases them to a "release repository". All of the ROS release repositories are hosted in the ros-gbp organization on https://github.comhttps://github.com/ros-gbp. The release repository contains snapshots of your source repository (the repository you develop on) and provides tags to the snapshots. Additionally it creates a "release" branch for each package in your upstream repository on which you can make patches and it provides tags for each released version of your packages. Finally, bloom can generate files for building Debian .debs on the ROS build farm. Because we host our release repositories on https://github.com, there are known urls for each release of each package. This makes the release repositories a good source for building released ros packages from source.

bloom allows a source code repository to contain any number of packages, related or not. The only caveat to having multiple packages in a single repository is that they must be released with a common version number, i.e. one release version number per repository.

New GUI Tools - rqt

In Groovy, core ROS GUI tools (rxconsole, rxgraph, etc) have been significantly refined. These tools have been replaced by a single new tool called rqt. rqt is a software framework that implements the various GUI tools in the form of plugins. One can run all the existing GUI tools as dockable windows within rqt -- even rviz! The tools can still run in a traditional standalone method, but rqt makes it easier to manage all the various windows on the screen at one moment.

Users can create their own plugins for rqt with either Python or C++. Over 20 plugins have already been created and more are slated for development.

rviz

rviz has been significantly redesigned with a cleaner user interface and and a new plugin API covering all major functions. RViz is now "on its own" and so can be installed directly (on Ubuntu for example) as ros-groovy-rviz. It no longer depends on visualization_common, instead depends directly on standard OS installations of OGRE, easing compilation from source. Python support has been greatly expanded, so rviz windows, displays, viewpoints, and tools can all be manipulated from Python now.

The "save" file format has also changed: it now saves into "*.rviz" files which are in YAML format, easing manual editing, comparison, and automatic generation.

pluginlib and class_loader

pluginlib, the library for creating plugins in C++ code, has been almost completely rewritten while retaining 100% backwards compatibility. New features include thread-safety, simplified API, and true library class introspection. pluginlibis now built on top of a new ROS-independent package called class_loader which can be used to work with plugins in software that does not utilize the ROS build system.

Gazebo

The Gazebo simulator project, the simulation engine used within the simulator_gazebo ros stack, has recently undergone major improvements and re-factoring as it went from version 1.0 to 1.3The Groovy release of Gazebo has been updated to run with gazebo 1.2.x with pending updates to upgrade to gazebo 1.3.x in the near future.

All changes in the underlying simulator can be found on gazebosim.org, as well as commonly asked questions and answers for gazebo via gazebo answers page.

Other New Packages:

Tutorials

The significant overhaul of core ROS infrastructure has meant a significant change in fundamental ROS documentation, primarily in the tutorials. It is recommended to review them again, even if you are a ROS veteran, at http://www.ros.org/wiki/ROS/Tutorials. All the Tutorials beyond Creating A Package have been converted to support the new and old build system.

Automatic Documentation Jobs

One of the valuable services provided to the ROS community is the public indexing of packages and automatic documentation generation onto ros.org. The entire system has been overhauled to parallelize and isolate failures of individual repositories from stopping other repositories from being documented. The new infrastructure now also provides properly versioned documentation for each ROS distro. For more information on how to be indexed in the new system see the Get Involved page.

Migrating

As with any release there have been some areas which will require updating. In this cycle most of the changes have been adding APIs while maintaining backwards compatibility for the old APIs.

Moving From rosbuild To catkin

The biggest change is the switch from rosbuild to catkin. This switch has been done while providing backwards compatibility, such that legacy packages can depend on converted packages without being changed. However catkin based packages cannot depend on rosbuild based packages. This leads to what has been called the rising tide where the conversion to catkin must propogate up the dependency tree. Wet packages, catkin based, are always below the dry packages, rosbuild based, as the tide rises.

A detailed guide to converting packages can be found in the catkin documentation. catkin/migrating_from_rosbuild

Change from Wx to Qt

One significant change is the transition from Wx to Qt. If you have been using Wx graphical toolkits it is recommended to switch. Most of our primary visualization tools have been ported to Qt. And there are many plugins for them. There are tutorials on the [[rqt] page on how to write new Qt based plugins.

laser_drivers REP 117 Deprecation Completed

If you have been using the laser_drivers the changes made by REP 117 have now become the default option. For more information see REP 117

Change Lists of Note

Plans and Special Interest Groups

The planning for the Groovy release was coordinated on the planning page.

Sigs

A significant amount of the Groovy development was coordinated by Special Interest Groups. These groups are summarized at the bottom of the planning page.

ROS Enhancement Proposals (REP)

Four REPs have been finalized during the Groovy development cycle:

No TrackBacks

TrackBack URL: http://www.ros.org/mt-tb.cgi/530

Leave a comment

Find this blog and more at planet.ros.org.


Please submit content to be reviewed by emailing ros-news@googlegroups.com.

About this Entry

This page contains a single entry by Tully Foote published on December 31, 2012 9:50 PM.

ROS Groovy Beta 3 Available was the previous entry in this blog.

Congratulations To OMPL For Winning The Open Source Software World Challenge is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.