പാഠം 3: ലക്ഷ്യത്തിൽ ഒരു ഡിസ്ക് സ്ഥാപിക്കുന്നതിന് സെൻസറുകളും വൈദ്യുതകാന്തികതയും ഉപയോഗിക്കുന്നു.
പ്രോജക്റ്റിലേക്ക് ദൂര സെൻസർ ചേർക്കുന്നു.
രണ്ടാം പാഠത്തിൽ, ഡിസ്ക് ഉപേക്ഷിക്കുന്നതിനായി വിആർ റോബോട്ട് ആരംഭ സ്ഥാനത്തേക്ക് പിന്നിലേക്ക് ഓടിച്ചു. ഇതിനായി ഉപയോക്താവിന് വിആർ റോബോട്ട് സഞ്ചരിക്കേണ്ട കൃത്യമായ ദൂരം കണക്കാക്കേണ്ടി വന്നു. ഇത് എല്ലായ്പ്പോഴും സാധ്യമാകണമെന്നില്ല. പകരം, VR റോബോട്ടിന് റിപ്പോർട്ട് ചെയ്ത സെൻസർ മൂല്യങ്ങൾ ഉപയോഗിച്ച് സ്ഥിരമായ കൃത്യതയോടെ ഡിസ്കുകൾ എടുക്കാനും ഡ്രോപ്പ് ചെയ്യാനും കഴിയും.
ഈ പാഠത്തിൽ, ലക്ഷ്യത്തിലേക്ക് മടങ്ങുമ്പോൾ VR റോബോട്ട് എവിടെയാണ് ഡ്രൈവിംഗ് നിർത്തേണ്ടതെന്ന് നിർണ്ണയിക്കാൻ ദൂര സെൻസർ ഉപയോഗിക്കും. ഈ സെൻസർget_distance കമാൻഡ് ഉപയോഗിച്ച് VR റോബോട്ടിന്റെ മുൻവശത്ത് നിന്ന് ഏറ്റവും അടുത്തുള്ള വസ്തുവിലേക്കുള്ള ദൂരം റിപ്പോർട്ട് ചെയ്യുന്നു. ദൂര സെൻസർ ഉപയോഗിച്ച് VR റോബോട്ടിനെ ലക്ഷ്യത്തിലേക്ക് തിരികെ കൊണ്ടുപോകാൻ ഇനിപ്പറയുന്ന കാര്യങ്ങൾ സംഭവിക്കേണ്ടതുണ്ട്:
- ദൂര സെൻസർ ലക്ഷ്യത്തിലേക്ക് എത്തുന്നതിനായി VR റോബോട്ടിന് 180 ഡിഗ്രി തിരിയേണ്ടി വരും. VR റോബോട്ട് ശരിയായ തലക്കെട്ടിലേക്ക് തിരിയുന്നുവെന്ന് ഉറപ്പാക്കാൻ turn_to_heading കമാൻഡ് ഉപയോഗിക്കാം.
- ഡിസ്ക് എവിടെ ഇടണമെന്ന് നിർണ്ണയിക്കാൻ വിആർ റോബോട്ട് പ്ലേഗ്രൗണ്ടിന്റെ പിൻവശത്തുള്ള ഡിസ്റ്റൻസ് സെൻസർ ഉപയോഗിക്കും.
- വിആർ റോബോട്ട് ലക്ഷ്യത്തിലേക്ക് കുതിക്കും.

