Skip to main content

പാഠം 2: '5' എന്ന നമ്പറിലേക്ക് ഡ്രൈവ് ചെയ്യുക

ഈ പാഠത്തിൽ, VR റോബോട്ട് നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്ലെ '5' എന്ന നമ്പറിലേക്കും തിരികെ '1' എന്ന നമ്പറിലേക്കും ഡ്രൈവ് ചെയ്യും!

നമ്പർ ഗ്രിഡ് മാപ്പ് കളിസ്ഥലത്തിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള ചിത്രം. ഒന്നാം നമ്പറിൽ താഴെ ഇടത് മൂലയിൽ വിആർ റോബോട്ടിനെ കാണാം. അഞ്ചാം നമ്പറിൽ താഴെയുള്ള വരിയുടെ മധ്യഭാഗത്ത് ഒരു കോൾഔട്ട് കാണാം.

ശ്രദ്ധിക്കുക, നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്ലെ '5' എന്ന നമ്പറിലേക്ക് നീങ്ങുന്നതിന് X മൂല്യങ്ങൾ വർദ്ധിച്ചുകൊണ്ട് VR റോബോട്ട് X അച്ചുതണ്ടിലൂടെ സഞ്ചരിക്കും.

കളിസ്ഥലത്തിന്റെ മധ്യഭാഗത്ത് x അക്ഷം പൊതിഞ്ഞിരിക്കുന്ന നമ്പർ ഗ്രിഡ് മാപ്പ് കളിസ്ഥലം. ഓരോ ചതുരത്തിന്റെയും മധ്യഭാഗത്ത് X അക്ഷ മൂല്യം അടയാളപ്പെടുത്തിയിരിക്കുന്നു, ഇടതുവശത്ത് -900 ൽ ആരംഭിച്ച് വലതുവശത്ത് ഓരോ ചതുരത്തിനും 200 വർദ്ധിച്ച് 900 ആയി. താഴെ ഇടത് മൂലയിലുള്ള നമ്പർ 1 ൽ ഒരു VR റോബോട്ടിനെ കാണാം, അതിൽ ഒരു അമ്പടയാളം 5 എന്ന നമ്പറിലേക്ക് ചൂണ്ടിക്കാണിക്കുന്നു.

നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്ലെ '5' എന്ന നമ്പറിന്റെ സ്ഥാനത്തേക്ക് VR റോബോട്ട് ഡ്രൈവ് ചെയ്യും. എന്നിരുന്നാലും, വിആർ റോബോട്ടിന് ആ നമ്പറിലേക്ക് നാവിഗേറ്റ് ചെയ്യാൻ കഴിയുന്നതിന് മുമ്പ്, ആ നമ്പറിന്റെ സ്ഥാനം എവിടെയാണെന്ന് വിആർ റോബോട്ടിനോട് പറയേണ്ടതുണ്ട്. കളിസ്ഥലത്തിന്റെ മധ്യത്തിൽ തുടങ്ങി, '5' എന്ന സംഖ്യയുടെ കോർഡിനേറ്റുകൾ (-100, -900) ആണ്.

നമ്പർ ഗ്രിഡ് മാപ്പിലെ കളിസ്ഥലത്തിന്റെ താഴെ ഇടത് മൂലയിൽ x, y അച്ചുതണ്ടുകൾ ഓവർലേ ചെയ്തിരിക്കുന്നു. x അക്ഷത്തിൽ നെഗറ്റീവ് 100 മുതൽ 5 എന്ന സംഖ്യയിലേക്കും y അക്ഷത്തിൽ നെഗറ്റീവ് 900 മുതൽ 5 എന്ന സംഖ്യയിലേക്കും ഒരു അമ്പടയാളം കാണിച്ചിരിക്കുന്നു. വിആർ റോബോട്ട് ഇപ്പോഴും ഒന്നാം സ്ഥാനത്താണ്, കോർഡിനേറ്റുകൾ നെഗറ്റീവ് 900 ഉം നെഗറ്റീവ് 900 ഉം റോബോട്ടിന് താഴെയാണ്.

  • ആരംഭിക്കുന്നതിന്, വിആർ റോബോട്ട് '5' എന്ന സംഖ്യയ്ക്ക് അഭിമുഖമായിരിക്കണം. turn_for കമാൻഡ് ഡ്രാഗ് ചെയ്യുക അല്ലെങ്കിൽ ടൈപ്പ് ചെയ്യുക.
