u navcontrollo

47
UNAV – CARATTERISTICHE E POTENZIALITÀ Dal controllo motori alla comunicazione Raffaello Bonghi

Upload: roberto-damico

Post on 18-Aug-2015

22 views

Category:

Devices & Hardware


0 download

TRANSCRIPT

UNAV – CARATTERISTICHE E POTENZIALITÀ Dal controllo motori alla comunicazione

Raffaello Bonghi

Storia

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

2

¨  Nasce nel 2008, progettazione del codice molto vicina a quella della scheda di Guido (dsNAV33)

¨  Nel 2013 c’è una totale riprogettazione del codice a fronte di una gestione ottimizzata delle risorse ed una visione più efficiente della comunicazione.

¨  Nel 2015 Riprogettazione dell’hardware ed una ulteriore ottimizzazione del codice

a

Sommario

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

3

¨  Introduzione

¨  uNAV ¤ Core

n  Gestione dei task n  Organizzazione del codice

¤ Controllo n  Controllo motori n  Controllo di alto livello

¤ Comunicazione n  Messaggi n  Frame

¨  Applicazioni ¤  uNAV PID Tuner ¤  uNAV Simple console ¤  ROS

n  ROS CONTROL

¨  Robots disponibili

Core

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

4

Microcontrollore

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

5

DMA

16BI

T

16BI

T

DSP Comunicazione: •  2 UART •  I2C •  SPI

PWM

Micro activity

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

6

interrutps.c

Interrupt

Motor control

High level control System task

sleep Timer

Motor control

High level control

Interrupt based

Comunicazione ed altri task

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

7

system.c

Input Capture

Controllo motori

Parsing pacchetto

Chiamate asincrone

Gestione GPIO e LED

System_service System_task System_task_name

Tc

file.c

Organizzazione del codice

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

8

root

Communication

Control

System

file.c

main.c

New Code

file.c

ISSUES

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

9

N Descrizione Stato

#45 Gestione ottimizzata delle periferiche In attesa

#33 Ottimizzazione dei task In attesa

#5 Monitoraggio stack In attesa

#22 Configurazione dinamica delle porte seriali In lavorazione

#20 Aggiunta I2C e controllo EEPROM In lavorazione

Controllo

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

10

Manuale

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

11

Reference

Direct motor control: -  NO velocity information -  NO position information -  NO torque information

Control 1/5

CONTROL

MEASURE

REFERENCE

- +

SATURATION

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

12

Rifererence constructor Parameter configurator

Control 2/5 - Ref & Error

RIFERIMENTO

- +

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

13

Funzione SET Funzione GET

set_motor_reference(num, state, value)

get_motor_reference(num)

get_motor_measure(num)

set_motor_state(num, state) get_motor_state(num)

Modalità Descrizione LED

Emergency Modalità di sicurezza* fisso

Disable Motore fermo e ponte disabilitato

1 lampeggio

Position control Controllo di posizione 2 Lampeggi

Velocity control Controllo di velocità 3 lampeggi

Torque control Controllo di coppia 4 lampeggi

V0.5

motor

Controllo 3/5 - Misura

MISURA

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

14

Funzione SET

reset_motor_position_measure(num, value)

Sensore di corrente bidirezionale

Encoder: Misura posizione Stima velocità QEI IC

V0.5-V0.7*

Controllo 4/5

CONTROLLO

SATURAZIONE

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

15

Funzione SET Funzione GET

update_motor_pid(num, pid) get_motor_pid(num) PID

paramaters

Controllo 5/5

SATURAZIONE

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

16

Funzione SET Funzione GET

update_motor_constraints(num, constraints)

get_motor_constraints(num)

Update_motor_parameters(num, parameters)

Get_motor_parameters(num) Motor_control

Motor_state

Controllo - Gestione

¨  Tre differenti modalità di controllo: ¤ Controllo posizione ¤ Controllo velocità ¤ Controllo Coppia ¤ Controllo Diretto*

¨  Ogni controllo agisce a differenti frequenze operative

Riferimento • Conversione del riferimento

Misura

