The ongoing evolution of computing devices, especially of embedded systems, introduces new opportunities to enhance robotics software. The goal of this thesis is to develop a rapid prototyping robotics communication framework which can run on cheap embedded systems, while still having native compatibility with an existing widespread high-level framework, typically run on powerful computers. We created uROSnode, an open source communication framework with small code and memory footprints, able to run on recent advanced microcontrollers, and having native compatibility with the popular ROS robotics framework, which follows the publish/subscribe approach. The developer, often accustomed to ROS nowadays, can still write high-level software for it, with the non-trivial capability to interface directly to hardware modules running uROSnode. The framework is written in ANSI C89, supported by almost all of the compilers targeting embedded systems, and which can be easily integrated with other common programming languages. The codebase is partitioned into purpose-specific modules and extensively documented, to improve ease of use and maintenance. In order to assist the user in the development of uROSnode-based software, we developed a code generator and a static stack analysis tool. We performed some simple benchmarks to determine the maximum transmission and reception throughput of a topic with variable-sized messages, running on a Raspberry Pi and a STM32F407 microcontroller (ARM-CM4 core). On both platforms it was possible to reach several thousands of messages per second without too much effort if messages are rather small or processed on-the-fly. We also measured the usage of both program and working memories by a ROS turtlesim clone, which easily fitted tight resource constraints of the STM32F407. An existing robot, whose hardware/software architecture was built around a CAN bus, was interfaced to ROS through an inexpensive CAN-to-Ethernet gateway running uROSnode on a STM32F407.

La continua evoluzione dei dispositivi di calcolo, specialmente dei sistemi embedded, introduce nuove opportunità per migliorare il software per la robotica. Lo scopo della tesi è di sviluppare un framework di comunicazione robotica per la prototipazione rapida, che possa funzionare su sistemi embedded economici, mantenendo compatibilità nativa con uno dei diffusi framework esistenti di alto livello, che tipicamente funzionano su computer avanzati. Abbiamo creato uROSnode, un framework di comunicazione open source con piccola occupazione in memoria, che possa funzionare sugli avanzati microcontrollori recenti e con compatibilità nativa con il popolare framework ROS, che segue l'approccio publish/subscribe. Lo sviluppatore, oggigiorno spesso abituato al sistema ROS, può continuare a sviluppare software per esso, con la non banale possibilità di interfacciarsi direttamente a moduli hardware funzionanti tramite uROSnode. Il framework è scritto in ANSI C89, supportato pressoché dalla totalità dei compilatori per sistemi embedded, il quale può essere facilmente integrato da altri linguaggi di programmazione. Il codice è suddiviso in moduli per compiti specifici e largamente documentato, per migliorare facilità d'uso e manutenzione. Al fine di assistere l'utente nello sviluppo di software basato su uROSnode, abbiamo sviluppato un generatore di codice e uno strumento per l'analisi statica degli stack. Abbiamo compiuto dei semplici benchmark per determinare la massima capacità di trasmissione e ricezione di un singolo topic con messaggi a dimensione variabile, su un Raspberry Pi e un microcontrollore STM32F407 (core ARM-CM4). Per entrambe le piattaforme è stato possibile raggiungere capacità di diverse migliaia di messaggi al secondo senza particolari sforzi in caso di messaggi piccoli o processati al volo. Abbiamo anche misurato l'occupazione nelle memorie programma e centrale di un clone del turtlesim di ROS, che ha rispettato agevolmente i severi limiti dell'STM32F407. Un robot esistente, la cui architettura hardware/software fu costruita intorno a un bus CAN, è stato interfacciato a ROS tramite un gateway CAN-a-Ethernet in cui opera uROSnode su un STM32F407.

A lightweight open source communication framework for native integration of resource constrained robotics devices with ROS

ZOPPI, ANDREA
2011/2012

Abstract

