Բովանդակություն:

SnappyXO ճշգրիտ շարժիչ ռոբոտ ՝ 6 քայլ
SnappyXO ճշգրիտ շարժիչ ռոբոտ ՝ 6 քայլ

Video: SnappyXO ճշգրիտ շարժիչ ռոբոտ ՝ 6 քայլ

Video: SnappyXO ճշգրիտ շարժիչ ռոբոտ ՝ 6 քայլ
Video: Introducing SnappyXO: Crowdfunding Campaign 2024, Նոյեմբեր
Anonim
SnappyXO ճշգրիտ շարժիչ ռոբոտ
SnappyXO ճշգրիտ շարժիչ ռոբոտ

Ստիպեք ձեր Arduino ռոբոտին ուղիղ գնալ որոշակի հեռավորության վրա կամ պտտվել որոշակի անկյան տակ ՝ օգտագործելով PreciseMovement Arduino գրադարանը:

Ռոբոտին անհրաժեշտ է պտտվող գնդակի պտուտակ կամ համարժեք ՝ պտտվելիս շփումը նվազագույնի հասցնելու համար:

www.pololu.com/product/954

Դուք կարող եք ռոբոտին ասել, որ առաջ գնա որոշակի հեռավորության վրա կամ պտտվի որոշակի անկյան տակ: Programրագիրը որոշում է իր դիրքը `օգտագործելով մահացած հաշիվ: Քանի որ դիրքի գնահատականները հիմնված են միայն անիվի արագության վրա, սայթաքումը զգալի սխալ կբերի: Ռոբոտի դիզայները պետք է զգույշ լինի, որպեսզի նվազագույնի հասցվի սայթաքման վտանգը:

Սա փորձարկվել է SnappyXO ռոբոտի հետ աշխատելու համար:

Քայլ 1: Ուսումնական ձեռնարկի գտնվելու վայրը փոխված է

Ձեռնարկը տեղափոխվել է ստորև բերված էջ: Այս ձեռնարկը այլևս չի պահպանվում:

sites.google.com/stonybrook.edu/premo

Քայլ 2. Կառուցեք SnappyXO դիֆերենցիալ շարժիչ ռոբոտը

PreciseMovement գրադարանը, որը մենք կօգտագործենք, համատեղելի է միայն դիֆերենցիալ շարժիչով ռոբոտների հետ: Կարող եք ընտրել օգտագործել 2 անիվ ունեցող ռոբոտներ:

Քայլ 3: Միացրեք էլեկտրոնիկան

Միացրեք Էլեկտրոնիկան
Միացրեք Էլեկտրոնիկան

Ստանդարտ SnappyXO օպտիկական կոդավորիչի համար

D0 (կոդավորիչի ելք) -> Arduino թվային փին

VCC -> Arduino 5V

GND -> GND

Շարժիչ և Arduino Power:

Շարժիչի էներգիայի աղբյուրը պետք է համարժեք լինի ձեր օգտագործած շարժիչներին: SnappyXO հավաքածուի համար շարժիչի հզորության համար օգտագործվում են 4AA մարտկոցներ և Arduino հզորության համար `9V մարտկոց: Համոզվեք, որ նրանք բոլորն ունեն ընդհանուր GND:

Քայլ 4: Տեղադրեք PreciseMovement Arduino գրադարանը

Բեռնել:

github.com/jaean123/PreciseMovement-library/releases

Ինչպես տեղադրել Arduino գրադարանը

wiki.seeedstudio.com/How_to_install_Arduino_Library/

Քայլ 5: Կոդ

Arduino կոդ:

create.arduino.cc/editor/hileloop/7a35299d-4e73-409d-9f39-2c517b3000d5/preview