# "main" ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)
  • turn_forകമാൻഡിന് കീഴിൽ ഒരു while ലൂപ്പ് വലിച്ചിടുക. നിങ്ങളുടെ പ്രോജക്റ്റ് ഇതുപോലെ ആയിരിക്കണം:
# "main"-ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while condition:
        wait(5, MSEC)
  • ഡിസ്റ്റൻസ് സെൻസർ യൂണിറ്റ് പോലെ തന്നെ, ഈ പ്രോജക്റ്റ് നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്നാവിഗേറ്റ് ചെയ്യുന്നതിന് ഒരു താരതമ്യ ഓപ്പറേറ്ററുമായി ലൊക്കേഷൻ സെൻസർ സ്ഥാനത്തിന്റെ അവസ്ഥ ഉപയോഗിക്കും. while ലൂപ്പിനുള്ള അവസ്ഥ X-അക്ഷത്തിലെ സ്ഥാനം കമാൻഡിലേക്ക് -100 മില്ലിമീറ്ററിൽ (mm) താഴെയായി സജ്ജമാക്കുക. നിങ്ങളുടെ പ്രോജക്റ്റ് ഇതുപോലെ ആയിരിക്കണം:
# "main"-ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        wait(5, MSEC)
  • while ലൂപ്പിനുള്ളിൽ നോൺ-വെയിറ്റിംഗ് ഡ്രൈവ് കമാൻഡ് ഡ്രാഗ് ചെയ്യുക അല്ലെങ്കിൽ ടൈപ്പ് ചെയ്യുക. നിങ്ങളുടെ പ്രോജക്റ്റ് ഇതുപോലെ ആയിരിക്കണം:
# "main"-ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
  • ശ്രദ്ധിക്കുക, VR റോബോട്ട് പ്ലേഗ്രൗണ്ടിന്റെ ഇടതുവശത്ത് നിന്ന് വലതുവശത്തേക്ക് ഓടിക്കുന്നതിനാൽ, ഗ്രേറ്റർ തം ഓപ്പറേറ്ററിന് പകരം ലെസ് തം ഓപ്പറേറ്റർ ആണ് ഉപയോഗിക്കുന്നത്. VR റോബോട്ട് -900 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) എന്ന X-മൂല്യത്തിൽ നിന്നാണ് ആരംഭിക്കുന്നത്. VR റോബോട്ട് മുന്നോട്ട് പോകുമ്പോൾ, X- മൂല്യങ്ങൾ വർദ്ധിക്കുന്നു, അങ്ങനെ X- മൂല്യം -100-ൽ താഴെയായിരിക്കുമ്പോൾ റോബോട്ട് മുന്നോട്ട് ഓടിക്കൊണ്ടിരിക്കും.

നമ്പർ ഗ്രിഡ് മാപ്പിലെ കളിസ്ഥലത്തിന്റെ താഴെ ഇടത് മൂലയിൽ x, y അച്ചുതണ്ടുകൾ ഓവർലേ ചെയ്തിരിക്കുന്നു. x അക്ഷത്തിൽ നെഗറ്റീവ് 100 മുതൽ 5 എന്ന സംഖ്യയിലേക്കും y അക്ഷത്തിൽ നെഗറ്റീവ് 900 മുതൽ 5 എന്ന സംഖ്യയിലേക്കും ഒരു അമ്പടയാളം കാണിച്ചിരിക്കുന്നു. വിആർ റോബോട്ട് ഇപ്പോഴും ഒന്നാം സ്ഥാനത്താണ്, കോർഡിനേറ്റുകൾ നെഗറ്റീവ് 900 ഉം നെഗറ്റീവ് 900 ഉം റോബോട്ടിന് താഴെയാണ്.

നിങ്ങളുടെ അറിവിലേക്കായി

നിങ്ങളുടെ പ്രോജക്റ്റിൽ ഏത് താരതമ്യ ഓപ്പറേറ്ററെയാണ് ഉപയോഗിക്കേണ്ടതെന്ന് നിങ്ങൾ തിരഞ്ഞെടുക്കേണ്ടതുണ്ട്, VR റോബോട്ട് X അല്ലെങ്കിൽ Y അക്ഷത്തിൽ സഞ്ചരിക്കേണ്ട ദിശയെ ആശ്രയിച്ച്. VR റോബോട്ട് ഒരു വലിയ മൂല്യത്തിലേക്ക് നീങ്ങുമ്പോൾ, (<) ൽ താഴെയുള്ള ഓപ്പറേറ്റർwhile ലൂപ്പിനൊപ്പം ഉപയോഗിക്കും; VR റോബോട്ട് ഒരു ചെറിയ മൂല്യത്തിലേക്ക് സഞ്ചരിക്കുമ്പോൾ, (>) ൽ താഴെയുള്ള ഓപ്പറേറ്റർwhile ലൂപ്പിനൊപ്പം ഉപയോഗിക്കും.

