ROS Crash Course 1

67
ROS Crash-Course, Part I Introduction to ROS distribution, build system and infrastructure Jonathan Bohren With some information and figures adapted from http: // www. ros. org and the COTESYS-ROS School 2010 presentation given by Radu Rusu

Transcript of ROS Crash Course 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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")

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

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")

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")

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)

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)

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)

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

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")

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)

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

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

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

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

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

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

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

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

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

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

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

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...

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"

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

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

...

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"

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

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

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

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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