Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 ›...

16
Mathias Lüdtke, Fraunhofer IPA Container-based deployment of ROS applications

Transcript of Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 ›...

Page 1: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Mathias Lüdtke, Fraunhofer IPA

Container-based deploymentof ROS applications

Page 2: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Structure

● Deployment?

● Container?

● Overview IPDE framework

● Current state

● Outlook

Page 3: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Deployment

● Many definitions with varying scopes..

● Turning source code into running systems– Set-up environment on target platform

– Transfer source code and config

– Install dependencies

– Build source code

– Run application

● Focus on ROS-based applications

Page 4: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

ROS developer's workflow

1)Install ROS

2)Prepare catkin workspace

3)git clone, rosinstall

4)rosdep install

5)catkin_make

6)roslaunch ..

7)profit

Page 5: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Software Containers

● Operating-system-level virtualization

● “Light-weight VMs“

● Shipped with Linux mainline kernel

● On top: Docker– Container engine

– Overlay filesystems

– Docker Hub

– Cross-platform Tooling

Page 6: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

How does it help?

● Self-contained images

● Images can be run ad-hoc, no booting

● Minimal overhead

● Standardized environment

● Host isolation

● Cloud-ready

Page 7: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Integration Platform &Deployment Environment (IPDE)

● Docker-based deployment system for ROSapplications

● Deployed with Docker ;)

● Integrates software from different sources

● “Extended roslaunch”– Pulls in all dependencies

– Builds source code

– Keeps host clean

Page 8: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Software sources

● ROS packages:– Binary release

– Source release

– Locally developed

● Different stages:– set-up, testing, production, maintenance

● Different users:– developers, system integrators, end users

Page 9: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

IPDE overview

Host OS

Docker

IPDE server

ROS

Page 10: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

IPDE server

● Server written in Python with Flask

● REST API (XML and JSON)

● Handles all process logic and sessions

● Not involved at application run-time

● Deployed via Docker Hub– tiangolo/uwsgi-nginx-flask:flask :)

● Orchestrated with docker-compose– sameersbn/apt-cacher-ng :)

Page 11: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Session lifecycle

● “remote workspace” → application image

Source container

Ubuntu 14.04

ROS indigo core

IPDE scripts

reapp/core

Build

Application image

Ubuntu 14.04

ROS indigo core

IPDE scripts

reapp/core

Page 12: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

IPDE clients

● ReApp project– Eclipse-based Engineering Workbench

– Web-based Solution Wizard

● Factory-in-a-Day– Shell utilities (→ Hands-on session)

– Integration with the Automated Test Framework

Page 13: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Recap & Benefits

● Docker-based cross-platform deploymentsystem for ROS applications

● Simplifies ROS source code workflow

● Turns ROS packages into isolated, self-contained application images

● Sessions allow separation of concerns

● Minimum overhead

● Server and clients freely available

Page 14: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Limitations

● X forwarding is difficult with Docker

● Building from scratch is rather slow

● No persistent local data storage

● Dependency management with rosdep only

● No user access levels

● Only one host is supported for now

Page 15: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Outlook / Nice-to-have

● Multi-host support for distributed application

● Automatic start-up of default applications

● A Web front-end would be great :)

● CLI utilities need polishing:– tab completion

– single tool instead of different scripts

Page 16: Container-based deployment of ROS applications › wp-content › uploads › 2017 › 03 › ... · Deployment Many definitions with varying scopes.. Turning source code into running

Questions?