ROS on OpenEmbedded
Simpler Robotics Development

LG Electronics, USA

ROSCon 2019 - Macau

Agenda● Introduction and Motivation: Mass-market Robots● Development with ROS + OpenEmbedded● webOS Robotics● DemoIntroduction and Motivation: Mass-market Robots

Brian Shin

Robots for Mass Market: Expectations●Full Experience on small form factor●

Multiple Variants & Reproducibility●

Optimized for Low Cost

●Advanced User Experiences●

Up-to-date with software and security

Possible path: reduce hardware cost + simplify softwaredevelopment and maintenanceEmbedded Product: Introduction● Embedded Hardware (Single Board Computers)● Customized for dedicated function● Low memory footprint● Low power consumption● Real-time performance

Embedded Software: Challenges● Multiple Hardware variants● Cross Development● Significant Customizations● Lot of Optimizations

https://elinux.org/images/0/0a/Embedded_Linux_Build_Systems.pdf

Robots for Mass Market: Possible Solution● Embedded hardware (low cost)● OpenEmbedded (simple base Embedded Linux)● ROS on OpenEmbedded (meta-ros)● webOS (rich product features on OpenEmbedded)

Development with ROS + OpenEmbedded

Herb KutaOpenEmbedded (OE): Introduction●

Build system for the Linux Foundation’s Yocto Project●

Cross-compilation for many CPU architectures“create custom Linux-based systems●

Wide variety of chipset and board support●

Provides a customizable “OpenEmbedded Linux”●

Input: recipes and configurations (“metadata”)●

Output: package archive plus bootable images●

Completely reproducible builds●

Organized into independent layers => expandable

regardless of the hardware architecture”

Recipe (.bb)

https://www.openembedded.org/

https://www.yoctoproject.org/DEPENDSRDEPENDS
SRC_URI# Build-time dependencies# Run-time dependencies# Location of source

do_fetch()# Fetch the upstream source
do_patch()# Patch it with your changes
do_configure() # Run CMake, autoconf, etc.
do_compile()# Compile
do_install()# Select what’s installed
do_package()# Package what’s installedmeta-ros v2: OpenEmbedded Layers for ROS 1 & ROS 2
Super Flore: An extended platform release manager for ROS

rosdistro_build_cache<ROS-DISTRO>/distribution.yaml

superflore<ROS_DISTRO>-cache.yaml

package.xml
rosdep/*.yaml

https://github.com/ros-infrastructure/superflore

generated-recipes-<ROS_DISTRO>/*/*.bbmeta-ros: How to use for development
Build ROS Image

Add/Modify ROS Package# Clone meta-ros# Clone your ROS package source$ git clone git@github.com:ros/meta-ros$ git clone git@github.com:<ros-package># Setup OE layers# Generate (or regenerate) recipe$ meta-ros/scripts/mcf -f conf/ros2-dashing.mcf$ ros-generate-recipes <ros-package># Setup build environment# Add your package to the image$ source openembedded-core/oe-init-build-env$ vi conf/local.conf# Configure the build# Build an image with your package$ vi conf/local.conf$ MACHINE=raspberrypi4 bitbake <image># Build an image$ MACHINE=raspberrypi4 bitbake <image>https://github.com/ros/meta-ros

OpenEmbedded Build Instructions

Case Study: Simplified Deployment (TurtleBot3 Waffle Pi)
Current Scheme (with remote PC)

OpenEmbedded Based (no remote PC)

1. Install Ubuntu, ROS and TB3 application

1. Build image with specialized OpenEmbedded
and ROS optimized for RPi on a build PC

packages on the remote PC2. Install unspecialized Ubuntu and ROS forgeneric Arm architecture on RPi
3. Download source code for TB3 packages andbuild them on RPi

2. Load device instance configuration (hostname,WiFi SSID, etc.) and TB3 ROS nodes to start uponboot on USB flash drive
3. Flash image on SD card, insert it and USB flash
drive into RPi, and boot. TB3 is operational

4. SSH into TB3 and setup device instanceconfiguration (hostname, WiFi SSID, etc.)
5. Configure remote PC and RPi to communicatewith each other
6. Launch roscore and TB3 ROS applications onremote PC
7. Launch TB3 ROS nodes on RPi. TB3 isoperational
http://emanual.robotis.com/docs/en/platform/turtlebot3/setup/#setup

webOS Robotics

Lokesh Kumar Goel

LG webOS: Path to complete productwebOS is adopted on many LG devices.

Smart TV

DigitalSignage

Smart
Watch

Smart
Refrigerator

Robot

https://www.webosose.org/Open Source
EditionOpenEmbedded + ROS + webOS: Advantages●

Optimized for embedded hardware (power, CPU, memory)●

Capabilities for advanced user experiences (apps/services)●Rapid web-based application development●Software update pipeline (from cloud to device)●White-labeled OS (rebrandable & redistributable)webOS Robotics: Common Base Platform

webOS Robotics: Roadmap
Variants

Service Robot

Airport Robot

Child Robot(Service)(Concierge)(Companion)

webOS:
Specific

Mobile App

ROS:Specific

Pattern Navigation(different modes)

ROS:
CommonwebOS:
CommonReference
Hardwares

SLAM

Voice
Assistant(Google AI)

Navigation

Build
Profiles(with/without UX)ROBOTIS TurtleBot3

AirportApp

Play App(Youtube Kids, Story
Telling, Game)CMS

Emotion Engine(Face/Emotion
detection)

Follow-me

Obstacle
Detection

Flow
Programming

PersonDetection

SoftwareUpdate(OTA)

NVIDIA TX(n)Joystick

RemoteControl

ParkingMode(return tochargestation)

OfflineMode

Simulator(ROS +webOS)

Cloud(OTA,Recovery,Diagnostics,Control)

Qualcomm RB3Multidisplay

DemoLokesh Kumar Goel

webOS Robot Platform: DemoROSCON 2018: BeanBird Bot
https://youtu.be/lCGa7LkDNp0

ROSCON 2019: Big Bean Bot
https://youtu.be/nZ3QQ2HL5Vg

ABOUT
webOS

SN
IO

QTS
UE

ABOUT
OpenEmbedded
ANS

WERS

About us
Lokesh Kumar Goel●●>15 years in Embedded Systems
Director of Engineering

Charles “Herb” Kuta●●>10 years in Embedded Systems
Project Lead & meta-ros maintainer

Brian Shin●●Robotics and embedded systems
Product Manager & ROS 2 TSC Rep

lokeshkumar.goel@lge.com
https://www.linkedin.com/in/lokesh-kumar-goel-3206042b/

herb.kuta@lge.com
https://www.linkedin.com/in/kuta42/

brian.shin@lge.com
https://www.linkedin.com/in/byunghyunshin/