Praktikum 7 - Regulaatorid

Enne praktikumi juurde asumist

  1. Mine lehele https://github.com/sinu kasutajanimi/robotont_blank_scripts, kus asenda sinu kasutajanimi oma kasutajanimega.

  2. Vajuta rohelist nuppu “Clone or download”

  3. Kopeeri sealt aadress

  4. Ava terminal, loo ssh-ühendus robotisse ning trüki sinna

    cd catkin_ws/src

  5. Seejärel sisesta

    git clone -sinu-kopeeritud-link-

  6. Seejärel sisesta

    cd robotont_blank_scripts

  7. Seejärel

    git config user.email „YOUR-EMAIL-HERE“

  8. Seejärel

    git config user.name „YOUR-NAME-HERE“

  9. Seejärel sisesta

    git pull https://github.com/ut-ims-robotics/robotont_blank_scripts.git

  10. Nüüd trüki terminali

    catkin build

  11. Kui see protsess on lõpetanud edukalt, sulge terminal ja oled valmis praktikumiga jätkama.

Praktikumi kirjeldus

Selles praktikumis on lahendada lisaülesanded. Praktikumi läbimiseks pead lahendama vähemalt 3 ülesannet.

Ülesanne 1

Kolmandas praktikumis õppisime tegema bang-bang kontrollerit. Aga sellel kontrolleril on probleem - nimelt kipub kauguse hoidmisel robot edasi-tagasi pendeldama. Üks lahendus on suurendada piirkonda, kus kontroller suunda vahetab ning kui anduri näit on selles vahemikus, siis paneme roboti seisma. Seda nimetatakse kolm-punkt regulaatoriks. Näiteks võib tuua radiaatori ja jahutuse:

  • Soovitud temperatuuriks paneme 23 kraadi.
  • Hüstereesiks seame 2 kraadi.
  • Kui temperatuur on alla 22 kraadi, on radiaator sees, jahutus väljas.
  • Kui temperatuur on 22-24 kraadi, on radiaator ja jahutus väljas.
  • Kui temperatuur läheb üle 24 kraadi, on radiaator välja ja jahutus sees.

Selline implementatsioon väldib olukorda, kus radiaator jääks end kiiresti 23 kraadi juures sisse-välja klõpsima. Ülesanne on teha samasugune kolm-punkt regulaator, mis hoiab robotit umbes 0,6 meetri kaugusel seinast. Hüstereesi suuruse võid ise valida, et saavutada parim võimalik lahendus.

Ülesanne

  1. Ava terminaliaken ning loo ssh-ühendus robotisse.

  2. Terminaliaknas sisesta

    roslaunch robotont_teleop teleop_with_laserscan.launch

  3. Ava uus terminaliaken ning loo ssh-ühendus robotisse

  4. Terminaliaknas sisesta

    nano catkin_ws/src/robotont_blank_scripts/scripts/praktikum3_bangbang.py

  5. Selles failis peaks olema su kolmanda praktikumi bang-bang kontroller ehk kaks-punkt regulaator. Ülesanne on muuta koodi, et see oleks kolm-punkt regulaator.

  6. Koodi käitamiseks sisesta terminali

    rosrun robotont_blank_scripts praktikum3_bangbang.py

    Ctrl+C paneb programmi kinni.

  7. Demonstreeri töötavat kontrollerit juhendajale.

Ülesanne 2

Kolm-punkt regulaatori puhul on probleem, et tulemus on ebatäpne. Roboti tegelik kaugus kogu hüstereesiga määratud vahemikus on pole teada. Selleks, et olukorda natuke parandada, saab kasutada proportsionaalset kontrollerit ehk P-kontroller. Selle mõtet võib illustreerida roboti puhul näiteks nõnda, et mida lähemal oleme soovitud kaugusele, seda aeglasemalt sõidame. Ja vastupidiselt, kui robot paikneb soovitud punktist väga kaugel, siis võib liikuda kiiremini. Lühidalt: roboti kiirus on proportsionaalne kaugusega sihtpunktist. Matemaatiliselt võib seda kirjutada kui

\[v = Kp\cdot e\]

kus v on kiirus, millega robot sõidab, Kp on enda seatud konstant, mis määrab kuidas kontroller toimib ja e on viga soovitud kauguse ning praeguse kauguse vahel.

../_images/pcontroller.png

Ülesanne

  1. Ava terminaliaken ning loo ssh-ühendus robotisse.

  2. Terminaliaknas sisesta

    roslaunch robotont_teleop teleop_with_laserscan.launch

  3. Ava uus terminaliaken ning loo ssh-ühendus robotisse

  4. Terminaliaknas sisesta

    nano catkin_ws/src/robotont_blank_scripts/scripts/praktikum3_bangbang.py

  5. Kommenteeri koodist välja oma varasem kolm-punkt regulaator ning kirjelda roboti juhtimiseks proportsionaalne kontroller, mis hoiab robotit seinast 0,6 m kaugusel.

  6. Koodi käitamiseks sisesta terminali

    rosrun robotont_blank_scripts praktikum3_bangbang.py

    Ctrl+C paneb programmi kinni.

  7. Demonstreeri töötavat kontrollerit juhendajale.

Ülesanne 3

Ülesannetes 1 ja 2 tutvustatud kontrollereid saab nüüd kasutada, et teha paremaks neljandas praktikumis tehtud AR markerite jälgimine. Ülesanne on muuta oma AR-märgiste jälgimise programm sujuvamaks, kasutades proportsionaalset regulaatorit.

Ülesanne

  1. Ava terminaliaken ning loo ssh-ühendus robotisse.

  2. Terminaliaknas sisesta

    roslaunch robotont_training robotont_ar.launch

  3. Ava uus terminal, loo ssh-ühendus ning seal ava praktikum4_ar.py fail, kasutades käsku

    nano catkin_ws/src/robotont_blank_scripts/scripts/praktikum4_ar.py

  4. Otsi koodis kommentaar “CHANGE THIS NUMBER TO YOUR MARKER ID” ja selle rea all muuda marker.id == väärtus end markerile vastavaks

  5. Muuda kõiki kolme funktsiooni nii, et need kasutaks P-kontrollerit.

  6. Nanost väljumiseks Ctrl+X, salvesta ja skripti saad jooksutada käsuga

    rosrun robotont_blank_scripts praktikum4_ar.py

    Ctrl+C, et skript peatada.

  7. Demonstreeri töötavat kontrollerit juhendajale.

  8. Robot peab olema võimeline sõitma teise roboti järel.

Enne praktikumi lõpetamist

  1. Ava uus terminal ning loo ssh-ühendus robotisse
  2. Sisesta sinna cd catkin_ws/src/robotont_blank_scripts
  3. Seejärel git add .
  4. Seejärel git config user.email „YOUR-EMAIL-HERE“
  5. Seejärel git config user.name „YOUR-NAME-HERE“
  6. Seejärel git commit -m „kommentaar mis praktikum oli“
  7. Seejärel git push
  8. Siin sisesta oma githubi kasutajanimi ja parool. Kontrolli, kas sinu github.com lehel uuenesid failid.
  9. Kui uuenesid, siis loo ssh-ühendus robotisse ning sisesta käsureale sudo poweroff.