introductiontorosdistribution,buildsystemandinfrastructure ......ros as a communication...
TRANSCRIPT
![Page 1: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/1.jpg)
ROS Crash-Course, Part IIntroduction to ROS distribution, build system and infrastructure
Jonathan BohrenWith some information and figures adapted from http: // www. ros. org
and the COTESYS-ROS School 2010 presentation given by Radu Rusu
![Page 2: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/2.jpg)
Outline
1 IntroductionHigh-LevelThe ROS EcosystemROS Community
2 ROS as a Communication PlatformThe ROS Network GraphRunning and Connecting NodesAnalyzing the System at Runtime
3 ROS as a Build PlatformDistribution & Package Management SystemBuild System
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 2 / 30
![Page 3: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/3.jpg)
Introduction
Outline (revisted)
1 IntroductionHigh-LevelThe ROS EcosystemROS Community
2 ROS as a Communication PlatformThe ROS Network GraphRunning and Connecting NodesAnalyzing the System at Runtime
3 ROS as a Build PlatformDistribution & Package Management SystemBuild System
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 3 / 30
![Page 4: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/4.jpg)
Introduction High-Level
What is ROS?More than just middleware
A “meta” operating system for robotsA collection of packaging, software building toolsAn architecture for distributed* inter-process/inter-machinecommunication and configurationDevelopment tools for system runtime and data analysisOpen-source under permissive BSD licenses (ros core libraries)A language-independent architecture (c++, python, lisp, java, andmore)A scalable platform (ARM CPUS to Xeon Clusters)
With the intent to enable researchers to rapidly develop new roboticsystems without having to “reinvent the wheel” through use of
standard tools and interfaces.
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 4 / 30
![Page 5: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/5.jpg)
Introduction High-Level
What is ROS not?No confusion
An actual operating systemA programming languageA programming environment / IDEA hard real-time architecture*
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 5 / 30
![Page 6: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/6.jpg)
Introduction The ROS Ecosystem
What does ROS get you?All levels of development
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 6 / 30
ROS
universe
maingeneral tools fordistributed computing
algorithmsframeworks
hardware drivers"robotic apps"
Maintained byWillow Garage, inc and
some external developers
Developed andmaintained bythe internationalROS community
![Page 7: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/7.jpg)
Introduction The ROS Ecosystem
What does ROS get you?All levels of development
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 6 / 30
ROS
packaging & build tools,communication infrastructure,ROS API language bindings,introspection tools...
main
libraries
capabilities
applications
tf, opencv, pcl, kdl, cisst,simulation, drivers...
grasping, control,execution, navigation...
fetching beer,scraping the seafloor
![Page 8: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/8.jpg)
ROS as a Communication Platform
Outline (revisted)
1 IntroductionHigh-LevelThe ROS EcosystemROS Community
2 ROS as a Communication PlatformThe ROS Network GraphRunning and Connecting NodesAnalyzing the System at Runtime
3 ROS as a Build PlatformDistribution & Package Management SystemBuild System
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 12 / 30
![Page 9: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/9.jpg)
ROS as a Communication Platform The ROS Network Graph
ROS CoreWhere it all comes together
Thr ROS core is a set of the only three programs that are necessary for theROS runtime. They include:
ROS MasterA centralized XML-RPC serverNegotiates communication connectionsRegisters and looks up names for ROS graph resources
Parameter ServerStores persistent configuration parameters and other arbitrary datarosoutEssentially a network-based stdout for human-readable messages
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 13 / 30
![Page 10: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/10.jpg)
ROS as a Communication Platform The ROS Network Graph
ROS “Graph” AbstractionNamed network resources
The ROS runtime designates several classes of named ROS graphresources. These resources can exist in namespaces to reduce namingcollisions, and fall into the following categories:
nodesRepresent processes distributed across the ROS network. A ROS nodeis a source and sink for data that is sent over the ROS network.parametersPersistent (while the core is running) data such as configuration &initialization settings, stored on the parameter server.topicsAsynchronous many-to-many communication streams.servicesSynchronous one-to-many network-based functions.
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 14 / 30
![Page 11: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/11.jpg)
ROS as a Communication Platform The ROS Network Graph
ROS “Graph”rxgraph: communication network visualization
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 15 / 30
![Page 12: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/12.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Creating and Running ROS NodesDistributing computation with ROS
ROS provides a mechanism for simultaneously configuring and launchingcollections of ROS nodes. This is done with lightweight xml files and theroslaunch program.
Launch files enable users to:Associate a set of parameters and nodes with a single fileHierarchically compose collections of other launch filesAutomatically re-spawn nodes if they crashChange node names, namespaces, topics, and other resource nameswithout recompilingEasily distribute nodes across multiple machinesAttach gdb to a series of nodes
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 16 / 30
![Page 13: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/13.jpg)
ROS as a Communication Platform Running and Connecting Nodes
ROS Communication ProtocolsConnecting nodes over the network
ROS supports a growing number of communication capabilities that enabledistributing computation in a robotic system. These capabilities arecurrently built entirely on two high-level communication APIs:
ROS TopicsAsynchronous “stream-like” communicationTCP/IP or UDP TransportStrongly-typed (ROS .msg spec)Can have one or more publishersCan have one or more subscribers
ROS Services
Synchronous “function-call-like” communicationTCP/IP or UDP TransportStrongly-typed (ROS .srv spec)Can have only one serverCan have one or more clients
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 17 / 30
![Page 14: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/14.jpg)
ROS as a Communication Platform Running and Connecting Nodes
ROS Communication ProtocolsConnecting nodes over the network
ROS supports a growing number of communication capabilities that enabledistributing computation in a robotic system. These capabilities arecurrently built entirely on two high-level communication APIs:
ROS TopicsAsynchronous “stream-like” communicationTCP/IP or UDP TransportStrongly-typed (ROS .msg spec)Can have one or more publishersCan have one or more subscribers
ROS ServicesSynchronous “function-call-like” communicationTCP/IP or UDP TransportStrongly-typed (ROS .srv spec)Can have only one serverCan have one or more clients
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 17 / 30
![Page 15: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/15.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
![Page 16: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/16.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
advertise("images")
![Page 17: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/17.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
![Page 18: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/18.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
subscribe("images")
![Page 19: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/19.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
subscribe("images")
![Page 20: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/20.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
images(tcp)
![Page 21: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/21.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
images(tcp)
publish(img)
![Page 22: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/22.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
images(tcp)
publish(img)
![Page 23: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/23.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
images(tcp)
publish(img)
viewer_too
![Page 24: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/24.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
images(tcp)
publish(img)
viewer_too
subscribe("images")
![Page 25: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/25.jpg)
ROS as a Communication Platform Running and Connecting Nodes
Asynchronous Distributed* CommunicationROS TCP Topics
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 18 / 30
ros"master"
camera viewer
topic:images
images(tcp)
publish(img)
viewer_too
images(tcp)
![Page 26: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/26.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
rosout Messagingstdout on steroids
ROS provides mechanisms in all languages for specifying different levels ofhuman-readable log messages. The five default levels are:
fatal
error
warn
info
debug
These enable a user to “add printf’s” to their code for debugging, andselectively enable and disable them at runtime without a largeperformance hit. For example, useful debug messages that might benecessary to diagnose a problem could be left in the code and re-enabledat a critical time.
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 19 / 30
![Page 27: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/27.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS Graph IntrospectionNo more wireshark
ROS provides several tools for analyzing the data flowing over ROScommuncation resources:
rosnodeGives a user infomation about a node: publications, subscriptions, etcrostopicGives datarate, actual data, publishers, subscribesrosserviceEnables a user to call a ROS Service from the command lineroswtf (wire trouble finder)Diagnoses problems with a ROS network
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 20 / 30
![Page 28: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/28.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS GUI ToolsThere are lots. . .
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 21 / 30
![Page 29: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/29.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS GUI ToolsThere are lots. . .
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 21 / 30
![Page 30: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/30.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS GUI ToolsThere are lots. . .
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 21 / 30
![Page 31: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/31.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS GUI ToolsThere are lots. . .
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 21 / 30
![Page 32: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/32.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS GUI ToolsThere are lots. . .
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 21 / 30
![Page 33: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/33.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
ROS GUI ToolsThere are lots. . .
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 21 / 30
![Page 34: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/34.jpg)
ROS as a Communication Platform Analyzing the System at Runtime
rviz - 3D VisualizationModular state and sensor visualization
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 22 / 30
![Page 35: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/35.jpg)
ROS as a Build Platform
Outline (revisted)
1 IntroductionHigh-LevelThe ROS EcosystemROS Community
2 ROS as a Communication PlatformThe ROS Network GraphRunning and Connecting NodesAnalyzing the System at Runtime
3 ROS as a Build PlatformDistribution & Package Management SystemBuild System
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 23 / 30
![Page 36: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/36.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS Stacks & PackagesHow to organize code in a ROS ecosystem
ROS code is grouped at two different levels:PackagesA named collection of software that is built and treated as an atomicdependency in the ROS build system.StacksA named collection of packages for distribution.
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 24 / 30
![Page 37: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/37.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 25 / 30
source code
header declarations
scripts
message definitions
configuration files
launch files
service definitions
metadata...
![Page 38: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/38.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 25 / 30
source code
header declarations
scripts
message definitions
configuration files
launch files
service definitions
metadata...
package_one
"package"
![Page 39: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/39.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 25 / 30
source code
header declarations
scripts
message definitions
configuration files
launch files
service definitions
metadata...
package_one
"package"
package_two
![Page 40: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/40.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 25 / 30
source code
header declarations
scripts
message definitions
configuration files
launch files
service definitions
metadata...
package_one
"package"
package_two
package_n
...
![Page 41: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/41.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 25 / 30
source code
header declarations
scripts
message definitions
configuration files
launch files
service definitions
metadata...
package_one
"package"
package_two
package_n
...
"stack"
![Page 42: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/42.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
![Page 43: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/43.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
stack_a-0.4.0
![Page 44: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/44.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
stack_a-0.4.0 stack_b-1.0.2
![Page 45: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/45.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
stack_a-0.4.0 stack_b-1.0.2
...
stack_c-0.2.1
![Page 46: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/46.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
stack_a-0.4.0 stack_b-1.0.2
...
stack_c-0.2.1
"distribution"
![Page 47: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/47.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
stack_a-0.4.0 stack_b-1.0.2
...
stack_c-0.2.1
"distribution"
ROS "Box Turtle"March 2, 2010
ROS "C-Turtle"August 2, 2010
ROS "Diamondback"March 2, 2011
![Page 48: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/48.jpg)
ROS as a Build Platform Distribution & Package Management System
ROS DistributionsDelivering ROS packages to the masses
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 26 / 30
stack_a-0.4.0 stack_b-1.0.2
...
stack_c-0.2.1
"distribution"
ROS "Box Turtle"March 2, 2010
ROS "C-Turtle"August 2, 2010
ROS "Diamondback"March 2, 2011
Future: ROS "Elecrtic Emys"August, 2011
![Page 49: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/49.jpg)
ROS as a Build Platform Build System
ROS Meta-FilesystemIncreasing codebase flexibility
The minimal representation of a ROS package is a directory in the$ROS_PACKAGE_PATH which contains a single file:
manifest.xml
Contains package metadata (author, license, url, etc)Specifies system and package dependenciesSpecifies language-specific export flags
CMakeLists.txtContains ROS build rules (executables, libraries, custom build flags,etc)MakefileJust a proxy to build this package
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 27 / 30
![Page 50: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/50.jpg)
ROS as a Build Platform Build System
ROS Meta-FilesystemIncreasing codebase flexibility
The minimal representation of a ROS package is a directory in the$ROS_PACKAGE_PATH which contains a single file:
manifest.xml
Contains package metadata (author, license, url, etc)
Specifies system and package dependenciesSpecifies language-specific export flags
CMakeLists.txtContains ROS build rules (executables, libraries, custom build flags,etc)MakefileJust a proxy to build this package
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 27 / 30
![Page 51: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/51.jpg)
ROS as a Build Platform Build System
ROS Meta-FilesystemIncreasing codebase flexibility
The minimal representation of a ROS package is a directory in the$ROS_PACKAGE_PATH which contains a single file:
manifest.xml
Contains package metadata (author, license, url, etc)Specifies system and package dependencies
Specifies language-specific export flags
CMakeLists.txtContains ROS build rules (executables, libraries, custom build flags,etc)MakefileJust a proxy to build this package
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 27 / 30
![Page 52: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/52.jpg)
ROS as a Build Platform Build System
ROS Meta-FilesystemIncreasing codebase flexibility
The minimal representation of a ROS package is a directory in the$ROS_PACKAGE_PATH which contains a single file:
manifest.xml
Contains package metadata (author, license, url, etc)Specifies system and package dependenciesSpecifies language-specific export flags
CMakeLists.txtContains ROS build rules (executables, libraries, custom build flags,etc)MakefileJust a proxy to build this package
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 27 / 30
![Page 53: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/53.jpg)
ROS as a Build Platform Build System
ROS Meta-FilesystemIncreasing codebase flexibility
The minimal representation of a ROS package is a directory in the$ROS_PACKAGE_PATH which contains a single file:
manifest.xml
Contains package metadata (author, license, url, etc)Specifies system and package dependenciesSpecifies language-specific export flags
CMakeLists.txtContains ROS build rules (executables, libraries, custom build flags,etc)
MakefileJust a proxy to build this package
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 27 / 30
![Page 54: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/54.jpg)
ROS as a Build Platform Build System
ROS Meta-FilesystemIncreasing codebase flexibility
The minimal representation of a ROS package is a directory in the$ROS_PACKAGE_PATH which contains a single file:
manifest.xml
Contains package metadata (author, license, url, etc)Specifies system and package dependenciesSpecifies language-specific export flags
CMakeLists.txtContains ROS build rules (executables, libraries, custom build flags,etc)MakefileJust a proxy to build this package
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 27 / 30
![Page 55: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/55.jpg)
ROS as a Build Platform Build System
ROS Meta-Filesystem
This meta-filesystem allows ROS (rospack, specifically) to locate anypackage in the designated path, be it at compile time or runtime.
Since ROS can find any package at any time, it enables packages to bemoved aoround in the actual filesystem and greater codebase flexibility.
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 28 / 30
![Page 56: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/56.jpg)
ROS as a Build Platform Build System
ROS Meta-Filesystem
This meta-filesystem allows ROS (rospack, specifically) to locate anypackage in the designated path, be it at compile time or runtime.
Since ROS can find any package at any time, it enables packages to bemoved aoround in the actual filesystem and greater codebase flexibility.
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 28 / 30
![Page 57: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/57.jpg)
ROS as a Build Platform Build System
Building Code with ROSEasier CMake
While ROS uses CMake (www.cmake.org) internally to compile and linkcode, the ROS build system it adds several useful features that make iteasier to build ROS code.
rosbuild pulls compile and linker flags out of ROS package manifests,so compiling against other ROS code is as easy as specifying thepackage namerosdep can be used to install system dependencies specified in apackage’s manifest.xmlROS CMake macros enable rapid building of executables, libaries, andautomated regression tests
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 29 / 30
![Page 58: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/58.jpg)
ROS as a Build Platform Build System
Building Code with ROSEasier CMake
While ROS uses CMake (www.cmake.org) internally to compile and linkcode, the ROS build system it adds several useful features that make iteasier to build ROS code.
rosbuild pulls compile and linker flags out of ROS package manifests,so compiling against other ROS code is as easy as specifying thepackage name
rosdep can be used to install system dependencies specified in apackage’s manifest.xmlROS CMake macros enable rapid building of executables, libaries, andautomated regression tests
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 29 / 30
![Page 59: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/59.jpg)
ROS as a Build Platform Build System
Building Code with ROSEasier CMake
While ROS uses CMake (www.cmake.org) internally to compile and linkcode, the ROS build system it adds several useful features that make iteasier to build ROS code.
rosbuild pulls compile and linker flags out of ROS package manifests,so compiling against other ROS code is as easy as specifying thepackage namerosdep can be used to install system dependencies specified in apackage’s manifest.xml
ROS CMake macros enable rapid building of executables, libaries, andautomated regression tests
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 29 / 30
![Page 60: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/60.jpg)
ROS as a Build Platform Build System
Building Code with ROSEasier CMake
While ROS uses CMake (www.cmake.org) internally to compile and linkcode, the ROS build system it adds several useful features that make iteasier to build ROS code.
rosbuild pulls compile and linker flags out of ROS package manifests,so compiling against other ROS code is as easy as specifying thepackage namerosdep can be used to install system dependencies specified in apackage’s manifest.xmlROS CMake macros enable rapid building of executables, libaries, andautomated regression tests
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 29 / 30
![Page 61: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/61.jpg)
ROS as a Build Platform Build System
Thank you!
Now proceed to the ROS Beginner Tutorials!http://www.ros.org/wiki/ROS/Tutorials
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 30 / 30
![Page 62: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/62.jpg)
ROS as a Build Platform Build System
Thank you!Now proceed to the ROS Beginner Tutorials!http://www.ros.org/wiki/ROS/Tutorials
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 30 / 30
![Page 63: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/63.jpg)
Introduction ROS Community
The ROS CommunityResearchers using common tools to enable collaboration
79 Institutional ROS Repositories, all over the world (July, 2011)(jhu-lcsr-ros-pkg would make 80)
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 7 / 30
![Page 64: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/64.jpg)
Introduction ROS Community
www.ros.org - The ROS HubA centralized location for ROS users and developers
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 8 / 30
![Page 65: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/65.jpg)
Introduction ROS Community
answers.ros.org - ROS Questions & AnswersCommunity-supported help for ROS users
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 9 / 30
![Page 66: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/66.jpg)
Introduction ROS Community
code.ros.org - Willow Garage, Inc CodeHosting and project management for “official” packages
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 10 / 30
![Page 67: IntroductiontoROSdistribution,buildsystemandinfrastructure ......ROS as a Communication PlatformRunning and Connecting Nodes ROSCommunicationProtocols Connectingnodesoverthenetwork](https://reader033.vdocuments.us/reader033/viewer/2022041913/5e686c15309dc17646268831/html5/thumbnails/67.jpg)
Introduction ROS Community
ros mailing listsGetting in touch with the developer community
ROS Users - for general ROS-related discussionshttps://code.ros.org/mailman/listinfo/ros-users
ROS Developers - for ROS core developmenthttps://code.ros.org/mailman/listinfo/ros-developers
Other Lists & List Archiveshttp://code.ros.org/lurker
Jonathan Bohren (JHU LCSR) ROS Crash-Course, Part I: Introduction 11 / 30