നിങ്ങളുടെ അറിവിലേക്കായി
turn_to_heading കമാൻഡ് ഗൈറോ സെൻസർ ഉപയോഗിച്ച് VR റോബോട്ടിനെ ഒരു പ്രത്യേക ഹെഡിംഗിലേക്ക് മാറ്റുന്നു. ഗൈറോ സെൻസറിന്റെ നിലവിലെ ഹെഡിംഗ് അടിസ്ഥാനമാക്കിയാണ് വിആർ റോബോട്ട് തിരിയേണ്ട ദിശ (ഇടത്തോട്ടോ വലത്തോട്ടോ) നിർണ്ണയിക്കുന്നത്. 
VR റോബോട്ടിന്റെ സ്ഥാനം പരിഗണിക്കാതെ തന്നെ VR റോബോട്ടിനെ ഒരു പ്രത്യേക തലക്കെട്ടിലേക്ക് നയിക്കാൻ turn_to_headingകമാൻഡ് ഉപയോഗിക്കുന്നു. നിങ്ങൾ ഒരു ഡിസ്ക് എടുക്കുമ്പോഴോ താഴെയിടുമ്പോഴോ, വിആർ റോബോട്ട് ദിശ തെറ്റി വീണേക്കാം. turn_to_heading കമാൻഡ് ഉപയോഗിക്കുന്നത് VR റോബോട്ട് മുൻ തലക്കെട്ടുമായി ബന്ധപ്പെട്ട ഒരു സ്ഥാനത്തേക്ക് തിരിയുന്നതിനുപകരം കേവല സ്ഥാനത്തേക്ക് തിരിയുമെന്ന് ഉറപ്പാക്കുന്നു.

പ്രോജക്റ്റ് നിർമ്മിക്കുന്നത് തുടരുക
- യൂണിറ്റ്8ലെസൺപ്രോജക്റ്റിൽ തുടർന്നും പ്രവർത്തിക്കുക.
-
മൂന്നാമത്തെ കമന്റിന് ശേഷം turn_to_heading കമാൻഡ് ചേർക്കുക. പാരാമീറ്റർ 180 ഡിഗ്രിയിലേക്ക് സജ്ജമാക്കുക, അങ്ങനെ പ്രോജക്റ്റ് ഇപ്പോൾ ഇതുപോലെ കാണപ്പെടുന്നു:
ഡെഫ് മെയിൻ(): #1. ആദ്യത്തെ ഡിസ്ക് ലേക്ക് ഡ്രൈവ് ചെയ്യുക, അതേസമയം down_eye.near_object(): drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2 അല്ല. ആദ്യത്തെ ഡിസ്ക് മാഗ്നെറ്റ് എടുക്കുക. ഊർജ്ജസ്വലമാക്കുക(BOOST) # 3. ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യുക ഡ്രൈവ്ട്രെയിൻ.turn_to_heading(180, DEGREES) # 4. ലക്ഷ്യത്തിൽ ഡിസ്ക് ഇടുക -
ഇപ്പോൾ വിആർ റോബോട്ട് ലക്ഷ്യത്തിലേക്ക് നീങ്ങിയിരിക്കുന്നു, വിആർ റോബോട്ടിന് ലക്ഷ്യത്തിലേക്ക് തിരികെ പോകേണ്ടതുണ്ട്. turn_to_heading കമാൻഡിന് താഴെ ഒരുwhile ലൂപ്പ് ചേർക്കുക, അങ്ങനെ പ്രോജക്റ്റിന്റെ മൂന്നാമത്തെ ഭാഗം ഇതുപോലെ കാണപ്പെടും:
# 3. ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യുക drivetrain.turn_to_heading(180, DEGREES) while condition: wait(5, MSEC) - ലക്ഷ്യത്തിലേക്ക് തിരികെ ഡ്രൈവ് ചെയ്യുന്നതിന്, VR റോബോട്ട് ദൂര സെൻസറിൽ നിന്നുള്ള ഡാറ്റ ഉപയോഗിച്ച് VR റോബോട്ട് എപ്പോൾ ലക്ഷ്യത്തിനുള്ളിൽ ഉണ്ടെന്ന് നിർണ്ണയിക്കും. മുൻ പാഠത്തിൽ ചർച്ച ചെയ്തതുപോലെ, ഡിസ്ക് മൂവർ പ്ലേഗ്രൗണ്ട് ലെ ഓരോ ഗ്രിഡ് സ്ക്വയറും 200 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) 200 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) അളക്കുന്നു.

-
ആ അളവുകൾ ഉപയോഗിച്ച്, ലക്ഷ്യത്തിന്റെ മധ്യഭാഗം കളിസ്ഥലത്തിന്റെ ഭിത്തിയിൽ നിന്ന് ഏകദേശം 200 മില്ലിമീറ്റർ (മില്ലീമീറ്റർ) ആണെന്ന് നിർണ്ണയിക്കാൻ കഴിയും.

