Robot Operating System: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
Removed parameters. | Use this bot. Report bugs. | #UCB_CommandLine
m Fixed typo
Tags: Mobile edit Mobile app edit iOS app edit
Line 19:
| programming language = [[C++]], [[Python (programming language)|Python]], and [[Lisp (programming language)|Lisp]]
}}
'''Robot Operating System''' ('''ROS''' or '''ros''') is an [[Open-source software|open-source]] [[robotics middleware]] suite. Although ROS is not an [[operating system]] (OS) but a set of [[software framework]]s for [[robot software]] [[software development| development]], 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 manager|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 [[Multiplexing|multiplex]] sensor data, control, state, planning, actuator, and other messages. Despite the importance of reactivity and [[low latency]] in robot control, ROS is ''not'' a [[real-time operating system]] (RTOS). However, it is possible to integrate ROS with [[real-time computing]] code.<ref>{{Cite web|title=ROS/Introduction – ROS Wiki|url=http://wiki.ros.org/ROS/Introduction|access-date=2021-07-30|website=ROS.org|publisher=Open Robotics}}</ref> The lack of support for real-time systems has been addressed in the creation of ROS 2,<ref>{{cite web|last=Kay|first=Jackie|date=January 2016|title=Proposal for Implementation of Real-time Systems in ROS 2|url=http://design.ros2.org/articles/realtime_proposal.html|website=ROS.org|publisher=Open Robotics|access-date=23 January 2023}}</ref><ref>{{cite web|last=Kay|first=Jackie|date=January 2016|title=Realtime Design Guidelines For ROS 2|url=http://design.ros2.org/articles/realtime_background.html#design-guidelines-for-ros-2|website=ROS.org|publisher=Open Robotics|access-date=23 January 2023}}</ref><ref>{{cite web|title=ROS 2 For Realtime Applications|url=https://discourse.ros.org/t/ros2-for-real-time-applications/6493|website=ROS.org|publisher=Open Robotics|date=17 October 2018|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 functions and add support for real-time code and [[embedded system]] hardware.
 
Software in the ROS [[Software ecosystem|Ecosystem]]<ref>{{cite web|url=http://www.ros.org/browse/list.php|title=Browsing packages for melodic|website=ROS.org|publisher=Open Robotics|access-date=21 February 2016|archive-date=24 September 2015|archive-url=https://web.archive.org/web/20150924092030/http://www.ros.org/browse/list.php|url-status=dead}}</ref> can be separated into three groups:
Line 25:
* ROS client library implementations such as {{Not a typo|roscpp}},<ref>{{cite web|title=Package Summary|url=http://wiki.ros.org/roscpp|website=ROS.org|publisher=Open Robotics|access-date=21 February 2016}}</ref> {{Not a typo|rospy}},<ref>{{cite web|title=Package SUmmary|url=http://wiki.ros.org/rospy|website=ROS.org|publisher=Open Robotics|access-date=21 February 2016}}</ref> and {{Not a typo|roslisp}};<ref>{{cite web|title=Package Summary|url=http://wiki.ros.org/roslisp|website=ROS.org|publisher=Open Robotics|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|publisher=Open Robotics|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]] (SLAM), [[Robotics simulator|simulation tools]], and other [[algorithm]]s.
 
The main ROS client libraries are geared toward a [[Unix-like]] system, mostly because of their dependence on large sets 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 "experimental" and are supported by the community.<ref>{{cite web|url=http://wiki.ros.org/ROS/Installation |title=ROS/Installation – ROS Wiki |website=ROS.org |publisher=Open Robotics |date=2013-09-29 |access-date=2014-07-12}}</ref> The native Java ROS client library, {{Not a typo|rosjava}},<ref>{{Cite web|url=http://wiki.ros.org/rosjava|title=rosjava – ROS Wiki|website=ROS.org|publisher=Open Robotics|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 |website=ROS.org |publisher=Open Robotics |date=2014-04-12 |access-date=2014-07-12}}</ref> {{Not a typo|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 |access-date=2014-07-12}}</ref> A [[JavaScript]] client library, {{Not a typo|roslibjs}}<ref>{{Cite web|url=http://wiki.ros.org/roslibjs|title=roslibjs – ROS Wiki|website=ROS.org|publisher=Open Robotics|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.