The ongoing evolution of computing devices, especially of embedded systems, introduces new opportunities to enhance robotics software. The goal of this thesis is to develop a rapid prototyping robotics communication framework which can run on cheap embedded systems, while still having native compatibility with an existing widespread high-level framework, typically run on powerful computers. We created uROSnode, an open source communication framework with small code and memory footprints, able to run on recent advanced microcontrollers, and having native compatibility with the popular ROS robotics framework, which follows the publish/subscribe approach. The developer, often accustomed to ROS nowadays, can still write high-level software for it, with the non-trivial capability to interface directly to hardware modules running uROSnode. The framework is written in ANSI C89, supported by almost all of the compilers targeting embedded systems, and which can be easily integrated with other common programming languages. The codebase is partitioned into purpose-specific modules and extensively documented, to improve ease of use and maintenance. In order to assist the user in the development of uROSnode-based software, we developed a code generator and a static stack analysis tool. We performed some simple benchmarks to determine the maximum transmission and reception throughput of a topic with variable-sized messages, running on a Raspberry Pi and a STM32F407 microcontroller (ARM-CM4 core). On both platforms it was possible to reach several thousands of messages per second without too much effort if messages are rather small or processed on-the-fly. We also measured the usage of both program and working memories by a ROS turtlesim clone, which easily fitted tight resource constraints of the STM32F407. An existing robot, whose hardware/software architecture was built around a CAN bus, was interfaced to ROS through an inexpensive CAN-to-Ethernet gateway running uROSnode on a STM32F407.
MIGLIAVACCA, MARTINO
ING V - Scuola di Ingegneria dell'Informazione
22-apr-2013
2011/2012
La continua evoluzione dei dispositivi di calcolo, specialmente dei sistemi embedded, introduce nuove opportunità per migliorare il software per la robotica. Lo scopo della tesi è di sviluppare un framework di comunicazione robotica per la prototipazione rapida, che possa funzionare su sistemi embedded economici, mantenendo compatibilità nativa con uno dei diffusi framework esistenti di alto livello, che tipicamente funzionano su computer avanzati. Abbiamo creato uROSnode, un framework di comunicazione open source con piccola occupazione in memoria, che possa funzionare sugli avanzati microcontrollori recenti e con compatibilità nativa con il popolare framework ROS, che segue l'approccio publish/subscribe. Lo sviluppatore, oggigiorno spesso abituato al sistema ROS, può continuare a sviluppare software per esso, con la non banale possibilità di interfacciarsi direttamente a moduli hardware funzionanti tramite uROSnode. Il framework è scritto in ANSI C89, supportato pressoché dalla totalità dei compilatori per sistemi embedded, il quale può essere facilmente integrato da altri linguaggi di programmazione. Il codice è suddiviso in moduli per compiti specifici e largamente documentato, per migliorare facilità d'uso e manutenzione. Al fine di assistere l'utente nello sviluppo di software basato su uROSnode, abbiamo sviluppato un generatore di codice e uno strumento per l'analisi statica degli stack. Abbiamo compiuto dei semplici benchmark per determinare la massima capacità di trasmissione e ricezione di un singolo topic con messaggi a dimensione variabile, su un Raspberry Pi e un microcontrollore STM32F407 (core ARM-CM4). Per entrambe le piattaforme è stato possibile raggiungere capacità di diverse migliaia di messaggi al secondo senza particolari sforzi in caso di messaggi piccoli o processati al volo. Abbiamo anche misurato l'occupazione nelle memorie programma e centrale di un clone del turtlesim di ROS, che ha rispettato agevolmente i severi limiti dell'STM32F407. Un robot esistente, la cui architettura hardware/software fu costruita intorno a un bus CAN, è stato interfacciato a ROS tramite un gateway CAN-a-Ethernet in cui opera uROSnode su un STM32F407.
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2013_04_Zoppi.PDF

accessibile in internet per tutti

Descrizione: Testo della tesi
Dimensione 3.03 MB
Formato Adobe PDF
3.03 MB Adobe PDF Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/78502