| ... | @@ -6,4 +6,26 @@ The Robot Operating System (ROS) is a flexible framework for writing robot softw |
... | @@ -6,4 +6,26 @@ The Robot Operating System (ROS) is a flexible framework for writing robot softw |
|
|
Robot Operating System (ROS or ros) is robotics middleware (i.e. collection of software frameworks 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 control, implementation of commonly used functionality, message-passing between processes, and package management. Running sets of ROS-based processes are represented in a 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 OS (RTOS). It is possible, however, to integrate ROS with real-time code. The lack of support for real-time systems has been addressed in the creation of ROS 2.0, 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 hardware--Wikipedia
|
|
Robot Operating System (ROS or ros) is robotics middleware (i.e. collection of software frameworks 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 control, implementation of commonly used functionality, message-passing between processes, and package management. Running sets of ROS-based processes are represented in a 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 OS (RTOS). It is possible, however, to integrate ROS with real-time code. The lack of support for real-time systems has been addressed in the creation of ROS 2.0, 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 hardware--Wikipedia
|
|
|
|
|
|
|
|
Like many other open-source software systems; ROS also comes with many flavors (distributions), Melodic Morenia, Kinetic Kame, Indigo Igloo (in this project Indigo was used) and many others, the list can be found here.
|
|
Like many other open-source software systems; ROS also comes with many flavors (distributions), Melodic Morenia, Kinetic Kame, Indigo Igloo (in this project Indigo was used) and many others, the list can be found here.
|
|
|
<img src="https://gitlab.labranet.jamk.fi/wimma-lab-2019/mysticons/turtlebot/raw/master/img/rosDistros.PNG" height="1200"> |
|
<img src="https://gitlab.labranet.jamk.fi/wimma-lab-2019/mysticons/turtlebot/raw/master/img/rosDistros.PNG" height="1200">
|
|
\ No newline at end of file |
|
|
|
|
|
## ROS Computation Graph Level
|
|
|
|
|
|
|
|
The Computation Graph is the peer-to-peer network of ROS processes that are processing data together. The basic Computation Graph concepts of ROS are nodes, Master, Parameter Server, messages, services, topics, and bags, all of which provide data to the Graph in different ways—ROS Wiki
|
|
|
|
These concepts are implemented in the ros_comm repository.
|
|
|
|
|
|
|
|
### Nodes
|
|
|
|
|
|
|
|
Nodes are processes that perform computation. ROS is designed to be modular at a fine-grained scale; a robot control system usually comprises many nodes. For example, one node controls a laser range-finder, one node controls the wheel motors, one node performs localization, one node performs path planning, one Node provides a graphical view of the system, and so on. A ROS node is written with the use of a ROS client library, such as roscpp or rospy.
|
|
|
|
|
|
|
|
### Master
|
|
|
|
The ROS Master provides name registration and lookup to the rest of the Computation Graph. Without the Master, nodes would not be able to find each other, exchange messages, or invoke services
|
|
|
|
### Parameter Server
|
|
|
|
The Parameter Server allows data to be stored by key in a central location. It is currently part of the Master.
|
|
|
|
### Messages
|
|
|
|
Nodes communicate with each other by passing messages. A message is simply a data structure, comprising typed fields. Standard primitive types (integer, floating point, Boolean, etc.) are supported, as are arrays of primitive types. Messages can include arbitrarily nested structures and arrays (much like C structs).
|
|
|
|
### Topics
|
|
|
|
Messages are routed via a transport system with publish / subscribe semantics. A node sends out a message by publishing it to a given topic. The topic is a name that is used to identify the content of the message. A node that is interested in a certain kind of data will subscribe to the appropriate topic. There may be multiple concurrent publishers and subscribers for a single topic, and a single node may publish and/or subscribe to multiple topics. In general, publishers and subscribers are not aware of each other’s existence. The idea is to decouple the production of information from its consumption. Logically, one can think of a topic as a strongly typed message bus. Each bus has a name, and anyone can connect to the bus to send or receive messages as long as they are the right type.
|
|
|
|
### Services
|
|
|
|
The publish / subscribe model is a very flexible communication paradigm, but its many-to-many, oneway transport is not appropriate for request / reply interactions, which are often required in a distributed system. Request / reply is done via services, which are defined by a pair of message structures: one for the request and one for the reply. A providing node offers a service under a name and a client uses the service by sending the request message and awaiting the reply. ROS client libraries generally present this interaction to the programmer as if it were a remote procedure call.
|
|
|
|
### Bags
|
|
|
|
Bags are a format for saving and playing back ROS message data. Bags are an important mechanism for storing data, such as sensor data, that can be difficult to collect but is necessary for developing and testing algorithms. |
|
|
|
\ No newline at end of file |