Home    About me    Publications    Blog    Photo gallery
Some other old good stuff

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Archivio per la 'Non-autonomous Robotics' Categoria

Mattoncini alla ribalta

In questi giorni si e’ fatto un gran parlare di Lego. Ed il merito e’ tutto dell’iPad di Apple appena presentato. Passato pochissimo tempo dal keynote di Jobs, su un blog degli sviluppatori di Adobe e’ apparso un post essenziale, conciso, ma creativo, divertente e tremendamente efficace. Il quale, ovviamente, ha impiegato un attimo per fare il giro del web. Il riferimento, invero per nulla velato, e’ alla mancanza del supporto Flash in iPad (cosi’ come gia’ avviene per iPhone). Il che si trasforma, per l’utente finale, nella visione di un sacco di bei blue bricks in luogo dei contenuti Flash che dovrebbero apparire sui siti web che si stanno navigando.

iPad (and the consequences of the lack of a Flash support according to Adobe)

Sempre in tema mattoncini (ed Apple), MacWorld ci insegna come fare per ingannare l’attesa che ci separa dall’uscita sul mercato di iPad. Semplicemente costruirsene uno. Come? Con un po’ di Lego ovviamente.

Apple's iPad made of LEGO bricks

Infine, i mattoncini della Lego tornano di prepotenza alla mia attenzione per via di un qualcosa che mi era sfuggito e che non so bene a quando esattamente risalga (secondo Wikipedia la data di riferimento e’ da qualche parte entro il mese di agosto 2009). Trattasi del rilascio di una nuova versione del Lego Mindstorms NXT, marchiata 2.0. Poche (grazie al cielo) le differenze con la release precedente. Citando da alcune FAQ rintracciate in rete:

The NXT 2.0 set has a bigger and revised element assortment of 619 elements, 16 building and programming challenges for 4 new fun and action-packed robotic models complete with building instructions. The new hardware mix consist of an NXT micro-controller, 3 Interactive Servo Motors – with built-in Rotation Sensors, 1 Ultrasonic Sensor, 2 Touch Sensors and the new Color Sensor with triple functionality; it acts a Color Sensor – detecting different colors, as a Light Sensor – seeing different light intensities and also works as a Color Lamp.

Quindi piu’ pezzi, un servomotore in piu’ (e tutti e tre maggiormente sofisticati dei precedenti, per via dell’encoder interno che sembrerebbe particolarmente preciso), un sensore di tocco aggiuntivo (questo sembra essere immutato rispetto al precedente, cosi’ come il sensore ad ultrasuoni) ed un sensore pseudo-visibo potenziato. Niente di tremendante rivoluzionario, insomma, che mi costringa ad aprire il portafoglio. Grazie, Lego.

Example of crocodile-like robot built with a Lego Mindstorms NXT 2.0 set

Tra parentesi, su NXTLog 2.0 e’ stata anche lanciata una sfida aperta a tutti i possessori di NXT per la realizzazione del piu’ sofisticato braccio robotico possibile. La deadline per la partecipazione e’ il 28 di febbraio. Tutti i dettagli a riguardo potete trovarli a questo link. Deve essere divertente provare a vedere cosa puo’ venir fuori.

Affordance learning using Bayesian networks

Tempo di seminari in quel di Plymouth. A dire la verita’ non e’ una cosa recente, siccome diverse serie parallele di conferenze su invito stanno andando avanti con una frequenza mai vista almeno da un paio di mesi a questa parte. Per svariati motivi (leggi trasferte) fino a questo momento non ho pero’ potuto partecipare troppo. Rimedio in parte oggi, presenziando al seminario tenuto da Luis Montesano della Universidad de Zaragoza, dal titolo Affordance learning using Bayesian networks.

Hand reaching for a door handle (B/W)

Quotando Wikipedia, an affordance is a quality of an object, or an environment, that allows an individual to perform an action. Le affordances, per dirla invece alla Gibson, definiscono la relazione di un agente con l’ambiente nei termini delle sua capacita’ di azione/percezione. Il modello proposto da Montesano e colleghi mira a far si’ che un agente artificiale (sia esso simulato a computer, oppure un robot vero e proprio) possa imparare dalla propria esperienza quali sono le affordances offerte da un particolare oggetto. Per farlo si appoggia a reti bayesiane la cui struttura viene definita autonomamente durante la fase di apprendimento. I curiosi possono scaricare dal link qui sotto un articolo che spiega nei dettagli il procedimento adottato.

