Pika Spark come controller robotico

robot

Questo tutorial spiega come utilizzare l'interfaccia CAN di Pika Spark per controllare diversi tipi di robot che sfruttano il protocollo OpenCyphal.

Pika Spark è un sistema di controllo di micro robot basato su Arduino Portenta X8, che combina una quantità senza precedenti di potenza di calcolo e interfacce di comunicazione in un fattore di forma estremamente piccolo. Il Pika Spark dispone di due interfacce CAN isolate galvanicamente che possono essere utilizzate per la comunicazione con dispositivi esterni. L'isolamento galvanico previene i loop di massa, aumenta la resilienza complessiva del sistema, ed è una caratteristica importante nei sistemi di controllo di livello industriale.

Vediamo come utilizzare l'interfaccia CAN di Pika Spark per controllare diversi tipi di robot che sfruttano il protocollo OpenCyphal. Consideriamo questi robot: T07, un robot a due ruote motrici in una configurazione triciclo, T07-4WD (un robot a quattro ruote motrici che può essere costruito raddoppiando il telaio T07) e il T07-Tracked, che è un veicolo cingolato con due cingoli in gomma. Sfruttiamo quindi il sistema Pika Spark abilitato per Arduino Portenta X8 di LXRobotics, il protocollo Cyphal/CAN e ROS2 per controllare tutte le diverse configurazioni del robot. Al fine di semplificare il controllo e l'automazione, tutti e tre i robot condividono un'architettura software e hardware molto simile: sono tutti robot a trasmissione differenziale i cui attuatori sono motori a corrente continua dotati di encoder Hall che consentono il controllo del numero di giri. Per controllare questo tipo di robot è stata sviluppata una scheda di controllo robot generica chiamata CyphalRobotController07/CAN.

robot

Figura 1: T07: un robot a due ruote motrici in configurazione triciclo

Il CyphalRobotController07/CAN è in grado di pilotare fino a due motori DC, acquisire e utilizzare il feedback dell'encoder per il controllo del numero di giri, valutare lo stato di un arresto di emergenza e molte altre caratteristiche e funzionalità. La scheda comunica con altri nodi Cyphal tramite CAN sfruttando la libreria 107-Arduino-Cyphal. Può essere ampiamente configurato utilizzando l'API di registro di Cyphal, che è necessaria anche per robot così simili dal punto di vista architettonico, poiché il rapporto di trasmissione e i tick per giro dell'encoder differiscono. Ciascuno dei tre diversi tipi di robot menzionati nell'introduzione contiene una scheda CyphalRobotController07/CAN, ad eccezione di T07-4WD che contiene quattro motori DC e quindi richiede due schede CyphalRobotController07/CAN. Ulteriori informazioni sono disponibili nella sezione Riferimenti.

schede di sviluppo

Figura 2: Rendering 3D del CyphalRobotController07/CAN realizzato in KiCad

 

robot

Figura 3: T07-4WD: un robot a quattro ruote motrici con due schede CyphalRobotController07/CAN

Come l'architettura hardware, anche l'architettura software è abbastanza semplice: sul Pika Spark viene eseguito un nodo ROS2 chiamato t07_robot all'interno di un container Docker. t07_robot sta ricevendo i set point di velocità del motore per i motori sul lato sinistro e destro da un altro nodo ROS2 chiamato t07_teleop che viene eseguito sul PC e comunica con Pika Spark tramite WiFi.

Architettura software

Figura 4: Architettura software per il controllo di diversi robot tramite Pika Spark

 

robot

Figura 5: T07-Tracked: un robot cingolato a trazione differenziale con cingoli in gomma

t07_robot trasforma quei set point nei target RPM richiesti per i motori, genera i messaggi Cyphal richiesti e li trasmette tramite l'interfaccia CAN di Pika Spark alle schede CyphalRobotController07/CAN. Per facilitare l'installazione e l'esecuzione del nodo t07_robot ROS2 su Pika Spark, è stato preparato un intero set di Dockerfile, script di compilazione ed esecuzione docker. L'esecuzione del nodo ROS2 richiesto su Pika Spark è quindi semplice come l'esecuzione dei seguenti comandi:

107-systems/T07: File CAD e STL per i robot da esterno a trasmissione differenziale T07 e T07-4WD

107-systems/T07_threaded: File CAD e STL per i robot da esterno a trasmissione differenziale cingolati T07

107-systems/t07_robot: Codice di controllo ROS per i robot mobili da esterno basati su CyphalRobotController07/CAN

107-systems/t07_teleop: Teleoperazione basata su tastiera per i robot mobili da esterno basati su CyphalRobotController07/CAN

107-systems/t07_docker: Dockerfile e script per eseguire il software di controllo richiesto su Pika Spark

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend