- హార్డ్వేర్ అవసరం:
- ప్రోగ్రామింగ్ అవసరం:
- రాస్ప్బెర్రీ పై పై ప్రాసెసింగ్ ఏర్పాటు:
- సర్క్యూట్ రేఖాచిత్రం:
- రాస్ప్బెర్రీ పై బాల్ ట్రాకింగ్ ప్రోగ్రామ్:
- రాస్ప్బెర్రీ పై బాల్ ట్రాకింగ్ రోబోట్ యొక్క పని:
రోబోటిక్స్, ఆర్టిఫిషియల్ ఇంటెలిజెన్స్ మరియు మెషిన్ లెర్నింగ్ రంగం వేగంగా అభివృద్ధి చెందుతోంది, ఇది సమీప భవిష్యత్తులో మానవజాతి జీవనశైలిని మార్చడం ఖాయం. రోబోట్లు సెన్సార్లు మరియు మెషీన్ లెర్నింగ్ ప్రాసెసింగ్ ద్వారా వాస్తవ ప్రపంచాన్ని అర్థం చేసుకోవడానికి మరియు సంభాషించడానికి భావిస్తారు. ఇమేజ్ రికగ్నిషన్ అనేది రోబోలు మనలాగే కెమెరా ద్వారా వాస్తవ ప్రపంచాన్ని చూడటం ద్వారా వస్తువులను అర్థం చేసుకోవచ్చని భావించే ఒక ప్రసిద్ధ మార్గం. ఈ ప్రాజెక్ట్లో, రాస్ప్బెర్రీ పై యొక్క శక్తిని ఉపయోగించి బంతిని ట్రాక్ చేయగల రోబోను నిర్మించి, ఫుట్బాల్ను ఆడే రోబోల మాదిరిగానే అనుసరించండి.
ఓపెన్సివి అనేది ఇమేజ్ ప్రాసెసింగ్ కోసం ఉపయోగించబడే చాలా ప్రసిద్ధ మరియు ఓపెన్ సోర్స్ సాధనం, కానీ ఈ ట్యుటోరియల్లో విషయాలు సరళంగా ఉంచడానికి మేము ప్రాసెసింగ్ IDE ని ఉపయోగిస్తున్నాము. ARM కోసం ప్రాసెసింగ్ ప్రాసెసింగ్ కోసం GPIO లైబ్రరీని కూడా విడుదల చేసింది కాబట్టి, రాస్ప్బెర్రీ పైతో పనిచేయడానికి పైథాన్ మరియు ప్రాసెసింగ్ మధ్య మనం మారవలసిన అవసరం లేదు. బాగుంది అనిపిస్తుంది? కాబట్టి ప్రారంభిద్దాం.
హార్డ్వేర్ అవసరం:
- రాస్ప్బెర్రీ పై
- రిబ్బన్ కేబుల్తో కెమెరా మాడ్యూల్
- రోబోట్ చట్రం
- చక్రంతో గేర్ మోటార్లు
- ఎల్ 293 డి మోటార్ డ్రైవర్
- పవర్ బ్యాంక్ లేదా మరేదైనా పోర్టబుల్ విద్యుత్ వనరు
ప్రోగ్రామింగ్ అవసరం:
- రాస్ప్బెర్రీ పై కోసం మానిటర్ లేదా ఇతర ప్రదర్శన
- పై కోసం కీ బోర్డు లేదా మౌస్
- ARM సాఫ్ట్వేర్ను ప్రాసెస్ చేస్తోంది
గమనిక: ప్రోగ్రామింగ్ సమయంలో వైర్ల ద్వారా పైకి డిస్ప్లేని కనెక్ట్ చేయడం తప్పనిసరి ఎందుకంటే కెమెరా వీడియోను మాత్రమే చూడవచ్చు
రాస్ప్బెర్రీ పై పై ప్రాసెసింగ్ ఏర్పాటు:
ముందే చెప్పినట్లుగా, మన రాస్ప్బెర్రీ పైని ప్రోగ్రామ్ చేయడానికి ప్రాసెసింగ్ వాతావరణాన్ని ఉపయోగిస్తాము మరియు పైథాన్ ఉపయోగించే డిఫాల్ట్ మార్గం కాదు. కాబట్టి, క్రింది దశలను అనుసరించండి:
దశ 1: - మీ రాస్ప్బెర్రీ పైని మీ మానిటర్, కీబోర్డ్ మరియు మౌస్కు కనెక్ట్ చేసి, దాన్ని ఆన్ చేయండి.
దశ 2: - మేము కొన్ని విషయాలను డౌన్లోడ్ చేయబోతున్నందున మీరు పై క్రియాశీల ఇంటర్నెట్ కనెక్షన్కు కనెక్ట్ అయ్యారని నిర్ధారించుకోండి.
దశ 3: - రాస్ప్బెర్రీ పై కోసం ప్రాసెసింగ్ IDE ని డౌన్లోడ్ చేయడానికి, ప్రాసెసింగ్ ARM పై క్లిక్ చేయండి. డౌన్లోడ్ జిప్ ఫైల్ రూపంలో ఉంటుంది.
దశ 4: - డౌన్లోడ్ అయిన తర్వాత, మీరు ఇష్టపడే డైరెక్టరీలోని మీ జిప్ ఫోల్డర్లోని ఫైల్లను సేకరించండి. నేను దానిని నా డెస్క్టాప్లో సేకరించాను.
దశ 5: - ఇప్పుడు, సేకరించిన ఫోల్డర్ను తెరిచి, ప్రాసెసింగ్ అనే ఫైల్పై క్లిక్ చేయండి. ఇది క్రింద చూపిన విధంగా విండోను తెరవాలి.
దశ 6: - ఇది మన కోడ్లను టైప్ చేసే వాతావరణం. Arduino తో పరిచయం ఉన్న వ్యక్తుల కోసం, షాక్ అవ్వకండి అవును IDE Arduino మాదిరిగానే కనిపిస్తుంది మరియు ప్రోగ్రామ్ కూడా చేస్తుంది.
దశ 7: - మా బంతి కింది ప్రోగ్రామ్ పనిచేయడానికి మాకు రెండు లైబ్రరీలు కావాలి, ఇన్స్టాల్ చేసి స్కెచ్ -> దిగుమతి లైబ్రరీ -> లైబ్రరీని జోడించు క్లిక్ చేయండి. కింది డైలాగ్ బాక్స్ తెరవబడుతుంది.
దశ 8: - రాస్ప్బెర్రీ పై కోసం శోధించడానికి ఎగువ ఎడమ టెక్స్ట్ బాక్స్ ఉపయోగించండి మరియు ఎంటర్ నొక్కండి, మీరు శోధన ఫలితం ఇలా ఉండాలి.
దశ 9: - “జిఎల్ వీడియో” మరియు “హార్డ్వేర్ ఐ / ఓ” అనే లైబ్రరీల కోసం శోధించండి మరియు వాటిని ఇన్స్టాల్ చేయడానికి ఇన్స్టాల్పై క్లిక్ చేయండి. మీరు రెండు లైబ్రరీలను ఇన్స్టాల్ చేశారని నిర్ధారించుకోండి.
దశ 10: - మీ ఇంటర్నెట్ ఆధారంగా సంస్థాపనకు కొన్ని నిమిషాలు పడుతుంది. పూర్తయిన తర్వాత మేము సాఫ్ట్వేర్ ప్రాసెసింగ్ కోసం సిద్ధంగా ఉన్నాము.
సర్క్యూట్ రేఖాచిత్రం:
ఈ రాస్ప్బెర్రీ పై బాల్ ట్రాకింగ్ ప్రాజెక్ట్ యొక్క సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది.
మీరు చూడగలిగినట్లుగా, సర్క్యూట్లో PI కెమెరా, మోటారు డ్రైవర్ మాడ్యూల్ మరియు రాస్ప్బెర్రీ పైకి అనుసంధానించబడిన ఒక జత మోటార్లు ఉంటాయి. పూర్తి సర్క్యూట్ మొబైల్ పవర్ బ్యాంక్ చేత శక్తినిస్తుంది (పై సర్క్యూట్లో AAA బ్యాటరీ ద్వారా ప్రాతినిధ్యం వహిస్తుంది).
రాస్ప్బెర్రీ పైలో పిన్స్ వివరాలు ప్రస్తావించబడనందున, మేము ఈ క్రింది చిత్రాన్ని ఉపయోగించి పిన్నులను ధృవీకరించాలి
మోటార్స్ నడపడానికి, మాకు నాలుగు పిన్స్ (A, B, A, B) అవసరం. ఈ నాలుగు పిన్లు వరుసగా GPIO14,4,17 మరియు 18 నుండి అనుసంధానించబడి ఉన్నాయి. నారింజ మరియు తెలుపు తీగ కలిసి ఒక మోటారుకు కనెక్షన్ను ఏర్పరుస్తాయి. కాబట్టి మనకు రెండు మోటార్లు అలాంటి రెండు జతలు ఉన్నాయి.
చిత్రంలో చూపిన విధంగా మోటార్లు L293D మోటార్ డ్రైవర్ మాడ్యూల్కు అనుసంధానించబడి ఉన్నాయి మరియు డ్రైవర్ మాడ్యూల్ పవర్ బ్యాంక్ ద్వారా శక్తిని పొందుతుంది. పవర్ బ్యాంక్ యొక్క భూమి రాస్ప్బెర్రీ పై యొక్క మైదానానికి అనుసంధానించబడిందని నిర్ధారించుకోండి, అప్పుడు మాత్రమే మీ కనెక్షన్ పని చేస్తుంది.
అదే మేము మా హార్డ్వేర్ కనెక్షన్తో పూర్తి చేసాము, మన ప్రాసెసింగ్ వాతావరణానికి తిరిగి వెళ్లి బంతిని ఎలా ట్రాక్ చేయాలో మా రోబోకు నేర్పడానికి ప్రోగ్రామింగ్ ప్రారంభిద్దాం.
రాస్ప్బెర్రీ పై బాల్ ట్రాకింగ్ ప్రోగ్రామ్:
పూర్తి ప్రోసెసింగ్ కార్యక్రమం ఈ ప్రాజెక్టు మీరు నేరుగా ఉపయోగించడానికి, ఈ పేజీని చివరిలో ఇవ్వబడుతుంది. ఇంకా కొంచెం క్రింద, నేను కోడ్ యొక్క పనిని వివరించాను, తద్వారా మీరు దీన్ని ఇతర సారూప్య ప్రాజెక్టులకు ఉపయోగించవచ్చు.
ప్రోగ్రామ్ అంశాలను చాలా సులభం. ప్రాజెక్ట్ యొక్క ఉద్దేశ్యం బంతిని ట్రాక్ చేయడమే అయినప్పటికీ, మేము దీన్ని నిజంగా చేయబోవడం లేదు. మేము బంతిని దాని రంగును ఉపయోగించి గుర్తించబోతున్నాము. మనందరికీ తెలిసినట్లుగా, వీడియోలు చిత్రాల నిరంతర ఫ్రేమ్లు తప్ప మరొకటి కాదు. కాబట్టి మేము ప్రతి చిత్రాన్ని తీసుకొని పిక్సెల్స్గా విభజించాము. అప్పుడు మేము ప్రతి పిక్సెల్ రంగును బంతి రంగుతో పోలుస్తాము; ఒక మ్యాచ్ కనుగొనబడితే, మేము బంతిని కనుగొన్నాము. ఈ సమాచారంతో మనం తెరపై బంతి స్థానం (పిక్సెల్ కలర్) ను కూడా గుర్తించవచ్చు. స్థానం చాలా ఎడమవైపు ఉంటే, మేము రోబోట్ను కుడి వైపుకు కదిలిస్తాము, స్థానం చాలా కుడివైపు ఉంటే మనం రోబోట్ను ఎడమ వైపుకు తరలిస్తాము, తద్వారా పిక్సెల్ స్థానం ఎల్లప్పుడూ స్క్రీన్ మధ్యలో ఉంటుంది. స్పష్టమైన చిత్రాన్ని పొందడానికి మీరు డేనియల్ షిఫ్మాన్ యొక్క కంప్యూటర్ విజన్ వీడియో చూడవచ్చు.
ఎప్పటిలాగే మనం డౌన్లోడ్ చేసే రెండు లైబ్రరీలను దిగుమతి చేసుకోవడం ద్వారా ప్రారంభిస్తాము. ఈ క్రింది రెండు పంక్తుల ద్వారా చేయవచ్చు. ప్రాసెసింగ్ ఎన్విరాన్మెంట్ నుండి నేరుగా PI యొక్క GPIO పిన్నులను యాక్సెస్ చేయడానికి హార్డ్వేర్ I / O లైబ్రరీ ఉపయోగించబడుతుంది, రాస్ప్బెర్రీ పై కెమెరా మాడ్యూల్ను యాక్సెస్ చేయడానికి గ్లోవిడియో లైబ్రరీ ఉపయోగించబడుతుంది.
దిగుమతి ప్రాసెసింగ్.యో. *; దిగుమతి gohai.glvideo. *;
సెటప్ ఫంక్షన్ లోపల మేము మోటారును నియంత్రించడానికి అవుట్పుట్ పిన్నులను ప్రారంభిస్తాము మరియు పై కెమెరా నుండి వీడియోను పొందుతాము మరియు 320 * 240 పరిమాణపు విండోలో పరిమాణాన్ని పొందుతాము.
శూన్య సెటప్ () {పరిమాణం (320, 240, పి 2 డి); వీడియో = కొత్త GLCapture (ఇది); video.start (); trackColor = రంగు (255, 0, 0); GPIO.pinMode (4, GPIO.OUTPUT); GPIO.pinMode (14, GPIO.OUTPUT); GPIO.pinMode (17, GPIO.OUTPUT); GPIO.pinMode (18, GPIO.OUTPUT); }
గర్జన డ్రా అనంతమైన లూప్ ఈ లూప్ లోపల కోడ్ కాలం కార్యక్రమం ముగిస్తారు వంటి అమలు చేయబడుతుంది వంటిది. కెమెరా సోర్స్ అందుబాటులో ఉంటే దాని నుండి వచ్చే వీడియోను చదువుతాము
శూన్య డ్రా () {నేపథ్యం (0); if (video.available ()) {video.read (); }}
అప్పుడు మేము వీడియో ఫ్రేమ్ను పిక్సెల్లుగా విభజించడం ప్రారంభిస్తాము. ప్రతి పిక్సెల్ ఎరుపు, ఆకుపచ్చ మరియు నీలం విలువలను కలిగి ఉంటుంది. ఈ విలువలు వేరియబుల్ r1, g1 మరియు b1 లో నిల్వ చేయబడతాయి
(int x = 0; x <video.width; x ++) {కోసం (int y = 0; y <video.height; y ++) {int loc = x + y * video.width; // ప్రస్తుత రంగు రంగు ఏమిటి currentColor = video.pixels; ఫ్లోట్ r1 = ఎరుపు (కరెంట్ కలర్); ఫ్లోట్ g1 = ఆకుపచ్చ (కరెంట్ కలర్); ఫ్లోట్ బి 1 = నీలం (కరెంట్ కలర్);
టు ప్రారంభంలో బంతి రంగు గుర్తించి, మేము రంగు క్లిక్ ఉంటుంది. ఒకసారి క్లిక్ చేస్తే బంతి రంగు ట్రాక్ కలర్ అనే వేరియబుల్ లో నిల్వ చేయబడుతుంది.
void mousePressed () {// ట్రాక్కలర్ వేరియబుల్లో మౌస్ క్లిక్ చేసిన చోట రంగును సేవ్ చేయండి int loc = mouseX + mouseY * video.width; trackColor = video.pixels; }
ఒకసారి మేము ట్రాక్ కలర్ మరియు ప్రస్తుత రంగును కలిగి ఉంటే వాటిని పోల్చాలి. ఈ పోలిక dist ఫంక్షన్ను ఉపయోగిస్తోంది. ట్రాక్ రంగుకు ప్రస్తుత రంగు ఎంత దగ్గరగా ఉందో ఇది తనిఖీ చేస్తుంది.
ఫ్లోట్ d = dist (r1, g1, b1, r2, g2, b2);
ఖచ్చితమైన మ్యాచ్ కోసం dist యొక్క విలువ సున్నా అవుతుంది. కాబట్టి, dist యొక్క విలువ పేర్కొన్న విలువ (ప్రపంచ రికార్డ్) కంటే తక్కువగా ఉంటే, అప్పుడు మేము ట్రాక్ రంగును కనుగొన్నాము. అప్పుడు మేము ఆ పిక్సెల్ యొక్క స్థానాన్ని పొందుతాము మరియు బంతి యొక్క స్థానాన్ని కనుగొనడానికి వేరియబుల్ దగ్గరి X మరియు దగ్గరి Y లో నిల్వ చేస్తాము
if (d <worldRecord) {worldRecord = d; closeestX = x; closeestY = y; }
రంగు కనుగొనబడిందని సూచించడానికి మేము కనుగొన్న రంగు చుట్టూ దీర్ఘవృత్తాన్ని కూడా గీస్తాము. స్థానం యొక్క విలువ కూడా కన్సోల్లో ముద్రించబడుతుంది, డీబగ్గింగ్ చేసేటప్పుడు ఇది చాలా సహాయపడుతుంది.
if (worldRecord <10) {// ట్రాక్ చేసిన పిక్సెల్ ఫిల్ (ట్రాక్కలర్) వద్ద ఒక వృత్తాన్ని గీయండి; స్ట్రోక్వైట్ (4.0); స్ట్రోక్ (0); దీర్ఘవృత్తం (దగ్గరి X, దగ్గరి Y, 16, 16); println (closeestX, closeestY);
చివరగా మనం దగ్గరి X మరియు దగ్గరి Y యొక్క స్థానాన్ని పోల్చవచ్చు మరియు రంగు స్క్రీన్ మధ్యలో వచ్చే విధంగా మోటార్లు సర్దుబాటు చేయవచ్చు. రంగు యొక్క X స్థానం స్క్రీన్ యొక్క ఎడమ వైపున ఉన్నట్లు గుర్తించినందున రోబోట్ను కుడివైపు తిప్పడానికి క్రింది కోడ్ ఉపయోగించబడుతుంది (<140)
if (closeestX <140) {GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.LOW); ఆలస్యం (10); GPIO.digitalWrite (4, GPIO.HIGH); GPIO.digitalWrite (14, GPIO.HIGH); GPIO.digitalWrite (17, GPIO.HIGH); GPIO.digitalWrite (18, GPIO.HIGH); println ("కుడివైపు తిరగండి"); }
అదేవిధంగా అవసరమైన దిశలో మోటార్లు నియంత్రించడానికి మేము X మరియు Y యొక్క స్థానాన్ని తనిఖీ చేయవచ్చు. ఎప్పటిలాగే మీరు పూర్తి ప్రోగ్రామ్ కోసం పేజీ దిగువను చూడవచ్చు.
రాస్ప్బెర్రీ పై బాల్ ట్రాకింగ్ రోబోట్ యొక్క పని:
మీరు హార్డ్వేర్ మరియు ప్రోగ్రామ్తో సిద్ధమైన తర్వాత కొంత ఆనందించండి. మేము మా బోట్ను మైదానంలో పరీక్షించే ముందు, ప్రతిదీ చక్కగా పనిచేస్తుందని నిర్ధారించుకోవాలి. ప్రాసెసింగ్ కోడ్ను పర్యవేక్షించడానికి మరియు ప్రారంభించడానికి మీ పైని కనెక్ట్ చేయండి. మీరు వీడియో ఫీడ్ను చిన్న విండోలో చూడాలి. ఇప్పుడు, బంతిని ఫ్రేమ్ లోపలికి తీసుకురండి మరియు బంతిపై క్లిక్ చేసి రోబోట్ ఈ ప్రత్యేకమైన రంగును ట్రాక్ చేయాలని నేర్పుతుంది. ఇప్పుడు బంతిని స్క్రీన్ చుట్టూ కదిలించండి మరియు చక్రాలు తిరగడాన్ని మీరు గమనించాలి.
ప్రతిదీ expected హించిన విధంగా పనిచేస్తుంటే, బోట్ను నేలమీద విడుదల చేసి దానితో ఆడుకోవడం ప్రారంభించండి. ఉత్తమ ఫలితాల కోసం గది సమానంగా ప్రకాశించేలా చూసుకోండి. ప్రాజెక్ట్ యొక్క పూర్తి పని క్రింది వీడియోలో చూపబడింది. మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు ఇలాంటిదే నిర్మించడాన్ని ఆస్వాదించారని ఆశిస్తున్నాము. మీకు ఏవైనా సమస్యలు ఉంటే వాటిని దిగువ వ్యాఖ్య విభాగంలో పోస్ట్ చేయడానికి సంకోచించకండి లేదా సహాయం చేయండి.