Navigatsioonirobot

Autor: Raivo Sell

Käesolev õpiobjekt tutvustab navigatsioonirobotit, mida saab ehitada Robootika Kodulabori baasil.

Navigatsioonirobot on tüüpiline robootika rakendus õpilastele, kes soovivad rakendada oma oskusi integreeritud süsteemi loomiseks. Navigatsiooniroboti ehitamiseks on vaja liikuvat alusplatvormi kaugusandurit ja mikrokontrollersüsteemi, milleks antud juhul on Robootika Kodulabor.

ESF

Õpiobjekti nimi: Navigatsioonirobot

Õpiväljundid:

Pärast mooduli läbimist õpilane:

  • Kirjeldab navigatsiooniroboti komponente
  • Kirjeldab navigatsiooniroboti alamsüsteeme
  • Koostab navigatsioonirobotile lihtsa juhtprogrammi
  • Ühendab vajalikud Robootika Kodulabori moodulid õigesti

Kasutusjuhend:

  • Teoreetilise taustamaterjaliga tutvumine
  • Graafilise materjaliga tutvumine
  • Enesekontrolli küsimustele vastamine

Õpetatav osa: Lugeda teoreetilist ülevaadet enne riistvara reaalset ühendamist ja pingestamist. Vaadata juhendeid korrektse riistvara käsitlemise tagamiseks. Õpitu kinnistamiseks tuleb praktilised näited reaalselt läbi teha.

Seoste loomine: Läbi õppejuhendite ja sõnalise selgituse järgimise.

Kinnistav osa: Iseseisev praktika reaalse riistvarakomplekti baasil.

TEOREETILINE OSA

Roboti võib lihtsustatult jagada kolmeks loogiliseks ja füüsiliseks osaks: roboti konstruktsioon ehk mehaanika, elektroonika ja juhtimine.

Mehaanika

Roboti mehaanika põhiülesandeks on roboti erinevate komponentide ühendamine ühtseks tervikuks. Näiterobot on ehitatud robotplatvorm RP06 baasil, mis tähendab, et suurem osa tööst on juba ära tehtud. Alusplatvorm sisaldab endas roboti keret, robotit edasi viivaid mootoreid koos kinnitusega ning ülekannet, mis mootorite kiire ning nõrga liikumise teisendab aeglasemaks ning tugevamaks liikumiseks. Lisaks on seal ette nähtud ka koht akudele ning koodritele. Alusplatvormi peale käib omakorda vaheplaat, mille külge kinnitatakse roboti elektroonikamoodulid ning kaugusandur koos servomootoriga.

Elektroonika

Roboti elektroonikaskeemi saab jagada lihtsustatuna kolmeks: sisendid, väljundid ning juhtmoodul. Sisenditeks selle roboti puhul on koodrid, millelt saab tagasisidet mootorite liikumise kohta ning ultraheliandur, millega robot jälgib seinu. Väljunditeks on 2 alalisvoolumootorit roboti lintmehhanismide liigutamiseks ning servomootor ultrahelianduri liigutamiseks. Lisaks eelnevalt kirjeldatuile on sisenditeks ning väljunditeks ka kasutajaliidese plaadil olevad nupud ning LED-id ja LCD. Juhtmooduliks on Robootika Kodulabori Kontrollermoodul, mis tegeleb andurite lugemisega ning väljundite lülitamisega.

Tarkvara

Robot käitub alati vastavalt tema kontrollerisse laetud tarkvarale. Tarkvara ülesandeks on lugeda roboti sisendeid, teha juhtimisotsuseid ja vastavalt sellele lülitada väljundeid.

Koostamine

Vajalikud komponendid

  1. Robotplatvorm RP06
    • vastupidav plastist korpus
    • 6-AA patarei pesa
    • 2 harjadega DC mootorid 210 mA vabajooksul ning 2.4 A seisu vool 7.2V pinge juures
    • maksimum kiirus 15 cm/s 7.2 V pinge juures
    • 2 koodrit
    • koodri resolutsioon: 100 pulssi/pöördele
    • mõõdud: 18 x 14 x 6 cm
    • kaal: 425 g
  2. Vaheplaat koos kinnitusvahenditega
  3. Kaugusandur
  4. Servomootor
  5. Robootika Kodulabori komplekt

Koostamise juhend

Võtta olemasolev vaheplaat ja paigaldada see kruvidega robotplatvormile. Enne vaheplaadi kinnitamist tuleb plavormile lisada akud ja juhtmetele paigaldada vajalikud pistikud. Vaheplaadile saab kinnitada ka servomootori, millele omakorda on paigaldatud ultraheli kaugusandur. Kaugusanduri paigaldamine servo mootorile võimaldab seda roboti liikumise ajal pöörata  kuni 180 kraadi. Selline pidev pööramine tekitab radari efekti ja annab võimaluse tuvastada objekte või labürindi seinu mitte ainult otse ees vaid ka roboti külgedel.

Alljärgnevalt on näidatud roboti peamised moodulid, mis tuleb omavahel ühendada:





Platvormi ja Kodulabori elektrilised ühendused

Kõigepealt ühendada koodrite kaablid RP06 korpuses. Pange tähele kaablite polarisatsiooni.

Järgmiseks tõmbame juhtmed läbi alusplaadi pilu ning kinnitame alusplaadi roboti kere külge. 

Edasi ühendame mootorite kaablid. Mootori kaablid tuleb ühendada mootori väljunditesse Mootorikontrolleri plaadil (Nt parem mootor DC3 ja vasak mootor DC2).

Ühenda koodrid koodrite sisenditesse (parem kooder ülemisse, vasak alumisse).

Viimaseks kasutades Y-toitekaablit ühendame mõlemale plaadile toite.

Radari koostamine


Kõigepealt paneme kokku servo kinnituse poldid. Kasutame selleks pikka M3 polti ning kaht lukustusmutrit:

Üht mutrit kasutame servo kinni hoidmiseks ning teine on kauguse hoidmiseks ning peaks olema keeratud umbes samale kaugusele, nagu servo kere.

Seejärel ühendame ultrahelianduri servoga.

Kui moodul on valmis, ühendame selle koostu roboti alusplatvormiga. Kasutame tavalisi M3 mutreid poltide kinnitamiseks.

Seejärel ühendame ultrahelianduri kaabli. Jälgige polaarsust! Ultraheliandur tuleks ühendada ühte digitaalsesse sisend/väljund viiku (Näiteks PORTE 2).

Viimaks ühendame servo kaabli ühte servo väljundisse (Näiteks SERVO1).

Koostatud robot näeb pealtvaates välja selline:

NÄITEKOOD

Lihtne navigatsiooniroboti tarkvaranäide.

// 
// Kasutades väikest servomootorit ning sellele kinnitatud ultraheliandurit 
// navigeeri labürindis.
// 7-segment ekraan näitab kaugust lähemal, kui 10cm
// Ultraheliandur on ühendatud viiku PORTE 2
// Servo ühendatud viiku SERVO 1
//
 
#define F_CPU 14745600
 
#define RIGHT_MT	0
#define LEFT_MT		1
 
#define SERVO_STRAIGHT	-30
#define SERVO_LEFT	-180
#define SERVO_RIGHT	160
 
#define DEG90		800
 
#include <stdio.h>
 
#include <homelab/pin.h>
#include <homelab/delay.h>
#include <homelab/module/sensors.h>
#include <homelab/module/motors.h>
#include <homelab/module/segment_display.h>
 
//
// Ultrahelianduri viik
//
pin pin_trigger_echo = PIN(E, 2);
 
//
// Põhiprogramm
//
int main(void)
{
	uint16_t distance;
 
	// Anduriplaadil kasutame väliseid andureid
	pin ex_sensors = PIN(G, 0);
	pin_setup_output(ex_sensors);
	pin_set(ex_sensors);
 
	//Seadista mootorid
	dcmotor_init(0);
	dcmotor_init(1);
 
	//Seadista servomootor
	servomotor_init(1);
 
	//Seadista 7-segmendiline ekraan
	segment_display_init();
 
	while(1)
	{
		//Kontrolli kas midagi on ees
		distance = ultrasonic_measure_srf05(pin_trigger_echo);
		//Näita kaugust 7-segmendilisel ekraanil
		segment_display_write(distance);
 
		if(distance < 5)
		{
			//Midagi on ees, jääme seisma ja vaatame, kuhu minna
			dcmotor_drive(RIGHT_MT,0);
			dcmotor_drive(LEFT_MT,0);
 
			//Vaata paremale
			servomotor_position(1,SERVO_RIGHT);
			sw_delay_ms(1000);
 
			distance = ultrasonic_measure_srf05(pin_trigger_echo);
			if(distance < 20)
			{
				//Midagi on ees, paremale minna ei saa, vaatame vasakule
				servomotor_position(1,SERVO_LEFT);
				sw_delay_ms(1000);
 
				distance = ultrasonic_measure_srf05(pin_trigger_echo);
				if(distance < 20)
				{
					//Tupik, keerame ümber ja läheme tagasi
					dcmotor_drive(RIGHT_MT,-1);
					dcmotor_drive(LEFT_MT,-1);
					servomotor_position(1,SERVO_STRAIGHT);
					sw_delay_ms(1500);
				}
				else
				{
					//Vasakult puhas, keerame sinna ja sõidame edasi
					dcmotor_drive(RIGHT_MT,-1);
					dcmotor_drive(LEFT_MT,-1);
					servomotor_position(1,SERVO_STRAIGHT);
					sw_delay_ms(DEG90);
				}
			}
			else
			{
				//Paremalt puhas, keerame sinna ja sõidame edasi
				dcmotor_drive(RIGHT_MT,1);
				dcmotor_drive(LEFT_MT,1);
				servomotor_position(1,SERVO_STRAIGHT);
				sw_delay_ms(DEG90);
			}
		}
		else
		{
			//Midagi pole ees, sõidame otse
			dcmotor_drive(RIGHT_MT,-1);
			dcmotor_drive(LEFT_MT, 1);
			servomotor_position(1,SERVO_STRAIGHT);
			sw_delay_ms(100);
		}
	}
}

 

ENESEKONTROLL

Vastates alljärgnevatele küsimustele, saad proovida oma teadmisi antud teema kohta

Navigatsioonirobot (antud õpiobjekti kontekstis) on mõeldud...
Vali õige vastus

Objektide otsimiseks
Objektide transpordiks
Liikumiseks ruumis ilma seintele otsa sõitmata
Liikumiseks võimalikult kiiresti

Mis põhjusel on ultraheliandur paigaldatud servomootorile?
Vali õiged vastused

Nägemiskauguse (mõõtedistantsi) suurendamiseks
Nägemisulatuse (külgedele vaatamine) suurendamiseks
Anduri mõõtekiiruse suurendamiseks

Milliseid mooduleid kasutab antud õpiobjektis navigatsioonirobot?
Vali õiged vastused

Infrapunaandurit
Lintidega alusplatvormi
Radari moodulit (ultraheliandur paigaldatud servomootori õlale)
Lidarit
Manipulaatorit

Kuidas käitub antud robot tupiku korral?
Vali õige vastus

Jääb seisma
Pöörab ringi ja läheb tagasi

Milliseid alamsüsteeme omab tüüpiline robot?
Vali õiged vastused

konstruktsioon
elektroonika
juhttarkvara
turvapadjad

LISAMATERJAL

  1. Robootika Kodulabor - Ultraheliandur
  2. Robootika Kodulabor - Alalisvoolu mootor
  3. Robootika Kodulabor - Servomootor
  4. Robootika Kodulabor - Kooder

Teoreetilise osa algtekstide autor: Raivo Sell ja Rain Ellermaa