Denníček - marec 2017

Zo stránky Robotický krúžok
Skočit na navigaci Skočit na vyhledávání

2.3. štvrtok:

Dnes sa ukázal aspoň Oliver a zatiaľ čo Paľo rozoberal staršie modely a triedil súčiastky, usilovne pracoval na konštrukcii kostry pre postavičky. Nazbieral pritom skúsenosti a nápady ako servá upevňovať, takže teraz by sa nám to už mohlo podariť. Nie je to ľahké, lebo vzdialenosť uchytávacích dier na servách je iná ako vzdialenosť dier na súčiastkách LEGO.

7.3. utorok:

Maris pripojil k NXT-čku starý dobrý akcelerometer od HiTechnic. Meria naklonenie v troch smeroch a tak z toho bolo skvelé diaľkové ovládanie 5-minútového robota pomocou naklonenia druhého NXT-čka, ktoré vysielalo cez BT.

Marvis a robot.jpg

riadenie_akcelerometrom.zip

Patrik vytváral nový podvozok pre tanečné postavičky a Oliver kostru na pohyb rukami a hlavou - pekná spolupráca!

Novy podvozok.jpg Novy podvozok2.png

Matej pokračoval v Samovom programe pre Robotickú ligu liga.zip a trošku spevnil konštrukciu robota.

14.3. utorok:

Matej dokončil Samov program pre Robotickú ligu: liga_1_kolo_finalne.zip Oliverovia napajkovali kábliky na pripojenie motorov na Arduino. Zostrojili na to špeciálnu dosku - rozvodného ježka, na ktorého sa pripája baterka a VCC a GND všetkých motorov aj Arduina. Maris pracoval na svojom rukou ovládanom robotovi. Patrik robil veľkého šéfa a všetkým pomáhal.

16.3. štvrtok:

Oliver popripájal všetky motorčeky a urobil skúšobný program, kde sa pomocou putty a klávesnice dá hýbať všetkými končatinami a hlavou a podvozkom v oboch smeroch:

Zapojenie pinov:

D3 - hlava
D5 - prava ruka
D6 - lava ruka
D9 - prava noha
D10 - prave koleso
D12 - lava noha
D11 - lave koleso
#include <Servo.h>

Servo lavaruka, pravaruka, hlava, pravanoha, pravekoleso, lavanoha,lavekoleso;

void setup() {
  // put your setup code here, to run once:
   pinMode(6, OUTPUT);
   pinMode(5, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(9, OUTPUT);
   pinMode(10, OUTPUT);
   pinMode(11, OUTPUT);
   pinMode(12, OUTPUT); 
   lavaruka.attach(6);
   pravaruka.attach(5);
   hlava.attach(3);
   pravanoha.attach(9);
   pravekoleso.attach(10);
   lavanoha.attach(12);
   lavekoleso.attach(11);   
   Serial.begin(115200);
}

void loop() {
  Serial.println("umba-umba. ovladanie 'a'-'g', 'A'-'G', ' '");
  while (1)
  {
    delay(50);
    if (Serial.available())
    {
      char znak = Serial.read();
      switch (znak)
      {
        
        case ' ':   pravaruka.write(90);
                    lavaruka.write(90);
                    hlava.write(90);
                    pravanoha.write(90);
                    pravekoleso.write(90);
                    lavanoha.write(90);
                    lavekoleso.write(90);
                    Serial.println("off");
                    break;
                    
        case 'a':   pravaruka.write(120); break;
        case 'A':   pravaruka.write(60); break;
        
        case 'b':   lavaruka.write(120); break;
        case 'B':   lavaruka.write(60); break;
        
        case 'c':   hlava.write(120); break;
        case 'C':   hlava.write(60); break;
        
        case 'd':   pravanoha.write(120); break;
        case 'D':   pravanoha.write(60); break;
        
        case 'e':   pravekoleso.write(120); break;
        case 'E':   pravekoleso.write(60); break;

        case 'f':   lavanoha.write(120); break;
        case 'F':   lavanoha.write(60); break;

        case 'g':   lavekoleso.write(120); break;
        case 'G':   lavekoleso.write(60); break;
      }
    }
  }
}

Zistili sme, že ak pripojíme na motorčeky 7.4V plne nabitú LiPo batériu, tak to ich elektronika už nie celkom zvláda. Preto Paľo donesie 5A regulátor napätia 5V, ktorý vyrobí čistých 5V a tie pošleme do motorov aj Arduinka:

Matej začal pracovať na druhom kole robotickej ligy a Maris ešte vylepšoval jeho model na diaľkové ovládanie.

21.3. utorok:

5V regulátor pomohol, dostal aj 10uF kondenzátor na výstupe pre vyhľadenie signálu a dáva krásnych 5.00V. Motorčeky už fungujú ako majú, bolo treba opraviť jeden kontakt na rozvodni napájania, takže program na otestovanie dokáže hýbať všetkými 7 stupňami voľnosti ako má, len sme znížili pohyby zo 120/60 na 97/83 a možno ešte trochu znížime. Jednému motorčeku bolo treba prestaviť stred (pre hodnotu 90 má byť v pokoji). Oliver otestoval, že kostra opice vcelku pekne jazdí! Druhý Oliver poskladal druhého robota - super! a ešte treba doriešiť jeho kábliky. Patrik sa predsa len pustil do konštrukcie hlavnej postavy a začína mať formát, dostredu už aj namontoval motory. Dohodli sme sa, že zelený kabát roztrihneme a potom zlepíme suchým zipsom, ktorého máme dosť (Paľo donesie). Matej medzitým riešil druhé kolo robotickej ligy. Skvelá práca! Nabudúce by sme mohli skúsiť nohy opíc a ruky a nasadiť šaty, aby sme mohli programovať pohyby.

Dve opice.jpg

Skeleton.jpg Matej druhe kolo.jpg

Dohodli sme sa, že pohyb všetkých končatín naprogramujeme tak, že si najskôr do textového súboru urobíme predpis podľa ktorého sa majú hýbať, niečo takéto:

cas   LR PR LN PN LK PK H

10    .  .  .  .  .  .  .
200   +  +  .  .  .  .  .
210   .  .  .  .  .  .  +
220   .  .  .  .  .  .  - 
240   -  -  +  +  .  .  .
300   .  .  -  -  .  .  .
350   .  .  .  .  .  .  .

a potom si spravíme program v C-cku, ktorý takýto plán pohybov dokáže previesť na program pre Arduino, ktorý sa podľa toho bude hýbať (tu by sa nám veľmi hodil Samo...)

Ostatné nemenované tímy, ktoré tiež riešia Robotickú ligu alebo iné súťaže, prosíme, aby hľadali inšpiráciu niekde inde ako na našich stránkach... ;)

