Orodha ya maudhui:

Kuelewa Mchanganyiko wa Kituo: Hatua 4 (na Picha)
Kuelewa Mchanganyiko wa Kituo: Hatua 4 (na Picha)

Video: Kuelewa Mchanganyiko wa Kituo: Hatua 4 (na Picha)

Video: Kuelewa Mchanganyiko wa Kituo: Hatua 4 (na Picha)
Video: ONGEZA NGUVU ZA KIUME | masaa 3 Bila kuchoka | WANAUME TU HII 2024, Julai
Anonim
Image
Image
Changanya Njia »Hakuna
Changanya Njia »Hakuna

Ikiwa umewahi kuendesha chasisi ya kudhibiti kijijini, kuna nafasi nzuri umetumia kuchanganya, hata ikiwa haujui. Hasa, ikiwa umetumia fimbo moja ya kufurahisha au gimble kudhibiti gari ambalo linatumia uendeshaji wa skid au uendeshaji tofauti, umetumia kuchanganya.

Kuchanganya ni jinsi tu data kutoka kwa fimbo yako ya furaha inatumiwa kuamua ni nguvu ngapi inapaswa kutolewa kwa kila upande wa chasisi.

Ikiwa utafungua fimbo ya kufurahisha, kwa jumla utaona vijisenti viwili ndani. Moja kupima msimamo wako wa sasa kando ya mhimili Y (juu na chini), na nyingine kupima mahali ulipo kando ya mhimili wa X (upande kwa upande).

Ingawa sina mafunzo rasmi juu ya somo nililazimika kuchanganya msimbo kabla na hivi karibuni nilitaka kuzama kidogo ndani ya somo.

Kwanza nataka kutambua kuwa wasambazaji wengi wa RC wana uwezo wa kuchanganya kama watawala wengi wa magari. Habari hii itakuwa muhimu sana ikiwa itabidi ujichanganye mwenyewe katika nambari yako. Sema kwa mfano ikiwa unatumia Arduino kusoma data isiyochanganywa kutoka kwa mpokeaji wa RC, au unasoma data ya analojia kutoka kwenye sufuria kwenye shimo la kufurahisha, au ikiwa unasoma kuratibu kutoka kwa kiboreshaji cha dijiti kwenye programu ya rununu.

Wacha tuangalie njia tofauti za kuchanganya.

Hatua ya 1: Changanya Njia »Hakuna

Kwanza hebu tuangalie kinachotokea ikiwa hutumii kuchanganya kabisa. Ikiwa utatuma data kutoka kwa mhimili mmoja kwenda upande mmoja wa chasisi na mhimili mwingine kwenda upande mwingine, gari lako halingejibu jinsi unavyotaka.

Kwa mfano ikiwa unasukuma fimbo ya kufurahisha njia moja kwa moja mbele, mhimili wa Y uko kamili na mhimili wa X uko kwa 0. Kwa hivyo ungekuwa unaendesha duru badala ya kwenda sawa.

Hatua ya 2: Njia ya Njia »Zungusha

Njia ya Njia »Mzunguko
Njia ya Njia »Mzunguko

Mfanyakazi mwenzangu mara moja aliniambia kwamba, katika pinch unaweza kuzunguka digrii yako ya kusambaza kwa mchanganyiko wa mtu masikini. Ikiwa unafikiria juu ya maadili kutoka kwa potentiometers mbili kwenye fimbo ya kufurahisha kama kuwa mhimili x kwenye y gridi (pamoja na mhimili -100 hadi 100) hii inaleta maana sana kwa sababu utaenda +100 kwenye mhimili wote unapoendelea kushinikiza fimbo ya kufurahisha juu na kulia. Kwa hivyo ikiwa ramani hii moja kwa moja kwenye chaneli zako mbili za chasisi (pande za kushoto na kulia za roboti yako) itafanya roboti yako isonge mbele.

Kwa hivyo njia ya kwanza ya kuchanganya niliyowahi kujaribu ilikuwa kuzungusha hesabu x na y kuratibu digrii 45 juu ya kituo cha gridi.

Hii inafanya kazi sawa, hata hivyo siwezi kwenda mbele kwa nguvu ya 100% kwa sababu wakati unapozunguka, harakati ya jumla imezuiliwa kwa duara ndani ya gridi, ambayo inamaanisha kuwa hauwezi kamwe kuingia kwenye kona hiyo ya kulia.

Hii pia husababisha pembe za gridi kutotumiwa. Hili sio shida ikiwa unatumia fimbo / gimple ambayo inazuia harakati zako kwa hivyo maeneo hayo hayafikiwi hata hivyo, lakini vinginevyo utataka sehemu hiyo ya gridi ya taifa ifanye kitu ili harakati zako zihisi sawia kabisa.

Ikiwa wewe ni mwanafunzi wa kuona kama mimi dhana hii inaweza kuwa rahisi kushika kwa kutazama video mwanzoni mwa mafunzo haya.

Wacha tuangalie mifano kadhaa ya kificho.

VIDOKEZO KUHUSU MIFANO YANGU YA KODI: Ninaacha jinsi unavyopata viwango vya kufurahisha_x na viwango vya kufurahisha kama vile ingebadilika kulingana na mradi wako. Pia nitakuwa nikipanga ramani / vizuizi hadi ± 100 lakini unaweza kuhitaji ramani hadi 1000 - 2000 kwa PWM au 0 - 255 kwa pato la analog nk mimi huzuia kila wakati… ikiwa tu.

Mfano wa Arduino:

// mzunguko wa kihesabu

rad mara mbili = -45 * M_PI / 180; int leftThrottle = joystick_x * cos (rad) - fimbo_ya * dhambi (rad); int rightThrottle = joystick_y * cos (rad) + joystick_x * dhambi (rad); // kubana kushotoThrottle = kubana (kushoto Throttle, -100, 100); kuliaThrottle = kubana (Throttle ya kulia, -100, 100);

Mfano wa JavaScript:

// kihesabu kinachozunguka rad = -45 * Math. PI / 180; kushotoThrottle = joystick_x * Math.cos (rad) - joystick_y * Math.sin (rad); kuliaThrottle = starehe_ya * Math.cos (rad) + joystick_x * Math.sin (rad); // constrainleftThrottle = constrain (leftThrottle, -100, 100); // kazi ya msaidizi };

Hatua ya 3: Njia ya Njia »Rahisi

Njia ya Njia »Rahisi
Njia ya Njia »Rahisi

Halafu tuna equation rahisi sana ambayo mimi kwanza nilichukua kutoka kwa moja ya Shawn Hymel's Adventures katika Sayansi SparkFun video ambapo alitokea alikuwa akifanya mradi sawa na ule niliokuwa nikifanya kazi.

Usawa huu hukuruhusu ufikie kasi kamili wakati unasonga mbele lakini kama njia ya kuzungusha, haidharau maeneo ya kona ya gridi ya taifa. Hii ni kwa sababu wakati mwingine kiwango cha juu ni 100 na wakati mwingine kiwango cha juu ni 200. Kwa hivyo ungetumia kazi ya kubana kupuuza chochote baada ya 100.

Na kwa njia siiti hii rahisi dharau… kuna uzuri katika unyenyekevu.

Mfano wa Arduino:

int leftThrottle = shangwe_ya + fimbo_ya shangwe;

int rightThrottle = joystick_y - fimbo_ya furaha; // kubana kushotoThrottle = kubana (kushoto Throttle, -100, 100); kuliaThrottle = kubana (Throttle ya kulia, -100, 100);

Mfano wa JavaScript:

var kushotoChannel = fimbo_ ya furaha + fimbo_ya furaha;

var rightChannel = joystick_y - joystick_x; // kulazimisha kushotoChannel = kubana (kushotoChannel, -100, 100); Channel ya kulia = kubana (RightChannel, -100, 100); // kazi ya msaidizi };

Hatua ya 4: Njia ya Njia »sawia

Njia ya Njia »sawia
Njia ya Njia »sawia

Mimi spring-boarded mbali ya njia rahisi na matumaini ya kufanya bora ya walimwengu wote equation. Wazo hapa ni kuwa sawia kabisa kwa pande zote hata kwa usawa hata ingawa unasonga umbali mkubwa ina anuwai sawa na wakati unahama wima ambayo ni umbali mdogo.

Unaishia na kiwango cha -200 hadi +200 kwa pande zote katika mifano yangu ninaweka ramani hiyo hadi ± 100 kwa sababu inawakilisha asilimia ya nguvu inayokwenda kwa kila kituo - hata hivyo utataka kuichora kwa kila kinachofanya kazi katika matumizi yako- kesi kwa mdhibiti wako wa magari. Kwa mfano ikiwa unatuma ishara ya PWM unaweza kuweka ramani hiyo hadi 1000 hadi 2000 au ikiwa unatuma ishara ya analog unaweza kuiweka kwenye 0-255 na kuweka mwelekeo kama boolean nk.

Mfano wa Arduino:

int leftThrottle = shangwe_ya + fimbo_ya shangwe;

int rightThrottle = joystick_y - joystick_x; kushotoThrottle = kushotoTrottle <0? kushotoTrotrottle - diff: leftTrottle + diff; rightThrottle = rightThrottle <0? kulia Throttle - diff: rightTrottle + diff; // Ramani kutoka ± 200 hadi ± 100 au upeo wowote wa sindanoThrottle = ramani (kushotoThrottle, 0, 200, -100, 100); kuliaThrottle = ramani (kuliaThrottle, 0, 200, -100, 100); // constrainleftThrottle = vizuizi (kushotoThrottle, -100, 100); kuliaThrottle = kubana (kuliaThrottle, -100, 100);

Mfano wa JavaScript:

var leftThrottle = joystick_y + joystick_x; var rightThrottle = joystick_y - joystick_x; Math.abs (joystick_y) - Math.abs (joystick_x)); leftThrottle = kushotoThrottle <0? kushotoTrotrottle - diff: leftTrottle + diff; rightThrottle = rightThrottle <0? // Ramani kutoka ± 200 kurudi chini hadi ± 100 au chochote unachoshikilia sindanoThrottle = ramani (kushotoThrottle, -200, 200, -100, 100); -100, 100); // kubana kushotoThrottle = kubana (kushotoThrottle, -100, 100); kuliaThrottle = kubana (kuliaThrottle, -100, 100); // kazi zingine za msaidizi upeo (num, min), max); }; var map = kazi (num, inMin, inMax, outMin, outMax) {var p, inSpan, outSpan, ramani; inMin = inMin + katikaMax; nambari = num + katikaMax; inMax = inMax + katikaMax; inSpan = Math.abs (inMax-inMin); p = (num / inSpan) * 100; outMin = njeMin + njeMax; outMax = njeMax + njeMax; outSpan = Math.abs (outMax - outMin); ramani = njeSpan * (p / 100) - (outMax / 2); ramani ya kurudi;};

Ilipendekeza: