গতি#
ভূমিকা#
মোটর রোবটের বিভিন্ন অংশের নড়াচড়া নিয়ন্ত্রণ করে। মোটর ব্যবহার করে একটি হাত তোলা, নখর ঘোরানো, চাকা ঘোরানো, বা কাঠামোর অন্য কোনো অংশ সরানো যায়। দুটি মোটর একসাথে একটি ড্রাইভট্রেন হিসাবে কাজ করে পুরো রোবটটিকে সরাতে এবং ঘোরাতে পারে।
প্রতিটি মোটর ডিভাইসেস উইন্ডোতে কনফিগার করা হয়। বিল্ডের উপর নির্ভর করে মোটরের নাম পরিবর্তিত হতে পারে। উদাহরণস্বরূপ, কম্পিটিশন অ্যাডভান্সড ২.০ বিল্ডে 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 একটি মোটরকে একটি নির্দিষ্ট অবস্থানে ঘোরায়।
একটি মোটরের অবস্থান হল এটি কতদূর ঘুরেছে, যা DEGREES বা TURNSএ পরিমাপ করা হয়। এক পাক 360 ডিগ্রির সমান। একটি প্রকল্পের শুরুতে, মোটরের অবস্থান 0 ডিগ্রিতে সেট করা হয়। মোটরের অবস্থান set_position পদ্ধতি ব্যবহার করেও সেট করা যেতে পারে।
অবস্থানের মানগুলো পরম। এর মানে হলো, ঘূর্ণনের দিক মোটরের বর্তমান অবস্থানের উপর নির্ভর করে।
উদাহরণস্বরূপ, যদি মোটরটি ০ ডিগ্রি থেকে যাত্রা শুরু করে ৭২০ ডিগ্রি অবস্থানে ঘোরে, তবে এটি সামনের দিকে দুইবার ঘুরবে। এরপর যদি এটি ৩৬০ ডিগ্রি অবস্থানে ঘোরে, তবে এটি পেছনের দিকে একবার ঘুরবে, কারণ ৩৬০ হলো ৭২০-এর চেয়ে কম।
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 একটি মোটরকে বলে দেয় সেটি কত দ্রুত ঘুরবে। উচ্চতর শতাংশ মোটরকে দ্রুত ঘোরায় এবং নিম্নতর শতাংশ মোটরকে ধীরে ঘোরায়।
প্রতিটি প্রজেক্ট ডিফল্টরূপে প্রতিটি মোটর ৫০% গতিতে ঘোরার মাধ্যমে শুরু হয়।
দ্রষ্টব্য: উচ্চ বেগে মোটর দ্রুত ঘোরে, কিন্তু এর নির্ভুলতা কম হতে পারে। নিম্ন বেগে মোটর ধীরে ঘোরে, কিন্তু এর নির্ভুলতা বেশি হতে পারে।
Usage:
arm_motor.set_velocity(velocity)
প্যারামিটার |
বর্ণনা |
|---|---|
|
ঘূর্ণনের বেগ ০% থেকে ১০০% পর্যন্ত। এটি একটি পূর্ণসংখ্যা |
# 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 একটি মোটরকে সর্বোচ্চ যে টর্ক ব্যবহার করার অনুমতি দেওয়া হয় তা নির্ধারণ করে।
উচ্চ শতাংশ মোটরকে আরও জোরে ধাক্কা দিতে সাহায্য করে, যেমন কোনো ভারী বস্তু তোলার সময়। নিম্ন শতাংশ মোটরের ধাক্কা দেওয়ার ক্ষমতাকে সীমিত করে। মোটর আটকে গেলে বা তার চলার শেষ সীমায় পৌঁছে গেলে এটি রোবটকে রক্ষা করতে সাহায্য করতে পারে।
প্রতিটি প্রজেক্ট ডিফল্টরূপে প্রতিটি মোটরের টর্ক ৫০% এ শুরু হয়।
Usage:
arm_motor.set_max_torque(value)
প্যারামিটার |
বর্ণনা |
|---|---|
|
মোটরটি সর্বোচ্চ যে টর্ক ব্যবহার করতে পারে, তা ০% থেকে ১০০% পর্যন্ত হতে পারে। এটি একটি পূর্ণসংখ্যা |
# 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এককে পরিমাপ করা হয়। এক পাক ৩৬০ ডিগ্রির সমান। set_position মোটরের বর্তমান অবস্থানকে একটি নতুন মানে পরিবর্তন করে।
উদাহরণস্বরূপ, যদি একটি মোটর ১৮০ ডিগ্রি ঘুরে থাকে, তবে এর অবস্থান ০ ডিগ্রিতে সেট করলে সেই অবস্থানটি ১৮০ থেকে ০ ডিগ্রিতে রিসেট হয়ে যাবে। এরপর মোটরটি সেই নতুন মানের উপর ভিত্তি করে বিভিন্ন অবস্থানে ঘুরতে পারবে।
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)
প্যারামিটার |
বর্ণনা |
|---|---|
|
মোটরটি যেভাবে থামবে:
|
উদাহরণস্বরূপ, যদি একটি কম্পিটিশন অ্যাডভান্সড ২.০ বিল্ড ব্যবহার করা হয় এবং arm_motor HOLD-তে সেট করা হয়, তাহলে মোটরটি বাহুটিকে তার বর্তমান অবস্থানে ধরে রাখবে যতক্ষণ না বাহুর অন্য কোনো নড়াচড়া হয়। এর মানে হলো, যদি বাহুটি উপরে তোলা অবস্থায় মোটরটি বন্ধ করা হয়, তাহলে মোটরটি বাহুটিকে বাতাসে ধরে রাখার জন্য মাধ্যাকর্ষণের বিরুদ্ধে কাজ করবে।
এই পদ্ধতি ব্যবহার না করা হলে, মোটরটি থামার সময় 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#
একটি মোটরের অবস্থান হলো এটি কতটুকু ঘুরেছে, যা DEGREES বা TURNSএ পরিমাপ করা হয়। এক পাক ৩৬০ ডিগ্রির সমান। get_position মোটরের বর্তমান অবস্থান ফেরত দেয়।
প্রকল্পের শুরুতে মোটরের অবস্থান ০ ডিগ্রিতে সেট করা হয়। যদি মোটরটি এক পাক সামনের দিকে ঘোরে, তাহলে অবস্থানটি ৩৬০ ডিগ্রি বা ১ পাক হবে। যদি মোটরটি বিপরীত দিকে ঘোরে, তাহলে অবস্থানটি ঋণাত্মক হবে।
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 মোটরটি ব্যাটারি থেকে কী পরিমাণ শক্তি ব্যবহার করছে তা ০% থেকে ১০০% পর্যন্ত শতাংশে ফেরত দেয়।
কারেন্টের মান বেশি হওয়ার অর্থ হলো মোটরটি বেশি শক্তি ব্যবহার করছে। এমনটা হতে পারে যখন মোটরটি কোনো ভারী জিনিস তোলে, কোনো বস্তুকে ধাক্কা দেয়, অথবা আটকে যাওয়ার পর নড়াচড়া করার চেষ্টা করে।
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)