• Acquisione e media dei valori da: • QEI • Input Capture • Current sense

Controllo • Calcolo dell’errore • Costruzione del comando di controllo

Invio • Conversione in valore PWM

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

17

Control Task motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

18

V0.5-V0.8*

Position Control

Velocity Control

Torque Control

100Hz

1KHz

*10KHz

Controllo 3/3

CONTROLLO POSIZIONE

MISURA

RIFERIMENTO

- +

- + CONTROLLO

VELOCITA’ - + CONTROLLO

COPPIA

MISURA

MISURA

motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

19

V0.7*

Diagnosi e sicurezza motors.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

20

V0.3

Funzione SET Funzione GET

update_motor_emergency(num, constraints)

get_motor_emergency(num)

Last reference

Velocity

H-bridge

diagnostic

emergency

Timeout

Slope Stop

Controllo di alto livello High_level_

control.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

21

V0.3

parameters

velocity

coordinate

Control_state

Odometry

Twist Control

Multi-uNAV

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

22

X14 Motors

V0.6*

N CMD

ISSUES

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

23

N Descrizione Stato

#14 Gestione “direct PWM” per debug In attesa

#40 Riferimenti di controllo a 32bit In lavorazione

#36 Correzione misura alle basse velocità

In lavorazione

#29 Configurazione Dead zone PWM In lavorazione

Comunicazione

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

24

Integrazione

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

25

MESSAGGIO

Messaggi 1/2

MSG#1

MSG #2

MSG #N

DATA … LNG HEADER CKS

MSG#N

MSG #2

MSG #1

PC Altre schede

serial.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

26

Messaggi 2/2

DATA … LNG HEADER CKS

I messaggi possono essere: •  # Sincroni •  @ Asincroni

Lunghezza del pacchetto Il contenuto del messaggio Checksum

1 2 3 … N N+1

C/Arduino C++

send Pkg_send(header, buffer)

receive Decode_pkg(char)

Encoding Encoder(frame*, lng)

Decoding Decode(packet)

serial.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

27

FRAME

Frame 1/6

DATA LNG HEADER CKS

LNG OPTION TYPE COMMAND DATA

FRAME #1

FRAME #2

FRAME #N

parsing.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

28

Frame 2/6

LNG OPTION TYPE COMMAND DATA

Lunghezza frame

Tipologia: •  D - Data •  R - Richiesta •  A - ACK •  K - NACK

Hashmap dei comandi Comando

Dati richiesti (opzionale)

C/Arduino C++

Build packet Create_packet(command, option, type, message) createPacket(command, type, message)

Create_data_packet(command, option, type, message)

CreateDataPacket(command, option, type, message)

Parsing Parse_packet(packet) Parsing(packet)

parsing.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

29

Frame 3/6 - dati

Error_serial

motor

diagnostic Motor_control

Motor_state paramaters

emergency PID

parameters velocity coordinate Control_state

System_service System_task System_task_name

Frame Hashmap

parsing.c

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

30

packet.h

motion.h

motor.h

Frame 4/6 Hashmap SYSTEM

ERROR_SERIAL Informazioni sugli errori della linea seriale

•  Numero di errori per ogni tipo

SYSTEM_SERVICE Informazioni generali sulla scheda

•  Nome scheda •  Produttore •  Data di compilazione •  Tipologia di scheda •  Versione •  Reset

SYSTEM_TASK_PRIORITY Priorità del task

•  Nome del task •  Dato di comando

SYSTEM_TASK_TIME Tempo di esecuzione del task

SYSTEM_TASK_FRQ Frequenza di esecuzione del task

SYSTEM_TASK_NAME Nome del task

•  Nome del task

MOTOR_STATE •  Stato del motore

MOTOR_POS_RESET •  Reset della posizione

packet.h

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

31

Frame 5/6 Hashmap MOTION

COORDINATE Coordinate del robot

•  X •  Y •  Theta •  Spazio percorso

PARAMETER_UNICYCLE Configurazione del robot

•  Raggio ruota sinistra •  Raggio ruota destra •  Interasse •  Spostamento minimo

VELOCITY Riferimento di velocità

•  Velocità lineare •  Velocità angolare

VELOCITY_MIS Velocità misurata

ENABLE Stato di controllo imposto

•  Stato di controllo

Motion.h

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

32

Frame 6/6 Hashmap MOTOR

MOTOR Informazioni complete sullo stato dei motori

•  Stato di controllo •  Tensione imposta al ponte •  Coppia uscente •  Velocità •  Posizione •  Distanza percorsa dall’ultimo messaggio

MOTOR_CONSTRAINT Limiti del control

MOTOR_DIAGNOSTIC Informazioni generali sul motore e sui controlli

•  Corrente •  Temperatura •  TODO

MOTOR_PARAMETER [MOTOR_PARAMETER_ENCODER, MOTOR_PARAMETER_BRIDGE] Configurazione del motore

•  Configurazione dell’encoder •  Configurazione del bridge •  Verso di rotazione (Per convezione rotazione antioraria) •  Rapporto di riduzione

MOTOR_EMERGENCY •  Tempo in secondi affinché il motorsi fermi •  Tempo in secondi affinché il bridge si spenga •  Timeout prima dell’avvio della modalità di emergenza

MOTOR_STATE •  Stato del motore

MOTOR_POS_RESET •  Reset della posizione

MOTOR_POS_PID •  Kp •  Ki •  Kd MOTOR_VEL_PID

MOTOR_TORQUE_PID

MOTOR_POS_REF •  Riferimento di controllo

MOTOR_VEL_REF

MOTOR_TORQUE_REF

Numero motore Comando

# (Max 14) ### Motor.h

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

33

ISSUES

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

34

N Descrizione Stato

#34 Pacchetto dinamico In attesa

#13 Ottimizzazione del protocollo di trasmissione In attesa

#2 Gestione della DMA in ricezione In attesa

#43 Divisione delle librerie di comunicazione lato micro In lavorazione

#30 Messaggi per debug In lavorazione

Sommario

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

35

¨  Introduzione

¨  uNAV ¤ Core

n  Gestione dei task n  Organizzazione del codice

¤ Controllo n  Controllo motori n  Controllo di alto livello

¤ Comunicazione n  Messaggi n  Frame

¨  Applicazioni ¤  uNAV PID Tuner ¤  uNAV Simple console ¤  ROS

n  ROS CONTROL

¨  Robots disponibili

uNAV Console

23/05/15

36

Raffaello Bonghi - Officine Robotiche 2015

uNAV PID Tuner

¨  Tuning dei parametri del PID

¨  Configurazione dei parametri: ¤ Motore ¤ Encoder

¨  Configurazione di più motori*

23/05/15

37

Raffaello Bonghi - Officine Robotiche 2015

Caratteristiche V0.4

Simple uNAV Console

¨  Controllo di sterzo ed velocità del robot

¨  Informazioni di velocità del robot

23/05/15

38

Raffaello Bonghi - Officine Robotiche 2015

Caratteristiche

V0.4

uNAV ROS Integration

23/05/15

39

Raffaello Bonghi - Officine Robotiche 2015

ORBUS-INTERFACE

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

40

ROS CONTROL

ROS Control - Organizzazione

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

41

ORBUS_INTERFACE

Risorse

¨  Diverse modalità di controllo: ¤ Controllo singolo

giunto ¤ Controllo giunto

differenziale ¤ altro

23/05/15

42

Raffaello Bonghi - Officine Robotiche 2015

Control loop

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

43

Available robot

23/05/15

44

Raffaello Bonghi - Officine Robotiche 2015

Available robot

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

45

Come contribuire

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

46

FORK ADD YOUR CODE MERGE

https://github.com/officinerobotiche/uNAV.X

https://github.com/officinerobotiche/ros_orbus_interface

The End!

23/05/15 Raffaello Bonghi - Officine Robotiche 2015

OR

THANK YOU FOR YOUR ATTENTION! Raffaello Bonghi raffaello.officinerobotiche.it

GitHub @rbonghi

Youtube Raffaello Bonghi

Twitter @raffaello86

Facebook raffaello.bonghi

47