CloudRobotics #101 — Deploying, Managing, and Operating TurtleBot3

Author

Date

Introduction

TurtleBot3 is a small, programmable, popular ROS-based mobile robot for use in education, research, hobby, and product prototyping. The goal of TurtleBot3 is to dramatically lower the barrier to entry of a hardware robotics platform for tinkering. While this is true for the hardware, the software development for TurtleBot3 is not as streamlined as it could be.

The World’s First Cloud Robotics Platform, rapyuta.io is the gateway to the possibilities of what Robots can accomplish. This one-stop platform is designed for robotic transformations giving smarter robots, higher efficiencies and operational visibility resulting in scalability, predictable outcomes and timelines for a business.

This post will explain how you can use the rapyuta.io platform to deploy easy-to-use ROS packages onto the TurtleBot3. We will also host a web portal, which allows us to send commands and teleoperate the TurtleBot3 from any PC connected to the internet. Let’s get started!

We’d be able to fully appreciate the value of rapyuta.io platform once we complete the TurtleBot3 official tutorial.

Prerequisites

  1. Supported: Devices running either Ubuntu 16.04 or Ubuntu 18.04 OS
    Note: Use the Linux MATE version from the TurtleBot3 official tutorial.
  2. If you want to use the docker-compose option as the run time for TurtleBot3, ensure you have an SD card with at least 16GB of space.
  3. Sign up for an account on rapyuta.io, and subscribe to the free community plan to try out this tutorial.
  4. A TurtleBot3 whose hardware has been assembled.

Getting Started

To set up TurtleBot3 software stack, we need to walk through the steps 1, 2, 3, 4 provided in the official tutorial (using Linux mate). You can skip step 5 i.e. the network configuration part as rapyuta.io automatically handles it for the user with the supported versions of ROS.

On-boarding TurtleBot3 onto rapyuta.io

Registering or on-boarding TurtleBot3 on to rapyuta.io platform is intuitive, clear and quick. The basic steps include:

  1. Sign in to rapyuta.io platform in a web browser.
  2. On the left navigation bar, click DEVICES.
  3. Click ADD NEW DEVICE.
  4. Provide a name that will be used by rapyuta.io to identify the TurtleBot3. Let’s call it TurtleBot.
  5. Provide the absolute path of the ROS catkin workspace that you created in TurtleBot3.
  6. Though optional, it’s good to write a short description of the new device you’re adding now.
  7. Click CONTINUE.
Registering or onboarding TurtleBot3 on to rapyuta.io platform
Adding TurtleBot3 onto rapyuta.io

Copy and paste the download script, which is automatically generated, on the command line terminal of TurtleBot3, and press Enter. The script will install rapyuta-agent together with several dependencies, which are required to successfully onboard TurtleBot3 onto the rapyuta.io platform. The initialization process is complete when a green coloured dot appears next to the name: TurtleBot. The green coloured dot indicates that the physical TurtleBot3 is now successfully registered with rapyuta.io platform.

The green coloured dot indicates that the physical TurtleBot3 is now successfully registered with rapyuta.io platform.

Now that TurtleBot3 is on rapyuta.io as TurtleBot, we can:

  1. Subscribe to system metrics like disk usage, memory usage, CPU load average.
  2. Subscribe to ROS topics.
  3. Visualize system metrics and ROS topics via graphs and plots.
  4. Remotely SSH into TurtleBot3.
  5. Dynamically configure TurtleBot3 by defining and applying configuration parameters.

Back To Basics

Wikipedia defines ROS as a collection of software frameworks for robot software development that provides services designed for a heterogeneous computer cluster such as hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management. In short, ROS is a robotics middleware. We recommend you to review the basic ROS concepts before diving into the tutorial.

A package is a fundamental rapyuta.io resource that borrows the concept of a package from ROS and extends it further in context of a cloud robotics platform to represent the declaration of your application. In order to make this possible, a rapyuta.io package resource must encapsulate any information about how it should be built, its compatibility and runtime requirements, network endpoints and ROS interfaces it exposes, and any configuration information it may require. It is the smallest unit of deployment in rapyuta.io, and it can be deployed either on a device or the cloud or both.

Please note: A ROS package and a rapyuta.io package resource are non- interchangeable entities. The developer could choose to create a derivative from an upstream ROS package into a rapyuta.io package resource in order to use it in an application or leverage the relevant features offered by the rapyuta.io cloud platform.

It’s important to understand the concept of “building code” and “cross-compilation” in the context of ROS.

Developers use version control tools like Git to save and track changes to source code. The process of building code is a process that transforms source code and artifacts from a VCS such as Git into binaries/runnables that can be executed on the desired target platforms, processor architectures and configurations to fulfill the requirements of the distributed robotics application.

“Cross-compilation” is the process of building code for processors other than the commonly used Intel/AMD variants (x86, x86_64, AMD64). For example, ARM-based chips are generally used in mobile phones, embedded devices including the TurtleBot3’s raspberry pi.

rapyuta.io’s Build Engine lets you directly cross-compile source code in Git repositories and builds ROS packages in the cloud without you having to ever touch a device (machine). In the context of ROS, the Build Engine uses catkin and rosdep libraries to build the source code in ROS packages for the architecture specification that you define in the packages. rapyuta.io provides a docker runtime option for devices that enables you to build source code and deliver application code on devices.

TurtleBot3 Teleoperation

We intend to remotely control the TurtleBot using a web-based remote control. rapyuta.io provides all of the tools and services that enable us to remotely control and configure devices.

In this tutorial, we would create and deploy two packages for the teleoperation of TurtleBot. The packages are:

  • bringup package: It sets up the TurtleBot to listen to user instructions or commands on the ROS topic, /cmd_vel
  • teleoperation package: It is the remote control for the TurtleBot. It is a web-based control panel where the user can provide instructions for the TurtleBot to move in a specific direction.

Now, we examine one of the critical features of the rapyuta.io platform — the ability to manage software packages and their life cycles independently while allowing the user to couple the deployments of the software at execution time in order to achieve the required goal. In our scenario, we can independently deploy the bringup package on the robot and then, have the teleoperation package consume/interact with its ROS interfaces (topics/services/actions) to make the robot move. The platform auto-magically handles bridging and linking these interfaces to facilitate loosely coupled communication in a secure way. For further details on managing software lifecycle and composing software, please read the user documentation.

Create and Deploy bringup Package

rapyuta.io lets you create a package by uploading a package manifest (JSON file). Steps:

  1. Download or copy the package manifest.
  2. On the left navigation bar, click CATALOG.
  3. Click IMPORT PACKAGE.
  4. Upload or paste the package manifest.
  5. Click SUBMIT.
Import package manifest
  1. Deploy the package by clicking on the Deploy package button.
  2. Provide a name for the deployment.
  3. Choose the device on which the component “bringup” will be deployed on. In this tutorial, we would choose the Turtlebot device.
  4. Click CREATE DEPLOYMENT > Confirm.
deploy package
deploy package

The deployment is successfully running when the Deployment Phase is Succeeded and Status is Running. The bringup package is now deployed on TurtleBot and is publishing the ROS topic /cmd_vel to it.

Create and Deploy Remote Control package

The teleoperation package plays the role of remote control for the TurtleBot3. Once the package is deployed on the cloud, it spawns a web-based control panel for sending move commands to the TurtleBot. The package contains a web server, a user interface to visualise the environment of the TurtleBot and a built-in rosbridge server.

  1. Download or copy the teleoperation package manifest.
  2. On the left navigation bar, click CATALOG.
  3. Click IMPORT PACKAGE.
  4. Upload or paste the package manifest.
  5. Click SUBMIT.

A colored blinking dot indicates the Build Status of the package creation. The package is successfully built only when the dot turns green in color.

Building Stage
Building Stage
  1. Deploy the package by clicking on the Deploy Package button.
  2. Provide a name for the deployment.
  3. Click Add dependent deployment. Select the corresponding deployment of “bringup” package that we created previously.
  4. Click CREATE DEPLOYMENT > Confirm.

The deployment is successfully running when the Deployment Phase is Succeeded and Status is Running.

Deployment Phase is Succeeded and Status is Running.
Deployment Phase is Succeeded and Status is Running

Look out for the two dynamically generated endpoints on the Deployment’s Details page. The first one is for the WebSocket connection and the other is for the user interface (UI).

To load the web application, open the URL address for the user interface (UI) in a new web browser tab.

Now, get the URL address of the WebSocket connection from the endpoint named websocket_HOST. In the text box of the UI, enter the URL: wss://<websocket_HOST>

We should be able to see the TurtleBot3 laser scanners once the connection succeeds. We should also be able to move the TurtleBot3 using a keyboard or a joystick connected to the PC in the web browser. We could drive around as much as we want without trying to hit any obstacle though.

That’s All Folks

We learned:

  1. How to onboard a TurtleBot3 onto rapyuta.io
  2. Create and deploy packages on the cloud and on TurtleBot3 using rapyuta.io
  3. Remotely control TurtleBot3 using a web-based remote control with the help of rapyuta.io
  4. Visualise the environment of TurtleBot3 in a web browser

rapyuta.io magically handles and provides for communication across the internet, network endpoints, building source code in repositories and shipping it to devices for us.

If you want to learn more about bringing your ROS projects on to the cloud, check out Rapyuta Robotics. For any questions, queries or concerns contact us at support@rapyuta.io

Also, we are hiring! Check out our Job Postings and write to us.

We are always excited to hear about any interesting things you’re doing with robotics. Please share a link to your projects and we would love to make them part of rapyuta.io packages.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Take advantage of our thousands of hours of research and domain expertise. Talk to us for your robotics transformations solutions!

Recent posts

Incident Report: Breach of rapyuta.io devices due to a vulnerability in SaltStack

A new exploit on SaltStack was actively exploited, resulting in the installation of malware on some rapyuta.io devices that were online during...

A Safari into the KubeVerse — Talk by Dhananjay Sathe at Kubernetes Forum

Dhanajay Sathe giving his talk at Kubernetes Forum Bangalore As part of our knowledge-sharing initiatives, our Staff Engineer Dhananjay Sathe gave a talk at Kubernetes...

Event report — iREX 2019

We exhibited for the first time at the “2019 International Robot Exhibition (iREX 2019)” held at Tokyo Big Sight from December 18 (Wednesday) to...

Rapyuta Robotics launches drone solution powered by rapyuta.io

Press release: November 15, 2017 Rapyuta Robotics (Chuo, Tokyo. CEO: Gajan Mohanarajah) announced the beta launch of its new...