[OSNROB] 1. laboratorijska vježba - 2021/2022
Kuhar
Jel bi se ovaj taylor trebao rijesavat preko neke rekurzije ili sta?
Viks
Kuhar ja pokusavam rekurzijom, cini se jednostavnije
snorlaxx
jel netko voljan sherati labos kad ga napravi? 🙂
Kuhar
Viks
Ja sam probavao ali cini mi se da funkcija ima pre malo ulaza, jer ako se spustim rekurzivno u to ‘stablo’ neznam dokle moram van, odnosno koji je interval izmedju točki, da ga ne predjem. Na neki način moram znat početne točke od kojih sam krenuo. Možda ja samo ipak neznam rekurziju hahaha
Viks
Kuhar nisan sigurna da san te skroz svatila, pa cu pokusat objasnit kako sam ja to logicki krenila, sad mi u kodu stvara problem kako spremat tocke u matricu bez da se ponavljaju
no u principu kad obavis sve i dodes do provjere uvjeta, ako uvjet prode (tj manje je od tolerancije) - super gotovo, a ako ne prode - pozoves funkciju 2 puta: jednom za ‘livo’ od medutocke (w1 - wM) i jednom za desno (wM-w2)
na ovaj nacin pokrijes cilo stablo
Kuhar
Viks mislim da mozes np.unique() pa bi ti on trebao izbacit sve vrijednosti koje se ponavljaju. a sto se tice principa tak sam i ja napravio samo dobijem dosta tocaka hahaha pa sam mislio da mi je krivo. Kako si izracunavala normu? To jest onaj kriterij da je ispod 0.01?
Viks
Kuhar u najs, probat cu s tim, hvala ti
well, nisam jos bas tocke dobila, iz nekog razloga ne izlazi iz rekurzije
prvo sam probala np.max(abs(w_m - w_M)) jer sam tako vidila negdi u starim materijalima (iako je to u matlabu, ne bi trebalo bit neke razlike), ali cini mi se da mi to izaziva problem
sad mi je ideja probati np.dot(wm-wM)
Kuhar
Evo ako neko ima problema s taylorom. Inace neke stvari ne radi kao recimo zbrajanje pa treba koristit np.add i tako neke sitnice ( la.norm isto meni nije radio, pa treba drugacije slozit ). Ali rekurzija i izlaz da su sve točke lijepo u istoj matrici bi trebalo radit. Razlika je sto ova funkcija vraca bas točke, a za pokretanje robota trebaju zakreti zglobova. U pripremi pise da mora vratit točke pa zato i vrača točke. Kasnije ce trebat s funkcijom def_ik to pretvorit u zakrete zglobova
import numpy.linalg as la
def taylor_swift(self, w0, w1, q0, tol=0.01):
q0 = self.get_ik(w0,q0)
q1 = self.get_ik(w1,q0)
q_m = (q0+q1)/2.0
w_m = self.get_dk(q_m)
w_M = (w0+w1)/2.0
# L2 norma
if la.norm(w_m, w_M) <= tol:
return np.array([w0, w1])
else:
left = taylor_swift(w0, w_M)
right = taylor_swift(w_M, w1)
return np.vstack((left, right))
Kuhar
ova funckija ima EPIC fail. dodaje u ifu tocku u sredinu (w_M), sto nebi smjela ( treba samo w0 iw1 ), tako da PRIPAZITE na to.
Kuhar
snorlaxx
Jel radi jos netko u The Construct-u? Imam problema na samom pocetku, uopce ne mogu promjeniti source, ne prihvaca mi one naredbe iz uputa. Jel sam trebala jos neki korak napraviti osim dodati projekt i pokrenuti ga?
Kuhar
Ak se neko muci sa plotanjem :
ja sam to napravio u 3d-u u matlabu, sad neznam jel to tako treba :
dio1 = importdata('poze_point.txt');
Spill=dio1.data;
dio2 = importdata('poze_taylor.txt');
Spill2=dio2.data;
X = Spill(:,1);
Y = Spill(:,2);
Z = Spill(:,3);
plot3(X,Y,Z,'r')
xlabel('X[m]');
ylabel('Y[m]');
zlabel('Z[m]');
hold on
X2 = Spill2(:,1);
Y2 = Spill2(:,2);
Z2 = Spill2(:,3);
plot3(X2,Y2,Z2,'b')
hold on
X3 = matrica(:,1);
Y3 = matrica(:,2);
Z3 = matrica(:,3);
plot3(X3,Y3,Z3,'g')
grid on
matrica je samo matrica s točkama kroz koje prolazi :
Kuhar
Kuhar i u ifu tol mora biti <= 😃
Bobinator
ima netko voljan podjelit svoj funkcionalni kod prve vjezbe nama E-ovskim smrtnicima?