User:ApprehensiveAndroid/sandbox: Difference between revisions

Content deleted Content added
mNo edit summary
Removing Melodic_Morenia.png; it has been deleted from Commons by Fitindia because: No permission since 23 January 2025.
 
(34 intermediate revisions by 5 users not shown)
Line 1:
 
{{under construction |placedby=[[User:ApprehensiveAndroid|ApprehensiveAndroid]] ([[User talk:ApprehensiveAndroid|talk]]) |section= |nosection= |nocat= |notready= |comment= |category= |altimage= }}
 
Line 6 ⟶ 5:
{{Infobox software
| name =
| logo = Ros_logo.svg
| logo size = 300px
| logo caption = Robot Operating System Logo
| screenshot = Cart_pushing_rviz_holonomic.jpg
| caption = Cart pushing simulation in RVIZ
| author = [[Willow Garage]]<br/>[[Stanford Artificial Intelligence Laboratory]]
| released = {{Start date and age|2007}}
| latest release version = Melodic Morenia<ref>{{cite web|url=https://wiki.ros.org/melodic|title=ROS Melodic Morenia |publisher=wiki.ros.org |date= |accessdate=2018-06-10}}</ref>
| latest release date = {{Start date and age|df=yes|2018|05|23}}
| operating system = [[Linux]], [[MacOS]] (experimental), [[Windows 10]] (experimental)
| genre = [[Robotics suite]], [[operating system|OS]], [[library (computing)|library]]
| license = [[BSD license]]
| website = {{URL|www.ros.org}}
| programming_language = [[C++]], [[Python (programming language)|Python]], or [[Lisp (programming language)|Lisp]]
}}
'''Robot Operating System''' ('''ROS or ros''') is [[robotics middleware]] (i.e. collection of [[software framework]]s for [[robot]] software development). Although ROS is not an [[operating system]], it provides services designed for a heterogeneous [[computer cluster]] such as [[hardware abstraction]], low-level [[Device driver|device control]], implementation of commonly used functionality, [[Inter-process communication|message-passing between processes]], and package management. Running sets of ROS-based processes are represented in a [[graph theory|graph]] architecture where processing takes place in nodes that may receive, post and multiplex sensor data, control, state, planning, actuator, and other messages. Despite the importance of reactivity and [[low latency]] in robot control, ROS itself is ''not'' a [[Real-time operating system|real-time OS]] (RTOS). It is possible, however, to integrate ROS with real-time code.<ref>ROS-Introduction http://wiki.ros.org/ROS/Introduction</ref> The lack of support for real-time systems has been addressed in the creation of ROS 2.0.<ref>{{cite web|last1=Kay|first1=Jackie|title=Proposal for Implementation of Real-time Systems in ROS 2|url=http://design.ros2.org/articles/realtime_proposal.html|access-date=16 August 2016}}</ref><ref>{{cite web|last1=Kay|first1=Jackie|title=Realtime Design Guidelines For ROS 2|url=http://design.ros2.org/articles/realtime_background.html#design-guidelines-for-ros-2|website=design.ROS2.org|publisher=ROS2|access-date=22 November 2018}}</ref><ref>{{cite web|title=ROS 2 For Realtime Applications|url=https://discourse.ros.org/t/ros2-for-real-time-applications/6493|website=discourse.ROS.org|publisher=ROS|access-date=22 November 2018}}</ref>, a major revision of the ROS API which will take advantage of modern libraries and technologies for core ROS functionality and add support for real-time code and [[Embedded system|embedded hardware]].
 
Software in the ROS Ecosystem<ref>{{cite web|title=Browsing packages for indigo|url=http://www.ros.org/browse/list.php|title=Browsing packages for melodic|last=|first=|date=|website=ROS.org|publisher=ROS|archive-url=|archive-date=|access-date=21 February 2016}}</ref> can be separated into three groups:
* language-and platform-independent tools used for building and distributing ROS-based software;
* ROS client library implementations such as roscpp,<ref>{{cite web|title=Package Summary|url=http://wiki.ros.org/roscpp|website=ROS.org|publisher=ROS|accessdate=21 February 2016}}</ref> rospy,<ref>{{cite web|title=Package SUmmary|url=http://wiki.ros.org/rospy|website=ROS.org|publisher=ROS|accessdate=21 February 2016}}</ref> and roslisp;<ref>{{cite web|title=Package Summary|url=http://wiki.ros.org/roslisp|website=ROS.org|publisher=ROS|access-date=21 February 2016}}</ref>
* packages containing application-related code which uses one or more ROS client libraries.<ref>{{cite web|url=http://wiki.ros.org/Client%20Libraries|title=client libraries|website=ROS.org|access-date=12 December 2017}}</ref>
Both the language-independent tools and the main client libraries ([[C++]], [[Python (programming language)|Python]], and [[Lisp (programming language)|Lisp]]) are released under the terms of the [[BSD license]], and as such are [[open source software]] and free for both commercial and research use. The majority of other packages are licensed under a variety of [[Open-source license|open source licenses]]. These other packages implement commonly used functionality and applications such as hardware drivers, robot models, datatypes, planning, [[Robotic sensing|perception]], [[simultaneous localization and mapping]], simulation tools, and other algorithms.
 
The main ROS client libraries (C++, Python, and Lisp) are geared toward a [[Unix-like]] system, primarily because of their dependence on large collections of open-source software dependencies. For these client libraries, [[Ubuntu (operating system)|Ubuntu Linux]] is listed as "Supported" while other variants such as [[Fedora (operating system)|Fedora Linux]], [[macOS]], and [[Microsoft Windows]] are designated "Experimentalexperimental" and are supported by the community.<ref>{{cite web|url=http://wiki.ros.org/ROS/Installation |title=ROS/Installation - ROS Wiki |publisher=Wiki.ros.org |date=2013-09-29 |accessdate=2014-07-12}}</ref> The native Java ROS client library, rosjava<ref>{{Cite web|url=http://wiki.ros.org/rosjava|title=rosjava - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref>, however, does not share these limitations and has enabled ROS-based software to be written for the [[Android (operating system)|Android OS]].<ref>{{cite web|url=http://wiki.ros.org/android |title=android - ROS Wiki |publisher=Wiki.ros.org |date=2014-04-12 |accessdate=2014-07-12}}</ref> rosjava has also enabled ROS to be integrated into an officially supported [[MATLAB]] toolbox which can be used on [[Linux]], [[macOS]], and Microsoft Windows.<ref>{{cite web|url=http://www.mathworks.com/hardware-support/robot-operating-system.html |title=Robot Operating System (ROS) Support from MATLAB - Hardware Support |publisher=Mathworks.com |date= |accessdate=2014-07-12}}</ref> A [[JavaScript]] client library, roslibjs<ref>{{Cite web|url=http://wiki.ros.org/roslibjs|title=roslibjs - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> has also been developed which enables integration of software into a ROS system via any standards-compliant web browser. In September 2018 Microsoft ported Core ROS to Windows 10.
 
==History and milestones==
{{Comment}} This section should be rewritten narratively.
 
=== Early Days at Stanford (2007 and Earlier) ===
{{Comment}} Also, a section on ROS2 should be added to the end.
Sometime before 2007, the first pieces of what eventually would become ROS were beginning to come together at [[Stanford University]]<ref name=":0">{{Cite web|url=https://spectrum.ieee.org/automaton/robotics/robotics-software/wizards-of-ros-willow-garage-and-the-making-of-the-robot-operating-system|title=Wizards of ROS: Willow Garage and the Making of the Robot Operating System|last=Guizzo|first=Evan Ackerman and Erico|date=2017-11-07|website=IEEE Spectrum: Technology, Engineering, and Science News|language=en|access-date=2019-04-29}}</ref><ref>{{Cite web|url=https://spectrum.ieee.org/automaton/robotics/robotics-software/the-origin-story-of-ros-the-linux-of-robotics|title=The Origin Story of ROS, the Linux of Robotics|last=Wyrobek|first=Keenan|date=2017-10-31|website=IEEE Spectrum: Technology, Engineering, and Science News|language=en|access-date=2019-04-29}}</ref>.  [[Eric Berger (engineer)|Eric Berger]] and [[Keenan Wyrobek]], PhD students working in [[Kenneth Sailsbury|Kenneth Sailsbury’s]]<ref>{{Cite web|url=https://www.stanford.edu/group/sailsbury_robotx/cgi-bin/salisbury_lab/?page_id=1217|title=J. Kenneth Salisbury, Ph.D. {{!}} Salisbury Robotics Lab|language=en-US|access-date=2019-04-29}}</ref> robotics laboratory at Stanford, were leading the Personal Robotics Program<ref>{{Cite web|url=http://personalrobotics.stanford.edu/|title=Stanford Personal Robotics Program|website=personalrobotics.stanford.edu|access-date=2019-04-29}}</ref>.  While working on robots to do manipulation tasks in human environments, the two students noticed that many of their colleagues were held back by the diverse nature of robotics: an excellent software developer might not have the hardware knowledge required, someone developing state of the art path planning might not know how to do the computer vision required. In an attempt to remedy this situation, the two students set out to make a baseline system that would provide a starting place for others in academia to build upon. In the words of Eric Berger, “something that didn’t suck, in all of those different dimensions”.<ref name=":0" />
 
In their first steps towards this unifying system, the two build the [[PR1 (robot)|PR1]] as a hardware prototype and began to work on software from it, borrowing the best practices from other early open source robotic software frameworks, particularly switchyard, a system that Morgan Quigley, another Stanford PhD student, had been working on in support of the STAIR (STanford Artificial Intelligence Robot)<ref>{{cite web|url=http://stair.stanford.edu/|title=STAIR|website=stair.Stanford.edu|access-date=12 December 2017}}</ref><ref>{{citation|last1=Quigley|first1=Morgan|title=STAIR: Hardware and Software Architecture|url=http://www.aaai.org/Papers/Workshops/2007/WS-07-15/WS07-15-008.pdf|year=2007|publisher=AAAI 2007 Robotics Workshop|last2=Berger|first2=Eric|last3=Ng|first3=Andrew Y.|author3-link=Andrew Ng}}</ref> by the [[Stanford Artificial Intelligence Laboratory]].  Early funding of 50,000 USD was provided by [[Joanna Hoffman]] and [[Alain Rossmann]], which supported the development of the PR1. While seeking funding for further development<ref>{{Cite journal|last=Keenan Wyrobek|date=2017-07-03|title=Personal Robotics Program Fund Fundraising Deck from 2006|url=https://www.slideshare.net/KeenanWyrobek/personal-robotics-program-fund-fundraising-deck-from-2006}}</ref>, Eric Berger and Keenan Wyrobek met [[Scott Hassan]], the founder of [[Willow Garage]], a [[technology incubator]] which was working on an autonomous SUV and a solar autonomous boat.  Hassan shared Berger and Wyrobek’s vision of a “Linux for robotics”, and invited them to come and work at Willow Garage.  Willow Garage was started in January of 2007, and the first commit of ROS code was made to SourceForge on the seventh of November, 2007<ref>{{cite web|url=https://sourceforge.net/p/ros/code/10/log/?path=|title=Repository: code|website=Sourceforge.net|access-date=12 December 2017}}</ref>.
{{Comment}} The first lego storm citation may not be accurate.
 
=== Willow Garage (2007-2013) ===
Willow Garage began developing the [[PR2 (robot)|PR2]] robot as a follow-up to the PR1, and ROS as the software to run it. Groups from more than twenty institutions made contributions to ROS, both the core software and the growing number of packages which worked with ROS to form a greater software ecosystem<ref>{{cite web|url=http://www.ros.org/wiki/Repositories|title=Repositories|work=ROS.org|access-date=7 June 2011}}</ref><ref name="Quigley-ROS">{{cite web|url=http://www.robotics.stanford.edu/~ang/papers/icraoss09-ROS.pdf|title=ROS: an open-source Robot Operating System|last1=Quigley|first1=Morgan|last2=Gerkey|first2=Brian|access-date=3 April 2010|last3=Conley|first3=Ken|last4=Faust|first4=Josh|last5=Foote|first5=Tully|last6=Leibs|first6=Jeremy|last7=Berger|first7=Eric|last8=Wheeler|first8=Rob|last9=Ng|first9=Andrew|author-link9=Andrew Ng}}</ref>. The fact that people outside of Willow were contributing to ROS (particularly from Stanford’s STAIR project) meant that ROS was a multi-robot platform from the beginning. While Willow Garage had originally had other projects in progress, they were scrapped in favor of the Personal Robotics Program: focused on producing the PR2 as a research platform for academia and ROS as the open source robotics stack that would underlie both academic research and tech startups, much like the [[LAMP (software bundle)|LAMP stack]] did for web-based startups.
* ROS was started by borrowing the best practices from many early open source robotic software frameworks including ''switchyard'' by the [[Stanford Artificial Intelligence Laboratory]] in support of the Stanford AI Robot STAIR (STanford AI Robot) project.<ref>{{cite web|url=http://stair.stanford.edu/|title=STAIR|website=stair.Stanford.edu|access-date=12 December 2017}}</ref><ref>{{citation |title=STAIR: Hardware and Software Architecture |first1=Morgan |last1=Quigley |first2=Eric |last2=Berger |first3=Andrew Y. |last3=Ng |author3-link=Andrew Ng |year=2007 |url=http://www.aaai.org/Papers/Workshops/2007/WS-07-15/WS07-15-008.pdf |publisher=AAAI 2007 Robotics Workshop}}</ref>
* On January Willow Garage hires their first employees: Jonathan Stark, Melonee Wise, Curt Meyers, and John Hsu.
* First commit of ROS code to SourceForge on November 7th<ref>{{cite web|url=https://sourceforge.net/p/ros/code/10/log/?path=|title=Repository: code|website=Sourceforge.net|access-date=12 December 2017}}</ref>
 
In December 2008, Willow Garage met the first of their three internal milestones: continuous navigation for the PR2 over a period of two days and a distance of pi kilometers<ref>{{Citation|last=WillowGaragevideo|title=Milestone 1|date=2008-12-19|url=https://www.youtube.com/watch?v=iGoqYm7-NkQ|access-date=2019-04-29}}</ref>. Soon after, an early version of ROS (0.4 Mango Tango)<ref>{{Cite web|url=http://www.ros.org/news/2009/02/ros-04-release.html|title=ROS 0.4 Release - ROS robotics news|website=www.ros.org|access-date=2019-04-29}}</ref> was released, followed by the first RVIZ documentation and the first paper on ROS<ref name="Quigley-ROS" />.  In early summer, the second internal milestone: having the PR2 navigate the office, open doors, and plug itself it in, was reached<ref>{{Citation|last=WillowGaragevideo|title=Milestone 2 Explained|date=2009-07-02|url=https://www.youtube.com/watch?v=I1emTXIzhZw|access-date=2019-04-29}}</ref>. This was followed in August by the initiation of the ROS.org website<ref>{{cite web|url=http://www.ros.org/news/2009/08/welcome-to-ros-org.html|title=Welcome to ros.org - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>. Early tutorials on ROS were posted in December<ref>{{cite web|url=http://www.ros.org/news/2009/12/ros-tutorials-and-turtles.html|title=ROS Tutorials and Turtles - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>, preparing for the release of ROS 1.0, in January of 2010<ref>{{Cite web|url=http://www.ros.org/news/2010/01/ros-10.html|title=ROS 1.0 - ROS robotics news|website=www.ros.org|access-date=2019-04-29}}</ref>. This was Milestone 3: producing tons of documentation and tutorials for the enormous capabilities that Willow Garage’s engineers had developed over the preceding 3 years.
===2008===
* Development was performed primarily at [[Willow Garage]], a robotics research lab, when [[Eric_Berger_(engineer)|Eric Berger]] and Keenan Wyrobek,<ref>{{Cite web|url=https://spectrum.ieee.org/automaton/robotics/robotics-software/the-origin-story-of-ros-the-linux-of-robotics|title=The Origin Story of ROS, the Linux of Robotics|website=IEEE Spectrum: Technology, Engineering, and Science News|language=en|access-date=2017-10-31}}</ref> the founders of the Stanford Personal Robotics Program,<ref>{{Cite web|url=http://personalrobotics.stanford.edu/|title=Stanford Personal Robotics Program|website=personalrobotics.stanford.edu|access-date=2017-07-03}}</ref> left Stanford to start the Personal Robotics Program at Willow Garage.<ref>{{Cite news|url=https://magazine.engineerjobs.com/2013/robot-operating-system.htm|title=Robot Operating System|date=2013-05-01|work=EngineerJobs Magazine|access-date=2017-07-03|language=en-US}}</ref> During that time, researchers at more than twenty institutions collaborated with Willow Garage engineers in a federated development model.<ref>{{cite web |url=http://www.ros.org/wiki/Repositories |title=Repositories |work=ROS.org |access-date=7 June 2011}}</ref><ref name=Quigley-ROS>{{cite web |url=http://www.robotics.stanford.edu/~ang/papers/icraoss09-ROS.pdf |title=ROS: an open-source Robot Operating System |first1=Morgan |last1=Quigley |first2=Brian |last2=Gerkey |first3=Ken |last3=Conley |first4=Josh |last4=Faust |first5=Tully |last5=Foote |first6=Jeremy |last6=Leibs |first7=Eric |last7=Berger |first8=Rob |last8=Wheeler |first9=Andrew |last9=Ng |author-link9=Andrew Ng |access-date=3 April 2010}}</ref>
 
Following this, Willow Garage achieved one of its longest held goals: giving away 10 PR2 robots to worthy academic institutions. This had long been a goal of the founders, as they felt that the PR2 could kick-start robotics research around the world. They ended up awarding eleven PR2s to different institutions, including [[University of Freiburg|University of Freiburg (Germany)]], [[Robert Bosch GmbH|Bosch]], [[Georgia Institute of Technology|Georgia Tech]], [[KU Leuven|KU Leuven (Belgium)]], [[Massachusetts Institute of Technology|MIT,]] [[Stanford University|Stanford]], [[Technical University of Munich|TU Munich (Germany)]], [[University of California, Berkeley|UC Berkeley]], [[University of Pennsylvania|U Penn]], [[University of Southern California|USC]], and [[University of Tokyo|University of Tokyo (Japan)]]<ref>{{Cite web|url=http://www.willowgarage.com/blog/2010/05/04/pr2-beta-program-recipients|title=The Results Are In: PR2 Beta Program Recipients! {{!}} Willow Garage|website=www.willowgarage.com|access-date=2019-04-29}}</ref>.  This, combined with Willow Garage’s highly successful internship program<ref>{{Cite web|url=http://www.willowgarage.com/pages/community/interns-and-visiting-scholars|title=Interns and Visiting Scholars {{!}} Willow Garage|website=www.willowgarage.com|access-date=2019-04-29}}</ref> (run from 2008-2010 by [[Melonee Wise]]), helped to spread the word about ROS throughout the robotics world. The first official ROS distribution release: ROS Box Turtle, was released on March 2nd of 2010, marking the first time that ROS was official distributed with a set of versioned packages for public use. These developments lead to the first drone running ROS<ref>{{cite web|url=http://www.ros.org/news/2010/05/robots-using-ros-penn-quadrotors.html|title=Robots Using ROS: Penn Quadrotors - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>, the first autonomous car running ROS<ref>{{cite web|url=http://www.ros.org/news/2010/03/robots-using-ros-marvin-autonomous-car.html|title=Robots Using ROS: Marvin autonomous car (Austin Robot Technology/UT Austin) - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>, and the adaption of ROS for [[Lego Mindstorms]]<ref>{{cite web|url=http://www.ros.org/news/2010/08/robots-using-ros-lego-nxt.html|title=Robots Using ROS: Lego NXT - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>. With the PR2 Beta program well underway, the PR2 robot was officially released for commercial purchase on September 9th, 2010<ref>{{Cite web|url=http://www.willowgarage.com/blog/2010/09/07/pr2-pricing-and-open-source-discount|title=PR2 Robots Available for Purchase|last=|first=|date=|website=|archive-url=|archive-date=|access-date=}}</ref>.
===2009===
* ROS 0.4 Mango Tengo was released on February 10th.
* On February 16th RVIZ's first version of documentation released.
* The first published paper on ROS is published: ''ROS: an open-source Robot Operating System'' on May 12th (Authors: Morgan Quigley, Ken Conley, Brian Gerkey, Josh Faust, Tully Foote, Jeremy Leibs, Rob Wheeler, [[Andrew Ng|Andrew Y Ng]])<ref name=Quigley-ROS />
* ROS.org ___domain is put up on the web on August 16th.<ref>{{cite web|url=http://www.ros.org/news/2009/08/welcome-to-ros-org.html|title=Welcome to ros.org - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* The first ROS Tutorial is published on December 12th.<ref>{{cite web|url=http://www.ros.org/news/2009/12/ros-tutorials-and-turtles.html|title=ROS Tutorials and Turtles - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
 
[[File:ROS Antarctica sunset.jpg|thumb|An image of Robot Operating System (ROS) running in Antarctica.]]
===2010===
* ROS 1.0 is released on January 22
* The first [[autonomous car]] running ROS was announced on March 30th by [[University of Texas at Austin|UT Austin]] and Austin Robotic Technology. <ref>{{cite web|url=http://www.ros.org/news/2010/03/robots-using-ros-marvin-autonomous-car.html|title=Robots Using ROS: Marvin autonomous car (Austin Robot Technology/UT Austin) - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* On May 5th Willow Garage awarded PR2 Robots to 11 different institutions
** [[University of Freiburg]] (Germany)
** [[Robert Bosch GmbH|Bosch]]
** [[Georgia Institute of Technology|Georgia Tech]]
** [[KU Leuven]] (Belgium)
** [[Massachusetts Institute of Technology|MIT]]
** [[Stanford University|Stanford]]
** [[Technical University of Munich|TU Munich]] (Germany)
** [[University of California, Berkeley|UC Berkeley]]
** [[University of Pennsylvania|U Penn]]
** [[University of Southern California|USC]]
** [[University of Tokyo]] (Japan)
* First drone using ROS, from GRASP Lab at [[University of Pennsylvania|U Penn]] is announced on May 29th.<ref>{{cite web|url=http://www.ros.org/news/2010/05/robots-using-ros-penn-quadrotors.html|title=Robots Using ROS: Penn Quadrotors - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* The first use of ROS on [[Lego Mindstorms]] August 19th.<ref>{{cite web|url=http://www.ros.org/news/2010/08/robots-using-ros-lego-nxt.html|title=Robots Using ROS: Lego NXT - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* On September 9th PR2 robots were made available for commercial purchase for the first time.<ref>{{Cite web|url=http://www.willowgarage.com/blog/2010/09/07/pr2-pricing-and-open-source-discount|title=PR2 Robots Available for Purchase|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
 
2011 was a banner year for ROS with the launch of ROS Answers, a Q/A forum for ROS users, on February 15th<ref>{{cite web|url=http://www.ros.org/news/2011/02/announcing-ros-answers.html|title=Announcing ROS Answers - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>; the introduction of the highly successful Turtlebot robot kit on April 18th<ref>{{cite web|url=http://www.willowgarage.com/blog/2011/04/18/turtlebots-available-preorder|title=ROS on the Move: TurtleBots available for preorder - Willow Garage|website=www.WillowGarage.com|access-date=12 December 2017}}</ref>; and the total number of ROS repositories passing 100 on May 5th<ref>{{cite web|url=http://www.ros.org/news/2011/05/100-repositories.html|title=100 Repositories - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>.  Willow Garage began 2012 by creating the [[Open Source Robotics Foundation]] (OSRF)<ref>{{Cite web|url=http://www.willowgarage.com/blog/2012/04/16/open-source-robotics-foundation|title=Willow Garage Spins Out OSRF|last=|first=|date=|website=|archive-url=|archive-date=|access-date=}}</ref> in April. The OSRF was immediately awarded a software contract by DARPA<ref>{{Cite news|url=https://spectrum.ieee.org/automaton/robotics/robotics-software/darpa-robotics-challenge-simulation-software-open-source-robotics-foundation|title=DARPA Awards Simulation Software Contract to Open Source Robotics Foundation|last=|first=|date=|work=|access-date=|archive-url=|archive-date=}}</ref>. Later that year, the first ROSCon was held in St. Paul, MN<ref>{{Cite web|url=http://www.ros.org/news/2012/05/thanks-for-a-great-roscon-2012.html|title=Thanks for a great ROSCon 2012! - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>, the first book on ROS, ''ROS By Example''<ref>{{Cite web|url=http://www.ros.org/news/2012/09/new-book-ros-by-example.html|title=New Book: ROS by Example - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>, was published, and the Baxter, first commercial robot to run ROS, was announced by [[Rethink Robotics]]<ref>{{Cite web|url=http://www.ros.org/news/2012/09/rethink-ros.html|title=Rethink ROS - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>.  Soon after passing its fifth anniversary in November, ROS began running on every continent on December 3rd, 2012<ref>{{Cite web|url=http://www.ros.org/news/2012/12/ros-five-years.html|title=ROS: Five Years - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>.
===2011===
* The first public appearance of TurtleBot occurred on January 26th, at the Homebrew Robotics Club.
* ROS Answers is introduced on February 15th a Q/A Forum for ROS users.<ref>{{cite web|url=http://www.ros.org/news/2011/02/announcing-ros-answers.html|title=Announcing ROS Answers - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* On April 18th Willow Garage announces TurtleBot a hobbyist personal robot kit.<ref>{{cite web|url=http://www.willowgarage.com/blog/2011/04/18/turtlebots-available-preorder|title=ROS on the Move: TurtleBots available for preorder - Willow Garage|website=www.WillowGarage.com|access-date=12 December 2017}}</ref>
* On May 5th ROS surpasses 100 repositories.<ref>{{cite web|url=http://www.ros.org/news/2011/05/100-repositories.html|title=100 Repositories - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
** The 100th repository is rl-texplore-ros-pkg from the [[University of Texas at Austin]]
* The first pure Java implementation of ROS announced at [[Google I/O]] on May 11th.<ref>{{Cite web|url=http://www.ros.org/news/2011/05/google-io-2011-cloud-robotics-ros-for-java-and-android.html|title=Google I/O 2011: Cloud Robotics, ROS for Java and Android - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
* The 4th anniversary of ROS and video compilation published on November 8th.<ref>{{Cite web|url=http://www.ros.org/news/2011/11/celebrating-the-fourth-anniversary-of-ros-and-the-first-roscon-2012.html|title=Celebrating the fourth anniversary of ROS... and the First ROSCon 2012 - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
 
In February of 2013, the OSRF became the primary software maintainers for ROS<ref>{{cite web|url=http://osrfoundation.org/blog/ros-at-osrf.html|title=Osrf - Ros @ Osrf|date=2013-02-11|publisher=Osrfoundation.org|accessdate=2014-07-12}}</ref>, foreshadowing the announcement in August that Willow Garage would be absorbed by its founders, [[Suitable Technologies]]<ref>{{cite web|url=http://www.willowgarage.com/blog/2013/08/21/willow-garage-employees-join-suitable-technologies|title=employees join Suitable Technologies|date=|publisher=Willow Garage|accessdate=2014-07-12}}</ref>. At this point, ROS had released seven major versions (up to ROS Groovy<ref name=":1">{{Cite web|url=http://wiki.ros.org/Distributions|title=Distributions - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref>), and had users all over the globe.  This chapter of ROS development would be finalized when [[Clearpath Robotics|ClearPath Robotics]] took over support responsibilities for the PR2 in early 2014<ref>{{Cite web|url=https://www.clearpathrobotics.com/2014/01/clearpath-welcomes-pr2/|title=Clearpath Welcomes PR2 to the Family|last=|first=|date=|website=|archive-url=|archive-date=|access-date=}}</ref>.
===2012===
* 4/16/2012: Willow Garage spins out Open Source Robotics Foundation<ref>{{Cite web|url=http://www.willowgarage.com/blog/2012/04/16/open-source-robotics-foundation|title=Willow Garage Spins Out OSRF|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 4/17/2012: [[DARPA]] awards software contract to Open Source Robotics Foundation<ref>{{Cite news|url=https://spectrum.ieee.org/automaton/robotics/robotics-software/darpa-robotics-challenge-simulation-software-open-source-robotics-foundation|title=DARPA Awards Simulation Software Contract to Open Source Robotics Foundation|last=|first=|date=|work=|access-date=|archive-url=|archive-date=|dead-url=}}</ref>
* 5/19–20/2012: First ROSCon held in Saint Paul, MN<ref>{{Cite web|url=http://www.ros.org/news/2012/05/thanks-for-a-great-roscon-2012.html|title=Thanks for a great ROSCon 2012! - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
* 9/4/2012: First book on ROS published. ''ROS By Example'', by Patrick Goebel<ref>{{Cite web|url=http://www.ros.org/news/2012/09/new-book-ros-by-example.html|title=New Book: ROS by Example - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
* 9/17/2012: First commercial robot based on ROS released by [[Rethink Robotics]]<ref>{{Cite web|url=http://www.ros.org/news/2012/09/rethink-ros.html|title=Rethink ROS - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
* 11/7/2012: Five year anniversary of ROS, with video compilation<ref>{{Cite web|url=http://www.ros.org/news/2012/12/ros-five-years.html|title=ROS: Five Years - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
* 12/3/2012: ROS now running on every continent<ref>{{Cite web|url=http://www.ros.org/news/2012/12/ros-five-years.html|title=ROS: Five Years - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
 
=== OSRF and Open Robotics (2013-Present) ===
In the years since OSRF took over primary development of ROS, a new version has been released every year<ref name=":1" />, while interest in ROS continues to grow. ROSCons have occurred every year since 2012,co-located with either [[International Conference on Robotics and Automation|ICRA]] or [[International Conference On Intelligent Robots and Systems|IROS,]] two flagship robotics conferences. Meetups of ROS developers have been organized in a variety of countries<ref>[http://www.ros.org/news/2015/01/notes-from-the-first-korean-ros-users-meetup.html ROS meetup in Korea]</ref><ref>{{Cite web|url=http://www.ros.org/news/2016/01/invitation-to-the-first-danish-ros-meetup.html|title=First Danish ROS Meetup|last=|first=|date=|website=|archive-url=|archive-date=|access-date=}}</ref><ref>{{Cite web|url=http://www.ros.org/news/2017/03/invitation-to-the-first-ukrainian-ros-meetup.html|title=First Ukrainian ROS Meetup|last=|first=|date=|website=|archive-url=|archive-date=|access-date=}}</ref>, a number of ROS  books have been published<ref>{{cite web|url=http://shop.oreilly.com/product/0636920024736.do|title=Programming Robots with ROS: A Practical Introduction to the Robot Operating System|website=OReilly.com|access-date=12 December 2017}}</ref>, and many educational programs initiated<ref>{{Cite web|url=http://www.ros.org/news/2015/08/report-from-first-ros-summer-school-in-china.html|title=Report from first ROS Summer School in China - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref><ref>{{Cite web|url=http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/|title=ROS Robot Ignite Academy}}</ref>. On September 1st, 2014, [[NASA]] announced the first robot to run ROS in space: [[Robonaut|Robotnaut 2]], on the [[International Space Station]].<ref>{{cite web|url=http://www.ros.org/news/2014/09/ros-running-on-iss.html|title=ROS running on ISS - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref> In 2017, the OSRF changed its name to [[Open Robotics]].  Tech giants [[Amazon (company)|Amazon]] and [[Microsoft]] began to take an interest in ROS during this time, with Microsoft porting core ROS to Windows in September 2018<ref>{{Cite web|url=https://ros-win.visualstudio.com/ros-win|title=Summary|website=ros-win.visualstudio.com|access-date=2019-04-29}}</ref>, followed by Amazon Web Services releasing RoboMaker in November<ref>{{Cite web|url=https://aws.amazon.com/about-aws/whats-new/2018/11/announcing-aws-robomaker-a-new-cloud-robotics-service/|title=Announcing AWS RoboMaker|website=Amazon Web Services, Inc.|language=en-US|access-date=2019-04-29}}</ref>.
* February 2013, ROS stewardship transitioned to the Open Source Robotics Foundation.<ref>{{cite web|url=http://osrfoundation.org/blog/ros-at-osrf.html |title=Osrf - Ros @ Osrf |publisher=Osrfoundation.org |date=2013-02-11 |accessdate=2014-07-12}}</ref>
* 3/12/2013: 10,000 questions asked on ROS Answers<ref>{{Cite web|url=http://www.ros.org/news/2013/03/10000-questions-asked-on-ros-answers-1.html|title=10,000 Questions Asked on ROS Answers|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 5/11-12/2013: ROSCon 2013 takes place in Stuttgart, Germany
* 6/18/2013: Virtual Robotics Challenge takes place, the virtual stage of the [[DARPA Robotics Challenge]]
* August 2013, a blog posting<ref>{{cite web|url=http://www.willowgarage.com/blog/2013/08/21/willow-garage-employees-join-suitable-technologies |title=employees join Suitable Technologies |publisher=Willow Garage |date= |accessdate=2014-07-12}}</ref> announced that Willow Garage would be absorbed by another company started by its founder, [[Suitable Technologies]].
* 12/3/2013: ROS.org released<ref>{{cite web|url=http://www.ros.org/news/2013/12/a-new-wwwrosorg.html|title=A new www.ros.org - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
 
Perhaps the most important development of the OSRF/Open Robotics years thus far (not to discount the explosion of robot platforms which began to support ROS or the enormous improvements in each ROS version) was the proposal of ROS2, a significant API change to ROS which is intended to support [[Real-time computing|real time programming]], a wider variety of computing environments, and utilize more modern technology<ref>{{Cite web|url=http://design.ros2.org/articles/why_ros2.html|title=Why ROS 2.0?|website=design.ros2.org|access-date=2019-04-29}}</ref>. ROS2 was announced at ROSCon 2014<ref>{{Cite web|url=https://index.ros.org/doc/ros2/|title=ROS2 Overview|website=index.ros.org|access-date=2019-04-29}}</ref>, the first commits to the ros2 repository were made in February 2015, followed by alpha releases in August 2015<ref name=":2">{{Cite web|url=https://index.ros.org/doc/ros2/Releases/|title=ROS 2 Distributions|website=index.ros.org|access-date=2019-04-29}}</ref>.  The first distribution release of ROS2, Ardent Apalone, was released on December 8th, 2017<ref name=":2" />, ushering in a new era of next-generation ROS development.
===2014===
* 1/15/2014: Support responsibilities for the PR2 created by Willow Garage taken over by [[Clearpath Robotics]]<ref>{{Cite web|url=https://www.clearpathrobotics.com/2014/01/clearpath-welcomes-pr2/|title=Clearpath Welcomes PR2 to the Family|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 2/7/2014: ROS Answers Reaches 15,000 Questions<ref>{{Cite web|url=http://www.ros.org/news/2014/02/ros-answers-reaches-15000-questions.html|title=ROS Answers Reaches 15,000 Questions|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 6/6/2014: ROS Kong, the first international ROS user group meeting
* 9/1/2014: First robot in space running on ROS, the Robonaut 2 on the [[International Space Station]]<ref>{{cite web|url=http://www.ros.org/news/2014/09/ros-running-on-iss.html|title=ROS running on ISS - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* 9/12–13/2014: ROSCon 2014 takes place in Chicago. Program here.<ref>{{cite web|url=https://roscon.ros.org/2014static_replacement/program/|title=Program - ROSCon 2014|website=roscon.ROS.org|access-date=12 December 2017}}</ref>
** Industry attendees surpass academia attendees for first time
* 12/21/2014: First ROS meetup in Korea<ref>[http://www.ros.org/news/2015/01/notes-from-the-first-korean-ros-users-meetup.html ROS meetup in Korea]</ref>
 
===2015=Design==
* 6/9/2015: [[DARPA Robotics Challenge]] takes place. Out of the 23 DRC Finals teams, 18 teams use ROS and 14 teams use Gazebo<ref>{{Cite web|url=https://www.osrfoundation.org/ros-gazebo-at-the-drc-finals/|title=ROS and Gazebo at DRC Finals|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 7/23/2015: First ROS Summer School in China<ref>{{Cite web|url=http://www.ros.org/news/2015/08/report-from-first-ros-summer-school-in-china.html|title=Report from first ROS Summer School in China - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
* 10/3/2015: ROSCon 2015.
* 11/3/2015: ROS 2 Alpha released
* 11/7/2015: Eighth anniversary of ROS, and video compilation<ref>{{cite web|url=http://www.ros.org/news/2015/12/ros-turns-8.html|title=ROS Turns 8 - ROS robotics news|website=www.ROS.org|access-date=12 December 2017}}</ref>
* 09/09/2015 The Construct<ref>{{Cite web|url=http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/|title=The Construct}}</ref> Launched ROS Development Studio. The cloud-based service utilizes Robot Operating System (ROS) to offer developers a place to develop and test robotics applications. <ref>{{cite web|url=http://www.theconstructsim.com/rds-ros-development-studio|dead-url=|title=ROS Development Studio}}</ref>
* 12/25/2015: Book release: ''Programming Robots with ROS: A Practical Introduction to the Robot Operating System''<ref>{{cite web|url=http://shop.oreilly.com/product/0636920024736.do|title=Programming Robots with ROS: A Practical Introduction to the Robot Operating System|website=OReilly.com|access-date=12 December 2017}}</ref>
 
===2016 Philosophy ===
[[File:Ros Equation.png|thumb|An image depicting the ROS equation: Plumbing + Tools + Capabilities + Ecosystem = ROS!|alt=An image depicting the ROS equation: Plumbing + Tools + Capabilities + Ecosystem = ROS!|500x500px]]
* 2/18/2016: First Danish ROS meetup<ref>{{Cite web|url=http://www.ros.org/news/2016/01/invitation-to-the-first-danish-ros-meetup.html|title=First Danish ROS Meetup|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
ROS was designed with open-source in mind, intending that users would be able to chose the configuration of tools and libraries which interacted with the core of ROS so that users could shift their software stacks to fit their robot and application area. As such, there is very little which is actually core to ROS, beyond the general structure within which programs must exist and communicate. In one sense, all ROS is is the underlying plumbing behind nodes and message passing. However, in reality, ROS is that plumbing, a rich and mature set of tools, a wide ranging set of robot-agnostic capabilities provided by packages, and a greater ecosystem of additions to ROS.
* 7/22/2016: Second ROS Summer School in China<ref>{{Cite web|url=http://www.ros.org/news/2016/07/ros-summer-school-in-china-2016-july-22-28.html|title=ROS Summer School in China 2016, July 22-28 - ROS robotics news|website=www.ros.org|access-date=2018-11-24}}</ref>
=== Computation Graph Model ===
* 9/01/2016: The Construct <ref>{{Cite web|url=http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/|title=The Construct}}</ref> Launched Robot Ignite Academy. The cloud based academy utilizes Robot Operating System (ROS) and Gazebo to teach ROS online <ref>{{Cite web|url=http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/|title=ROS Robot Ignite Academy}}</ref>
ROS processes are represented as nodes in a graph structure, connected by edges called topics.<ref name=":3">{{Cite web|url=http://wiki.ros.org/ROS/Tutorials/UnderstandingNodes|title=ROS/Tutorials/UnderstandingNodes - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> ROS nodes can pass messages to on another through topics, make service calls to other nodes, provide a service for other nodes, or set or retrieve shared data from a communal database called the parameter server. A process called the ROS Master<ref name=":3" /> makes all of this possible by registering nodes to itself, setting up node-to-node communication for topics, and controlling parameter server updates. Messages and service calls do not pass through the master, rather the master sets up peer-to-peer communication between all node processes after they register themselves with the master. This decentralized architecture lends itself well to robots, which are often comprise of a subset of networked computer hardware, and may communicate with off board computers for heavy computation or commands.
* 9/15/2016: OSRF announces collaboration with [[Toyota Research Institute]]<ref>{{Cite web|url=https://www.osrfoundation.org/were-collaborating-with-toyota-research-institute/|title=OSRF Collaboration with TRI|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 10/7/2016: Bosch underwrites full-time position at OSRF<ref>{{Cite web|url=https://www.osrfoundation.org/bosch-research-and-technology-center-joins-forces-with-open-source-robotics-foundation-to-advance-the-development-of-ros/|title=Bosch Underwrites Full-Time Position at OSRF|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
 
===2017= Nodes ====
A node represents a single process running the ROS graph. Every node has a name, which it registers with the ROS master before it can take any other actions. Multiple nodes with different names can exist under different [[Namespace|namespaces]], or a node can be defined as anonymous, in which case it will randomly generate an additional identifier to add to its given name. Nodes are at the center of ROS programming, as most ROS client code is in the form of a ROS node which takes actions based on information received from other nodes, sends information to other nodes, or sends and receives requests for actions to and from other nodes.
* 3/21/2017: First Ukrainian ROS Meetup<ref>{{Cite web|url=http://www.ros.org/news/2017/03/invitation-to-the-first-ukrainian-ros-meetup.html|title=First Ukrainian ROS Meetup|last=|first=|date=|website=|archive-url=|archive-date=|dead-url=|access-date=}}</ref>
* 5/16/2017: Open Source Robotics Foundation changed its name to Open Robotics.<ref>{{cite web|url=https://www.osrfoundation.org/welcome-to-open-robotics/|title=Welcome to Open Robotics|website=www.OSRFoundation.org|access-date=12 December 2017}}</ref>
* 7/22/2017: Third ROS Summer School in China<ref>{{cite web|url=https://discourse.ros.org/t/ros-summer-school-in-china-july-22-28-2017/1977|title=ROS Summer School in China, July 22-28, 2017|website=Discourse.ROS.org|access-date=12 December 2017}}</ref>
* 9/21/2017: ROSCon 2017. Program here.<ref>{{cite web|url=https://roscon.ros.org/2017/#program|title=ROSCon 2017|website=roscon.ROS.org|access-date=12 December 2017}}</ref>
 
===2018= Topics ====
Topics are named [[Software bus|buses]] over which nodes send and receive messages.<ref>{{Cite web|url=http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics|title=ROS/Tutorials/UnderstandingTopics - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> Topic names must be unique within their namespace as well. To send messages to a topic, a node must publish to said topic, while to receive messages it must subscribe. The publish/subscribe model is anonymous: no node knows which nodes are sending or receiving on a topic, only that it is sending/receiving on that topic. The types of messages passed on a topic vary widely and can be user-defined. The content of these messages can be sensor data, motor control commands, state information, actuator commands, or anything else.
* 5/23/2018: ROS Melodic Morenia<ref>{{Cite web|url=http://wiki.ros.org/melodic|title=melodic - ROS Wiki|website=wiki.ros.org|access-date=2018-05-28}}</ref>
* 7-8/07/2018: First ROS Developers Conference (ROSDevCon). The worldwide Online conference for developers to learn from experts how to program robots with ROS<ref>{{Cite web|url=http://www.theconstructsim.com/ros-developers-online-conference-2018-rdc-worldwide/|title=ROSDevCon2018}}</ref>
* 9/28/2018: Microsoft ported Core ROS to Windows 10
* 9/29/2018: ROSCon 2018 in Madrid.
*11/26/2018: Amazon launches AWS RoboMaker. The cloud-based service utilizes Robot Operating System (ROS) to offer developers a place to develop and test robotics applications.
 
==== Services ====
==Concepts and Construction==
A node may also advertise services<ref name=":4">{{Cite web|url=http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams|title=ROS/Tutorials/UnderstandingServicesParams - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref>. A service represents an action that a node can take which will have a single result. As such, services are often used for actions which have a defined beginning and end, such as capturing a single-frame image, rather than processing velocity commands to a wheel motor or odometer data from a wheel encoder. Nodes advertise services and call services from one another.
{{Comment}} Create new section explaining computation graph, nodes, topics, etc.
 
==== Parameter Server ====
{{Comment}} Also emphasize the decentralized, tool-oriented nature of ROS, like GNU.
The parameter server<ref name=":4" /> is a database shared between nodes which allows for communal access to static or semi-static information. Data which does not change frequently and as such will be infrequently accessed, such as the distance between two fixed points in the environment, or the weight of the robot, are good candidates for storage in the parameter server.
 
==ROS Tools==
ROS's core functionality is augmented by a variety of tools which allow developers to visualize and record data, easily navigate the ROS package structures, and create scripts automating complex configuration and setup processes. The addition of these tools greatly increases the capabilities of systems using ROS by simplifying and providing solutions to a number of common robotics development. These tools are provided in packages like any other algorithm, but rather than providing implementations of hardware drivers or algorithms for various robotic tasks, these packages provide task and robot-agnostic tools which come with the core of most modern ROS installations.
{{Comment}} Do a final pass on the writing here.
 
=== rviz ===
ROS's core functionality is augmented by a variety of tools which allow developers to visualize and record data, easily navigate the ROS package structures, and create scripts automating complex configuration and setup processes. The addition of these tools greatly increases the capabilities of systems using ROS by simplifying and providing solutions to a number of common robotics development.
 
===rviz===
rviz<ref>{{Cite web|url=http://wiki.ros.org/rviz|title=rviz - ROS Wiki|website=wiki.ros.org|access-date=2019-04-23}}</ref> is a three-dimensional visualizer used to visualize robots, the environments they work in, and sensor data. It is an highly configurable tool, with many different types of visualizations and plugins.
 
===rosbag===
rosbag<ref>{{Cite web|url=http://wiki.ros.org/rosbag|title=rosbag - ROS Wiki|website=wiki.ros.org|access-date=2019-04-23}}</ref> is a command line tool used to record and playback ROS message data. rosbag uses a file format called bags<ref>{{Cite web|url=http://wiki.ros.org/Bags|title=Bags - ROS Wiki|website=wiki.ros.org|access-date=2019-04-23}}</ref>, which log ROS messages by listening to topics and recording messages as they come in. Playing messages back from a bag is largely the same as having the original nodes which produced the data in the ROS computation graph, making bags a useful tool for recording data to be used in later development. While rosbag is a command line only tool, rqt_bag<ref>{{Cite web|url=http://wiki.ros.org/rqt_bag|title=rqt_bag - ROS Wiki|website=wiki.ros.org|access-date\=2019-04-23}}</ref> provides a GUI interface to rosbag.
 
=== catkin ===
catkin<ref>{{Cite web|url=http://wiki.ros.org/catkin|title=catkin - ROS Wiki|last=|first=|date=|website=wiki.ros.org|archive-url=|archive-date=|access-date=2019-04-29}}</ref> is the ROS build system, having replaced rosbuild<ref>{{Cite web|url=http://wiki.ros.org/rosbuild|title=rosbuild - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> as of ROS Groovy. catkin is based on [[CMake]], and is similarly cross-platform, open source, and language-independent.
 
===rosbash===
Line 158 ⟶ 93:
roslaunch<ref>{{Cite web|url=http://wiki.ros.org/roslaunch|title=roslaunch - ROS Wiki|website=wiki.ros.org|access-date=2019-04-23}}</ref> is a tool used to launch multiple ROS nodes both locally and remotely, as well as setting parameters on the ROS parameter server. roslaunch configuration files, which are written using [[XML]] can easily automate a complex startup and configuration process into a single command. roslaunch scripts can include other roslaunch scripts, launch nodes on specific machines, and even restart processes which die during execution.
 
==ROS Packages of note ==
ROS contains many open source implementations of common robotics functionality and algorithms. These open source implementations are organized into "packages". Many packages are included as part of ROS distributions, while others may be developed by individuals and distributed through code sharing sites such as github. Some packages of note include:
{{Comment}} Highlight important and standard packages, things like actionlib, nodelets, cv_bridge, gmapping, amcl.
 
=== Systems and Tools ===
==Applications==
ROS areas include:
* a master coordination node
* publishing or subscribing to data streams: images, stereo, laser, control, actuator, contact sensor, etc.
* multiplexing information
* node creation and destruction
* nodes are seamlessly distributed, allowing distributed operation over multi-core, multi-processor, GPUs, and clusters
* logging
* parameter server
* test systems
 
* ''actionlib''<ref>{{Cite web|url=http://wiki.ros.org/actionlib|title=actionlib - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides a standardized interface for interfacing with preemtable tasks.
ROS package application areas will include:
* ''nodelet''<ref>{{Cite web|url=http://wiki.ros.org/nodelet|title=nodelet - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides a way to run multiple algorithms in a single process.
 
* ''rosbridge''<ref>{{Cite web|url=http://wiki.ros.org/rosbridge_suite|title=rosbridge_suite - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides a JSON API to ROS functionalities for non-ROS programs.
* perception
* object identification
* [[segmentation (image processing)|segmentation]] and recognition
* [[facial recognition system|Face recognition]]
* [[gesture recognition]]
* [[video tracking|motion tracking]]
* [[egomotion]]
* [[motion understanding]]
* [[structure from motion]] (SFM)
* [[stereopsis|stereo vision]]: depth perception via two cameras
* motion
* [[mobile robotics]]
* control
* planning
* grasping
 
=== ROS-IndustrialMapping and Localization ===
{{Comment}} Move to History Section and edit.
 
* ''gmapping''<ref>{{Cite web|url=http://wiki.ros.org/gmapping|title=gmapping - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides a wrapper for [[OpenSlam|OpenSlam's]] [[Gmapping]] algorithm for [[Simultaneous localization and mapping|simultaneous localization and mapping.]]
ROS-Industrial<ref>{{cite web|url=https://rosindustrial.org/about/description/|title=ROS-Industrial About|website=rosindustrial.org|access-date=12 December 2017}}</ref> is an open-source project (BSD (legacy) / Apache 2.0 (preferred) license) that extends the advanced capabilities of ROS to manufacturing automation and robotics. The ROS-Industrial repository includes interfaces for common industrial manipulators, grippers, sensors, and device networks. It also provides software libraries for automatic 2D/3D sensor calibration, process path/motion planning, applications like Scan-N-Plan, developer tools like the Qt Creator ROS Plugin, and training curriculum that is specific to the needs of manufacturers. ROS-I is supported by an international Consortium of industry and research members. The project began as a collaborative endeavor between Yaskawa Motoman Robotics, Southwest Research Institute, and Willow Garage to support the use of ROS for manufacturing automation, with the GitHub repository being founded in January 2012 by Shaun Edwards (SwRI). Currently, the Consortium is divided into three groups; the ROS-Industrial Consortium Americas (led by SwRI and located in San Antonio, Texas), the ROS-Industrial Consortium Europe (led by Fraunhofer IPA and located in Stuttgart, Germany) and the ROS-Industrial Consortium Asia Pacific (led by Advanced Remanufacturing and Technology Centre (ARTC) and Nanyang Technological University (NTU) and located in Singapore).
* ''cartographer''<ref>{{Cite web|url=http://wiki.ros.org/cartographer|title=cartographer - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides real time 2D and 3D SLAM algorithms developed at [[Google]].
* ''amcl''<ref>{{Cite web|url=http://wiki.ros.org/amcl|title=amcl - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides an implementation of [[Monte Carlo localization|adaptive Monte-Carlo localization.]]
 
=== Navigation ===
The Consortia supports the global ROS-Industrial community by conducting ROS-I training, providing technical support and setting the future roadmap for ROS-I, as well as conducting pre-competitive joint industry projects to develop new ROS-I capabilities.<ref>{{Cite web|url=https://rosindustrial.org/briefhistory/|title=Brief History|website=ROS-Industrial|language=en-US|access-date=2018-07-11}}</ref>
 
* ''nav2d''<ref>{{Cite web|url=http://wiki.ros.org/nav2d|title=nav2d - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides the capability of navigating a mobile robot in a planar environment.
==Version history==
{{Comment}} Update this table with more accurate descriptions than "old version", add ROS N, and move to history section
 
=== Perception ===
{{Comment}} Also add a table for ROS2 versions.
 
* ''vision_opencv''<ref>{{Cite web|url=http://wiki.ros.org/vision_opencv?distro=melodic|title=vision_opencv - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> is a meta-package which provides packages for integrating ROS with [[OpenCV]].
 
=== Coordinate Frame Representation ===
ROS releases may be incompatible with other releases and are often referred to by code name rather than version number. The major releases so far are:
 
{| class="wikitable" style="float:center; text-align:center; margin-left:1em; margin-right:0"
* ''tf''<ref>{{Cite web|url=http://wiki.ros.org/tf|title=tf - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provided a system for representing, tracking and transforming coordinate frames until ROS Hydro, when it was deprecated in favor of tf2.
* ''tf2''<ref>{{Cite web|url=http://wiki.ros.org/tf2|title=tf2 - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> is the second generation of the tf library, and provides the same capabilities for ROS versions after Hydro.
 
=== Simulation ===
 
* ''gazeo_ros_pkgs''<ref>{{Cite web|url=http://wiki.ros.org/gazebo_ros_pkgs|title=gazebo_ros_pkgs - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> is a meta-package which provides packages for integrating ROS with the [[Gazebo simulator|Gazebo]] simulator.
* ''stage''<ref>{{Cite web|url=http://wiki.ros.org/stage|title=stage - ROS Wiki|website=wiki.ros.org|access-date=2019-04-29}}</ref> provides an interface for the 2D [[Player/Stage Project|Stage]] simulator.
 
==Versions and Releases==
ROS releases may be incompatible with other releases and are often referred to by code name rather than version number. ROS currently releases a version every year in May. On odd numbered years, the release is supported for two years, and on even numbered years the release is designated long-term support release and supported for five years. This loosely follows the Ubuntu release cycle. ROS2 currently releases a new version every six months (in December and July). These releases are supported for a single year.
 
{| class="wikitable" style="display:inline-table; float:center; text-align:center; margin-left:1em; margin-right:0"
|+ROS 1 Distribution Releases <ref name=":1" />
|-
! Distribution
! Distro
! Release date
! Poster
! EOL date
|-
|Noetic Ninjemys
|May 23, 2019 (expected)
|N/A
|{{Version|p|May 2021}}
|-
|-
|Melodic Morenia
|May 23, 2018
|
|[[File:Melodic Morenia.png|75px]]
|{{Version|c|2023-05-30}}
|-
Line 234 ⟶ 167:
|July 22, 2014
|[[File:Indigoigloo 600.png|75px]]
|{{Version|coo|2019-04-30}}
|-
|Hydro Medusa
Line 271 ⟶ 204:
|{{Version|o|--}}
|-
| colspan="98" | {{Version |l |show=011101}}
|}
 
{| class="wikitable" style="display:inline-table; float:center; text-align:center; margin-left:10em; margin-right:0"
==Ports to robots and boards==
|+ROS 2 Distribution Releases <ref name=":2" />
{{Comment}} Split into robot and board ports, expand, and provide pictures of robots if possible.
|-
* ABB, Adept, Fanuc, Motoman, and Universal Robots are supported by [[ROS-Industrial]]<ref>{{cite web|url=http://rosindustrial.org/|title=Home|website=ROS-Industrial|access-date=12 December 2017}}</ref>
! Distribution
* [[Baxter (robot)|Baxter]]<ref>Baxter http://www.rethinkrobotics.com/products/baxter-research-robot/baxter-research-robot-qa/</ref> at [[Rethink Robotics]], Inc.
! Release date
* BeagleBoard. The robotics lab of the [[Katholieke Universiteit Leuven]], [[Belgium]]<ref>K U leuven http://people.mech.kuleuven.be/%7Eu0062536/embsensor.html</ref> has ported ROS to the [[Beagleboard]]
! Poster
* HERB<ref>{{cite web|url=http://personalrobotics.intel-research.net/|title=CMU Personal Robotics Lab|website=personalrobotics.Intel-Research.net|access-date=12 December 2017}}</ref> developed at [[Carnegie Mellon University]] in Intel's personal robotics program
! EOL date
|-
|Dashing Diademata
|July 2019 (excepted)
|N/A
|{{Version|p|July 2020}}
|-
|Crystal Clemmys
|December 14th, 2018
|[[File:ROS Crystal Logo.png|75px|The logo for the ROS2 release Crystal Clemmys.]]
|{{Version|c|December 2019}}
|-
|Bouncy Bolson
|July 2nd, 2018
|[[File:ROS Bouncy Logo.png|75px|The logo for the ROS2 release Bouncy Bolson.]]
|{{Version|c|July 2019}}
|-
|Ardent Apalone
|December 8th, 2017
|[[File:ROS Ardent Logo.png|75px|The logo for the ROS2 release Ardent Apalone.]]
|{{Version|o|December 2018}}
|-
|beta3
|September 13th, 2017
|N/A
|{{Version|o|December 2017}}
|-
|beta2
|July 5th, 2017
|N/A
|{{Version|o|September 2017}}
|-
|beta1
|December 19th, 2016
|N/A
|{{Version|o|July 2017}}
|-
|alpha1-alpha8
|August 31st, 2015
|N/A
|{{Version|o|December 2016}}
|-
| colspan="98" |{{Version |l |show=011101}}
|}
=== ROS-Industrial ===
ROS-Industrial<ref>{{cite web|url=https://rosindustrial.org/about/description/|title=ROS-Industrial About|website=rosindustrial.org|access-date=12 December 2017}}</ref> is an open-source project (BSD (legacy) / Apache 2.0 (preferred) license) that extends the advanced capabilities of ROS to manufacturing automation and robotics. The ROS-Industrial repository includes interfaces for common industrial manipulators, grippers, sensors, and device networks. It also provides software libraries for automatic 2D/3D sensor calibration, process path/motion planning, applications like Scan-N-Plan, developer tools like the Qt Creator ROS Plugin, and training curriculum that is specific to the needs of manufacturers. ROS-I is supported by an international Consortium of industry and research members. The project began as a collaborative endeavor between Yaskawa Motoman Robotics, Southwest Research Institute, and Willow Garage to support the use of ROS for manufacturing automation, with the GitHub repository being founded in January 2012 by Shaun Edwards (SwRI). Currently, the Consortium is divided into three groups; the ROS-Industrial Consortium Americas (led by SwRI and located in San Antonio, Texas), the ROS-Industrial Consortium Europe (led by Fraunhofer IPA and located in Stuttgart, Germany) and the ROS-Industrial Consortium Asia Pacific (led by Advanced Remanufacturing and Technology Centre (ARTC) and Nanyang Technological University (NTU) and located in Singapore).
 
The Consortia supports the global ROS-Industrial community by conducting ROS-I training, providing technical support and setting the future roadmap for ROS-I, as well as conducting pre-competitive joint industry projects to develop new ROS-I capabilities.<ref>{{Cite web|url=https://rosindustrial.org/briefhistory/|title=Brief History|website=ROS-Industrial|language=en-US|access-date=2018-07-11}}</ref>
 
==ROS Compatible Robots and Hardware ==
 
=== Robots ===
 
*ABB, Adept, Fanuc, Motoman, and Universal Robots are supported by [[ROS-Industrial]]<ref>{{cite web|url=http://rosindustrial.org/|title=Home|website=ROS-Industrial|access-date=12 December 2017}}</ref>
*[[Baxter (robot)|Baxter]]<ref>Baxter http://www.rethinkrobotics.com/products/baxter-research-robot/baxter-research-robot-qa/</ref> at [[Rethink Robotics]], Inc.
*HERB<ref>{{cite web|url=http://personalrobotics.intel-research.net/|title=CMU Personal Robotics Lab|website=personalrobotics.Intel-Research.net|access-date=12 December 2017}}</ref> developed at [[Carnegie Mellon University]] in Intel's personal robotics program
* Husky A200 robot developed (and integrated into ROS) by [[Clearpath Robotics]]<ref>{{cite web|url=http://www.clearpathrobotics.com/husky|title=Husky UGV - Outdoor Field Research Robot by Clearpath|website=ClearPathRobotics.com|access-date=12 December 2017}}</ref>
* PR1 personal robot developed in Ken Salisbury's lab at Stanford<ref>{{cite web|url=http://personalrobotics.stanford.edu/|title=Stanford Personal Robotics Program|website=personalrobotics.Stanford.edu|access-date=12 December 2017}}</ref>
* PR2 personal robot being developed at Willow Garage<ref>[http://www.willowgarage.com/pages/robots PR2]</ref>
* Raven II Surgical Robotic Research Platform<ref>B. Hannaford, J. Rosen, Diana CW Friedman, H. King, P. Roan, L. Cheng, D. Glozman, J. Ma, S.N. Kosari, L. White, 'Raven-II: AN Open Platform for Surgical Robotics Research,' IEEE Transactions on Biomedical Engineering, vol. 60, pp. 954-959, April 2013.</ref><ref>{{cite web|url=http://brl.ee.washington.edu/laboratory/ |title=BioRobotics Laboratory &#124; Biorobotics Laboratory - University of Washington |date=|publisher=Brl.ee.washington.edu |date= |accessdate=2014-07-12}}</ref>
* rosbridge protocol and server<ref>rosbridge protocol and server http://www.ros.org/wiki/rosbridge</ref> Brown University<ref name="auto">brown-robotics http://brown-robotics.org/</ref> developed the rosbridge protocol to enable any robot or computing environment to integrate with ROS using JSON-based messaging, such as for common web browsers, Matlab, Microsoft Windows, OS X, and embedded systems
* Shadow Robot Hand<ref>[http://www.shadowrobot.com/products/dexterous-hand/ SDH]</ref> – A fully dexterous humanoid hand.
* STAIR I and II<ref>STAIR I and II http://stair.stanford.edu/index.php</ref> robots developed in [[Andrew Ng]]'s lab at Stanford
* SummitXL:<ref>{{cite web|url=http://www.robotnik.eu/mobile-robots/summit-xl/ |title=Summit XL - Robotnik |date=|publisher=Robotnik.es |date= |accessdate=2014-07-12}}</ref> Mobile robot developed by [[Robotnik Automation|Robotnik]], an engineering company specialized in mobile robots, robotic arms, and industrial solutions with ROS architecture.
* Nao<ref>{{cite web|url=http://www.ros.org/wiki/nao |title=nao - ROS Wiki |publisher=Ros.org |date=2013-10-28 |publisher=Ros.org|accessdate=2014-07-12}}</ref> humanoid: [[University of Freiburg]]'s Humanoid Robots Lab<ref>Humanoid Robots Lab http://hrl.informatik.uni-freiburg.de/</ref> developed a ROS integration for the [[Nao (robot)|Nao humanoid]] based on an initial port by Brown University<ref name="auto">brown-robotics http://brown-robotics.org/</ref><ref>G.T. Jay, [http://code.ros.org/lurker/message/20091101.232446.5217521d.gl.html Post to ros-users mailing list announcing ROS support for the Nao]</ref>
* UBR1<ref>{{cite web|url=http://unboundedrobotics.com/ubr-1/specification/ |title=Specification |date=|publisher=Unbounded Robotics |date= |accessdate=2014-07-12}}</ref><ref>{{cite web|last=Ackerman |first=Evan |url=http://spectrum.ieee.org/automaton/robotics/industrial-robots/unbounded-robotics-revolutionizes-affordable-mobile-manipulation-with-ubr1 |title=UBR-1 Robot From Unbounded Robotics Revolutionizes Affordable Mobile Manipulation - IEEE Spectrum |publisherlast=Spectrum.ieee.org Ackerman|first=Evan|date=2013-10-21 |publisher=Spectrum.ieee.org|accessdate=2014-07-12}}</ref> developed by Unbounded Robotics, a spin-off of Willow Garage.
* Raspberry Pi: image of ubuntu Mate with ROS<ref>{{cite web|url=https://downloads.ubiquityrobotics.com/ |title=Ubiquity Robotics Downloads |publisher= |date= |accessdate=29 January 2018}}</ref> by Ubiquity Robotics; installation guide for Raspbian<ref>{{cite web|url=http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi |title=ROSberryPi/Installing ROS Kinetic on the Raspberry Pi |publisher= |date= |accessdate=29 January 2018}}</ref>
* ROSbot: autonomous robot platform by Husarion<ref>[https://husarion.com/core2/manuals/rosbot-manual/#rosbot-manual-overview Husarion ROSbot manual]</ref>
* [[Webots]]: robot simulator integrating a complete ROS programming interface<ref>{{cite web|url=https://www.cyberbotics.com/doc/guide/using-ros |title=Using ROS with Webots |publisherdate= |datepublisher= |accessdate=2018-05-18}}</ref>.
 
=== SBCs and Hardware ===
==ROS packages==
 
ROS contains many open source implementations of common robotics functionality and algorithms. These open source implementations are organized into "packages". Many packages are included as part of ROS distributions, while others may be developed by individuals and distributed through code sharing sites such as github.
* BeagleBoard. The robotics lab of the [[Katholieke Universiteit Leuven]], [[Belgium]]<ref>K U leuven http://people.mech.kuleuven.be/%7Eu0062536/embsensor.html</ref> has ported ROS to the [[Beagleboard]]
* Raspberry Pi: image of ubuntu Mate with ROS<ref>{{cite web|url=https://downloads.ubiquityrobotics.com/ |title=Ubiquity Robotics Downloads |publisher= |date= |accessdate=29 January 2018}}</ref> by Ubiquity Robotics; installation guide for Raspbian<ref>{{cite web|url=http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi |title=ROSberryPi/Installing ROS Kinetic on the Raspberry Pi |publisher= |date= |accessdate=29 January 2018}}</ref>
 
==See also==