Nel corso degli esperimenti, l’equipe ispanica ha utilizzato come piattaforma robotica di riferimento il Baltazar, un robottone un po’ pomposamente definito umanoide, ma comunque simpatico. Baltazar e’ ritratto qui sotto durante un momento della fase di training.

Baltazar robot learning affordances

A me ricorda piu’ ET che non un essere umano. Ma si tratta comunque di dettagli. Il lavoro e’ interessante e merita un’occhiata.

Home robots and security

Dato che ieri ho reintrodotto il blog Artificial Intelligence and Robotics ed ora posso quindi glissare sulle presentazioni, approfitto della situazione per condividere con voi un’altra notizia individuata li’ dentro. Tamara Denning, studente di PhD alla Washington University, ha presentato ad Ubicomp 2009 (conferenza internazionale sull’Ubiquitous Computing tenutasi ad Orlando, Florida, nel periodo compreso tra lo scorso 30 settembre ed il 3 ottobre) un interessante paper scritto in collaborazione con altri quattro autori dal titolo A Spotlight on Security and Privacy Risks with Future Household Robots: Attacks and Lessons.

Household robot cleaning the floor

Il blog menzionato in apertura di post fa un ottimo riassunto dei punti chiave del lavoro. Qui di seguito potete leggere il tutto.

It is obvious to most people that a robot is to a large degree a digital computer on wheels (or legs more recently.) It has sensors and actuators that allow it to observe and manipulate its environment either autonomously or under remote control. Household robots such as the very popular Roomba have sold millions and it is predicted that this number will increase vastly in the coming years. Many if not all of these household robots also come with built-in functionality that allows them to be controlled remotely via an Internet connection; this implies both receiving motion commands and also transmitting sensor data to the remote user’s computer.

We all know that computer security is a major hassle for all computer owners. Literally seconds after a computer is connected to the Internet it comes under attack from hackers trying to gain illegal access and steal personal information or use the machine for other illegal activities. Since household robots today all have on board computers connected to the Internet, it makes sense that hackers might try to obtain control of them. In other words, a hacker could potentially take over your household robot and use it to take photos and video of its unsuspecting owners. If future robots are larger and more dexterous, then a hacker could potentially use it to cause property damage. Household robot security is a serious issue that robot manufacturers have to start thinking about; consumers should also demand that robots are designed to be secure.

Researchers at the University of Washington recently published a paper that presents the results of a study on the security of household robots currently available in the market. They focused on studying the 2008 versions of Robosapien V2, Rovio, and Spykee.

The researchers found a number of vulnerabilities that would allow any savvy hacker to take control of the robots or intercept sensor data transmitted over the Internet. In many cases, the data such as video and audio is transmitted unencrypted which means a man-in-the-middle attack would allow anyone to receive it. In addition, some of the robots allowed remote users to login without encrypting the username and password information allowing hackers to steal both with ease. For what it’s worth, Robosapien V2 was the most secure of robots simply because it does not connect to the Internet; however, it is still vulnerable to attacks by people using off-the-shelve infrared remote controls.

The vulnerabilities identified in this study are disturbing especially if one considers that at any moment someone could be spying on you and/or your children without your knowledge using a device that is to a large degree a harmless toy. The researchers suggest that household robot manufacturers should place more emphasis on security issues in order to protect consumer privacy. The message is clear that whether one considers the basic household robots available in the market today or the much anticipated and more capable future robots, security is a design parameter that should not be second thought for the robot designers.

Se voleste saperne di piu’, l’intero paper e’ scaricabile dalla pagina web della prima autrice, al link: http://www.cs.washington.edu/homes/tdenning/#publications.

Passive walking

Il fatto che i robot umanoidi, quelle poche volte che sono in grado di farlo, camminino male quanto delle persone impalate e’ sotto gli occhi di tutti. Qualora qualcuno necessitasse di una conferma di questa premessa, basti pensare che ASIMO, ritratto nel video qui sotto (sembra Armstrong durante lo sbarco sulla luna, me ne rendo conto…), e’ sicuramente nel gruppetto dei migliori.

