Nuova sezione libri disponibile!

Non avete un robot? C'è il robot in cloud accessibile da remoto tramite il vostro PC o da cellulare

Ludovico Russo

lettura in 4 minuti

Molti di voi vorrebbero iniziare subito a programmare in ROS tramite la piattaforma cloud ma sono bloccati (purtroppo) da rognosi problemi hardware. Probabilmente la scheda motori non funziona correttamente o state aspettando ancora il Raspberry Pi o un componente da qualche fornitore.

Perchè quindi non saltate questo passaggio e iniziate a programmare subito in ROS con un robot remotizzato in cloud? Cosa significa esattamente lo affronteremo in questo post. In pratica potete iniziare ad usare la piattaforma soltanto con il vostro pc e una qualsiasi connessione internet (senza Raspberry Pi e altri dispositivi)! E... tutto ciò che abbiamo visto su come configurare una rete per Dotbot? Beh, ora abbiamo accesso ad un Dotbot in cloud!

In pratica tutto quello che avete visto funzionare su Dotbot è da oggi disponibile in piattaforma cloud e accessibile tramite browser. Vi spiego com'è possibile, sul Raspberry Pi di Dotbot c'è una versione di Linux con installato ROS che è configurato per collegarsi alla nostra piattaforma cloud. Quello che abbiamo fatto è prendere un computer Linux accessibile da Internet ed installarci sopra tutto il software che solitamente installiamo su Dotbot. Per i più tecnici in pratica abbiamo comprato un'istanza cloud da Amazon Web Services ed installato l'immagine Dotbot esattamente come facciamo su Raspberry, questa si che è cloud robotics!

cloud robotics amazon

Lo schema sopra riassume questi concetti e vi mostra come i due mondi si interfacciano tramite la piattaforma. La cosa che più mi affascina della filosofia cloud è che si confonde la differenza tra mondo "fisico", ovvero ciò che possiamo "toccare", con quello cloud. Infatti a qualcuno verrebbe da pensare che in sostanza abbiamo creato soltanto un sofisticato simulatore.. no, niente di più sbagliato! Il robot in cloud, DotbotCloud, esiste davvero ed è esattamente come Dotbot. L'unica differenza è che il computer Linux di DotbotCloud è una macchina virtuale remotizzata da Amazon e nessuno con certezza può sapere fisicamente dove si trovi. Inoltre ovviamente non può avere nessun tipo di interazione con il mondo fisico. In pratica è come se DotbotCloud vivesse in un mondo parallelo. Quello che possiamo fare è usarlo come fosse un robot normale per poi riportare il nostro software su un robot "concreto" e il funzionamento sarà lo stesso! Vediamo subito cosa ci possiamo fare.

Primi passi con Dotbot in cloud

Entriamo in piattaforma (effettuando il login) e cerchiamo il robot in cloud con il tasto "cerca robot". Nel mio caso ho un indirizzo ip così 54.191.14.121:8080(contattatemi per ottenere la vostra istanza ) .

Ora andiamo nella "ROS console" e vediamo cosa succede. Notiamo subito che ci sono i nodi attivi di "default" nella sezione "Node List" ( /rosapi, /rosbridge_websocket, /rosout) e "Topic List" (/rosout e /rosout_agg )

ros cloud

Poi se apriamo la Web App in un altro tab http://hotblackrobotics.github.io/cloud/webgui/turtle ritornando su "ROS Console" un nuovo topic nella sezione "Topic List" apparirà (command_velocity).

Ovviamente non potendo "vedere" un robot in cloud abbiamo implementato una Web App, ereditata da ROS che si chiama Turtlesim, per visualizzare i movimenti del robot in tempo reale. Il robot prende la forma di una tartaruga su uno sfondo blu.

cloud robotics

Scriviamo allora un semplice nodo ROS per far muovere il robot! Usiamo il topic di cui vi accennavo in precedenza command_velocity pubblicando le posizioni geometriche per fargli percorrere un percorso a spirale.

import dotbot_ros
import sys
import os
from geometry_msgs.msg import Twist
import math
import rospy

class Node(dotbot_ros.DotbotNode):
    node_name = 'cloud_robot_pub'

    def setup(self):
        self.loop_rate = dotbot_ros.Rate(10)
        self.pub_position = dotbot_ros.Publisher('command_velocity', Twist)
        self.msg = Twist()
        self.count = 0.0

    def loop(self):
            print 'Spirale' , self.count
            self.msg.linear.x =  self.count
            self.msg.angular.z = 5
            self.pub_position.publish(self.msg)
            self.count = self.count + 1
            sys.stdout.flush()
            if self.count > 500:
                print 'DONE' , self.count
                rospy.signal_shutdown("fine")

Il codice è sostanzialmente un publisher del messaggio Twist sul topic 'command_velocity'. Il messaggio Twist è un messaggio standard di ROS (da geometry_msgs) che può risultare all'inizio difficile da comprendere. In realtà noi siamo interessati a solo due parametri msg.linear.x, che fa avanzare il robot se positivo, e msg.angular.z che lo fa girare in verso antiorario se positivo. Vi chiederete perchè "z"? E' soltanto una convenzione, in ROS il messaggio Twist per chi fosse interessato è composto così

Vector3  linear
Vector3  angular

dove linear e angular sono lo spostamento e la rotazione sui relativi assi x,y,z. L' asse z esce dal piano del computer (in questa visualizzazione), x va da destra a sinistra e y dall'alto in basso.

float64 x
float64 y
float64 z

In realtà tutte queste convenzioni non sono così importanti nella nostra applicazione perchè tanto operiamo solo sui parametri "avanti" e "gira". Facciamo partire il programma e il robot (visualizzato come tartaruga) inizierà a muoversi!

Il robot in cloud è on-line in piattaforma e se volete provarlo non esitate a contattarci a info@hotblackrobotics oppure scrivete direttamente a me ermacora.gabriele@gmail.com! Mi farebbe moltissimo piacere sentirci su Skype per spiegarvi i primi passi con la cloud robotics e sentire le vostre opinioni a riguardo il mio id è gabriele.ermacora86 (ho visto che molti hanno problemi nella fase iniziale). Per le istanze però dovete sapere che purtroppo paghiamo un abbonamento cloud su Amazon e dobbiamo chiedervi di pagare una fee di iscrizione di 2 Euro (da cui in realtà non facciamo lucro ma è solo per rientrare un minimo nelle spese).

Buona cloud robotics! ;)

Ti è piaciuto questo post?

Registrati alla newsletter per rimanere sempre aggiornato!

Ci tengo alla tua privacy. Leggi di più sulla mia Privacy Policy.

Ti potrebbe anche interessare

HB Cloud Tutorial - Speech Bot: come far parlare il vostro robot
Le basi per costruire un "dialogo" con il vostro robot sfruttando le funzionalità di sintesi e riconoscimento vocale.
Avete problemi hardware? C'è il robot in cloud accessibile da remoto tramite il vostro PC o cellulare
Avete problemi hardware? C'è il robot in cloud accessibile da remoto tramite il vostro PC o cellulare
Cosa si può fare con la nostra piattaforma di Cloud Robotics
Ecco alcune cosa che è possibile fare con la nostra piattaforma di Cloud Robotics
Tutorial - Usiamo la piattaforma di Cloud Robotics per sviluppare un semplice assistente personale Robotico
Usiamo la piattaforma di Cloud Robotics per sviluppare un semplice assistente personale Robotico
Utilizzare la RaspiCam in streaming con la piattaforma Cloud
Breve tutorial che spiega come abilitare la RaspiCam su ROS e la piattaforma di Cloud Robotics
Installiamo ROS su Raspberry Pi
Un breve tutorial su come utilizzare ROS sul Raspberry Pi
Video Corso ROS Rokers - Completati i video di Introduzione
Sono disponibili online i video tutorial del corso di ROS partito dalla community Rokers
NTBD: guida step by step
Cos'è e come utilizzare NTBD step by step, primo articolo della serie
Inviare Goals alla Navigation Stack - versione nodo ROS Python
Inviare un goal all ROS navigation stack utilizzando un nodo Python
Inviare una sequenza di Goals alla ROS NavStack usando Python
Inviare una sequenza di pose desiderate alla ROS Navigation Stack usando un nodo Python
Controllare siBOT dalla piattaforma HBR
Come controllare il manipolatore siBOT utilizzando la piattaforma HBR
Sviluppare un rilevatore di fiamma con la visione artificiale
Sviluppare un rilevatore di fiamma con la visione artificiale
Come creare messaggi custom in ROS
Creare nuovi tipi di messaggio ROS
Benvenuto a ROS 2.0
Primo contatto con ROS 2.0
Usare il braccio robotico Dobot con ROS
Come usare il braccio robotico con Robot Operating System
HB Robotics: con Python impariamo la Cloud Robotics
Vi presento la mia startup: ecco come riusciamo a insegnare la Cloud Robotics con Python e ROS.
Un Video Corso di ROS
Il mio video corso su come utilizzare ROS è disponibile
Sviluppiamo un Robot con tecnologie Open Source
Inizio una serie di videoguide, in cui voglio introdurvi al mondo della robotica di servizio in modo pratico, facendo vedere come è possibilile, sfruttando tecnologie completamente Open Source, quali Arduino, Raspberry Pi, ROS e Docker, costruire un piccolo robot di Servizio.
Robot Open Source - Introduzione a Docker
È disponibile il video "Introduzione a Docker".
Buildare e usare container Docker per Raspberry Pi
In questa guida vediamo come buildare ed utilizzare Docker su Raspberry Pi (ed in generale sistemi Linux Embedded) per velocizzare la produzione di applicazioni Linux Embedded
Robot Open Source - Docker e Raspberry
È disponibile il video "Docker e Raspberry".