23.3. štvrtok:

Dnes Samko naprogramoval v jazyku C program, ktorý prečíta plán pohybov končatín a vypíše pole pre arduinový program, kde každý riadok sa prepočíta na jedno 16-bitové číslo:

'.'  -> 00 (0)
'+'  -> 01 (1)
'-'  -> 10 (2)
's'  -> 11 (3)
napr.

LR PR LN PN  H LK PK
 +  +  -  -  .  .  s
01 01 10 10 00 00 11   => číslo 01011010000011 = 5763

Ešte by ten program mal vypísať druhý riadok s poľom, ktoré bude obsahovať časy - to nám ostáva nabudúce.

Príklad vstupu:

320 + + . . + . .
350 s s . . s . .
380 - - . . - . .
# dotyk s hlavnou postavou
410 s s . . s . .

Príklad výstupu:

int tanec[] = { 5136, 15408, 10272, 15408 };
#include <stdio.h>

int preved(char c) 
{
	if (c == '.') return 0;
	if (c == '+') return 1;
	if (c == '-') return 2;
	return 3;
}

int main()
{
	FILE *f;
	char s[80];
	int cas;
	char lr, pr, ln, pn, h, lk, pk;

	f = fopen("tanec.txt", "r");
	printf("int tanec[] = { ");
	int zaciatok = 1;
	while (fgets(s, 80, f))
	{
		if (s[0] == '#') {
			continue;
		}

		sscanf(s, "%d %c %c %c %c %c %c %c", &cas, &lr, &pr, &ln, &pn, &h, &lk, &pk);
		//printf("cas: %d, lr: %c, pr: %c, ln: %c, pn: %c, h: %c, lk: %c, pk: %c \n", cas, lr, pr, ln, pn, h, lk, pk);		
		int xlr = preved(lr);
		int xpr = preved(pr);
		int xln = preved(ln);
		int xpn = preved(pn);
		int xh = preved(h);
		int xlk = preved(lk);
		int xpk = preved(pk);
		int hodnota = xpk + (xlk << 2) + (xh << 4) + (xpn << 6) + (xln << 8) + (xpr << 10) + (xlr << 12);
		if (!zaciatok) printf(", ");
		zaciatok = 0;
		printf("%d" , hodnota);
		
	}
	printf(" };\n");

	fclose(f);
	return 0;
}

Matej primontoval na robota do Robotickej ligy senzory a trochu ho prestaval, dúfam, že budúci týždeň to stihneme dokončiť!

Oliver namontoval na robota tlačidlo a ruky. Ostávajú nohy a program pre Arduino!

Vypinac.jpg Ruka.jpg

Paľo nezabudne doniesť suchý zips a šijacie potreby, aby sme mohli odskúšať pohyb hlavnej postavy tanca!

Rozmýšľajte nad choreografiou!

28.3. utorok:

Dnes Oliver, skladač Rubikovej kocky, dokončil káblovanie druhého robota na tanec. Matej sa boril s druhým kolom Robotickej ligy, Patrik spevňoval hlavnú postavu do tanca, Maris vylepšoval svojho robota a Oliver primontoval nohy na prvú opicu. Vo štvrtok by sme mali dokončiť a nahrať robotickú ligu a naprogramovať tanec podľa predlohy zo Samovho programu - ktorý zo vstupného predpisu tanca ešte má vytvoriť aj pole s časmi.

30.3. štvrtok:

Matej so Samovou pomocou dokončil 2. kolo robotickej ligy a Oliver nahral video. Samo doprogramoval generovanie poľa casy[] do svojho programu a napísal program pre Arduino, ktorý podľa polí tanec[] a casy[] hýbe motorčekmi postavičky. Oba programy sú tu: tanec.zip. Oliver dokončoval druhú postavičku.

Príklad testovacieho tanca:

# cas LR PR LN PN H LK PK
0000 s s s s s s s
0250 + . . . . . .
0500 - . . . . . .
0750 s + . . . . .
1000 . - . . . . .
1250 . s . . . . .
1500 . . . . + + +
1750 . . . . - - -
2000 . . . . s s s
2250 + . . . . . .
2500 - . . . . . .
2750 + . . . . . .
3000 - . . . . . .
3250 s + . . . . .
3500 . - . . . . .
3750 . + . . . . .
4000 . - . . . . .
4250 . s . . . . .
4500 . . + + . . .
4750 . . - - . . .
5000 . . s s . . .