Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 151 additions & 0 deletions content/2022/balansero.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,154 @@
title: Balansero
summary: Balansero, balansirajući robot, je projekat rađen na letnjem kampu 2022. godine od Katarine Nedić i Anđele Pantelić.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ovaj ovde atribut možete ažurirati ukoliko želite da pregledna rečenica ovog članka bude nešto drugo, relevantnije za vaš rad. Ako ga ne izmenite, baciću prvi deo apstrakta na ovo mesto pri objavljivanju, pa će da se odseče slično kao na pfe.rs/vesti.

---
<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/robot.jpg" width="350">
</p>


## Sadržaj

1. Apstrakt
2. Grafički apstrakt
2. Uvod
3. Aparatura
4. Metode
5. Istraživanje i rezultati
6. Zaključak
Comment on lines +10 to +18
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Odeljak sa sadržajem je nepotreban. Ukoliko odlučimo da imamo sadržaj, napravićemo da se automatski generiše na neki način.



## Apstrakt

## Grafički apstrakt

<p align="left">
Copy link

@znjRoLS znjRoLS Nov 15, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dodajte slike kao sto su dodata u uputstvu. Primer:

![Tekst slike.](/images/2022/balansero/graficki%20prikaz.jpg)

Mozete videti kod uputstva ovde: https://raw.githubusercontent.com/pfe-rs/izvestaji/master/content/uputstvo.md

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Izmenio sam Roškov komentar iznad da se prikaže tačna sintaksa za Markdown sliku. Takođe, grafički apstrakt treba da bude u SVG formatu ukoliko je moguće, kao što ovde koliko vidim jeste.

<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/graficki%20prikaz.jpg" width="350">
</p>

## Uvod

Samobalansirajući robot predstavlja stabilizaciju dinamičkog sistema koji radi po principu inverznog klatna. Ovakvi roboti koriste sistem upravljanja povratnom spregom u zatvorenoj petlji - podaci iz senzora pokreta u realnom vremenu se koriste za kontrolu motora i brzu kompenzaciju promene ugla kako bi se robot održao uspravno.
Cilj ovog projekta je da se modelira, simulira i implementira samobalansirajući robot.

##### *Potrebna aparatura:*
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ovaj odeljak ne treba da bude deo Uvoda nego Aparature

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Zaglavlje petog nivoa ne sme da ide ispod zaglavlja drugog, posle drugog nivoa može eventualno zaglavlje trećeg nivoa da ide. Nemojte da ređate # kao način kontrole fonta, jer se zaglavlja koriste za logičku podelu dokumenta po poglavljima. Takođe, izbaciti kurziv i dvotačku na kraju.


-**Mikrokontroler _(Arduino Uno)_** koristi se za izradu interaktivnih prototipa. Ima 14 digitalnih ulazno/izlaznih p inova i 6 analognih ulaza. Radi na 5V i komunicira preko USB-porta.

-**IMU** (Inercijalni navigacioni sistem MPU6050) senzor koji meri ugao nagiba i ugaonu brzinu koristeći
kombinaciju akcelerometara i žiroskopa. U njemu postoji I2C kolo koje služi za komunikaciju između senzora i mikrokontrolera. IMU je postavljen na dno robota.

<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/mpu.jpg" width="350">
</p>


-**Roatacioni enkoder** je elektromehanički uređaj koji pretvara ugaoni položaj ili kretanje osovine u analogne tj. digitalne izlazne signale.


-**Arduino motor kontroler** (l298n) pomoću koga upravljamo motor

<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/l298n.jpg" width="350">
</p>

-**DC motor** (12V) sa jednom osovinom

Comment on lines +36 to +56
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Markdown i slovne ispravke. Ono što nisam ovde ispravio je da slike treba da idu ispod liste, ne unutar nje.

Suggested change
-**Mikrokontroler _(Arduino Uno)_** koristi se za izradu interaktivnih prototipa. Ima 14 digitalnih ulazno/izlaznih p inova i 6 analognih ulaza. Radi na 5V i komunicira preko USB-porta.
-**IMU** (Inercijalni navigacioni sistem MPU6050) senzor koji meri ugao nagiba i ugaonu brzinu koristeći
kombinaciju akcelerometara i žiroskopa. U njemu postoji I2C kolo koje služi za komunikaciju između senzora i mikrokontrolera. IMU je postavljen na dno robota.
<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/mpu.jpg" width="350">
</p>
-**Roatacioni enkoder** je elektromehanički uređaj koji pretvara ugaoni položaj ili kretanje osovine u analogne tj. digitalne izlazne signale.
-**Arduino motor kontroler** (l298n) pomoću koga upravljamo motor
<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/l298n.jpg" width="350">
</p>
-**DC motor** (12V) sa jednom osovinom
- **Mikrokontroler** (_Arduino Uno_) koristi se za izradu interaktivnih prototipa. Ima 14 digitalnih ulazno/izlaznih pinova i 6 analognih ulaza. Radi na 5V i komunicira preko USB-porta.
- **IMU** (Inercijalni navigacioni sistem MPU6050) senzor koji meri ugao nagiba i ugaonu brzinu koristeći
kombinaciju akcelerometara i žiroskopa. U njemu postoji I2C kolo koje služi za komunikaciju između senzora i mikrokontrolera. IMU je postavljen na dno robota.
<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/mpu.jpg" width="350">
</p>
- **Rotacioni enkoder** je elektromehanički uređaj koji pretvara ugaoni položaj ili kretanje osovine u analogne tj. digitalne izlazne signale.
- **Arduino motor kontroler** (l298n) pomoću koga upravljamo motor
<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/l298n.jpg" width="350">
</p>
- **DC motor** (12V) sa jednom osovinom

## Metode

-**Arduino** očitava izmereni ugao i brzinu sa senzora i očitava
rotacionu brzinu točkova sa enkodera. Vrši obradu signala (pretvara signal iz analognog u
digitalni) i nakon dobijanja svih varijabli, kontroliše ugaonu brzinu točkova pomoću dva PWM signala.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Opisite bolje kako se dobija kontrolni signal od ulaznih signala.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Varijable → promenljive.

![uno](images\2022\balansero\uno.jpg)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Slike moraju da imaju smislen naziv fajla. Roško je iznad objasnio kako se dodaju slike. Unutar [] se nalazi alternativni tekst, tekst koji se prikazuje kada slika ne može da se učita ili kada je korisnik slep, tako da treba da opiše na neki način šta se nalazi na slici.


**PWM** _(Pulse-width modulation)_ je tehnika dobijanja analognih vrednosti pomoću digitalnih impulsa konstantne amplitude. PWM signali pomažu u regulaciji napona, što je važno jer se povećavanjem napona povećava i rotaciona brzina elektromotora. Digitalni izlaz PWM-a se sastoji od niza visokih (“uključenih”) i niskih (“isključenih”) impulsa i pomoću njih se kontroliše motor.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ispravka Markdown i navodnika.

Suggested change
**PWM** _(Pulse-width modulation)_ je tehnika dobijanja analognih vrednosti pomoću digitalnih impulsa konstantne amplitude. PWM signali pomažu u regulaciji napona, što je važno jer se povećavanjem napona povećava i rotaciona brzina elektromotora. Digitalni izlaz PWM-a se sastoji od niza visokih (uključenih) i niskih (isključenih) impulsa i pomoću njih se kontroliše motor.
**PWM** (_Pulse-width modulation_) je tehnika dobijanja analognih vrednosti pomoću digitalnih impulsa konstantne amplitude. PWM signali pomažu u regulaciji napona, što je važno jer se povećavanjem napona povećava i rotaciona brzina elektromotora. Digitalni izlaz PWM-a se sastoji od niza visokih ("uključenih") i niskih ("isključenih") impulsa i pomoću njih se kontroliše motor.


### Filtri

