गति#
परिचय#
मोटरें रोबोट के पुर्जों की गति को नियंत्रित करती हैं। मोटरों का उपयोग भुजा उठाने, पंजे को घुमाने, पहिए को घुमाने या किसी अन्य भाग को गति देने के लिए किया जा सकता है। दो मोटरें मिलकर ड्राइवट्रेन के रूप में पूरे रोबोट को गति देने और घुमाने का काम कर सकती हैं।
प्रत्येक मोटर को डिवाइसेस विंडो में कॉन्फ़िगर किया जाता है। बिल्ड के आधार पर, मोटर के नाम बदल सकते हैं। उदाहरण के लिए, Competition Advanced 2.0 बिल्ड में arm_motorनाम की मोटर है। एक कस्टम रोबोट अलग-अलग मोटर नामों का उपयोग कर सकता है।
डिफ़ॉल्ट रूप से, FORWARD मोटर को वामावर्त घुमाता है, और REVERSE मोटर को दक्षिणावर्त घुमाता है। यदि डिवाइसेस विंडो में मोटर को रिवर्स मोड पर सेट किया गया है, तो ये दिशाएँ उलट जाएँगी।
मोटर्स को कोड करने के कई तरीके हैं। नीचे सभी मोशन विधियों की सूची दी गई है:
कार्य — मोटर को रोकें और घुमाएँ।
spin— मोटर को हमेशा के लिए आगे या पीछे घुमाता है।spin_for— एक मोटर को एक विशिष्ट दूरी के लिए घुमाता है।spin_to_position— मोटर को एक विशिष्ट स्थिति में घुमाता है।stop— मोटर को घूमने से रोकता है।
म्यूटेटर्स — मोटर सेटिंग्स को समायोजित करें।
set_velocity— मोटर को बताता है कि कितनी तेज़ी से घूमना है।set_max_torque— यह सेट करता है कि स्पिन करते समय मोटर को कितना ज़ोर से धक्का देने की अनुमति है।set_position— मोटर की वर्तमान स्थिति को एक नए मान में बदलता है।set_stopping— यह सेट करता है कि मोटर कैसे चलना बंद कर देगी: ब्रेकिंग, कोस्टिंग या होल्डिंग द्वारा।set_timeout— यह निर्धारित करता है कि मोटर किसी गति को पूरा करने के लिए कितना समय प्रयास करेगी।
गेटर — मोटर की स्थिति जांचें।
get_position— मोटर की वर्तमान स्थिति लौटाता है।get_velocity— मोटर कितनी तेज़ी से घूम रही है, इसे -100% से 100% तक प्रतिशत के रूप में लौटाता है।get_current— यह बताता है कि मोटर बैटरी से कितनी शक्ति का उपयोग कर रही है, 0% से 100% तक प्रतिशत के रूप में।is_stopped— बूलियन मान के रूप में मोटर चलना समाप्त हो गया है या नहीं, लौटाता है।is_moving— बूलियन मान के रूप में मोटर घूम रही है या नहीं, यह लौटाता है।
कार्रवाई#
spin#
spin मोटर को निरंतर आगे या पीछे घुमाता है। मोटर तब तक घूमती रहेगी जब तक उसे कोई और क्रिया न दी जाए, जैसे कि किसी दूसरी दिशा में घुमाना या रोकना।
Usage:
arm_motor.spin(direction)
पैरामीटर |
विवरण |
|---|---|
|
मोटर के घूमने की दिशा: |
# Build Used: Competition Advanced 2.0
def main():
# Raise the ArmMotor, then stop
arm_motor.spin(REVERSE)
wait(1, SECONDS)
arm_motor.stop()
# Start threads — Do not delete
start_thread(main)
spin_for#
spin_for एक मोटर को एक निश्चित दूरी तक घुमाता है। यह घुमाव मोटर की वर्तमान स्थिति के सापेक्ष होता है। प्रोजेक्ट मोटर के घूमना बंद होने तक प्रतीक्षा करेगा, उसके बाद ही कोड की अगली पंक्ति चलेगी।
Usage:
arm_motor.spin_for(direction, angle, units, wait)
पैरामीटर |
विवरण |
|---|---|
|
मोटर के घूमने की दिशा: |
|
मोटर के घूमने की दूरी। |
|
वैकल्पिक। दूरी इकाई: |
|
वैकल्पिक। |
# Build Used: Competition Advanced 2.0
def main():
# Raise and lower the ArmMotor
arm_motor.spin_for(REVERSE, 180, DEGREES)
wait(1, SECONDS)
arm_motor.spin_for(FORWARD, 180, DEGREES)
# Start threads — Do not delete
start_thread(main)
spin_to_position#
spin_to_position कमांड spin_to_position करके मोटर को एक विशिष्ट स्थिति में घुमाया जाता है।
मोटर की स्थिति उसके घूमने की दूरी को दर्शाती है, जिसे DEGREES या TURNSमें मापा जाता है। एक चक्कर 360 डिग्री के बराबर होता है। किसी प्रोजेक्ट की शुरुआत में, मोटर की स्थिति 0 डिग्री पर सेट होती है। मोटर की स्थिति को set_position विधि का उपयोग करके भी सेट किया जा सकता है।
स्थिति के मान निरपेक्ष होते हैं। इसका अर्थ है कि घूर्णन की दिशा मोटर की वर्तमान स्थिति पर निर्भर करती है।
उदाहरण के लिए, यदि मोटर 0 डिग्री से शुरू होकर 720 डिग्री तक घूमती है, तो वह दो चक्कर आगे की ओर घूमेगी। यदि फिर वह 360 डिग्री तक घूमती है, तो वह एक चक्कर पीछे की ओर घूमेगी, क्योंकि 360, 720 से कम है।
Usage:
arm_motor.spin_to_position(angle, units, wait)
पैरामीटर |
विवरण |
|---|---|
|
मोटर जिस स्थिति तक घूमेगी, उसका मान। |
|
वैकल्पिक। स्थिति इकाई: |
|
वैकल्पिक। |
# Build Used: Competition Advanced 2.0
def main():
# Return ArmMotor to 0 degrees after raising
arm_motor.spin_for(REVERSE, 180, DEGREES)
wait(1, SECONDS)
arm_motor.spin_to_position(0, DEGREES)
# Start threads — Do not delete
start_thread(main)
stop#
stop मोटर को घूमने से रोकता है।
Usage:
arm_motor.stop()
पैरामीटर |
विवरण |
|---|---|
इस विधि के कोई मानदंड नहीं हैं। |
# Build Used: Competition Advanced 2.0
def main():
# Raise the ArmMotor
arm_motor.spin(REVERSE)
wait(1, SECONDS)
arm_motor.stop()
# Start threads — Do not delete
start_thread(main)
उत्परिवर्तक#
set_velocity#
set_velocity मोटर को यह बताता है कि उसे कितनी गति से घूमना है। उच्च प्रतिशत मोटर को तेज़ घुमाता है और निम्न प्रतिशत मोटर को धीमा घुमाता है।
प्रत्येक परियोजना की शुरुआत में प्रत्येक मोटर डिफ़ॉल्ट रूप से 50% वेग से घूमती है।
ध्यान दें: अधिक वेग से मोटर की गति तेज हो जाती है, लेकिन इससे सटीकता कम हो सकती है। कम वेग से मोटर की गति धीमी हो जाती है, लेकिन इससे सटीकता बढ़ सकती है।
Usage:
arm_motor.set_velocity(velocity)
पैरामीटर |
विवरण |
|---|---|
|
घूमने की गति 0% से 100% तक हो सकती है। यह |
# Build Used: Competition Advanced 2.0
def main():
# Move the ArmMotor at different velocities
arm_motor.spin_for(REVERSE, 180, DEGREES)
wait(1, SECONDS)
# Move slow
arm_motor.set_velocity(20)
arm_motor.spin_for(FORWARD, 180, DEGREES)
wait(1, SECONDS)
# Move fast
arm_motor.set_velocity(100)
arm_motor.spin_for(REVERSE, 180, DEGREES)
# Start threads — Do not delete
start_thread(main)
set_max_torque#
टॉर्क एक घूर्णन बल है। यह दर्शाता है कि कोई मोटर घूमते समय कितनी जोर से धक्का दे सकती है या खींच सकती है।
set_max_torque मोटर द्वारा उपयोग किए जा सकने वाले अधिकतम टॉर्क को निर्धारित करता है।
उच्च प्रतिशत मोटर को अधिक बल लगाने की अनुमति देता है, जैसे कि भारी वस्तु उठाते समय। कम प्रतिशत मोटर के बल लगाने की क्षमता को सीमित करता है। इससे रोबोट को मोटर के अटक जाने या उसकी गति सीमा तक पहुँचने की स्थिति में सुरक्षा मिलती है।
प्रत्येक प्रोजेक्ट डिफ़ॉल्ट रूप से प्रत्येक मोटर के टॉर्क को 50% पर सेट करके शुरू होता है।
Usage:
arm_motor.set_max_torque(value)
पैरामीटर |
विवरण |
|---|---|
|
मोटर द्वारा उपयोग किया जा सकने वाला अधिकतम टॉर्क 0% से 100% तक हो सकता है। यह |
# Build Used: Competition Advanced 2.0
def main():
# Move the ArmMotor at different torques
arm_motor.spin_for(REVERSE, 180, DEGREES)
wait(1, SECONDS)
# Move with less torque
arm_motor.set_max_torque(20)
arm_motor.spin_for(FORWARD, 180, DEGREES)
wait(1, SECONDS)
# Move with maximum torque
arm_motor.set_max_torque(100)
arm_motor.spin_for(REVERSE, 180, DEGREES)
# Start threads — Do not delete
start_thread(main)
set_position#
मोटर की स्थिति यह दर्शाती है कि वह कितनी दूर घूमी है, जिसे DEGREES या TURNSमें मापा जाता है। एक चक्कर 360 डिग्री के बराबर होता है। set_position मोटर की वर्तमान स्थिति को एक नए मान में बदल देता है।
उदाहरण के लिए, यदि कोई मोटर 180 डिग्री घूम चुकी है, तो उसकी स्थिति को 0 डिग्री पर सेट करने से वह स्थिति 180 से 0 डिग्री पर रीसेट हो जाएगी। फिर मोटर उस नए मान के आधार पर अलग-अलग स्थितियों में घूम सकती है।
Usage:
arm_motor.set_position(position, units)
पैरामीटर |
विवरण |
|---|---|
|
मोटर के लिए निर्धारित की जाने वाली स्थिति का मान। |
|
वैकल्पिक। स्थिति इकाई: |
# Build Used: Competition Advanced 2.0
def main():
# Return ArmMotor to 0 degrees after raising
arm_motor.set_position(0, DEGREES)
arm_motor.spin_for(REVERSE, 180, DEGREES)
wait(1, SECONDS)
arm_motor.spin_to_position(0, DEGREES)
# Start threads — Do not delete
start_thread(main)
set_stopping#
set_stopping यह निर्धारित करता है कि मोटर कैसे चलना बंद करेगी: ब्रेकिंग द्वारा, बिना एक्सीलरेटर दबाए चलने से, या रुक कर।
Usage:
arm_motor.set_stopping(mode)
पैरामीटर |
विवरण |
|---|---|
|
मोटर कैसे रुकेगी:
|
For example, if a Competition Advanced 2.0 build is used and arm_motor is set to HOLD, the motor will hold the arm at its current position until another arm movement happens. This means the motor will work against gravity to keep the arm in the air if the motor was stopped with the arm raised.
यदि इस विधि का उपयोग नहीं किया जाता है, तो मोटर रुकने के समय BRAKE का उपयोग करेगी।
# Build Used: Competition Advanced 2.0
def main():
# Move the ArmMotor, then coast to a stop
arm_motor.set_velocity(20)
arm_motor.set_stopping(COAST)
arm_motor.spin(REVERSE)
wait(1, SECONDS)
arm_motor.stop()
# Start threads — Do not delete
start_thread(main)
set_timeout#
set_timeout निर्धारित करता है कि मोटर किसी गतिविधि को पूरा करने के लिए कितना समय लेगी। यदि मोटर उस समय में गतिविधि पूरी नहीं कर पाती है, तो वह प्रयास करना बंद कर देगी और कोड की अगली पंक्ति पर चली जाएगी। इससे मोटर को गतिविधि के दौरान अटकने से बचाया जा सकता है।
Usage:
arm_motor.set_timeout(value, units)
पैरामीटर |
विवरण |
|---|---|
|
मोटर किसी गतिविधि को पूरा करने के लिए कितनी देर तक प्रयास कर सकती है। यह एक धनात्मक पूर्णांक |
|
वैकल्पिक। समय की इकाई: |
# Build Used: Competition Advanced 2.0
def main():
# Move ArmMotor as far as possible for 1 second before resetting
arm_motor.set_position(0, DEGREES)
arm_motor.set_timeout(1, SECONDS)
arm_motor.spin_for(REVERSE, 180, DEGREES)
arm_motor.spin_to_position(0, DEGREES)
# Start threads — Do not delete
start_thread(main)
टिककर खेल#
get_position#
A motor’s position is how far it has spun, measured in DEGREES or TURNS. One turn is equal to 360 degrees. get_position returns the motor’s current position.
किसी प्रोजेक्ट की शुरुआत में, मोटर की स्थिति 0 डिग्री पर सेट की जाती है। यदि मोटर एक चक्कर आगे की ओर घूमती है, तो स्थिति 360 डिग्री या 1 चक्कर होगी। यदि मोटर दूसरी दिशा में घूमती है, तो स्थिति ऋणात्मक होगी।
Usage:
arm_motor.get_position(units)
पैरामीटर |
विवरण |
|---|---|
|
वैकल्पिक। मोटर की स्थिति को वापस लाने के लिए इकाई: |
# Build Used: Competition Advanced 2.0
def main():
# Display how far the ArmMotor moves after one second
arm_motor.set_position(0, DEGREES)
console.print("Start: ")
console.print(arm_motor.get_position(DEGREES))
console.new_line()
arm_motor.spin(REVERSE)
wait(1, SECONDS)
arm_motor.stop()
console.print("After: ")
console.print(arm_motor.get_position(DEGREES))
# Start threads — Do not delete
start_thread(main)
get_velocity#
get_velocity मोटर के घूमने की गति को -100% से 100% तक प्रतिशत के रूप में लौटाता है।
धनात्मक मान का अर्थ है कि मोटर आगे की ओर घूम रही है। ऋणात्मक मान का अर्थ है कि मोटर विपरीत दिशा में घूम रही है।
Usage:
arm_motor.get_velocity()
पैरामीटर |
विवरण |
|---|---|
इस विधि के कोई मानदंड नहीं हैं। |
# Build Used: Competition Advanced 2.0
def main():
# Display the ArmMotor's velocity when it moves
console.print("Resting: ")
console.print(arm_motor.get_velocity())
console.new_line()
arm_motor.spin(REVERSE)
wait(1, SECONDS)
console.print("Moving: ")
console.print(arm_motor.get_velocity())
arm_motor.stop()
# Start threads — Do not delete
start_thread(main)
get_current#
get_current मोटर द्वारा बैटरी से उपयोग की जा रही शक्ति की मात्रा को 0% से 100% तक प्रतिशत के रूप में लौटाता है।
उच्च धारा मान का अर्थ है कि मोटर अधिक शक्ति का उपयोग कर रही है। ऐसा तब हो सकता है जब मोटर कोई भारी वस्तु उठा रही हो, किसी वस्तु को धकेल रही हो, या अटक जाने पर चलने का प्रयास कर रही हो।
Usage:
arm_motor.get_current()
पैरामीटर |
विवरण |
|---|---|
इस विधि के कोई मानदंड नहीं हैं। |
# Build Used: Competition Advanced 2.0
def main():
# Display the motor's current when it moves
console.print("Resting: ")
console.print(arm_motor.get_current())
console.new_line()
arm_motor.spin(REVERSE)
wait(1, SECONDS)
console.print("Moving: ")
console.print(arm_motor.get_current())
arm_motor.stop()
# Start threads — Do not delete
start_thread(main)
is_stopped#
is_stopped बूलियन मान के रूप में यह बताता है कि मोटर चलना बंद हो गया है या नहीं। इसका उपयोग मोटर की गति के आधार पर अन्य कार्यों के समय को नियंत्रित करने के लिए किया जा सकता है।
True— मोटर चलना बंद हो गया है।False— मोटर अभी भी चल रही है।
यह विधि निम्नलिखित मोशन विधियों के साथ मिलकर काम करती है जिनमें wait पैरामीटर है: spin_for और spin_to_position।
Usage:
arm_motor.is_stopped()
पैरामीटर |
विवरण |
|---|---|
इस विधि के कोई मानदंड नहीं हैं। |
# Build Used: Competition Advanced 2.0
def main():
# Turn the Eye Sensor's light on while ArmMotor is moving
arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
wait(0.1, SECONDS)
while True:
if arm_motor.is_stopped():
eye.set_light(OFF)
else:
eye.set_light(ON)
# Start threads — Do not delete
start_thread(main)
is_moving#
is_moving मोटर के घूमने की स्थिति को बूलियन मान के रूप में दर्शाता है। इसका उपयोग मोटर की गति के आधार पर अन्य कार्यों के समय को नियंत्रित करने के लिए किया जा सकता है।
True— मोटर घूम रही है।False— मोटर नहीं घूम रही है।
यह विधि निम्नलिखित मोशन विधियों के साथ मिलकर काम करती है जिनमें wait पैरामीटर है: spin_for और spin_to_position।
Usage:
arm_motor.is_moving()
पैरामीटर |
विवरण |
|---|---|
इस विधि के कोई मानदंड नहीं हैं। |
# Build Used: Competition Advanced 2.0
def main():
# Turn the Eye Sensor's light on while ArmMotor is moving
arm_motor.spin_for(REVERSE, 180, DEGREES, wait=False)
wait(0.1, SECONDS)
while True:
if arm_motor.is_moving():
eye.set_light(ON)
else:
eye.set_light(OFF)
# Start threads — Do not delete
start_thread(main)