Nuova sezione libri disponibile!

Analizziamo il codice del primo esempio - blink LED

Gabriele Ermacora

lettura in 2 minuti

Analizziamo il codice di dotbot_led_cnt. Se volete copiarlo qui:

import dotbot_ros
from dotbot_msgs.msg import Led
import sys

class Node(dotbot_ros.DotbotNode):
    node_name = 'led_cnt'
    def setup(self):
        self.led_pub = dotbot_ros.Publisher('led', Led)
        self.loop_rate = dotbot_ros.Rate(2)
        self.cnt = 0
        print 'setup'

    def loop(self):
        self.cnt += 1
        msg = Led()
        if self.cnt % 2 == 0:
            msg.led1 = True
        else:
            msg.led1 = False
        self.led_pub.publish(msg)
        print 'cnt', self.cnt
        sys.stdout.flush()

Iniziamo ad analizzare alcune righe di codice. Queste prime righe significano che alcune librerie di Python devono essere aggiunte, in particolare il messaggio di tipo Led deve esssere importato nel codice.

from dotbot_msgs.msg import Led

Poi dichiariamo il Nodo, con la dicitura class Node(dotbot_ros.DotbotNode): e il nome del nodo con node_name = 'led_cnt' . In seguito abbiamo due funzioni principali una def setup(self): chiamata solo una volta all'inizio dell'esecuzione del programma e un'altra che viene eseguita all'infinito def loop(self):. Quest'ultima viene eseguita ad una frequenza impostata nella funzione setup con il comando self.loop_rate = dotbot_ros.Rate(2).NOTA BENE self è una parola magica che non va mai dimenticata! In questo caso la frequenza è di 2Hz. NOTA BENE se non impostate la frequenza con questo comando la funzione loop non sarà mai richiamata!

Con la funzione self.led_pub = dotbot_ros.Publisher('led', Led) definiamo un Publisher che pubblica sul topic "led" il messaggio di tipo Led.

Nella funzione loop invece istanziamo il messaggio msg di tipo Led con msg = Led(), gli assegniamo un valore che alterna tra True e False. Incrementiamo all'inizio del loop la variabile self.cnt += 1. Poi entriamo nel if e calcoliamo il resto di self.cnt diviso per 2 con l'operatore %. Se il resto è uguale a 0 allora riempiamo il messaggio msg con True e il led si accenderà altrimenti il contrario. Infine pubblichiamo il messaggio con self.led_pub.publish(msg) scriviamo a schermo il valore di cnt. La funzione sys.stdout.flush() serve a scrivere a schermo.

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 #1 - Uso dei Led
Iniziamo ad utilizzare la piattaforma di Cloud Robotics
HB Cloud Tutorial #2 - Uso dei Bottoni
Rieccomi con il secondo tutorial legato all'uso dei bottoni per il robot **DotBot-ROS**. In questo tutorial, vedremo come configurare ed utilizzare in Python un bottone attaccato ad un pin GPIO del Raspberry Pi 3.
HB Cloud Tutorial #3 - I Motori
I Motori sono una delle parti essenziali dei robot. In questo tutorial, vederemo come è possibile in modo semplice ed intuitivo implementare un programma in Python che controlla i motori in base a comandi inviati via Wifi al Robot.
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
Un IDE web Arduino sviluppato in Python e Flask
Un mio progetto dell'estate del 2015 che permette di programmare Arduino da un'interfaccia Web esposta da un Raspberry Pi
Utilizziamo Atom come editor di testo remoto su Raspberry Pi
Come usare Atom come editor di testo remoto per Raspberry Pi
Canopy: una Pythonica alternativa a Matlab
Presento questo interessante tool python che può essere considerato una buona alternativa a Matlab per l'analisi dei dati!
Python + Arduino = Nanpy
Programmare Arduino in Python con Nanpy
Utilizzo di Nanpy con il sensore di temperatura/umidità della famiglia DHT
Come utilizzare Nanpy col sensore DHT di temperatura e Umidità
Gestire le macchine virtuali senza sforzo con Vagrant
Introduzione ed esempio di utilizzo su Vagrant, il tool che semplifica la gestione delle macchine virtuali per lo sviluppo.
Implementiamo un bot Telegram con Python
Una semplice guida per iniziare a muovere i primi passi nello sviluppo di chatbot Telegram con Python
Implementiamo un bot Telegram con Python - I Comandi
Vediamo come gestire i comandi del nostro bot in Telegram