స్వీయ నావిగేట్ రోబోను ఎలా నిర్మించాలి: 7 దశలు

Devar Bhabhi hot romance video देवर à¤à¤¾à¤à¥€ की साथ हॉट रोमाà¤

Devar Bhabhi hot romance video देवर à¤à¤¾à¤à¥€ की साथ हॉट रोमाà¤

విషయ సూచిక:

Anonim

ఇది మొదటి నుండి ప్రారంభమయ్యే రోబోట్‌ను ఎలా గ్రహించాలో మరియు తెలియని వాతావరణంలో స్వయంప్రతిపత్తితో నావిగేట్ చేసే సామర్థ్యాన్ని ఇవ్వడం గురించి వివరణాత్మక ట్యుటోరియల్.
రోబోటిక్స్‌తో సంబంధం ఉన్న అన్ని సాధారణ వాదనలు కవర్ చేయబడతాయి: మెకానిక్స్ , ఎలక్ట్రానిక్స్ మరియు ప్రోగ్రామింగ్ .
రోబోట్ మొత్తం ప్రొఫెషనల్ (అనగా ఖరీదైన) సాధనాలు మరియు పరికరాలు లేకుండా ఇంట్లో ఎవరైనా తయారుచేసేలా రూపొందించబడింది.
మెదడు బోర్డు (dsNav ) ఎన్కోడర్ మరియు మోటారు కంట్రోలర్ సామర్థ్యాలతో మైక్రోచిప్ dsPIC33 DSC పై ఆధారపడి ఉంటుంది. ఈ స్థానం బాహ్య సూచన లేకుండా (డెడ్ లెక్కింపు) ఓడోమెట్రీ (ఎన్కోడర్) ద్వారా లెక్కించబడుతుంది.
చివరి సంస్కరణలో సెన్సార్లను (ఆర్డునో) నియంత్రించడానికి మరియు అనలాజిక్ సెన్సార్లను (పిఎస్ఓసి) నిర్వహించడానికి మరికొన్ని నియంత్రికలను ఉపయోగిస్తారు.

సామాగ్రి:

దశ 1: ప్రాథమిక వేదిక

ప్రొఫెషనల్ టూల్స్ లేదా పరికరాల అవసరాలు లేకుండా మరియు యాంత్రిక పనులపై ప్రత్యేక నైపుణ్యం లేకుండా, ప్రతిచోటా సులభంగా కనుగొనగలిగే భాగాలు మరియు భాగాలతో చాలా సరళమైన రోబోటిక్ ప్లాట్‌ఫామ్‌ను ఎలా నిర్మించాలో ఉదాహరణ.
బేస్ యొక్క పరిమాణం అనేక రకాల రోబోటిక్ పోటీలలో దాని ఉపయోగాన్ని అనుమతిస్తుంది: ఎక్స్‌ప్లోరర్, లైన్ ఫాలోయర్, కెన్ కలెక్టర్, మొదలైనవి.

దశ 2: మనం ఏమి పొందాలనుకుంటున్నాము? మరి ఎలా?

ఈ రోబోట్, అభిరుచులు నిర్మించిన చాలా రోబోట్లు, అవకలన స్టీరింగ్ వ్యవస్థపై ఆధారపడి ఉంటాయి, ఏ క్షణంలోనైనా రోబోట్ యొక్క స్థానం కోఆర్డినేట్‌లను తెలుసుకోవడానికి వీలు కల్పిస్తుంది, ప్రతి చక్రం కప్పబడిన స్థలాన్ని క్రమానుగతంగా తగినంత ఖచ్చితత్వంతో తెలుసుకోవడం.
ఈ డెడ్ లెక్కింపు నావిగేషన్ సిస్టమ్ సంచిత లోపం ద్వారా ప్రభావితమవుతుంది; సుదీర్ఘ మార్గం తర్వాత చిన్న లోపం వృత్తాన్ని నిర్ధారించడానికి కొలిచే ఖచ్చితత్వం ఎక్కువగా ఉండాలి. కాబట్టి, ఇంట్లో తయారుచేసిన ఎన్‌కోడర్‌లతో కొన్ని మంచి ఫలితాల తరువాత, నేను మంచిదాన్ని ఉపయోగించాలని నిర్ణయించుకున్నాను: 12V-200 ఆర్‌పిఎమ్ గేర్డ్ మోటార్లు, 300 కౌంట్ పర్ రివల్యూషన్ (సిపిఆర్) ఎన్‌కోడర్‌లకు అనుసంధానించబడి ఉన్నాయి, రెండూ చాలా ఇంటర్నెట్ రోబోటిక్స్ షాపులలో లభిస్తాయి.
ప్రాథమిక సూత్రాలు
4x డీకోడింగ్ పద్ధతిలో (120 kHz) 3000 ఆర్‌పిఎమ్ మోటారుపై 300 సిపిఆర్ ఎన్‌కోడర్ ద్వారా ఉత్పత్తి చేయబడిన అన్ని పప్పులను పట్టుకోవడానికి, ప్రతి ఎన్‌కోడర్ (క్యూఇఐ = క్వాడ్రేచర్ ఎన్‌కోడర్ ఇంటర్ఫేస్) కోసం మాకు ప్రత్యేకమైన హార్డ్‌వేర్ అవసరం. డబుల్ PIC18F2431 తో కొంతమంది ప్రయోగాలు చేసిన తరువాత, సరైన అప్‌గ్రేడ్ dsPIC కి ఉందని నేను గుర్తించాను. ప్రారంభంలో వారు చక్రాల స్థానం మరియు వేగాన్ని నియంత్రించడానికి, ఓడోమెట్రీని నిర్వహించడానికి మరియు రెండు మోటారుల డేటాను dsPIC30F3013 కు అందించడానికి రెండు dsPIC30F4012 మోటార్ కంట్రోలర్లు. ఈ సాధారణ ప్రయోజనం DSC డేటాను పొందటానికి తగినంత శక్తివంతమైనది, స్థానం కోఆర్డినేట్‌లను లెక్కించడానికి కొన్ని త్రికోణమితి చేయండి మరియు ఫీల్డ్ యొక్క మ్యాప్‌ను పొందటానికి కవర్ చేయబడిన మార్గానికి సంబంధించిన డేటాను నిల్వ చేస్తుంది, అన్నీ చాలా ఎక్కువ రేటుతో.
బోర్డు మరియు కార్యక్రమాలు దాదాపుగా పూర్తయినప్పుడు, మైక్రోచిప్ మోటారు కంట్రోలర్ (MC) మరియు సాధారణ-ప్రయోజన (GP) సంస్కరణల కోసం dsPIC33F సిరీస్‌లో కొత్త, శక్తివంతమైన 28-పిన్ SPDIP ని తీసుకువచ్చింది. అవి dsPIC30F కన్నా చాలా వేగంగా ఉంటాయి, అవి చాలా ఎక్కువ ప్రోగ్రామ్ మెమరీ మరియు RAM (ఫీల్డ్ మ్యాపింగ్‌కు ఉపయోగపడతాయి) కలిగి ఉంటాయి, వాటికి తక్కువ శక్తి అవసరం (బ్యాటరీతో పనిచేసే రోబోట్‌కు మంచిది), మరియు వారి DMA సామర్థ్యాలు అనేక I / O ఆపరేషన్లను సులభతరం చేస్తాయి.
మరీ ముఖ్యంగా, ఒకే చిప్‌లో రెండు క్యూఇఐలతో కూడిన మొదటి మైక్రోచిప్ మోటార్ కంట్రోలర్లు ఇవి. మళ్ళీ కొత్త పోర్టును ప్రారంభిద్దాం! ది లాజికల్ బ్లాక్ రేఖాచిత్రం మునుపటి బోర్డ్ మాదిరిగానే ఉంటుంది , కానీ హార్డ్‌వేర్ మరియు సాఫ్ట్‌వేర్ అప్పటి నుండి చాలా సరళంగా ఉంటాయి నేను ఒక DSC ను మూడు ఇన్‌స్టెడ్ మాత్రమే ఉపయోగించగలను . నావిగేషన్ పారామితులను మార్పిడి చేయడానికి పర్యవేక్షకుడు మరియు మోటారు నియంత్రికల మధ్య హై-స్పీడ్ కమ్యూనికేషన్ అవసరం లేదు. ప్రతి ప్రక్రియ సమకాలీకరించడం చాలా సులభం ఎందుకంటే ఇది ఒకే చిప్‌లో ఉంది. DsPIC33F సిరీస్ యొక్క పరిధీయ పిన్ ఎంపిక సామర్ధ్యం PCB ని మరింత సులభతరం చేస్తుంది, ఇది పెరిఫెరల్స్ యొక్క అంతర్గత అనుసంధానం మరియు ఎక్కువ సౌలభ్యాన్ని అనుమతిస్తుంది.
ఇది మమ్మల్ని “dsPIC ఆధారిత నావిగేషన్ కంట్రోల్ బోర్డు” కి తీసుకువస్తుంది dsNavCon సంక్షిప్తంగా. ఈ బోర్డు మరింత క్లిష్టమైన వ్యవస్థలో భాగంగా రూపొందించబడింది. పూర్తి ఎక్స్‌ప్లోరర్ రోబోట్‌లో, ఇతర బోర్డులు ధ్వని, కాంతి, గ్యాస్ సెన్సార్లు, అలాగే బంపర్లు మరియు అల్ట్రాసోనిక్ రేంజ్ ఫైండర్‌లను లక్ష్యాలను కనుగొని అడ్డంకులను నివారించడానికి నియంత్రిస్తాయి.
స్వతంత్ర బోర్డుగా, dsNavCon సరళమైన “లైన్ ఫాలోయర్” రోబోట్ కోసం కూడా ఉపయోగించవచ్చు, ఓడోమెట్రీ మరియు డెడ్-లెక్కింపు పోటీ కోసం రోబోట్ వంటి సంక్లిష్టమైనది లేదా “కెన్ కెన్ రోబోట్” (పోటీలను సేకరించవచ్చు). అటువంటి పనుల కోసం కోడ్‌ను జోడించడానికి ఉచిత ప్రోగ్రామ్ మెమరీ ఇంకా చాలా ఉంది. సాఫ్ట్‌వేర్‌లో చిన్న లేదా మార్పులు లేకుండా, రిమోట్ కంట్రోల్డ్ వాహనం కోసం దీనిని స్వతంత్రంగా ఉపయోగించవచ్చు, ఒక రకమైన స్మార్ట్ రిమోట్ కంట్రోల్‌తో ద్వి దిశాత్మక RF మోడెమ్‌ను ఉపయోగిస్తుంది. ఈ రిమోట్ కంట్రోల్ “FWD 1m ని తరలించు,” “15 ° ఎడమవైపు తిరగండి,” “50 cm / s వద్ద FWD ని అమలు చేయండి,” “X, Y కోఆర్డినేట్‌లకు వెళ్లండి” లేదా ఇలాంటిదే వంటి క్లిష్టమైన ఆదేశాలను పంపగలదు.
బోర్డు మరియు రోబోట్ కూడా ప్రొఫెషనల్ టూల్స్ మరియు పరికరాలు లేకుండా ఇంట్లో ఎవరైనా తయారుచేసేలా రూపొందించబడ్డాయి.

దశ 3: ఓపెన్ సోర్స్ హార్డ్‌వేర్

బ్లాక్ రేఖాచిత్రం
నావిగేషన్ కంట్రోల్ ఉపవ్యవస్థ dsNav సిస్టమ్ యొక్క "స్మార్ట్" బోర్డ్ మరియు సన్నద్ధమైన 12 వి మోటార్లు (హెసియాంగ్ నెంగ్ హెచ్ఎన్-జిహెచ్ 12-1634 టిఆర్) ను నియంత్రించడానికి ఎల్ 298 ఆధారిత డ్యూయల్ హెచ్-బ్రిడ్జ్ బోర్డ్. మోషన్ ఫీడ్‌బ్యాక్ 300 సిపిఆర్ ఎన్‌కోడర్‌ల (యుఎస్ డిజిటల్ ఇ 4 పి -300-079-హెచ్‌టి) నుండి వస్తుంది.
బాహ్య ప్రపంచంతో కమ్యూనికేషన్ రెండు UART సీరియల్ ఇంటర్‌ఫేస్‌ల ద్వారా జరుగుతుంది; ఒకటి టెలిమెట్రీ కోసం మరియు మరొకటి సెన్సార్లు బోర్డు నుండి డేటాను పొందడం. XBee మాడ్యూల్ UART1 లేదా UART2 కు JP1 మరియు JP2 జంపర్స్ ద్వారా కనెక్ట్ చేయవచ్చు. J1 మరియు J16 సాకెట్లు ఇతర రకాల కనెక్షన్ల కోసం అందుబాటులో ఉన్నాయి. COSM1 పోర్ట్ (J16) ను I2C కమ్యూనికేషన్ కోసం కూడా ఉపయోగించవచ్చు, dsPIC33F సిరీస్ యొక్క పరిధీయ పిన్ ఎంపిక సామర్థ్యానికి కృతజ్ఞతలు.
ఈగిల్ ఆకృతిలో అసలు స్కీమాటిక్ రేఖాచిత్రం ఇక్కడ చూడవచ్చు:
http://www.guiott.com/Rino/dsNavCon33/dsNavCon33_Eagle_project/DsPid33sch.zip
మీరు చూడగలిగినట్లుగా, స్కీమాటిక్ చాలా సులభం, నేను చేసినట్లుగా ఇది పెర్ఫ్‌బోర్డ్‌లో అమలు చేయవచ్చు. మీరు ఈ వ్యవస్థను ఉపయోగించకూడదనుకుంటే మరియు మీ స్వంత పిసిబిని గ్రహించకూడదనుకుంటే, నా అసలు పని ఆధారంగా మరియు నా ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్‌తో పూర్తిగా అనుకూలంగా ఉండే వాణిజ్య బోర్డు ఇక్కడ లభిస్తుంది: http: //www.robot-italy .com / product_info.php? products_id = 1564

దశ 4: ఓపెన్ సోర్స్ సాఫ్ట్‌వేర్

సాఫ్ట్‌వేర్ MPLAB® ఉచిత IDE తో అభివృద్ధి చేయబడింది మరియు MPLAB® C30 కంపైలర్‌తో (ఉచిత లేదా విద్యార్థి సంస్కరణలో కూడా) వ్రాయబడింది, రెండూ (వాస్తవానికి) మైక్రోచిప్ చేత:
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=81
మొత్తం ప్రాజెక్ట్ గూగుల్ కోడ్‌లో ఓపెన్ సోర్స్‌గా లభిస్తుంది
http://code.google.com/p/dspid33/
దయచేసి తాజా వెర్షన్, వ్యాఖ్య, వివరణలు మొదలైన వాటి కోసం అక్కడ చూడండి.
ప్రోగ్రామ్ కోడ్ లోపల దశల వారీగా వివరించబడింది. అధిక స్థాయి వ్యాఖ్యానించడానికి మరియు మరింత చదవగలిగే కోడ్‌ను కలిగి ఉండటానికి, ప్రతి ముఖ్యమైన సమయంలో MPLAB ప్రాజెక్ట్‌లోని బాహ్య ఫైల్‌కు (అనగా: descrEng.txt) సూచనగా బ్రాకెట్లలో (ఉదా: 7) సంఖ్య ఉంటుంది. .
రేఖాచిత్రం dsNav బోర్డు యొక్క నియంత్రణ విధానాల యొక్క మొత్తం నిర్మాణాన్ని మరియు ప్రాజెక్ట్ ఆధారంగా వర్తించే నావిగేషన్ వ్యూహాలను చూపిస్తుంది.
మోటారు కంట్రోలర్‌లను చక్రాల వేగాన్ని జాగ్రత్తగా చూసుకునే బ్లాక్ బాక్స్‌లుగా చూడవచ్చు. ప్రోగ్రామ్ యొక్క పర్యవేక్షక భాగం వారికి సూచన వేగాన్ని పంపుతుంది (వెల్డ్‌డెస్ఎక్స్: కావలసిన వేగం). మైక్రోకంట్రోలర్ యొక్క ఇన్పుట్ క్యాప్చర్ మాడ్యూల్స్ మోటారు అక్షంతో అనుసంధానించబడిన ఎన్కోడర్ల నుండి పప్పులను పొందుతాయి మరియు మోటార్లు యొక్క భ్రమణ వేగాన్ని పొందుతాయి (వెల్మెస్ఎక్స్: కొలిచిన వేగం). PID నియంత్రణ "స్పీడ్ PID" లో ప్రతి 1ms ఈ విలువలను కలిపి, ప్రతి సింగిల్ వీల్ యొక్క కావలసిన వేగాన్ని ఉంచడానికి సరైన PWM విలువను పొందుతాము.
QEI (క్వాడ్రేచర్ ఎన్కోడర్ ఇంటర్ఫేస్) గుణకాలు ఎన్‌కోడర్ల నుండి A మరియు B పప్పులను పొందుతాయి మరియు పర్యవేక్షకుడికి తిరిగి ప్రయాణ దిశను మరియు 4x మోడ్‌లోని పప్పుల సంఖ్యను తిరిగి ఇస్తాయి (సిగ్నల్ A మరియు సిగ్నల్ B యొక్క పెరుగుతున్న మరియు పడిపోయే అంచులను లెక్కించడం: 2 x 2 = 4).
ప్రతి సింగిల్ ఎన్కోడర్ పల్స్ కోసం ప్రయాణించిన స్థలాన్ని సూచించే పప్పుల సంఖ్యను K ద్వారా గుణించడం, ప్రతి 10 నిమిషాలకు కుడి మరియు ఎడమ చక్రాల ద్వారా ప్రయాణించే దూరాన్ని మేము పొందుతాము. పర్యవేక్షకుడు ఈ ప్రయాణ సమాచారాలను మిళితం చేస్తాడు మరియు బోట్ యొక్క కొలిచిన స్థానం కోఆర్డినేట్లను పొందటానికి చనిపోయిన లెక్కింపు విధానాన్ని వర్తింపజేస్తాడు: Xmes, Ymes, esMes (ధోరణి కోణం).
పర్యవేక్షకుడు సీరియల్ ఇంటర్ఫేస్ (టెలిమెట్రీ) ద్వారా బయటి నుండి నావిగేషన్ ఆదేశాన్ని అందుకుంటాడు.
విభిన్న వ్యూహాలను అన్వయించవచ్చు:
ఒక - ఇచ్చిన దిశలో ఇచ్చిన వేగంతో ప్రయాణించండి (వెల్డెస్, esDes).
B - కోఆర్డినేట్స్ XDes, YDes తో ఇచ్చిన పాయింట్ వైపు ప్రయాణించండి.
సి - ఇచ్చిన దిశలో ఇచ్చిన దూరం కోసం ప్రయాణించండి (DistDes, esDes).
మోడ్ A. : స్థానం 1 లోని "లాజికల్ కంట్రోల్ స్విచ్‌లు" తో, పర్యవేక్షక ఫంక్షన్ల ద్వారా PID నియంత్రణ "యాంగిల్ పిఐడి" మాత్రమే ఉపయోగించబడుతుంది. ఓరియంటేషన్ లోపాన్ని సరిచేయడానికి అవసరమైన నిలువు అక్షం చుట్టూ వాహనం యొక్క భ్రమణ కోణీయ వేగం of యొక్క విలువను పొందటానికి, ఓడోమెట్రీ విధానం ద్వారా లెక్కించిన కోణం θMes ను కొలిచిన కోణంతో ఇది మిళితం చేస్తుంది.
డెల్టావి విలువ proport కు అనులోమానుపాతంలో ఉంటుంది. ఇది ఎడమ చక్రం యొక్క వేగాన్ని పొందటానికి వెల్‌డెస్‌కు జోడించబడింది మరియు కుడి చక్రం యొక్క వేగాన్ని పొందటానికి వెల్‌డెస్‌కు తీసివేయబడుతుంది, theDes విలువకు అనుగుణంగా శీర్షికను ఉంచడానికి, రోబోట్ యొక్క కేంద్రం ఇప్పటికీ వెల్డెస్ వేగంతో ప్రయాణిస్తున్నప్పుడు.
మోడ్ B. : స్థానం 2 లోని "తార్కిక నియంత్రణ స్విచ్‌లతో", కావలసిన వేగం వెల్‌డెస్‌ను PID నియంత్రణ "Dist PID" చేత లెక్కిస్తారు మరియు ఇది మోడ్ A లో వలె ఉపయోగించబడుతుంది. ఈ PID (DistMes) కోసం కొలిచిన ఇన్‌పుట్ యొక్క విధిగా లెక్కించబడుతుంది ప్రస్తుత అక్షాంశాలు మరియు గమ్యం అక్షాంశాలు. కావలసిన ధోరణి కోణం esDes కూడా అదే విధానం నుండి వస్తుంది మరియు దీనిని "యాంగిల్ పిఐడి" కొరకు రిఫరెన్స్ ఇన్‌పుట్‌గా ఉపయోగిస్తారు. "Dist PID" కోసం రిఫరెన్స్ ఇన్పుట్ 0, అంటే గమ్యం చేరుకుంది. Ω మరియు వెల్‌డెస్ అందుబాటులో ఉన్నందున, చక్రాల వేగం నియంత్రణ మోడ్ A లో నడుస్తుంది.
మోడ్ సి : స్థానం 2 లోని "లాజికల్ కంట్రోల్ స్విచ్‌లు" తో, గమ్యం Xdes ను సమన్వయం చేస్తుంది, Ydes ప్రారంభంలో ఒకసారి ఇన్పుట్ పారామితుల యొక్క విధిగా లెక్కించబడుతుంది DistDes, esDes. ఆ తరువాత ప్రతిదీ B మోడ్‌లో ఉంటుంది

దశ 5: సాఫ్ట్‌వేర్ వివరాలు: స్పీడ్ కంట్రోల్ మరియు ఇతర ప్రాథమిక విధులు

కార్యక్రమం నిండింది అంతరాయం నడపబడుతుంది . ప్రారంభంలో, ప్రారంభించిన తరువాత, ప్రోగ్రామ్ చాలా సరళమైన మెయిన్-లూప్‌లోకి ప్రవేశిస్తుంది, ఇది స్టేట్ మెషీన్‌గా పనిచేస్తుంది. ప్రధాన-లూప్‌లో, ప్రోగ్రామ్ బాహ్య సంఘటనల ద్వారా ప్రారంభించబడిన జెండాలను తనిఖీ చేస్తుంది మరియు ఇది వాటి విలువలకు అనుగుణంగా సాపేక్ష స్థితిలో ప్రవేశిస్తుంది.
ఇది చాలా సరళమైన సహకార రకం కాబట్టి "రియల్ టైమ్ ఆపరేటింగ్ సిస్టమ్ , "ప్రతి దినచర్యను అతి తక్కువ సమయంలో అమలు చేయాలి, చాలా తరచుగా అంతరాయాలను జాగ్రత్తగా చూసుకోవడానికి వ్యవస్థను విముక్తి చేస్తుంది.
“వరకు వేచి ఉండండి” మరియు కోడ్‌లో ఆలస్యం లేదు. సాధ్యమైన అంతరాయాలను ఉపయోగించినప్పుడు, ప్రత్యేకించి ప్రసార లేదా అక్షరాల తీగలను స్వీకరించడం వంటి నెమ్మదిగా చేసే కార్యకలాపాలకు. హార్డ్‌వేర్‌లో అన్ని "డర్టీ" పనిని చేస్తూ CPU సమయాన్ని ఆదా చేయడానికి UART కమ్యూనికేషన్ dsPIC33F యొక్క DMA సామర్థ్యాల యొక్క ప్రయోజనాన్ని తీసుకుంటుంది.
DsPIC33FJ128MC802 లో ఉపయోగించే పెరిఫెరల్స్:
- ప్రయాణ మార్గాన్ని లెక్కించడానికి QEI లు.
- వేగాన్ని లెక్కించడానికి ఇన్‌పుట్ క్యాప్చర్ (ఐసి).
- మోటారు కరెంట్ చదవడానికి A / D కన్వర్టర్లు.
- మోటార్లు నడపడానికి మెరుగైన పిడబ్ల్యుఎంలు.
- బాహ్య ప్రపంచంతో కమ్యూనికేట్ చేయడానికి UART లు
QEI గుణకాలు చక్రాలు ఎంత ప్రయాణించాయో మరియు ఏ దిశలో ఉన్నాయో తెలుసుకోవడానికి ఉపయోగిస్తారు. ఈ విలువ బీజగణితంగా ప్రతి 1ms వేరియబుల్‌లో సంచితం చేయబడుతుంది మరియు దాని అభ్యర్థన మేరకు సూపర్‌వైజర్ ఫంక్షన్లకు పంపబడుతుంది. విలువ పంపిన తరువాత, వేరియబుల్స్ రీసెట్ చేయబడతాయి.
క్రింద వివరించిన విధంగా ప్రతి ఎన్కోడర్ యొక్క పల్స్ వద్ద వేగం కొలుస్తారు. ప్రతి 1ms సగటు నమూనాలను సగటు ద్వారా లెక్కిస్తుంది, PID అల్గోరిథంను అమలు చేస్తుంది మరియు మోటారు వేగాన్ని దాని ఫలితానికి అనుగుణంగా సరిచేస్తుంది, PWM విధి చక్రం మారుతుంది. C30 PID లైబ్రరీ అప్లికేషన్ యొక్క వివరణాత్మక వివరణ కోసం, మైక్రోచిప్ కోడ్ ఉదాహరణ చూడండి: CE019 - క్లోజ్డ్-లూప్ కంట్రోల్ సిస్టమ్స్‌లో ప్రొపార్షనల్ ఇంటిగ్రల్ డెరివేటివ్ (PID) కంట్రోలర్‌లను ఉపయోగించడం. http://ww1.microchip.com/downloads/en/DeviceDoc/CE019_PID.zip
ఓడొమెట్రీలో లోపాలను కలిగించే భారీ యాంత్రిక ఒత్తిడి మరియు చక్రాల జారడం నివారించడానికి, మోటారుల యొక్క వేగ వైవిధ్యాలు సజావుగా అమలు చేయబడతాయి, పెరుగుతున్న లేదా పడిపోయే స్లాంట్ రాంప్‌తో వేగవంతం లేదా క్షీణించడం. బ్రేకింగ్ సమయంలో అడ్డంకులతో గడ్డలను నివారించడానికి త్వరణం వేగంగా ఉంటుంది.
IC , ఎన్కోడర్ ద్వారా ఉత్పత్తి చేయబడిన రెండు పప్పుల మధ్య గడిచిన సమయాన్ని కొలవడానికి ఇన్పుట్ క్యాప్చర్ మాడ్యూల్స్ ఉపయోగించబడతాయి, దీని అర్థం చక్రాలు బాగా తెలిసిన స్థిర స్థలం (స్థిరంగా) కోసం ప్రయాణించినప్పుడు SPACE_ENC ). QEA కి సమాంతరంగా అనుసంధానించబడి ఉంది (dsPIC33F యొక్క పెరిఫెరల్ పిన్ ఎంపిక సామర్థ్యాలకు అంతర్గతంగా DSC కృతజ్ఞతలు), అవి ఎన్‌కోడర్ సిగ్నల్స్ పెరుగుతున్న అంచున గడిచిన సమయాన్ని సంగ్రహిస్తాయి. TIMER2 ఫ్రీ-రన్నింగ్ మోడ్‌లో ఉపయోగించబడుతుంది. ప్రతి IC అంతరాయం వద్ద, TMR2 యొక్క ప్రస్తుత విలువ నిల్వ చేయబడుతుంది మరియు దాని మునుపటి విలువ దాని నుండి తీసివేయబడుతుంది; ఇది పల్స్ కాలం. అప్పుడు ప్రస్తుత విలువ మునుపటి విలువ అవుతుంది, తదుపరి అంతరాయం కోసం వేచి ఉంది. 16-బిట్ రిజిస్టర్‌లో ఓవర్‌ఫ్లో జరిగిందో లేదో తెలుసుకోవడానికి TMR2 యొక్క జెండాను తనిఖీ చేయాలి. అవును అయితే, 0xFFFF మరియు మునుపటి నమూనా మధ్య వ్యత్యాసం ప్రస్తుత విలువకు జోడించాలి. నమూనాలను బీజగణితంగా చేర్చారు IcPeriod ప్రకారం వేరియబుల్ _UPDN బిట్, వేగం దిశను కూడా నిర్ణయించడానికి. లో సూచించిన పద్ధతుల్లో ఇది ఒకటి మైక్రోచిప్ అప్లికేషన్ నోట్ AN545 .
వేరియబుల్ IcIndx జోడించిన నమూనాల సంఖ్యను కలిగి ఉంది IcPeriod .
ప్రతి 1ms సగటు వేగం ఇలా లెక్కించబడుతుంది V = స్పేస్ / సమయం
ఎక్కడ స్పేస్ = SPACE_ENC • IcIndx
(= ఒక ఎన్కోడర్ పల్స్‌లో కవర్ చేసిన పప్పులు pul పప్పుల సంఖ్య)
మరియు సమయం = TCY • IcPeriod
(= ఒకే TMR కాలం period కాలాల సమ్మషన్ సంభవించింది).
Single_TMR_period = TCY = 1 / FCY (గడియార పౌన .పున్యం).
కాబట్టి V = Kvel • (IcIndx / IcPeriod)
ఎక్కడ Kvel = SPACE_ENC FCY • m / s లో వేగం కలిగి ఉండటానికి.
షిఫ్టింగ్ ఎడమ 15 బిట్స్ Kvel const ( KvelLong = Kvel << 15 ) వేగం ఇప్పటికే పాక్షిక ఆకృతిలో లెక్కించబడుతుంది (పూర్ణాంక వేరియబుల్స్ మాత్రమే ఉపయోగించినప్పటికీ) PID దినచర్యలో ఉపయోగించడానికి సిద్ధంగా ఉంది. మరింత వివరణాత్మక వివరణ కోసం MPLAB ప్రాజెక్ట్‌లోని “descrEng.txt” ఫైల్ చూడండి.
A / D కన్వర్టర్లు మోటార్లు కరెంట్‌ను నిరంతరం కొలవండి, 16 స్థానాల్లో విలువలను నిల్వ చేస్తుంది ADCBUF బఫర్‌లు. బఫర్‌లు నిండినప్పుడు, అంతరాయం ఏర్పడుతుంది మరియు సగటు విలువ ప్రతి 1 మి.లకు లెక్కించబడుతుంది.
UARTs బయటి నుండి ఆదేశాలను స్వీకరించడానికి మరియు కొలతల ఫలితాలను తిరిగి పంపడానికి ఉపయోగిస్తారు. కార్యక్రమం యొక్క కమ్యూనికేషన్ భాగం స్టేట్ మెషీన్‌గా నడుస్తుంది. చర్యలను క్రమంలో అమలు చేయడానికి స్థితి వేరియబుల్స్ ఉపయోగించబడతాయి. చాలా సరళమైన మరియు వేగవంతమైన అంతరాయ సేవా నిత్యకృత్యాలు (ISR) ప్రతి బైట్ నుండి లేదా బఫర్ నుండి పొందండి లేదా ఉంచండి మరియు సరైన పనితీరును అమలు చేయడానికి సరైన జెండాలను సెట్ చేయండి.
స్వీకరించేటప్పుడు (UART, చెక్‌సమ్, పార్సింగ్ లోపాలు) ఏదైనా లోపం సంభవించినట్లయితే, స్థితి వేరియబుల్ ప్రతికూల సంఖ్యకు సెట్ చేయబడుతుంది మరియు ఈ తప్పు పరిస్థితిని బాహ్యంగా కమ్యూనికేట్ చేయడానికి రెడ్ లీడ్ శక్తితో ఉంటుంది. సాధ్యమయ్యే లోపాల పూర్తి జాబితా కోసం MPLAB ప్రాజెక్ట్‌లోని “descrEng.txt” ఫైల్ చూడండి.
హ్యాండ్‌షేక్ కోసం ఉపయోగించే ప్రోటోకాల్ భౌతిక పొర స్వతంత్ర , మరియు I2C లేదా RS485 బస్సుతో కమ్యూనికేట్ చేయడానికి కూడా ఉపయోగించవచ్చు.
ది మొదటి పొర dsPIC పరిధీయ ఇంటర్ఫేస్ ద్వారా నియంత్రించబడుతుంది. ఫ్రేమ్ లేదా ఓవర్‌రన్ లోపాలు (UART) లేదా గుద్దుకోవటం (I2C) హార్డ్‌వేర్ ద్వారా గుర్తించబడతాయి, తగిన జెండాను సెట్ చేస్తాయి.
ది రెండవ పొర ISR నిత్యకృత్యాలచే నిర్వహించబడుతుంది. అవి RX బఫర్‌ను ఇంటర్‌ఫేస్‌ల నుండి అందుకున్న బైట్‌లతో నింపుతాయి. వారు బఫర్ ఓవర్ఫ్లో మరియు కమాండ్ ఓవర్రన్ ను కూడా కనుగొంటారు.
UartRx లేదా UartRx2 విధులు నిర్వహిస్తాయి మూడవ పొర . ఇప్పటికే వివరించినట్లుగా (ఫ్లో చార్ట్‌లను కూడా చూడండి) ఈ నిత్యకృత్యాలు స్టేట్ మెషీన్‌గా పనిచేస్తాయి, బఫర్ నుండి బైట్‌లను పొందడం మరియు కమాండ్ స్ట్రింగ్‌ను డీకోడ్ చేయడం.
వృత్తాకార బఫర్ ద్వారా బైట్లు రెండవ మరియు మూడవ పొరల (ISR మరియు UartRx ఫంక్షన్) మధ్య మార్పిడి చేయబడతాయి. ISR ఒక బైట్‌ను అందుకుంటుంది, దానిని శ్రేణిలో నిల్వ చేస్తుంది మరియు శ్రేణికి పాయింటర్‌ను పెంచుతుంది, పాయింటర్ శ్రేణి ముగింపుకు చేరుకుంటే అది ప్రారంభానికి పున ar ప్రారంభించబడుతుంది. ప్రస్తుత RX స్థితిలో బైట్ డీకోడ్ అయిన వెంటనే అదే శ్రేణిని చదవడానికి UartRx ఫంక్షన్ దాని స్వంత పాయింటర్‌ను కలిగి ఉంది (వృత్తాకార మార్గంలో కూడా). "ఇన్" పాయింటర్ "అవుట్" పాయింటర్ నుండి భిన్నంగా ఉన్నప్పుడు ప్రధాన లూప్ UartRx ఫంక్షన్‌ను పిలుస్తుంది.
ప్రతి కమాండ్ ప్యాకెట్ వీటిని కలిగి ఉంటుంది:
0 - శీర్షిక @
1 - ID 0-9 ASCII
2 - Cmd A-Z ASCII
3 - CmdLen N = 1-MAX_RX_BUFF # బైట్లు క్రిందివి (చెక్‌సమ్ చేర్చబడ్డాయి)
4 - డేటా …

N-1 - డేటా
N - చెక్‌సమ్ 0-255 కేవలం 8 బిట్స్ వేరియబుల్‌లో జోడించడం ద్వారా పొందబడుతుంది, సందేశాన్ని కంపోజ్ చేసే అన్ని బైట్లు (చెక్‌సమ్ కూడా మినహాయించబడింది).
ఈ పొర సమయం ముగిసింది మరియు చెక్‌సమ్ లోపాలను, అలాగే ప్యాకెట్ అనుగుణ్యతను నియంత్రిస్తుంది (సరైన శీర్షిక, సరైన పొడవు). ప్రతిదీ సరిగ్గా ఉంటే అది పార్సర్ దినచర్యను ప్రారంభిస్తుంది (నాల్గవ పొర ) సందేశాన్ని డీకోడ్ చేయడానికి మరియు అవసరమైన చర్యను అమలు చేయడానికి. అందుకున్న సందేశ కోడ్ తెలియకపోతే ఈ దినచర్య తగిన దోష పతాకాన్ని సెట్ చేస్తుంది.
TMR1 ప్రోగ్రామ్ యొక్క హృదయ స్పందన - 1000 Hz టైమింగ్ గడియారాన్ని ఉత్పత్తి చేస్తుంది. ప్రతి TMR1 యొక్క అంతరాయంలో, అంతర్గత టైమర్‌లు నవీకరించబడతాయి, వాచ్‌డాగ్ క్లియర్ చేయబడుతుంది మరియు ప్రయాణించిన స్థల విలువను అడిగే ఫంక్షన్‌ను ప్రారంభించడానికి ఒక జెండా సెట్ చేయబడింది. ప్రతి 10ms “All_Parameters_Ask” ఫంక్షన్ (వేగం, స్థానం, ప్రస్తుత) ప్రారంభించబడుతుంది.

దశ 6: సాఫ్ట్‌వేర్ వివరాలు: ఓడోమెట్రీ మరియు ఫీల్డ్ మ్యాపింగ్ = నేను ఎక్కడ ఉన్నాను?

DSC లేదా MCU ఆధారిత వ్యవస్థలో ఉపయోగం కోసం సాధారణ అల్గోరిథం యొక్క ఆప్టిమైజేషన్
వివిక్త-సమయ నవీకరణ (ఓడోమెట్రీ) లో ప్రతి చక్రం ప్రయాణించిన దూరం గురించి మాకు సమాచారం వచ్చిన తర్వాత, రోబోట్ యొక్క స్థానం కోఆర్డినేట్‌లను అదే ఆవర్తనంతో ఎటువంటి బాహ్య సూచన లేకుండా (డెడ్ లెక్కింపు) అంచనా వేయవచ్చు.
ఓడోమెట్రీ ద్వారా చనిపోయిన లెక్కల గురించి కొన్ని సైద్ధాంతిక నేపథ్యం జోహాన్ బోరెన్‌స్టెయిన్ రాసిన పుస్తకంలో చూడవచ్చు:
"నేను ఎక్కడ ఉన్నాను? - మొబైల్ రోబోట్ పొజిషనింగ్ కోసం సెన్సార్లు మరియు పద్ధతులు"
మరియు క్రింది వెబ్ పేజీలలో:
http://www.seattlerobotics.org/encoder/200010/dead_reckoning_article.html
గణిత నేపథ్యం మరియు ఉపయోగించిన సాధారణ పద్ధతి యొక్క లోతైన వివరణ జి.డబ్ల్యు. లూకాస్ పేపర్ రోబోట్ వీల్ యాక్యుయేటర్స్ యొక్క డిఫరెన్షియల్ స్టీరింగ్ సిస్టమ్ కోసం ట్యుటోరియల్ మరియు ఎలిమెంటరీ ట్రాజెక్టరీ మోడల్, ఇంటర్నెట్‌లో అందుబాటులో ఉంది:
http://rossum.sourceforge.net/papers/DiffSteer/DiffSteer.html
కొన్ని సరళీకృత అల్గోరిథంలు అదే డాక్యుమెంటేషన్‌లో కూడా చూడవచ్చు, కాబట్టి dsPIC33F సిరీస్ యొక్క గణిత (త్రికోణమితి) సామర్థ్యాన్ని ఉపయోగించి, ఖచ్చితత్వం మరియు విస్తరణ వేగం మధ్య సరైన రాజీ పొందడం సాధ్యమవుతుంది.
స్థానం లెక్కించడానికి ఉపయోగించే గణితాల వివరణ ఈ దశకు జోడించిన చిత్రాలలో చూడవచ్చు. మొదటిది చిహ్నాల అర్థాన్ని చూపిస్తుంది, రెండవది ఆ చిహ్నాలతో ఉపయోగించిన సూత్రాలను చూపుతుంది. ప్రతి గణన దశ పక్కన ఉన్న పెట్టెలను క్లిక్ చేస్తే క్లుప్త వివరణ చూపబడుతుంది.
చివరికి, రోబోట్ ఆ సమయ వ్యవధిలో ధోరణి యొక్క డెల్టాగా, X అక్షంపై డెల్టాగా మరియు కార్తేసియన్ రిఫరెన్స్ ఫీల్డ్‌లో Y అక్షంపై డెల్టాగా ఎంత కదిలిందో మనకు తెలుసు.
ప్రతి డెల్టా-విలువను దాని స్వంత వేరియబుల్‌లో కూడబెట్టుకోవడం ప్లాట్‌ఫాం యొక్క ప్రస్తుత అక్షాంశాలు (స్థానం మరియు ధోరణి) మనకు తెలుసు.
గణన లోపాలను (సున్నా ద్వారా విభజించడం) మరియు నియంత్రిక సమయాన్ని వృథా చేయకుండా ఉండటానికి, Sr మరియు Sl వేరియబుల్స్ రెండింటిపై ముందుగానే చెక్ చేయాలి. కనీస యాంత్రిక మరియు గణన ఉజ్జాయింపులను జాగ్రత్తగా చూసుకునే పాక్షిక-సున్నా విలువను నిర్వచించడం, రోబోట్ సరళ రేఖలో ప్రయాణిస్తుంటే మేము సూత్రాలను సరళీకృతం చేయవచ్చు (కుడి చక్రం కప్పబడిన స్థలం ఎడమ చక్రం ప్రయాణించిన స్థలానికి సమానంగా ఉంటుంది) లేదా దాని నిలువు అక్షం చుట్టూ తిరిగేటప్పుడు (కుడి చక్రం కప్పబడిన స్థలం ఎడమ చక్రం ప్రయాణించిన స్థలానికి సమానంగా ఉంటుంది, కానీ వ్యతిరేక దిశలో ఉంటుంది), చివరి చిత్రంలో చూపిన ఫ్లో చార్టులో వివరించినట్లు.

ఈ వీడియో మనం ఏ ఖచ్చితత్వాన్ని పొందవచ్చో ఒక ఉదాహరణ చూపిస్తుంది:
http://www.youtube.com/watch?v=d7KZDPJW5n8


ఫీల్డ్ మ్యాపింగ్
మునుపటి ఫంక్షన్ల ద్వారా లెక్కించిన డేటాతో ఫీల్డ్ మ్యాపింగ్ జరుగుతుంది.
ప్రతి Xms, ప్రస్తుత స్థానం విస్తరణ తరువాత, తెలియని ఫీల్డ్‌ను 10 x 10cm కణాల గ్రిడ్‌లో విభజించి ఫీల్డ్ మ్యాపింగ్ నిర్వహిస్తారు. 5 x 5 మీ గరిష్ట క్షేత్ర పరిమాణాన్ని నిర్వచించి, మేము 50 x 50 = 2500 కణాల మాతృకను పొందుతాము. ప్రతి కణం ఒక నిబ్బెల్‌తో నిర్వచించబడింది, మొత్తం మెమరీ వృత్తి 1250 బైట్లు. ప్రతి కణానికి పదహారు వేర్వేరు విలువలను కేటాయించవచ్చు:
n = 00 తెలియని సెల్
n = 01 - 10 సెల్ n సార్లు సందర్శించారు
n = 11 అడ్డంకి కనుగొనబడింది
n = 12 గ్యాస్ లక్ష్యం కనుగొనబడింది
n = 13 తేలికపాటి లక్ష్యం కనుగొనబడింది
n = 14 ధ్వని లక్ష్యం కనుగొనబడింది
రోబోట్ ఫీల్డ్‌లోని ఏ స్థానం నుండి అయినా ప్రారంభించవచ్చు; ఇవి దాని రిఫరెన్స్ సిస్టమ్‌లో రిఫరెన్స్ కోఆర్డినేట్స్ (0,0) గా ఉంటాయి.
తెలియని ఫీల్డ్‌లో ఉత్తమ అన్వేషించే వ్యూహాన్ని కనుగొనడానికి ఫీల్డ్ మ్యాపింగ్ ఉపయోగపడుతుంది. రోబోట్ క్షేత్రం యొక్క తక్కువ అన్వేషించబడిన భాగానికి (తక్కువ “n” విలువ) దారి తీస్తుంది, ఇప్పటికే కనుగొన్న లక్ష్యంలో రెండుసార్లు ఆగకుండా సమయాన్ని ఆదా చేస్తుంది, ఇచ్చిన సమన్వయాన్ని చేరుకోవడానికి ఉత్తమమైన మార్గాన్ని కనుగొనగలదు మరియు మరిన్ని.

దశ 7: రిమోట్ కన్సోల్

బ్లాక్ రేఖాచిత్రంలో వివరించిన విధంగా కొన్ని XBee పరికరాల ద్వారా సీరియల్ కమ్యూనికేషన్ ద్వారా Mac / PC నుండి dsNavCon బోర్డ్‌ను రిమోట్‌గా నియంత్రించే అనువర్తనం ఇది.
అభివృద్ధి చెందడానికి మరియు ఏదైనా ఆపరేటింగ్ సిస్టమ్‌లో అమలు చేయడానికి మంచిగా ఉండటానికి, ఇది వ్రాయబడింది ప్రోసెసింగ్ భాష:
http://www.processing.org/
ఈ ప్రోగ్రామ్ యొక్క సోర్స్ కోడ్ గూగుల్ కోడ్‌లో ఓపెన్ సోర్స్‌గా అందుబాటులో ఉంది:
http://code.google.com/p/dsnavconconsole/
తో ప్రధాన ప్యానెల్ (మొదటి చిత్రాలు) మేము కాన్ఫిగర్ చేయగల పరిమాణ క్షేత్రంలో రోబోట్ (ఓడోమెట్రీ అంచనా ప్రకారం) అనుసరించే మార్గాన్ని గ్రిడ్‌లో చూడటం ద్వారా టెలిమెట్రీని చేయవచ్చు మరియు కొన్ని ఇతర ముఖ్యమైన విలువలను చదవవచ్చు dsNav .
కొలతలు కొలిచిన విలువలను చూపుతాయి:
- +/- 500 మిమీ / సె పరిధిలో మెస్‌స్పీడ్, రెండు చక్రాల వేగం యొక్క సగటు విలువ (ప్లాట్‌ఫాం మధ్యలో వేగం).
- mA లో కొలిచిన కరెంట్ (రెండు మోటార్లు నుండి ప్రస్తుత మొత్తం).
- ఓడోమెట్రీ ద్వారా నిర్మూలించబడిన కొలత కోణం.
రోబోట్ యొక్క పారామితులను కాన్ఫిగర్ చేయడానికి మరియు అనుసరించడానికి నిర్వచించిన మార్గాన్ని రోబోట్‌లో నిల్వ చేయడానికి ఇతర ప్యానెల్లు ఉపయోగించబడతాయి (అవసరమైతే). ఒక ముఖ్యమైన ప్యానెల్, కనీసం రోబోట్ అభివృద్ధి సమయంలో, ది వివరాలు ప్యానెల్ (రెండవ చిత్రం) ప్రతి చక్రం యొక్క వేగాన్ని నిజ సమయంలో చూపిస్తుంది, ఇది అన్ని పారామితుల క్రమాంకనం కోసం చాలా ఉపయోగకరంగా ఉంటుంది.
సెంట్రల్ గ్రిడ్ వీక్షణను వెబ్‌క్యామ్ దృష్టితో నియంత్రించవచ్చు, వీక్షణ ద్వారా కూడా, రోబోట్ అనుసరిస్తున్న మార్గం.
ఈ కన్సోల్ కోసం ఉపయోగం యొక్క ఆచరణాత్మక ఉదాహరణ ఈ వీడియోలో చూపబడింది:
http://www.youtube.com/watch?v=OPiaMkCJ-r0