કોડ શોધો

પાઠ્યક્રમ પાઠ 8 માંથી 10: Raspberry Pi Pico સ્માર્ટ કાર – પાઠ 8: સર્વો મોટર અને ઑબ્જેક્ટ ફોલોઇંગ

પાઠ્યક્રમ પાઠ 8 માંથી 10: Raspberry Pi Pico સ્માર્ટ કાર – પાઠ 8: સર્વો મોટર અને ઑબ્જેક્ટ ફોલોઇંગ

રોબોજેક્સ દ્વારા રાસ્પબેરી પાઈ પીકો સ્માર્ટ કાર કોર્સનો આ પાઠ સર્વો મોટરની કાર્યક્ષમતા અને તેનો ઉપયોગ કરીને ઑબ્જેક્ટ-ફોલોઇંગ અથવા "તમારા હાથને અનુસરો" રોબોટ કેવી રીતે બનાવવો તે શોધે છે. આ પ્રોજેક્ટ સરળ મોટર નિયંત્રણથી આગળ વધે છે, જે દર્શાવે છે કે કેવી રીતે સર્વો-સંચાલિત અલ્ટ્રાસોનિક સેન્સરને બુદ્ધિશાળી પાયથોન લોજિક સાથે જોડીને એવી કાર બનાવવી જે સક્રિયપણે તેની શ્રેણીમાં ઑબ્જેક્ટ શોધે અને અનુસરે. આ રોબોટિક્સમાં એક મૂળભૂત ખ્યાલ છે, જે તમને વ્યક્તિને અનુસરતો રોબોટ, ફેચ રમતો સ્માર્ટ પાલતુ, અથવા હલનચલન ટ્રેક કરતો સ્વાયત્ત સુરક્ષા કેમેરા જેવા ઇન્ટરેક્ટિવ પ્રોજેક્ટ્સ બનાવવા સક્ષમ બનાવે છે. આ પાઠ બીજા, સરળ પ્રોજેક્ટને પણ આવરી લે છે: એક કાર જે આપમેળે ચોક્કસ અંતર ઝોનમાં ઑબ્જેક્ટ્સની નજીક જાય છે, ધકેલે છે અને પાછી ખસે છે.

pi_pico_4WD_follow-hand

હાર્ડવેર અને ઘટકો

આ પ્રોજેક્ટ સનફાઉન્ડર રાસ્પબેરી પાઈ પીકો 4WD કાર કિટ પર આધારિત છે. આ પાઠમાં ઉપયોગમાં લેવાતા મુખ્ય ઘટકો છે:

  • રાસ્પબેરી પાઈ પીકો બોર્ડ
  • મોટર્સ સાથે 4WD સ્માર્ટ કાર ચેસિસ
  • સર્વો મોટર (ટકાઉપણું માટે આદર્શ રીતે મેટલ ગિયર સર્વો)
  • અલ્ટ્રાસોનિક અંતર સેન્સર (HC-SR04)
  • મોટર ડ્રાઇવર બોર્ડ (કાર કિટનો ભાગ)
  • RGB LED (દ્રશ્ય પ્રતિસાદ માટે)
  • પાવર સ્ત્રોત (કાર માટે બેટરી પેક)
PICOBOARDWHITEANGLE2_1200x857

સર્વો મોટર આ પાઠની કાર્યક્ષમતાનો મુખ્ય ભાગ છે. સતત ફરતી પ્રમાણભૂત DC મોટરથી વિપરીત, સર્વો મોટર ચોક્કસ કોણીય સ્થિતિમાં ફરવા અને પકડી રાખવા માટે ડિઝાઇન કરવામાં આવી છે, સામાન્ય રીતે 0 અને 180 ડિગ્રી વચ્ચે. આ તેને અલ્ટ્રાસોનિક સેન્સરને ચોક્કસ રીતે દિશામાન કરવા માટે યોગ્ય બનાવે છે. સર્વોની ગુણવત્તા ઘણીવાર તેની ગિયર સામગ્રી (પ્લાસ્ટિક વિ. મેટલ) અને તેના ટોર્ક દ્વારા નક્કી થાય છે, જે તેની તાકાત અને ટકાઉપણું નક્કી કરે છે.

તે કેવી રીતે કાર્ય કરે છે

નીચેનો ચાર્ટ સમજાવે છે કે કોડ કેવી રીતે કાર્ય કરે છે. 

pi_pico_4WD_follow-hand_flow_chart

વાયરિંગ માર્ગદર્શિકા

આ પાઠ માટે વાયરિંગ સરળ છે, કારણ કે તે પૂર્વ-એસેમ્બલ કાર કિટ પર આધારિત છે. નિર્ણાયક જોડાણ સર્વો મોટરનું છે, જે પીકો પર ચોક્કસ GPIO પિન સાથે જોડાયેલ હોવું જોઈએ.

વિડિયોમાં, પ્રશિક્ષક સર્વોને રાસ્પબેરી પાઈ પીકો પર પિન નંબર 18 સાથે જોડે છે. અલ્ટ્રાસોનિક સેન્સર સર્વો હોર્નની ટોચ પર માઉન્ટ થયેલ છે, જે તેને વિસ્તાર સ્કેન કરવા માટે ડાબે અને જમણે ફેરવવા દે છે. મોટર્સ, RGB LED અને પાવર માટેનું બાકીનું વાયરિંગ કોર્સના અગાઉના પાઠોથી પૂર્વ-જોડાયેલું હોવાનું માનવામાં આવે છે.

વિગતવાર દ્રશ્ય માર્ગદર્શિકા માટે, કૃપા કરીને નીચેના વાયરિંગ ડાયાગ્રામનો સંદર્ભ લો.

Sunfounder_Pico4DW-08-Follow-hand-ultrasonic_direction

કોડ સમજૂતી

આ પાઠ માટેનો પાયથોન કોડ કસ્ટમ pico_4wd લાઇબ્રેરીની આસપાસ બનાવવામાં આવ્યો છે, જે જટિલ હાર્ડવેર ક્રિયાપ્રતિક્રિયાઓને સરળ બનાવે છે. વપરાશકર્તા-રૂપરેખાંકિત ભાગો સ્ક્રિપ્ટની ટોચ પર સ્થિત છે અને કારના વર્તનને નિયંત્રિત કરે છે.

અહીં મુખ્ય ચલો છે જે તમે તમારા રોબોટના "હાથને અનુસરો" વર્તનને કસ્ટમાઇઝ કરવા માટે ગોઠવી શકો છો:

  • car.RADAR_REFERENCE = 25: આ મહત્તમ અંતર છે સેન્ટીમીટરમાં જે સેન્સર "જોઈ" શકે છે. આ અંતરથી આગળનો કોઈપણ ઑબ્જેક્ટ અવગણવામાં આવે છે. તમે કારને વધુ સંવેદનશીલ બનાવવા માટે તેને વધારી શકો છો અથવા નજીકના ઑબ્જેક્ટની જરૂર પડે તે માટે ઘટાડી શકો છો.
  • car.RADAR_MAX_ANGLE = 45 & car.RADAR_MIN_ANGLE = -45: આ સૌથી ડાબા (45) અને સૌથી જમણા (-45) ખૂણાઓને વ્યાખ્યાયિત કરે છે જે સર્વો સ્કેન કરશે. આ કારની સામે 90-ડિગ્રી દૃશ્ય ક્ષેત્ર બનાવે છે.
  • car.RADAR_STEP_ANGLE = 10: આ વધારો છે (ડિગ્રીમાં) જે સર્વો સ્કેન બિંદુઓ વચ્ચે ખસેડવા માટે ઉપયોગ કરે છે. નાનું પગલું (દા.ત., 5) વધુ સારી રીઝોલ્યુશન આપે છે પરંતુ સંપૂર્ણ સ્કેન પૂર્ણ કરવામાં વધુ સમય લે છે. મોટું પગલું (દા.ત., 15) ઝડપથી સ્કેન કરે છે પરંતુ ઓછી ચોકસાઈ સાથે.
  • MOTOR_FORWARD_POWER = 40: આ મોટર પાવર (0-100) સેટ કરે છે જે કાર શોધાયેલ ઑબ્જેક્ટ તરફ આગળ વધતી વખતે ઉપયોગમાં લેવાય છે. કારની પીછો કરવાની ગતિ બદલવા માટે આને ગોઠવો.
  • MOTOR_TURNING_POWER = 40: આ મોટર પાવર સેટ કરે છે જે કાર ઑબ્જેક્ટનો સામનો કરવા માટે વળતી વખતે ઉપયોગમાં લેવાય છે. વધુ મૂલ્ય કારને વધુ આક્રમક રીતે વળવા દેશે.