Per questo motivo, da diversi anni vi sono gruppi di ricerca sparsi per il globo che stanno studiando approcci alternativi per rendere questi assemblati di rame, plastica e metallo in grado di muoversi in una maniera maggiormente human-like. Una di queste metodologie di sviluppo, invero piuttosto interessante, e’ quella che si basa sul cosiddetto “passive walking“. In sostanza, una configurazione che non si appoggia a nessun servomotore e non richiede energia in quanto sfrutta il moto delle gambe lungo un piano inclinato come se si trattasse di una sorta di pendolo. Un modello interessante che riprende questo principio e’ quello che Steven H. Collins e colleghi hanno sviluppato qualche anno fa alla Cornell University e che potete vedere in azione nel video qui sotto, recuperato dal solito YouTube. Come potete vedere, all’originale design passivo sono state aggiunte in seguito delle componenti motorizzate. Che rendono il robot in grado di camminare anche in assenza di un paio inclinato, ma non per questo fanno diventare meno realistici i suoi movimenti.

Perche’ vi parlo di tutto cio’? Semplicemente perche’ oggi pomeriggio, grazie all’aiuto di alcuni undergraduates e del Robotics Club dell’universita’, io e gli altri ragazzi del laboratorio abbiamo dato il via ad un nuovo progettino per il tempo libero. L’idea di fondo e’ quella di ricreare un modello come quello mostrato nel video e possibilmente migliorarlo, rendendolo in grado di correre e saltare. Obiettivi ambiziosi. Ma chissa’ che non ne possa venire fuori davvero qualcosa di buono. Per il momento partiamo comunque in scioltezza. Obiettivo per la fine della settimana prossima e’ semplicemente quello di ricreare un sistemino esclusivamente passivo basato su Lego Technic come quello che si vede nell’ultimo video che allego a questo post.

Diciamo che come primo obiettivo abbiamo scelto qualcosa di utile per il morale…

Evolution Robotics

Mi e’ stata girata poco fa una email originariamente spedita alla mailing list di EURON (European Robotics Research Network). La comunicazione riguarda un’offerta di lavoro presso una compagnia americana che fino ad oggi mi era sconosciuta, chiamata Evolution Robotics. Nonostante il nome possa suggerire il contrario, i lor signori non si occupano di robotica evolutiva. Ma di robotica comunque si’. In particolare lavorano a stretto contatto con aziende produttrici di robot di vario genere (tra le quali anche la WowWee) e si occupano di scrivere algoritmi di computer vision e navigazione autonoma. Per farlo si avvalgono di prodotti che hanno sviluppato nel corso degli anni, come il ViPR (Visual Pattern Recognition), NorthStar (per la localizzazione), vSLAM (Virtual Simultaneous Localization and Mapping) ed ERSP (un SDK completo).

Evolution Robotics (logo)

La sede di lavoro e’ a Pasadena, posto che non avevo avuto modo di visitare quando ero in California, ma che comunque, conoscendo i dintorni, non deve essere poi cosi’ malaccio. Ah, i particolari del profilo che stanno cercando? Non di altissimo livello, almeno a giudicare dall’annuncio che e’ stato pubblicato (e che prevede anche un po’ di sana customer care), ma chissa’. A voi il giudizio:

Subject: [euron-dist] Job Opportunity at Evolution Robotics

Title: Robotics and Vision Engineer

Company: Evolution Robotics

Location: CA – Los Angeles

Reports to: VP of Research and Development

The Company:
——————

Evolution Robotics, Inc. is a robotics company that is developing break-through technologies that are revolutionizing robotics for the mass market. The recent convergence of low-cost mobile computing, wireless communication, and sensing technologies has not only made the development of mobile robotic products possible, but also economical for mainstream usage. Evolution Robotics develops breakthrough solutions for making machines sense and act autonomously. We partner with consumer electronic companies to augment the capabilities of their products, such as the Sony AIBO(r) dog or the WowWee robotic toys, or create entire new robotic products such as the eVac robotic vacuum cleaner from Sharper Image.

Evolution is a recognized leader in the industry and the academic communities.
The company has assembled a world-class management team composed of leading robotics experts and consumer products business leaders to make the company’s vision of providing useful robots at affordable prices a reality.