Za projektovanje upravljanja koriste se [filtri](https://sr.wikipedia.org/wiki/Elektronski_filtar/) u cilju dobijanja što preciznijih rezultata.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Link ne radi. Ja mislim da ovde nema potrebe za linkom, ali neka mentori odluče.


**Komplemetarni filtar** je vrsta filtra koja kombinuje merenja više senzora u unapred određenim proporcijama. Prvo se računaju uglovi koji daju samo akcelerometar i žiroskop.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mozda da prepakujete ovo da prvo objasnite sta su niskofrekventni filtar i da ste ga koristili za podatke sa akcelerometra, pa visokofrekventni i ziroskop, pa onda komplementarni


<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/komplementarni.png" width="350">
</p>

Kada se izračuna ugao potrebno je podatke sa akcelerometra filtrirati filterom niskih učestalosti, odnosno podatke sa žiroskopa filterom visokih učestalosti.

**Niskofrekventni filtar** ima za cilj da propusti samo niskofrekventne promene signala sa senzora na izlaz filtera, a da one visokofrekventne ukloni. Nedostatak
ovog filtra je kašnjenje koje se javlja zbog postepene, a ne skokovite promene izlaza.

**Visokofrekventni filtar** propušta
visokofrekventne promene na izlaz, dok one niskofrekventne eliminiše. Uloga visokofrekventnog filtra je da otkloni proces akumulacije greške usled integracije, odnosno da minimizuje ovaj efekat.

<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/lpf.png" width="350">
</p>


### Kontroleri

U trenutku kada robota izvedemo iz ravnotenog položaja, on će pasti na stranu na koju je otklonjen, osim ako neka sila ne počne da deluje na robota u suprotnom smeru kako bi smanjila ugao otklona. Sila koja robota vraća u ravnotežni položaj je inercijalna sila izazvana radom motora, tj njegovim okretanjem točkova. Da bi se robot stabilizovao vrši se implementacija kontrolera.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

otkud inercijalna sila?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
U trenutku kada robota izvedemo iz ravnotenog položaja, on će pasti na stranu na koju je otklonjen, osim ako neka sila ne počne da deluje na robota u suprotnom smeru kako bi smanjila ugao otklona. Sila koja robota vraća u ravnotežni položaj je inercijalna sila izazvana radom motora, tj njegovim okretanjem točkova. Da bi se robot stabilizovao vrši se implementacija kontrolera.
U trenutku kada robota izvedemo iz ravnotežnog položaja, on će pasti na stranu na koju je otklonjen, osim ako neka sila ne počne da deluje na robota u suprotnom smeru kako bi smanjila ugao otklona. Sila koja robota vraća u ravnotežni položaj je inercijalna sila izazvana radom motora, tj. njegovim okretanjem točkova. Da bi se robot stabilizovao vrši se implementacija kontrolera.


- **FLC kontroler**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ovo može da bude odeljak za sebe.

Suggested change
- **FLC kontroler**
#### FLC kontroler


_Fuzzy-logic_ kontroler je stabilizator koji se bavi algortimima koji simuliraju ljudsko razmišljanje i donošenje odluka. Radi po setu pravila po principu *ako – onda* (eng. *if – then*), koja se intuitivno određuju.

Kontroler prolazi kroz dve faze - fuzifikaciju i defuzifikaciju. U prvoj on prevodi veličinu greške (odstupanja trenutnog položaja od stabilnog, željenog položaja) sa točkova u fuzzy oblik. Fazifikovana vrednost greške se ubacuje u set prethodno određenih pravila. Neophodno je izračunati udeo te greške u svakom od pravila, a potom geometrijskom sredinom dobiti precizni izlazni rezultat. Taj proces nazivamo defuzifikacijom. Izlazna vrednost - napon, šalje se na motor, kontrolišu se točkovi - kreću se u određenom smeru i određenom ugaonom brzinom čime se postiže ispravljanje greške - robot balansira.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Na srpskom kažemo fazi logika.

Suggested change
Kontroler prolazi kroz dve faze - fuzifikaciju i defuzifikaciju. U prvoj on prevodi veličinu greške (odstupanja trenutnog položaja od stabilnog, željenog položaja) sa točkova u fuzzy oblik. Fazifikovana vrednost greške se ubacuje u set prethodno određenih pravila. Neophodno je izračunati udeo te greške u svakom od pravila, a potom geometrijskom sredinom dobiti precizni izlazni rezultat. Taj proces nazivamo defuzifikacijom. Izlazna vrednost - napon, šalje se na motor, kontrolišu se točkovi - kreću se u određenom smeru i određenom ugaonom brzinom čime se postiže ispravljanje greške - robot balansira.
Kontroler prolazi kroz dve faze - fazifikaciju i defazifikaciju. U prvoj on prevodi veličinu greške (odstupanja trenutnog položaja od stabilnog, željenog položaja) sa točkova u fazi oblik. Fazifikovana vrednost greške se ubacuje u skup prethodno određenih pravila. Neophodno je izračunati udeo te greške u svakom od pravila, a potom geometrijskom sredinom dobiti precizni izlazni rezultat. Taj proces nazivamo defazifikacijom. Izlazna vrednost - napon, šalje se na motor, kontrolišu se točkovi - kreću se u određenom smeru i određenom ugaonom brzinom čime se postiže ispravljanje greške - robot balansira.


<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/fuzzy-kontroler.png" width="350">
</p>


Fuzzy kontroler je vrlo intuitivan. Pravila izgledaju poput:
- Ako je ugaona brzina **velika** i klatno pada **brzo ulevo**, onda robot treba da se pomeri **jako u levu stranu**.
- Ako je ugaona brzina **mala** i klatno pada **sporo ulevo**, onda robot treba da se pomeri **slabo u levu stranu**.
- Ako je ugaona brzina **mala** i klatno pada **sporo udesno**, onda robot treba da se pomeri **slabo u desnu stranu**.

Ove komande nisu precizne, pomalo su mutne - *fuzzy*, ali zbog preklapanja pravila, preciznost izlaza je velika. Ona se povećava sa povećanjem pravila i svih mogućih kombinacija, kao i sa većim preklapanjem. Na primer, u nekom trenutku, robota će biti potrebno pomeriti 53% slabo u desnu stranu, 25% srednje jako u desnu stranu i 22% malo u levu stranu. Pošto zadata pravila imaju određene vrednosti, robot će biti poslat tačno određenom jačinom u tačno određenom pravcu.

FLC kontroler je implementiran u simulaciji.


- **PID kontroler**
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isto kao iznad.

Suggested change
- **PID kontroler**
#### PID kontroler


<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/pid%20kontroler.png" width="350">
</p>

PID kontroler je stabilizator koji se sastoji iz tri zasebna kontrolera - P (proporcionalni), I (integralni) i D (derivacioni tj. izvodni) kontroler. Oni primaju grešku na ulazu, a na izlazu daju napon koji se šalje na motor i time kontroliše robot.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Objasnite PID kontroler malo bolje, kako se ponasa sistem ako probamo samo P da koristimo, kako ako koristimo samo PD.... i tako dalje

Jednačina PID kontrolera je:

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Komentar koji ćete razrešiti kada dodate ovu jednačinu.


## Istraživanje i rezultati
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ovde mi deluje da fali teksta da bih mogao da komentarišem išta oko formata odeljka. Razrešite komentar kad dodate teksta kako bih mogao da pogledam format ponovo.


- Simulacija fuzzy kontrolera

![simulacija]( <p align="center">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/fuzzy%20simulacija.gif" width="350">
</p>

Robot se stabilizuje na datu poziciju (tačka koja se pomera putem strelica na tastaturi).

- Koristili smo tri PID kontrolera.

<p align="left">
<img src="https://github.com/pfe-rs/izvestaji/blob/radna_verzija/static/images/2022/balansero/pid-blocks.png" width="450">
</p>

Prvi (C1) dobija vrednosti o veličini ugla robota i potom računa njegovu grešku. Drugi (C2) određuje potrebnu ugaonu brzinu, a treći (C3) - postavlja C3 na željenu poziciju.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ne "postavlja C3" nego postavlja referentnu poziciju koja se koristi za racunanje greske ugla, ili tako nesto


## Zaključak

### Analiza problema prenosa
Balansirajući robot je imao poteškoća pri stabilizaciji zbog previše velikog šuma usled jakog potresanja osovine robota koje je prouzrokovao motor. Senzori nisu mogli da dovoljno dobro očitaju grešku čak i pored filtera, te kontroler nije davao dobre izlaze dovoljno brzo.


## Reference
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Naravno, dodajte reference...








Binary file added static/images/2022/balansero/P1270385.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/fuzzy-kontroler.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/graficki prikaz.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/komplementarni.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/l298n.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/lpf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/mpu.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/pid kontroler.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/pid-blocks.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/robot.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/2022/balansero/uno.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.