main() ફંક્શનનો મુખ્ય લોજિક સતત લૂપ છે. તે પ્રથમ car.radar_scan() કૉલ કરે છે, જે '1' અને '0' ની સ્ટ્રિંગ પરત કરે છે જે દર્શાવે છે કે દરેક સ્કેન ખૂણા પર ઑબ્જેક્ટ શોધાયું હતું કે નહીં ('1' એટલે ઑબ્જેક્ટ સંદર્ભ અંતરની અંદર છે). કોડ પછી આ સ્ટ્રિંગનું વિશ્લેષણ કરીને સતત '1' નું સૌથી મોટું જૂથ શોધે છે, જે શોધાયેલ ઑબ્જેક્ટનું કેન્દ્ર સૂચવે છે. સ્કેન ક્ષેત્રમાં આ કેન્દ્ર ક્યાં છે તેના આધારે, કારને ડાબે વળવા, જમણે વળવા અથવા આગળ વધવા માટે આદેશ આપવામાં આવે છે જેથી તે ઑબ્જેક્ટ સાથે સંરેખિત થાય અને તેને અનુસરે.

લાઇવ પ્રોજેક્ટ પ્રદર્શન

વિડિયો પ્રોજેક્ટની ક્રિયામાં સ્પષ્ટ દ્રશ્ય રજૂઆત પૂરી પાડે છે. પ્રશિક્ષક પહેલા એક ટેસ્ટ સ્ક્રિપ્ટ ચલાવે છે જે દર્શાવે છે કે સર્વો મોટરને 90, 0 અને -90 ડિગ્રી જેવા ચોક્કસ ખૂણાઓ પર કેવી રીતે ખસેડી શકાય છે. સર્વોની રેન્જ સમજવા અને અલ્ટ્રાસોનિક સેન્સરને યોગ્ય રીતે માઉન્ટ કરવા માટે આ નિર્ણાયક છે.

સેન્સર માઉન્ટ કર્યા પછી, "હાથને અનુસરો" સુવિધા દર્શાવવામાં આવી છે. જેમ પ્રશિક્ષક તેનો હાથ કારની સામે ખસેડે છે, તેમ સર્વો-માઉન્ટેડ સેન્સર ડાબે અને જમણે સ્કેન કરે છે. કારની લોજિક સેન્સર ડેટા પ્રોસેસ કરે છે અને શોધાયેલા હાથ તરફ સ્ટીયર કરવા માટે પૈડાં ફેરવે છે, અસરકારક રીતે તેને ફ્લોર પર અનુસરે છે. પ્રદર્શન દર્શાવે છે કે કાર કેવી રીતે ઑબ્જેક્ટને ટ્રેક કરી શકે છે જ્યારે તે ખસે છે અને તે મુજબ તેની દિશા સમાયોજિત કરે છે. બીજો પ્રોજેક્ટ પણ દર્શાવવામાં આવ્યો છે, જ્યાં કારને પ્રોગ્રામ કરવામાં આવી છે કે જો કોઈ ઑબ્જેક્ટ 10 થી 20 સેન્ટિમીટરની વચ્ચે શોધાય તો તેની પાસે જઈને તેને ધકેલે, અને જો ઑબ્જેક્ટ ખૂબ નજીક આવે (10 સેન્ટિમીટરથી ઓછું) તો પાછળ હટે.

મુખ્ય શીખવા જેવી બાબતો

આ પાઠ ઇન્ટરેક્ટિવ રોબોટિક વર્તણૂકો બનાવવા માટે સર્વો મોટર્સનો ઉપયોગ કરવાનો ઉત્તમ પરિચય છે. સર્વોને અંતર સેન્સર સાથે જોડીને, તમે "દૃષ્ટિની ભાવના" ધરાવતો રોબોટ બનાવી શકો છો જે તેના પર્યાવરણને સક્રિય રીતે ટ્રેક કરી શકે અને પ્રતિસાદ આપી શકે. સ્કેન ખૂણાઓ, પગલાનું કદ અને મોટર પાવર જેવા પરિમાણોને ટ્યુન કરવાની ક્ષમતા રોબોટની વર્તણૂક પર સૂક્ષ્મ નિયંત્રણ મેળવવા માટે પરવાનગી આપે છે, જે કોઈપણ રોબોટિક્સ પ્રોજેક્ટ માટે નિર્ણાયક કૌશલ્ય છે.

પ્રકરણો

  • [00:00] સર્વો મોટર અને ઑબ્જેક્ટ ફોલોઇંગનો પરિચય
  • [01:48] કોર્સ કિટની સુવિધાઓ અને ક્ષમતાઓ
  • [03:08] સર્વો મોટરની કામગીરી સમજવી
  • [06:08] પાયથોન કોડ સાથે સર્વો મોટરનું પરીક્ષણ
  • [09:59] "હાથને અનુસરો" સુવિધા સમજાવવી
  • [10:49] "હાથને અનુસરો" કાર્યક્ષમતાનું પ્રદર્શન
  • [15:37] પ્રોજેક્ટ: ઑબ્જેક્ટ ધકેલવું અને પાછળ હટવું
  • [18:40] ઑબ્જેક્ટ ધકેલવાના પ્રોજેક્ટનું પ્રદર્શન
  • [19:25] નિષ્કર્ષ અને આગળના પગલાં

છબીઓ

pico-4wd_main
pico-4wd_main
PICOBOARDWHITEANGLE2_1200x857
PICOBOARDWHITEANGLE2_1200x857
pi_pico_4WD_follow-hand
pi_pico_4WD_follow-hand
pi_pico_4WD_follow-hand_flow_chart
pi_pico_4WD_follow-hand_flow_chart
Sunfounder_Pico4DW-08-Follow-hand-ultrasonic_direction
Sunfounder_Pico4DW-08-Follow-hand-ultrasonic_direction
905-Lesson 8/10 Pi Pico 4WD card Python code: follow hand
ભાષા: C++
# Lesson 8/10 Pi Car Pico 4WD: Follow hand
# Download and resource page https://robojax.com/RJT630

import pico_4wd as car

car.RADAR_REFERENCE = 25
car.RADAR_MAX_ANGLE = 45
car.RADAR_MIN_ANGLE = -45
car.RADAR_STEP_ANGLE = 10
MOTOR_FORWARD_POWER = 40
MOTOR_TURNING_POWER = 40

def main():
    while True:
        radar_data = car.radar_scan()
        if isinstance(radar_data, int):
            continue
        radar_data = [str(i) for i in radar_data]
        radar_data = "".join(radar_data)
        paths = radar_data.split("1")
        length_list = []
        for path in paths:
            length_list.append(len(path))
        if max(length_list) == 0:
            car.move("stop") 
        else:
            i = length_list.index(max(length_list))
            pos = radar_data.index(paths[i])
            pos += (len(paths[i]) - 1) / 2
            delta = len(radar_data) / 3
            if pos < delta:
                car.move("right", MOTOR_TURNING_POWER)
            elif pos > 2 * delta:
                car.move("left", MOTOR_TURNING_POWER)
            else:
                #if radar_data[int(len(radar_data)/2-1)] == "0":
                #    car.move("stop")
                #else:
                car.move("forward", MOTOR_FORWARD_POWER)

try:
    main()
finally:
    car.move("stop")
    car.set_light_off()

સંસાધનો અને સંદર્ભો

હજી સુધી કોઈ સંસાધનો નથી.

ફાઇલો📁

કોઈ ફાઇલો ઉપલબ્ધ નથી.