The Evolution Robotics team operates in a highly dynamic and very collaborative environment where the flow of ideas is encouraged from all parts of the team.
The team of extremely talented engineers and scientists at Evolution has created a unique and highly stimulating and fun work environment. This team challenges the status quo in technology and pushes the envelope on what may seem impossible.

Evolution Robotics is an operating company of Idealab!, a technology incubator known for having started many successful companies like Overture and CitySearch. We are located in the beautiful and sunny Pasadena, in Southern California. Hosting scientific institutions like the California Institute of Technology and the Jet Propulsion Lab, and national events like the annual Tournament of Roses, the city is considered the main cultural center of the San Gabriel Valley.

Position Purpose:
———————–

Design, implement, test, and document robotics and vision algorithms in C/C++ on Linux/Windows and on embedded platforms.

The position responsibilities also include validation and characterization of the products developed at Evolution Robotics including the Evolution Robotics Software Platform (ERSP), embedded solutions for vision and navigation, and robotics components and hardware. The position also entails providing customer support by helping customers solve problems and replying to customers requests via email and phone.

The position involves a substantial portion of “hands-on” work and requires an individual able to work independently with minimal supervision.

Requirements:

  • Hands-on experience developing robotics or vision systems.
  • Working knowledge of C/C++ and scripting languages.
  • Working experience in both Linux and Windows.
  • Experience validating complex systems involving hardware, software and mechanical components.
  • A solid engineering background with hands-on design and development experience.
  • Excellent verbal and written communications skills.
  • Ability to work independently, without direct supervision.
  • Strong problem solving skills and a fast learner. Strong analytical skills.
  • Minimum Degree: BS in Computer Science, Electrical Engineering , or related field.

Nice to have:

  • Ability to build/assemble/modify electronic assemblies or robots into various configurations for test purposes.
  • Understanding of and experience with any of the following: behavior-based control, navigation, path-planning, obstacle avoidance, SLAM, fuzzy logic, estimation and control.
  • Understanding of and experience with any of the following: object recognition, structure from motion, 3D reconstruction, ego-motion estimation, feature extraction and matching, face recognition.
  • Hands-on design and development experience of software and hardware products.
  • Experience developing embedded systems.
  • Experience in validating consumer or robotics products.
  • Familiarity with XML, Perl, Shell scripts.
  • Experience developing and producing commercial SDKs.

INTERESTED CANDIDATES SHOULD SUBMIT THEIR RESUME AND SALARY HISTORY TO:
careers@evolution.com

An Equal Opportunity Employer

© Evolution Robotics

Lo voglio!

Da grande, ho deciso, mi comprero’ la WowWee. L’unica azienda che davvero sembra avere la capacita’ di leggermi nel pensiero e lanciare in continuazione nuovi prodotti che sembrano tagliati su misura per me. Non mi ricordo di aver mai visto, all’interno del loro catalogo, qualcosa che non mi piacerebbe avere. Questa volta, pero’, siamo andati addirittura oltre. E non mi riferisco ai pur simpatici ed economici Chatterbots. Quello di cui sto parlando, invece, e’ il Rovio Explorer, un robot a tre ruote con interfaccia Wi-Fi, controllabile da remoto grazie ad un webserver integrato. In dotazione vi sono una webcam dalla buona risoluzione (e dotata di un primordiale sistema di visione notturna), installata su un braccio movibile, oltre ad un microfono ed uno speaker.

WowWee Rovio Explorer

Il software per controllarlo gira su browser, quindi e’ utilizzabile anche da dispositivi mobili quali l’iPhone. E, a completare il tutto, il Rovio se ne viene pure con un set di API (ok, in CGI…) che permettono di programmarlo. L’autonomia e’ di solo un’ora e mezzo, ma il Rovio e’ in grado in qualunque momento di tornare autonomamente alla sua base di ricarica e fare il pieno. Cosi’ come puo’ girare in maniera autonoma per l’ambiente di riferimento, basandosi su un set di way-points preventivamente impostati dall’utente. Alcune delle sue feature principali le trovate riassunte nel video qui sotto (invero pubblicato su YouTube ormai un sacco di tempo fa).

Peccato solo il prezzo, che negli USA sarebbe anche ragionevole (229.99$), ma qui in Europa e’ un po’ spoporzionato (349.99€). Come spesso accade in questi casi, non si capisce bene quale sia stato il tasso di cambio adottato.

Primi passi con il Microsoft Robotics Studio

Ho approfittato di questo week end lungo (oggi, qui in UK, era un altro di quei bank holidays che giungono completamente inaspettati per il sottoscritto, ma quanto mai graditi) per iniziare a studiacchiare il manuale di Sara Morgan sul Microsoft Robotics Developer Studio (Microsoft RDS) (lo so, prima lo chiamavo semplicemente Microsoft Robotics Studio, o MSRS, ma a quanto pare con la release R2 dello scorso giugno gli hanno pure cambiato nome), in merito al quale avevo gia’ scritto qualche riga nei giorni scorsi. La prima impressione non e’ esattamente positiva. Il primo capitolo introduce una dozzina abbondante di termini nuovi e l’architettura dell’RDS appare come qualcosa di una contorsione indescrivibile. E l’autrice non fa nulla per chiarire tutta questa confusione, ma semmai l’alimenta. Spero che le cose cambieranno nelle prossime pagine, ma non sono troppo ottimista a riguardo.

Microsoft Robotics Studio - screenshot of the LEGO Mindstorms NXT Tribot in the Visual Simulation Environment

Ad ogni modo, sono gia’ riuscito ad imbattermi nel primo problema software. In apertura del secondo capitolo viene infatti introdotto il concetto di “nodo DSS”, una sorta di contenitore, associato ad una porta TCP, all’interno del quale devono girare i “servizi DSS” di RDS (maggiori informazioni in questo tutorial). Per creare un nuovo nodo si puo’ procedere in due modi. O da riga di comando, tramite il comando dsshost.exe, oppure seguendo la shortcut “Run DSS Node” che durante l’installazione di RDS viene inserita all’interno dell’apposita sezione dello Start Menu. Il clic su questo link porta all’apertura di una finestra di terminale e di una istanza del browser di default, puntato all’indirizzo http://localhost:50000. Trattasi dell’indirizzo della “Microsoft CCR and DSS Toolkit Home”, una sorta di pannello di controllo per il RDS. Che pero’, sul mio netbook, chiedeva che io inserissi username e password, ovviamente sconosciuti. Girovagando sulla rete ho scoperto di non essere l’unico con questo problema. La soluzione piu’ efficace e’ quella che viene discussa al punto 2a di queste faq, che prevede, molto brutalmente, di disattivare il controllo di sicurezza in RDS. Uno a zero per il sottoscritto. Ma la battaglia, come succede ogni qualvolta c’e’ di mezzo un prodotto di mamma Microsoft, si preannuncia ardua. Molto ardua. Lo step successivo, quello che prevede di creare un nuovo “Service Project” mi vede infatti gia’ arenato. Vediamo se reinstallando tutto il baraccone mi compariranno i template Visual Studio che a quanto pare dovrei avere.

Robotica in mostra

Su gentile segnalazione di un’amica, vi rigiro il link ad un’interessante paginetta preparata da quelli del Boston Globe, intitolata More Robots. Si tratta di una rassegna fotografica avente come oggetto i piu’ recenti sviluppi nel campo della robotica, con molti contributi provenienti da Graz, dove si e’ recentemente tenuta la Robocup 2009. Una rassegna che parte dal nostro iCub (in posa da manganellatore fascista) ed arriva ai robot anti-IED, passando per Robotinho (a questo link nelle vesti di direttore d’orchestra con la filarmonica di Berlino), Kobian e decine di altri modelli. Meglio comunque lasciar parlare le immagini.

iCub robot (from Boston Globe's gallery)

cook robot (from Boston Globe's gallery)

Kobian robot (from Boston Globe's gallery)

E se ancora non doveste averne abbastanza, a questo link potete trovare altre foto.

Robots for MSRS

Stavo dando un’occhiata ai robottini supportati da MSRS. Parecchi, decisamente. D’altronde e’ proprio questo lo scopo di chi ha progettato una piattaforma come quella di mamma Microsoft. Creare una sorta di framework utilizzabile per programmare dispositivi robotici dei piu’ svariati, senza dover ogni volta reinventare la ruota. Il manuale del Robotics Studio che sto leggiucchiando in PDF in attesa che mi arrivi la versione cartacea (o meglio, in attesa che mi decida ad ordinarla) ne menziona in particolare alcuni. Tra i piu’ accessibili, sia in termini economici, sia di reperibilita’. Vediamo un po’ quali sono.

Innanzitutto abbiamo l’iRobot Create, appunto della iRobot, casa famosa per i mitici Roomba, i robot autonomi a forma di frisbee che spazzano il pavimento. Il Create e’ fondamentalmente uno di questi robo-vacuum, sprovvisto della parte pulente, rimpiazzata da una porta seriale ed un’altra interfaccia proprietaria alla quale e’ possibile collegare moduli aggiuntivi di ogni sorta.

iRobot create (Roomba like)

Un’approfondita review del Create la si puo’ trovare a questo link. Doverosa inoltre la visione di quest’altro sito, dove gli utenti si combattono a suon di applicazioni originali costruite attorno al prodotto della iRobot.

A seguire ecco il Parallax Boe-Bot Robot, un nome idiota per un robottino che invece sembra simpatico. Simile in quanto a fattezze ai ben piu’ famosi Khepera ed ePuck, ha dalla sua un prezzo molto piu’ basso, unito pero’ ad una relativa maggiore semplicita’ in fatto di sensori e quindi piu’ limitate possibilita’ d’uso.

Parallax Boe-Bot

Aspetto divertente o problematico a seconda delle preferenze personali, il robot in questione deve essere assemblato. Nessun bisogno di saldature, a quanto pare, ma il costruttore dichiara un 40 ore di lavoro necessarie, utilizzando solo semplici strumenti da fai da te. Leggendo in giro per la rete, pare pero’ che in poche ore sia possibile avere il robot pronto. Il Boe-Bot e’ disponibile in due versioni, rispettivamente con interfaccia seriale e USB. La compagnia ne vende (in teoria) anche una versione gia’ pronta per MSRS, con modulo Bluetooth integrato. Peccato che non abbia trovato il modo di acquistarla dal loro sito. Su eBay si trova la versione USB, ma i prezzi che ho trovato non sono per niente vantaggiosi rispetto a quelli proposti dallo store ufficiale, che rimane cosi’ la prima scelta.

Immancabile poi la presenza nell’elenco del mitico Lego Mindstorm NXT. Per lui non c’e’ bisogno di spendere parole aggiuntive. Tutti dovreste gia’ conoscere vita, morte e miracoli di questa piattaforma.

Lego Mindstorms NXT

La rassegna prosegue con il Kondho KHR-1HV, che possiamo vedere in azione qui sotto, in un video tratto da YouTube.

Piattaforma umanoide costosa (per il pezzo singolo siamo intorno ai $1,400), ma che in quanto a funzionalita’ puo’ essere tranquillamente paragonata al ben piu’ famoso (ed economico) Bioloid.

Infine abbiamo il MobileRobots P3-DX, un bel robottone dalle dimensioni generose, ma abbondante di interfacce, sensori e sistemi di controllo, nonche’ con la capacita’ di integrare (fisicamente parlando) un notebook.

MobileRobots Pioneer

Ok, direi che per oggi di robot dovremmo averne abbastanza…

Microsoft Robotics Developer Studio 2008 R2 – Tutorials on YouTube

Apprendo dal sempre scarno Microsoft Robotics Blog che su YouTube sono stati pubblicati alcuni tutorial introduttivi all’utilizzo del Microsoft Robotics Developer Studio 2008 – R2. Si tratta di quattro filmati molto brevi, che mostrano alcune caratteristiche essenziali dello strumento. Qui di sotto potete vedere il primo di questi tutorial.

Per chi volesse approfondire ulteriormente l’argomento MRDS, al di la’ dell’abbondante documentazione presente sul sito di Microsoft, segnalo un libro disponibile per poche sterline su Amazon UK. Trattasi di Programming Microsoft Robotics Studio, scritto da Sara Morgan per Microsoft Press. Non ho ancora avuto modo di studiarlo nel dettaglio, ma ad una rapida sfogliata sembra semplice e ben fatto.

Sara Morgan, Programming Microsoft Robotics Studio (front cover)

PS: se per caso doveste trovare una copia digitale in CHM di questo libro in giro per la rete (chi ha detto Gigapedia?), sappiate che esiste un ottimo viewer free per Mac OS chiamato Chmox.

Pagina Successiva »