User:ApprehensiveAndroid/sandbox: Difference between revisions

Content deleted Content added
A complete overhaul of the history section.
Added catkin section and small updates to introduction
Line 6:
{{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=|dead-url=|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==
Line 43:
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.
 
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 long held goal of the original 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=|dead-url=|access-date=}}</ref>.
 
[[File:ROS Antarctica sunset.jpg|thumb|An image of Robot Operating System (ROS) running in Antarctica.]]
 
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=|dead-url=|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=|dead-url=}}</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>.
Line 64 ⟶ 66:
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, but rather than providing implementations of hardware drivers or algorithms for various robotic tasks, these packages provide task and robot-agnostic tools which most developers use as a matter of course.
 
=== 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=|dead-url=|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===