കളിസ്ഥലത്തേക്ക് നോക്കുമ്പോൾ ഇത് ഇടത്തോട്ടും വലത്തോട്ടും ഉള്ള ചലനങ്ങളുമായി യോജിക്കുന്നു. VR റോബോട്ട് ഇടത്തുനിന്ന് വലത്തോട്ടോ താഴെ നിന്ന് മുകളിലേക്കോ (വലിയ മൂല്യങ്ങൾ) നീങ്ങുകയാണെങ്കിൽ, ലക്ഷ്യം വച്ച മൂല്യത്തേക്കാൾ കുറവ് ആയിരിക്കുമ്പോൾ, ലെസ് ദാൻ ഓപ്പറേറ്റർ ഡ്രൈവ് ചെയ്യാൻ ഉപയോഗിക്കുന്നു. 

നമ്പർ ഗ്രിഡ് മാപ്പ് കളിസ്ഥലത്തിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള രണ്ട് കാഴ്ചകൾ. ആദ്യത്തേതിൽ, VR റോബോട്ടിനെ 51-ാം നമ്പറിൽ കാണിച്ചിരിക്കുന്നു, ഒരു അമ്പടയാളം റോബോട്ട് വലതുവശത്തേക്ക് 60-ാം നമ്പറിലേക്ക് നീങ്ങാൻ പോകുന്നുവെന്ന് സൂചിപ്പിക്കുന്നു. മുകളിലുള്ള വാചകം 'ഡ്രൈവ് ചെയ്യുമ്പോൾ പൊസിഷൻ കുറവാണ്' എന്ന് വായിക്കുന്നു. രണ്ടാമത്തേതിൽ, VR റോബോട്ടിനെ ആറാം നമ്പറിൽ കാണിച്ചിരിക്കുന്നു, ഒരു അമ്പടയാളം റോബോട്ട് 96 എന്ന നമ്പറിലേക്ക് നീങ്ങാൻ പോകുന്നുവെന്ന് സൂചിപ്പിക്കുന്നു. മുകളിലുള്ള വാചകം 'ഡ്രൈവ് ചെയ്യുമ്പോൾ പൊസിഷൻ കുറവാണ്' എന്ന് വായിക്കുന്നു.

VR റോബോട്ട് വലത്തുനിന്ന് ഇടത്തോട്ടോ മുകളിൽ നിന്ന് താഴേക്കോ (ചെറിയ മൂല്യങ്ങൾ) നീങ്ങുകയാണെങ്കിൽ, ലക്ഷ്യ മൂല്യത്തേക്കാൾ കൂടുതലായിരിക്കുമ്പോൾ ഗ്രേറ്റർ ടെൻ ഓപ്പറേറ്റർ ഡ്രൈവ് ചെയ്യാൻ ഉപയോഗിക്കുന്നു.

നമ്പർ ഗ്രിഡ് മാപ്പ് കളിസ്ഥലത്തിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള രണ്ട് കാഴ്ചകൾ. ആദ്യത്തേതിൽ, VR റോബോട്ടിനെ 60-ാം നമ്പറിൽ കാണിച്ചിരിക്കുന്നു, ഒരു അമ്പടയാളം റോബോട്ട് ഇടതുവശത്തേക്ക് 51-ാം നമ്പറിലേക്ക് നീങ്ങാൻ പോകുന്നുവെന്ന് സൂചിപ്പിക്കുന്നു. മുകളിലുള്ള വാചകം 'drive while position is greater than' എന്നാണ്. രണ്ടാമത്തേതിൽ, VR റോബോട്ടിനെ 96-ാം നമ്പറിൽ കാണിച്ചിരിക്കുന്ന ഒരു അമ്പടയാളം റോബോട്ട് താഴേക്ക് 6-ാം നമ്പറിലേക്ക് നീങ്ങാൻ പോകുന്നുവെന്ന് സൂചിപ്പിക്കുന്നു. മുകളിലുള്ള വാചകം 'drive while position is greater than' എന്നാണ്.

താരതമ്യ ഓപ്പറേറ്ററുകൾ ഉപയോഗിച്ച്, ലൊക്കേഷൻ സെൻസർ റിപ്പോർട്ട് ചെയ്ത മൂല്യം ത്രെഷോൾഡ് മൂല്യത്തേക്കാൾ (>) കൂടുതലോ (<) കുറവോ ആയിരിക്കുമ്പോൾ VR റോബോട്ട് സഞ്ചരിക്കും. ഈ ഉദാഹരണത്തിൽ, VR റോബോട്ട് X-ആക്സിസിൽ പോസിറ്റീവ് 500 മില്ലിമീറ്ററിലേക്ക് (mm) നാവിഗേറ്റ് ചെയ്യും. X-ആക്സിസിലെ സ്ഥാനം , 0 മുതൽ പോസിറ്റീവ് 499 വരെ ആയിരിക്കുമ്പോൾ VR റോബോട്ട് ഡ്രൈവ് ചെയ്യും. സ്ഥാനം 501 അല്ലെങ്കിൽ അതിൽ കൂടുതലാണെന്ന് ലൊക്കേഷൻ സെൻസർ റിപ്പോർട്ട് ചെയ്യുമ്പോൾ, VR റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തും. 

# "main"-ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    monitor_sensor(location.position)
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < 500:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

ലൊക്കേഷൻ സെൻസർ റിപ്പോർട്ട് ചെയ്ത മൂല്യംകൃത്യമായി മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) അല്ല എന്നത് ശ്രദ്ധിക്കുക. ഡിസ്റ്റൻസ് സെൻസറിനെപ്പോലെ, VR റോബോട്ടിന് പ്രോജക്റ്റ് ആവർത്തിച്ച് പരിശോധിച്ച് മൂല്യങ്ങൾ റിപ്പോർട്ട് ചെയ്യാൻ എടുക്കുന്ന സമയം കണക്കിലെടുത്താണ് താരതമ്യ ഓപ്പറേറ്റർമാരെയും ഉപയോഗിക്കുന്നത്.

  • while ലൂപ്പിന് പുറത്ത് ഒരു stop കമാൻഡ് വലിച്ചിടുക അല്ലെങ്കിൽ ടൈപ്പ് ചെയ്യുക. നിങ്ങളുടെ പ്രോജക്റ്റ് ഇതുപോലെ ആയിരിക്കണം:
# "main"-ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) < -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()
  • പ്ലേഗ്രൗണ്ട് വിൻഡോതുറന്നിട്ടില്ലെങ്കിൽ അത് തുറക്കുക. നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്തുറക്കുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക, തുടർന്ന് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.
  • നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്ൽ '5' എന്ന നമ്പറിലേക്ക് VR റോബോട്ട് ഡ്രൈവ് ചെയ്യുന്നത് കാണുക.

നമ്പർ ഗ്രിഡ് മാപ്പ് കളിസ്ഥലത്തിന്റെ മുകളിൽ നിന്ന് താഴേക്കുള്ള ചിത്രം. അഞ്ചാം നമ്പറിൽ താഴെയായി വിആർ റോബോട്ടിനെ കാണാം.

  • ഈ പ്രോജക്റ്റിൽ, VR റോബോട്ട് നമ്പർ ഗ്രിഡ് മാപ്പ് പ്ലേഗ്രൗണ്ട്ലെ '5' എന്ന നമ്പറിലേക്ക് ഡ്രൈവ് ചെയ്യുന്നു. while ലൂപ്പ് ഉപയോഗിക്കുന്നതിനാൽ VR റോബോട്ട് മുന്നോട്ട് നീങ്ങുന്നത് തുടരും, അങ്ങനെ X- മൂല്യം സൂചിപ്പിച്ചിരിക്കുന്ന നമ്പർ ഓണായിരിക്കുന്ന കോർഡിനേറ്റിന്റെ X- മൂല്യത്തേക്കാൾ കുറവ് ആണ്.
  • X-മൂല്യം -100-ൽ കൂടുതലായാൽ, പ്രോജക്റ്റ് ലൂപ്പിന് പുറത്തുള്ള അടുത്ത കമാൻഡിലേക്ക് നീങ്ങുന്നു, അത് സ്റ്റോപ്പ് കമാൻഡാണ്. '5' എന്ന സംഖ്യയുടെ X- മൂല്യം -100 ആയതിനാൽ, X- മൂല്യം -100-ൽ കൂടുതലാകുമ്പോൾ VR റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തും.

ഇപ്പോൾ പ്രവർത്തിപ്പിച്ച പൈത്തൺ പ്രോജക്റ്റിന്റെ ഒഴുക്ക്. 90 ഡിഗ്രി വലത്തേക്ക് തിരിയൽ പൂർത്തിയാകുമ്പോൾ റോബോട്ട് while ലൂപ്പിലേക്ക് നീങ്ങുന്നുവെന്ന് ഒരു അമ്പടയാളം സൂചിപ്പിക്കുന്നു. 'x മൂല്യം നെഗറ്റീവ് 100 ൽ താഴെ റിട്ടേൺസ് ശരിയാണ്, VR റോബോട്ട് മുന്നോട്ട് നയിക്കുന്നു' എന്ന് എഴുതിയിരിക്കുന്ന വാചകത്തോടുകൂടിയ ഒരു ചാക്രിക അമ്പടയാളം while ലൂപ്പിന് അടുത്തായി ഉണ്ട്. അതിനു താഴെയായി 'x മൂല്യം നെഗറ്റീവ് 100 നേക്കാൾ വലുത്' എന്ന് എഴുതിയിരിക്കുന്ന ഒരു ചുവന്ന അമ്പടയാളമുണ്ട്, അത് False നൽകുന്നു. വി.ആർ. റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തി.

നിങ്ങളുടെ അറിവിലേക്കായി

ലൊക്കേഷൻ സെൻസർ റിപ്പോർട്ട് ചെയ്ത മൂല്യംകൃത്യമായി-100 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) ആയിരിക്കണമെന്നില്ല എന്നത് ശ്രദ്ധിക്കുക. ഡിസ്റ്റൻസ് സെൻസറിനെപ്പോലെ, VR റോബോട്ടിന് പ്രോജക്റ്റ് ആവർത്തിച്ച് പരിശോധിച്ച് മൂല്യങ്ങൾ റിപ്പോർട്ട് ചെയ്യാൻ എടുക്കുന്ന സമയം കണക്കിലെടുത്താണ് താരതമ്യ ഓപ്പറേറ്റർമാരെയും ഉപയോഗിക്കുന്നത്.

പ്ലേഗ്രൗണ്ട് വിൻഡോയിലെ ഡാഷ്‌ബോർഡ് സൂം ഇൻ ചെയ്‌ത് ലൊക്കേഷൻ സെൻസറിന്റെ റിപ്പോർട്ട് ചെയ്‌ത x മൂല്യം 90 മില്ലിമീറ്ററാണെന്ന് കാണിക്കുന്നു.

VEXcode VR Python-ൽ, നിങ്ങളുടെ ചലനങ്ങളിൽ കൂടുതൽ കൃത്യത കൈവരിക്കുന്നതിന്, നിങ്ങളുടെ പ്രോജക്റ്റിൽൽ കൂടുതലോ-ന് തുല്യമോ (>=) അല്ലെങ്കിൽ ൽ കുറവോ-ന് തുല്യമോ (<=) താരതമ്യ ഓപ്പറേറ്റർ ഉപയോഗിക്കാം.

# "main"-ൽ പ്രോജക്റ്റ് കോഡ് ചേർക്കുക
def main():
    drivetrain.turn_for(RIGHT, 90, DEGREES)

    while location.position(X, MM) <= -100:
        drivetrain.drive(FORWARD)
        wait(5, MSEC)
    drivetrain.stop()

VR റോബോട്ടിന്റെ വേഗതയെയും, ലൂപ്പിലൂടെ പ്രോജക്റ്റ് എത്ര വേഗത്തിൽ ആവർത്തിക്കുന്നു എന്നതിനെയും ആശ്രയിച്ച്, ഓപ്പറേറ്ററിലേക്ക് (<= അല്ലെങ്കിൽ >=) എന്നതിന് തുല്യമായതോ അല്ലെങ്കിൽ തുല്യമായതോ ചേർക്കുമ്പോൾ VR റോബോട്ടിന് ത്രെഷോൾഡ് മൂല്യത്തോട് അടുത്ത് നിർത്താൻ കഴിയുമെന്ന് നിങ്ങൾക്ക് കാണാൻ കഴിയും.

ഈ പാഠത്തിന്റെ ബാക്കി ഭാഗം തുടരാൻ അടുത്തത് ബട്ടൺ തിരഞ്ഞെടുക്കുക.