-
VR റോബോട്ട് ഡ്രൈവ് ചെയ്യണം, അതേസമയം Distance Sensorറിപ്പോർട്ട് ചെയ്യുന്നത് VR റോബോട്ട് പ്ലേഗ്രൗണ്ടിന്റെ ഭിത്തിയിൽ നിന്ന് 200 മില്ലിമീറ്ററിൽ (mm) കൂടുതൽ അകലെയാണെന്നാണ്. മില്ലിമീറ്റർ (mm) പാരാമീറ്റർ ഉപയോഗിച്ച് while ലൂപ്പിന്റെ അവസ്ഥ get_distance കമാൻഡിലേക്ക് സജ്ജമാക്കുക. തുടർന്ന് (>) 200 നേക്കാൾ വലുതിലേക്ക് താരതമ്യ ഓപ്പറേറ്റർ ചേർക്കുക. പ്രോജക്റ്റിന്റെ മൂന്നാം ഭാഗം ഇപ്പോൾ ഇതുപോലെയായിരിക്കണം:
# 3. ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യുക drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: wait(5, MSEC) -
ഈ while ലൂപ്പിലേക്ക് ഒരു driveകമാൻഡ് ചേർക്കുക, അങ്ങനെ പ്രോജക്റ്റിന്റെ മൂന്നാമത്തെ ഭാഗം ഇതുപോലെ കാണപ്പെടുന്നു. ഇത് വിആർ റോബോട്ടിനെ മുന്നോട്ട് ഓടിക്കാൻ നിർദ്ദേശിക്കും, അതേസമയം ഡിസ്റ്റൻസ് സെൻസർ 200 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്ററിൽ) കൂടുതൽ ദൂരം റിപ്പോർട്ട് ചെയ്യുന്നു.
# 3. ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യുക drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) -
വിആർ റോബോട്ട് ലക്ഷ്യത്തിലെത്തിക്കഴിഞ്ഞാൽ (മതിലിൽ നിന്ന് 200 മില്ലീമീറ്റർ), വിആർ റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തേണ്ടതുണ്ട്. while ലൂപ്പിന് പുറത്ത് ഒരു stopകമാൻഡ് ചേർക്കുക, അങ്ങനെ പ്രോജക്റ്റിന്റെ മൂന്നാമത്തെ ഭാഗം ഇതുപോലെ കാണപ്പെടും:
# 3. ലക്ഷ്യത്തിലേക്ക് ഡ്രൈവ് ചെയ്യുക drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() -
ഇപ്പോൾ വിആർ റോബോട്ട് ലക്ഷ്യത്തിൽ നിർത്തിയിരിക്കുന്നതിനാൽ, അതിന് ഡിസ്ക് ഉപേക്ഷിക്കാൻ കഴിയും. നാലാമത്തെ കമന്റിന് താഴെയായി ഒരു energize കമാൻഡ് ചേർത്ത് 'DROP' എന്ന പാരാമീറ്റർ സജ്ജമാക്കുക. പ്രോജക്റ്റിന്റെ നാലാമത്തെ ഭാഗം ഇപ്പോൾ ഇതുപോലെയായിരിക്കണം:
# 4. ഗോൾ മാഗ്നെറ്റിൽ ഡിസ്ക് ഇടുക. ഊർജ്ജസ്വലമാക്കുക(ഡ്രോപ്പ് ചെയ്യുക) -
ഡിസ്കുകളിൽ ഇടിക്കുകയോ കൂട്ടിയിടിക്കുകയോ ചെയ്യാതിരിക്കാൻ VR റോബോട്ട് കുറച്ച് ദൂരം പിന്നിലേക്ക് ഓടിക്കേണ്ടതുണ്ട്. ഒരു ഡിസ്കുമായി കൂട്ടിയിടിക്കുന്നത് വിആർ റോബോട്ടിനെ പാത തെറ്റിക്കാൻ സാധ്യതയുണ്ട്. പിന്നീട് VR റോബോട്ട് ഡിസ്കുകളെ അഭിമുഖീകരിക്കുന്ന തരത്തിൽ വീണ്ടും തിരിയേണ്ടതുണ്ട്. കാണിച്ചിരിക്കുന്നതുപോലെ അവസാന energize കമാൻഡിന് ശേഷം ഇനിപ്പറയുന്ന കമാൻഡുകൾ ചേർക്കുക, VR റോബോട്ടിനോട് 100 മില്ലിമീറ്റർ (mm) റിവേഴ്സ് ഡ്രൈവ് ചെയ്യാനും 0 ഡിഗ്രി ഹെഡിംഗിലേക്ക് തിരികെ തിരിക്കാനും നിർദ്ദേശിക്കുക. നിങ്ങളുടെ പ്രോജക്റ്റിൽ കമാൻഡുകൾ ശരിയായി ഇൻഡന്റ് ചെയ്തിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക.
# 4. ലക്ഷ്യത്തിൽ ഡിസ്ക് ഇടുക magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) drivetrain.turn_to_heading(0, DEGREES) - ഡിസ്ക് മൂവർ പ്ലേഗ്രൗണ്ട് തുറന്നിട്ടില്ലെങ്കിൽ അത് തുറന്ന് പ്രോജക്റ്റ് പ്രവർത്തിപ്പിക്കുക.
-
വിആർ റോബോട്ട് മുന്നോട്ട് നീങ്ങുന്നു, ആദ്യത്തെ ഡിസ്ക് എടുക്കുന്നു, തുടർന്ന് ലക്ഷ്യത്തെ അഭിമുഖീകരിക്കാൻ 180 ഡിഗ്രി തലക്കെട്ടിലേക്ക് തിരിയുന്നു. തുടർന്ന് വിആർ റോബോട്ട് ഡിസ്റ്റൻസ് സെൻസറിൽ നിന്നുള്ള മൂല്യങ്ങൾ ഉപയോഗിച്ച് എപ്പോൾ ഡ്രൈവിംഗ് നിർത്തി ഡിസ്ക് ഉപേക്ഷിക്കണമെന്ന് നിർണ്ണയിക്കുന്നു.

ലക്ഷ്യത്തിലെ ആദ്യ ഡിസ്ക് ഉപേക്ഷിക്കുന്നതിനുള്ള പ്രോജക്റ്റ് ഫ്ലോ
പ്രോജക്റ്റിന്റെ ഈ ഭാഗത്ത് ഡിസ്റ്റൻസ് സെൻസറുമായി ലൂപ്പും ലൂപ്പും എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് ശ്രദ്ധിക്കുക.
- VR റോബോട്ട് മുന്നോട്ട് ഓടും, അതേസമയംഡിസ്റ്റൻസ് സെൻസർ ഭിത്തിയിൽ നിന്ന് 200 മില്ലിമീറ്ററിൽ കൂടുതൽ അകലെയാണ്.
- പ്ലേഗ്രൗണ്ടിന്റെ ഭിത്തി 200 മില്ലിമീറ്ററിൽ (മില്ലീമീറ്റർ) താഴെയാണെന്ന് ഡിസ്റ്റൻസ് സെൻസർ കണ്ടെത്തുമ്പോൾ, പ്രോജക്റ്റ് whileലൂപ്പിന് പുറത്തുള്ള അടുത്ത കമാൻഡിലേക്ക് നീങ്ങുകയും VR റോബോട്ട് ഡ്രൈവിംഗ് നിർത്തുകയും ചെയ്യും.
- പദ്ധതി തുടരും, ഡിസ്ക് ലക്ഷ്യത്തിലേക്ക് ഇടുക.
- പിന്നെ വിആർ റോബോട്ട് റിവേഴ്സ് ചെയ്ത് 180 ഡിഗ്രി തിരിഞ്ഞ് അടുത്ത ഡിസ്കിനെ നേരിടാൻ തയ്യാറാകും.
ഈ പാഠത്തിന്റെ ബാക്കി ഭാഗം തുടരാൻ അടുത്തത് ബട്ടൺ തിരഞ്ഞെടുക്കുക.