sabato 12 gennaio 2008

lego NXT segway


(immagine png, scaricabile e zoomabile)

questo e' il programma NXT-G che realizza il PID (numeri interi) per il NXT-way standard, che in nbc viene implementato cosi':

http://www.philohome.com/nxtway/nxtway.nbc

(da http://www.philohome.com/nxtway/nxtway.htm)

il programma touchway5.rbt in figura e' stato realizzato da

http://www.freewebs.com/thesystemprogrammer/


per approfondimenti, vedere tesi di Serra

http://www.epokh.org/tesi/TesiMathSerra.pdf

E

http://nikemagic.altervista.org/download/Servo/progetto_pendolo_pid.pdf

http://www.plcforum.info/didattica/conreg/conreg.htm

E, ma in inglese,

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en021807















































da http://www.pages.drexel.edu/~ttl28/thesis.html#labview :
Modeling/Simulation

One major challange is how to properly model this system i.e. a specific transfer function. To identify the system, I first began but re-designing the model in SolidWorks to find the robot's Center-of-Mass and Moment-of-Inertia to use in plant designs of mobile inverted pendulums.


qui simulazioni con matlab

invece, per i poveracci, le simulazioni si possono fare con scilab, seguendo l'esempio:









utile guida per scicos/scilab : Bucher

eserciziario

sistemi MIMO in scilab: http://www.wolffdata.se/scilab/mimo1.html

varia didattica

di interesse:

http://madrobotics.blogspot.com/

Nel caso si abbiano 2 sensori di luce a disposizione (in realta' nel testo si dice che funziona anche con uno, quello dietro, "hinter"):


http://www.uni-kassel.de/fb16/rat/diplom/Diplom1Mayer.pdf

tale tesi ad opera di Sybille Mayer, in tedesco, e' veramente interessante.

Viene presentato il modello di pendolo inverso IMPERNIATO SU RUOTE (cosa non affrontata in altri lavori); dopo linearizzazione viene identificato il modello del motore
(risposta al gradino) e il modello del sensore di luce (con interessante digressione sul comportamento su pavimenti di colore diverso...).

Il modello meccanico e' a pagina 24.

A questo punto SM progetta il regolatore sfruttando sia il sensore di luce (anche 1 solo) e il sensore di rotazione nel motore. L'idea e' un PD sulla luce,cioe' l'angolo alfa, e un PID sulla rotazione cioe' l'angolo gamma. Per intenderci alfa+gamma e' la rotazione della ruota, che moltiplicata per il raggio da' lo spostamento del NXTway dalla posizione iniziale. Il sistema totale e' a pagina 36 (PD+PD), con variante (PD+PID) alla pagina 37.

Le simulazioni sono basate su questo modello del sistema (simulink):













Il programma per NXT-G (sic!) e' scaricabile qui:

http://forums.nxtasy.org/index.php?act=attach&type=post&id=616

NB: nel programma i coefficienti sono leggermente diversi da quelli teorici.

codice scilab per analizzare il sistema di Sybille da lanciare con exec nomefile:

A=[0,1,0,0; 94.05,0,0,1.3;0,0,0,1; -544.05,0,0,-14.3];
B=[0;-0.21;0;2.32];
C=[1,0,0,0;0,0,1,0];
D=[0;0];
nxtway_SYB=syslin('c',A,B,C,D);
s=%s;
nxtway_SYBtf=ss2tf(nxtway_SYB) // passo nel dominio Laplace
cl_nxtway_SYBtf=clean(nxtway_SYBtf) // mette a zero i coefficienti infinitesimi
t=0:0.01:1;
u=ones(1:length(t)); // step input
y=csim(u,t,nxtway_SYB); // risposta al gradino instabile
xset('window',1);
xbasc()
plot2d(t,y(2,:))
plot2d(t,y(1,:), style=5)

// poli del sistema
spec(A)
autovalori_di_A=spec(A)

// dalle specifiche ai poli desiderati
os=9.48 // overshoot desiderato
ts=0.74 // settling time desiderato
os=os/100
xi=-log(os)/sqrt(%pi*%pi+log(os)*log(os)) //smorzamento xi
tetaxi=acos(xi)
wn=(-log(0.02*sqrt(1-xi*xi)))/(ts*xi) // risonanza wn
th=acos(xi)
ps=-xi*wn+%i*wn*sqrt(1-xi*xi); // uno dei 2 poli complessi coniugati del sys 2o ordine per fare os e ts
cl_nxtway_SYBtf(2,1)
trfmod(cl_nxtway_SYBtf(2,1),'p') // calcolo dei poli e degli zeri
poli_desiderati=[-6 -2 ps conj(ps)] // poli sono i desiderati
K=ppol(A,B,poli_desiderati) // calcolo della matrice di feedback K
F=A-B*K // sistema in retroazione
g2=syslin('c',F,B,C,D)
t=0:0.01:3;
u=ones(1:length(t)); // step input
y=csim(u,t,g2); // risposta al gradino controllato
xset('window',1);
xbasc()
plot2d(t,y(2,:))
plot2d(t,y(1,:), style=5)


scicos








Altro progetto, in tedesco, con NXT controllato voa USB (purtroppo Labview8.2) oppure standalone:

http://projekte6.fhnw.ch/technik/eit/Herbst2007/BruWid/

In italiano:

scienzaludica.it


Infine una bella carrellata di robot affini:
http://leiwww.epfl.ch/joe/joerelatives.html

interessante pendolo pilotato verticalmente:

http://www.zfm.ethz.ch/~leine/vertically_driven_pendulum.htm

con istruzioni

http://www.zfm.ethz.ch/~leine/LEGO/VerticallyDrivenPendulum/VDPBuildinginstructions.pdf

anche questo:

http://www.zehl.com/?nxtway




Nessun commento: