Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ROS + Docker

ROS + Docker

Breandan Considine

April 18, 2018

More Decks by Breandan Considine

Other Decks in Programming


  1. @PHDComics What is ROS? • ROS is a SDK for

    developing distributed robotic applications • Provides OS-like features: • Hardware abstraction • Low-level device control • Message passing between processes • Package management • Comprised of a number of nodes, which communicate with each other using a pub-sub messaging model
  2. ROS Packages • Software in ROS is organized into packages

    • Packages may contain, ROS Nodes, Libraries (independent of ROS), Datasets, configuration files • Anything that provides useful modular functionality • Dependencies • ros_core, rqt_graph, rqt_plot, rviz… • Defined by a package.xml file
  3. ROS Nodes • Nodes are processes in ROS • More

    fine-grained than packages: • Sensor readings • Motor outputs • Localization • Path planning • Image view • Can be implemented in with any ROS client library • Nodes communicate with each other by passing messages
  4. ROS Topics • Messages in ROS are routed via a

    pub-sub model • Nodes communicate by publishing and subscribing to topics • Name of the topic uniquely identifies the channel • Generally, publishers and subscribers are oblivious to each other’s existence • ROS Services are another communication model that use request-reply semantics
  5. ROS Parameters • A Parameter Server is a shared, multivariable

    dictionary that is accessible via a network • Nodes use this server to store and retrieve parameters at runtime • ROS has the rosparam tool to work with the Parameter Server. The supported parameters are as follows: -rosparam list: This lists all the parameters in the server -rosparam get parameter: This gets the value of a parameter -rosparam set parameter value: This sets the value of a parameter
  6. ROS Command line tools • rostopic: get information about topics

    • rospack: Used to get information or find packages in the system. • rosparam: Used to get and set parameters on the parameter server • roscreate-pkg: Use this command to create a new package • rosmake: This command is used to compile a package • rosdep: This command installs system dependencies of a package • rxdeps: Used if you want to see the package dependencies as a graph
  7. What is a container? • Deploying applications can be challenging

    • Need to ensure compatibility across devices, operating systems • Package management, dependency resolution • Reproducibility comes in many flavors • Welcome to the wonderful world of containers! • Essentially just a fancy chroot • File system and network isolation • Version control • Copy-on-write