Rizeni krokoveho motorku

Petr Krc pekr
Středa Březen 17 11:53:28 CET 2004


Libor Kavan wrote:
> >Ani ne, 2051 zvladne linearni interpolaci ve 3 osach s 32-bitovym
> >rozlisenim vcelku bez problemu.
> 
> Mas s tim nejake zkusenosti ?
Ano.

> Nebyly by nejake zdrojacky
Ne.

> ( to jsem asi hodne drzej, ze)?
Ano. ;-)

> Ja jsem pouzil controllery z microconu a ty sikme cary resim tak,
> ze na krokacich nastavim hodne nizkou rychlost a nepouzivam akceleraci.
> Do obou kontroleru poslu rychlost a vzdalenost( predem zpocitanou v PC)
> a pak oba motory najednou zpustim. Reseni to sice je, ale ne idealni ...

I tak se da.
Ja na to pouzil modifikovany algoritmus od pana, jehoz jmeno jiste
doplni nekdo jiny, kdo nema takovou sklerozu, jako ja.
Ten algoritmus je velmi jednoduchy, vystaci s operacemi scitani,
odcitani a celociselnem deleni dvema.
Zjednodusene (v pseudokodu) se to da popsat takto:

--- cut ---

Line3D:
=======
> Vstupni promenne
X1,Y1,Z1       - startovni souradnice
X2,Y2,Z2       - cilove souradnice
KX,KY,KZ       - rozdil mezi cilovymi a startovnimy souradnicemi
K0 [KX]        - nejdelsi osa
K1 [KY]        - stredne dlouha osa
K2 [KZ]        - nejkratsi osa
E0             - mezihodnota nejdelsi osy
E1             - mezihodnota stredne dlouhe osy
E2             - mezihodnota nejkratsi osy
S0             - oznaceni a smer nejdelsi osy (x,y,z)
S1             - oznaceni a smer stredne dlouhe osy (x,y,z)
S2             - oznaceni a smer nejkratsi osy (x,y,z)

> Vypocet rozdilu delky v dane ose
KX=X2-X1
KY=Y2-Y1
KZ=Z2-Z1

> Setrideni os od nejdelsi po nejkratsi (v absolutnich hodnotach)
K0=max_abs(KX,KY,KZ)
K1=mid_abs(KX,KY,KZ)
K2=min_abs(KX,KY,KZ)

> Naplneni bitovych masek pro krokovani podle delky os
S0=dir_max(KX,KY,KZ)
S1=dir_mid(KX,KY,KZ)
S2=dir_min(KX,KY,KZ)

> Korekce symetricnosti
E0=K0/2
E1=E0+K1
E2=E0+K2
E0=K0

> Vlastni vypocet drahy
while (E0>0)
 step(S0)
 if E1>K0
  step(S1)
  E1=E1-K0
 endif
 if E2>K0
  step(S2)
  E2=E2-K0
 endif
 E0=E0-1
 E1=E1+K1
 E2=E2+K2
end

--- cut ---

Snad jsem to nepopletl, uz je to nejaky patek.

-- 
Regards
           Petr Krc







Další informace o konferenci Hw-list