Այս պարամետրերը պահանջում են ճշգրտում: Կոդի վրա առաջարկվող պիտակավորված այլ պարամետրերը կարող են ճշգրտվել `ավելի լավ կատարման համար:

  • Ստուգեք և տեղադրեք շարժիչի կապում ARDUINO PINS- ի տակ:
  • Սահմանեք LENGTH և RADIUS:

    • LENGTH- ը ձախ անիվից մինչև աջ անիվի հեռավորությունն է:
    • RADIUS- ը անիվի շառավիղն է:
  • Սահմանեք PULSES_PER_REV, որը մեկ անիվի պտույտի համար կոդավորիչի ելքերի իմպուլսների թիվն է:

    • Ուշադրություն դարձրեք, սա տարբերվում է մեկ շարժիչ լիսեռի պտույտի համար կոդավորիչի ելքերի իմպուլսների քանակից, եթե կոդավորիչները միացված չեն անիվի լիսեռից ուղղակիորեն կարդալու համար:
    • PULSES_PER_REV = (իմպուլսներ շարժիչի լիսեռի մեկ պտույտի համար) x (փոխանցման հարաբերակցություն)
  • Սահմանեք STOP_LENGTH, եթե տեսնեք, որ ռոբոտը գերազանցում է առաջ շարժումից հետո:

    Ռոբոտը կանգ կառնի, երբ գնահատված դիրքը գտնվում է թիրախից STOP_LENGTH հեռավորության վրա: Այսպիսով, STOP_LENGTH- ը ռոբոտի կանգառի համար պահանջվող մոտավոր հեռավորությունն է:

  • PID պարամետրեր

    KP_FW. Սա առաջ շարժման համամասնական բաղադրիչն է: Բարձրացրեք սա մինչև ռոբոտը ուղիղ գնա: Եթե դուք չեք կարող դա կարգաբերել ՝ կարգաբերելով դա, ապա, ամենայն հավանականությամբ, ապարատային սարքավորումների մեղքն է: (օրինակ ՝ անիվների անհամապատասխանություն և այլն)

    KP_TW: Սա շրջադարձային շարժման PID- ի համամասնական բաղադրիչն է: Ուղղակի սկսեք ցածր արժեքից և ավելացրեք դա մինչև շրջադարձի արագությունը կամ պտտվելիս ռոբոտի անկյունային արագությունը բավականաչափ արագ լինի, բայց չի առաջացնում գերազանցում: Դիտարկումներ կատարելու համար դուք կարող եք ռոբոտին փոխարինել 0 -ից 90 և հետ ՝ օղակի գործառույթում տեղադրելով հետևյալը

Տեղադրեք սա հանգույցում ՝ KP_FW- ն կարգավորելու համար

շարժիչ. առաջ (99999);

Տեղադրեք սա հանգույցում ՝ 0 -ից 90 -ը փոխարինելու համար ՝ KP_TW կարգավորելու համար

mover.twist (90); // Twist 90 CW

ուշացում (2000);

mover.twist (-90) // Twist 90 CCW

ուշացում (2000);

Նկատի ունեցեք, որ TARGET_TWIST_OMEGA- ում անկյունային արագությունն իրականում պտտելու համար KI_TW- ն նույնպես պետք է կարգավորվի, քանի որ համամասնական կարգավորիչը երբեք չի հաստատվի ճշգրիտ թիրախի վրա: Այնուամենայնիվ, անհրաժեշտ չէ շրջվել հենց այդ անկյունային արագությամբ: Անկյունային արագությունը պարզապես պետք է բավականաչափ դանդաղ լինի:

Քայլ 6: Ինչպես է այն աշխատում

Եթե ձեզ հետաքրքիր է, թե ինչպես է այն աշխատում, ապա կարդացեք:

Առաջ շարժումը պահվում է ուղիղ ՝ օգտագործելով մաքուր հետապնդման ալգորիթմը ՝ ուղիղ գծով: Ավելին ՝ մաքուր հետապնդման մասին ՝

Պտտվող PID կարգավորիչը փորձում է պտույտի անկյունային արագությունը պահել TARGET_TWIST_OMEGA- ում: Նկատի ունեցեք, որ այս անկյունային արագությունը ամբողջ ռոբոտի ոչ թե անիվների անկյունային արագությունն է: Օգտագործվում է միայն մեկ PID վերահսկիչ, իսկ ելքը `ձախ և աջ շարժիչների PWM գրելու արագությունն է: Մահացած հաշիվը կատարվում է անկյունը հաշվարկելու համար: Երբ անկյունը հասնում է սխալի շեմին, ռոբոտը կանգ է առնում:

Խորհուրդ ենք տալիս: