সুচিপত্র:

পাইগন ব্যবহার করে GiggleBot লাইন ফলোয়ার: 5 টি ধাপ
পাইগন ব্যবহার করে GiggleBot লাইন ফলোয়ার: 5 টি ধাপ

ভিডিও: পাইগন ব্যবহার করে GiggleBot লাইন ফলোয়ার: 5 টি ধাপ

ভিডিও: পাইগন ব্যবহার করে GiggleBot লাইন ফলোয়ার: 5 টি ধাপ
ভিডিও: ভালো মানের গিরিবাজ কবুতর চেনার উপায় | গিরিবাজ কবুতর | কবুতর চেনার উপায় | ExistBD 2024, নভেম্বর
Anonim
পাইথন ব্যবহার করে GiggleBot লাইন ফলোয়ার
পাইথন ব্যবহার করে GiggleBot লাইন ফলোয়ার
পাইথন ব্যবহার করে GiggleBot লাইন ফলোয়ার
পাইথন ব্যবহার করে GiggleBot লাইন ফলোয়ার
পাইথন ব্যবহার করে GiggleBot লাইন ফলোয়ার
পাইথন ব্যবহার করে GiggleBot লাইন ফলোয়ার

এই সময়, আমরা মাইক্রোপাইথন ডেক্সটার ইন্ডাস্ট্রিজ গিগলবট-এ প্রোগ্রামিং করছি যাতে তার বিল্ট-ইন লাইন ফলোয়ার সেন্সর ব্যবহার করে একটি কালো রেখা অনুসরণ করা যায়।

GiggleBot- কে বিবিসি মাইক্রো: বিটের সাথে যুক্ত করতে হবে যাতে এটি যথাযথভাবে নিয়ন্ত্রণ করা যায়।

যদি এই টিউটোরিয়ালটি আপনার জন্য খুব উন্নত হয় এবং GiggleBot এর প্রোগ্রামিং আপাতত খুব বেশি হয়, আপনি সবসময় স্টার্টার টিউটোরিয়াল দিয়ে যেতে পারেন যা আপনাকে দেখায় যে কিভাবে রোবটটি এখানে মেককোডে প্রোগ্রাম করা যায়। লিঙ্ক করা টিউটোরিয়ালটি আপনাকে একেবারে বেসিক দিয়ে নিয়ে যাবে।

ধাপ 1: প্রয়োজনীয় উপাদান

প্রয়োজনীয় উপাদান
প্রয়োজনীয় উপাদান

নিম্নলিখিত হার্ডওয়্যার উপাদান প্রয়োজন:

  1. x3 AA ব্যাটারী - আমার ক্ষেত্রে আমি রিচার্জেবল ব্যাটারি ব্যবহার করছি যার সামগ্রিক ভোল্টেজ কম।
  2. মাইক্রো: বিটের জন্য একটি ডেক্সটার ইন্ডাস্ট্রিজ গিগলবট রোবট।
  3. বিবিসির একটি মাইক্রো: বিট।

অবশ্যই, বিবিসি মাইক্রো: বিট প্রোগ্রাম করার জন্য আপনার একটি মাইক্রো ইউএসবি কেবল প্রয়োজন

মাইক্রোর জন্য GiggleBot পান: এখানে একটু

ধাপ 2: ট্র্যাক সেটআপ করুন

ট্র্যাক সেটআপ করুন
ট্র্যাক সেটআপ করুন

আপনাকে কিছু টাইলস মুদ্রণ এবং আপনার নিজের ট্র্যাক ডিজাইন করে যেতে হবে। আপনি আমাদের নিজস্ব টাইলস ব্যবহার করতে পারেন যাতে আপনি 100% নিশ্চিত যে আপনি আমাদের শর্তাবলী প্রতিলিপি করছেন। অথবা যদি আপনি দু adventসাহসিক মনে করেন, আপনি কিছু কালো টেপ ব্যবহার করতে পারেন এবং আপনার নিজের তৈরি করতে পারেন। আমাদের ব্যবহৃত টাইলসের পিডিএফ এখানে।

উপরের ট্র্যাকটি বিভিন্ন টাইলগুলির নিম্নলিখিত সংখ্যার সমন্বয়ে গঠিত:

  • #1 টাইপের 12 টাইলস।
  • টাইপ #2 টাইপ 5।
  • টাইল টাইপ #5 এর 3 টি টেমপ্লেট।
  • টাইল টাইপ #6 এর 3 টেমপ্লেট - এখানে, আপনি একটি অতিরিক্ত টাইল দিয়ে শেষ করবেন।

পরবর্তী, তাদের মুদ্রণ এবং তাদের কাটা। উপরের ছবির মত এগুলো রাখার চেষ্টা করুন এবং মনে রাখবেন যে ট্র্যাকের ডানদিকে 2 টি টাইল একে অপরের সাথে ওভারল্যাপ করতে হবে - আপনি যদি কিছু ভুল করছেন তা ভাবার ক্ষেত্রে এটি প্রত্যাশিত।

ধাপ 3: পরিবেশ স্থাপন

পরিবেশ স্থাপন
পরিবেশ স্থাপন

আপনি মাইক্রোপিথনে বিবিসি মাইক্রো: বিট প্রোগ্রাম করতে সক্ষম হওয়ার জন্য, আপনাকে এর জন্য একটি সম্পাদক (মু সম্পাদক) সেট আপ করতে হবে এবং গিগলবট মাইক্রোপাইথন রানটাইমকে এর রানটাইম হিসাবে সেট করতে হবে। তার জন্য, আপনাকে এই পৃষ্ঠায় নির্দেশাবলী অনুসরণ করতে হবে। এই মুহূর্তে, রানটাইমের ভার্সন v0.4.0 ব্যবহার করা হয়েছে।

ধাপ 4: GiggleBot প্রোগ্রামিং

এটিতে নামার আগে, GiggleBot মাইক্রোপাইথন রানটাইমে বিবিসি মাইক্রো: বিট এবং অন্যান্য লাইব্রেরির জন্য GiggleBot এবং অন্যান্য ডেক্সটার ইন্ডাস্ট্রিজ সেন্সরকে সমর্থন করার জন্য ক্লাসিক রানটাইম রয়েছে।

এটি সেট আপ করার পর, Mu এডিটর এ নিচের স্ক্রিপ্টটি খুলুন এবং Flash এ ক্লিক করুন। এটি GiggleBot MicroPython Runtime এবং স্ক্রিপ্টটি আপনি আপনার বিবিসি মাইক্রো: বিট -এ খুললেন। স্ক্রিপ্টটিও নিচে দেখানো হয়েছে।

একবার ঝলকানি প্রক্রিয়াটি সম্পন্ন হলে, বিবিসি মাইক্রো: বিটকে গিগলবোটের মধ্যে বোর্ডের নিওপিক্সেলগুলি সামনের দিকে রাখুন, এটি ট্র্যাকে রাখুন এবং এটি চালু করুন।

লক্ষ্য করুন যে স্ক্রিপ্টে, PID এবং অন্যান্য 2 ধ্রুবক (গতি সেটপয়েন্ট এবং সর্বনিম্ন গতি ধ্রুবক) ইতিমধ্যে সেট করা আছে।

দ্রষ্টব্য: নিম্নলিখিত স্ক্রিপ্টে হোয়াইটস্পেস অনুপস্থিত থাকতে পারে এবং এটি GitHub Gists প্রদর্শনে কিছু সমস্যার কারণে বলে মনে হচ্ছে। আপনাকে তার গিটহাব পৃষ্ঠায় নিয়ে যাওয়ার জন্য সারসংকলনে ক্লিক করুন যেখানে আপনি কোডটি কপি-পেস্ট করতে পারেন।

GiggleBot PID লাইন ফলোয়ার - টিউনড w/ NeoPixels

মাইক্রোবিট আমদানি থেকে*
gigglebot আমদানি থেকে*
utime আমদানি sleep_ms, ticks_us থেকে
আমদানি ustruct
# জিবি নিওপিক্সেল শুরু করুন
নিও = init ()
# সময়
update_rate = 50
# লাভ/ধ্রুবক (ব্যাটারি ভোল্টেজ প্রায় 4.0 ভোল্ট অনুমান করা)
কেপি = 25.0
কি = 0.5
কেডি = 35.0
trigger_point = 0.3
min_speed_percent = 0.3
base_speed = 70
সেটপয়েন্ট = 0.5
last_position = setpoint
অবিচ্ছেদ্য = 0.0
run_neopixels = সত্য
center_pixel = 5# যেখানে হাসির সেন্টার পিক্সেল GB তে অবস্থিত
# ফিরোজা = টুপল (মানচিত্র (ল্যাম্বদা এক্স: ইন্ট (x / 5), (64, 224, 208))) # রঙের ব্যবহার করে নিওপিক্সেল দিয়ে ত্রুটি আঁকতে
# ফিরোজা = (12, 44, 41) # যা ঠিক উপরের ফিরোজা এর উপরে মন্তব্য করেছে
error_width_per_pixel = 0.5/3# সর্বোচ্চ ত্রুটি প্রতিটি নিওপিক্সেলের মধ্যে সেগমেন্ট সংখ্যা দ্বারা বিভক্ত
defupper_bound_linear_speed_reducer (abs_error, trigger_point, upper_bound, smallest_motor_power, highest_motor_power):
গ্লোবাল বেস_স্পিড
যদি abs_error> = trigger_point:
# x0 = 0.0
# y0 = 0.0
# x1 = উপরের_বাউন্ড - ট্রিগার_পয়েন্ট
# y1 = 1.0
# x = abs_error - trigger_point
# y = y0 + (x - x0) * (y1 - y0) / (x1 - x0)
# একই রকম
y = (abs_error - trigger_point) / (উপরের_বাউন্ড - trigger_point)
মোটর -পাওয়ার = বেস_স্পিড * (ক্ষুদ্রতম_মোটর -পাওয়ার + (1- y) * (সর্বোচ্চ_মোটর -পাওয়ার - ক্ষুদ্রতম_মোটর -পাওয়ার))
মোটর_পরিবর্তন
অন্য:
রিটার্ন বেস_স্পিড * সর্বোচ্চ_মোটর_ পাওয়ার
চালান = মিথ্যা
পূর্ববর্তী ত্রুটি = 0
যখন সত্য:
# যদি একটি বোতাম টিপানো হয় তাহলে অনুসরণ শুরু করুন
যদি button_a.is_pressed ():
চালান = সত্য
# কিন্তু যদি বোতামটি চাপানো হয় তবে লাইন অনুসারী বন্ধ করুন
যদি button_b.is_pressed ():
চালান = মিথ্যা
অবিচ্ছেদ্য = 0.0
পূর্ববর্তী ত্রুটি = 0.0
পিক্সেল_অফ ()
থামুন ()
ঘুম_এমএস (500)
যদি রান সত্য হয়:
# লাইন সেন্সর পড়ুন
start_time = ticks_us ()
ডান, বাম = read_sensor (LINE_SENSOR, উভয়)
# লাইন বাম দিকে যখন অবস্থান <0.5
# লাইন ডানদিকে যখন অবস্থান> 0.5
# লাইন মাঝখানে যখন অবস্থান = 0.5
# এটি একটি ওজনযুক্ত গাণিতিক গড়
চেষ্টা করুন:
অবস্থান = ডান /ভাসা (বাম + ডান)
জিরো ডিভিশন ত্রুটি ছাড়া:
অবস্থান = 0.5
# পরিসীমা হতে হবে (0, 1) এবং নয় [0, 1]
যদি অবস্থান == 0: অবস্থান = 0.001
যদি অবস্থান == 1: অবস্থান = 0.999
# একটি পিডি কন্ট্রোলার ব্যবহার করুন
ত্রুটি = অবস্থান - সেটপয়েন্ট
অবিচ্ছেদ্য += ত্রুটি
সংশোধন = কেপি * ত্রুটি + কি * অবিচ্ছেদ্য + কেডি * (ত্রুটি - পূর্ববর্তী_ ত্রুটি)
previous_error = ত্রুটি
# মোটর গতি গণনা করুন
motor_speed = উপরের_বাউন্ড_লাইনার_স্পিড_রেডিউসার (abs (error), setpoint * trigger_point, setpoint, min_speed_percent, 1.0)
leftMotorSpeed = motor_speed + correction
rightMotorSpeed = motor_speed - সংশোধন
# প্রদত্ত ত্রুটি অনুসারে নিওপিক্সেলগুলি আলোকিত করুন
যদি run_neopixels isTrueand total_counts %3 == 0:
আমি inb '\ x00 / x01 / x02 / x03 / x04 / x05 / x06 / x07 / x08' এর জন্য:
নিও [আমি] = (0, 0, 0)
আমি inb '\ x00 / x01 / x02 / x03' এর জন্য:
ifabs (error)> error_width_per_pixel * i:
যদি ত্রুটি <0:
# neo [center_pixel + i] = ফিরোজা
neo [center_pixel + i] = (12, 44, 41)
অন্য:
# neo [center_pixel - i] = ফিরোজা
neo [center_pixel + i] = (12, 44, 41)
অন্য:
শতাংশ = 1- (error_width_per_pixel * i -abs (error)) / error_width_per_pixel
# বর্তমান পিক্সেল হালকা করুন
যদি ত্রুটি <0:
# নিও [সেন্টার_পিক্সেল + আই] = টুপল (মানচিত্র (ল্যাম্বদা x: int (x * শতাংশ), ফিরোজা))
neo [center_pixel + i] = (int (64* শতাংশ /5), int (224* শতাংশ /5), int (208* শতাংশ /5))
অন্য:
# নিও [কেন্দ্র_পিক্সেল - আমি] = টুপল (মানচিত্র (ল্যাম্বদা x: int (x * শতাংশ), ফিরোজা))
neo [center_pixel - i] = (int (64* শতাংশ /5), int (224* শতাংশ /5), int (208* শতাংশ /5))
বিরতি
neo.show ()
চেষ্টা করুন:
# মোটরের গতি ক্লিপ করুন
যদি leftMotorSpeed> 100:
leftMotorSpeed = 100
rightMotorSpeed = rightMotorSpeed - leftMotorSpeed +100
যদি rightMotorSpeed> 100:
rightMotorSpeed = 100
leftMotorSpeed = leftMotorSpeed - rightMotorSpeed +100
যদি leftMotorSpeed <-100:
leftMotorSpeed = -100
যদি rightMotorSpeed <-100:
rightMotorSpeed = -100
# মোটর চালু করুন
set_speed (leftMotorSpeed, RightMotorSpeed)
ড্রাইভ ()
# মুদ্রণ ((ত্রুটি, মোটর_স্পিড))
ছাড়া:
# যদি আমরা কিছু অমীমাংসিত সমস্যায় পড়ি
পাস
# এবং লুপ ফ্রিকোয়েন্সি বজায় রাখুন
end_time = ticks_us ()
delay_diff = (end_time - start_time) /1000
if1000.0/ update_rate - delay_diff> 0:
ঘুম (1000.0/ update_rate - delay_diff)

GitHub দ্বারা raw দিয়ে হোস্ট করা rawgigglebot_tuned_line_follower.py দেখুন

ধাপ 5: এটি চালানো

বিবিসি মাইক্রোতে 2 টি বোতাম রয়েছে: বিট: বোতাম এ এবং বোতাম বি:

  • বোতাম এ টিপলে গিগলবট লাইনটি অনুসরণ করতে সেট করে (যদি থাকে)।
  • বোতাম B টিপলে GiggleBot বন্ধ হয়ে যায় এবং সবকিছু রিসেট হয় যাতে আপনি এটি আবার ব্যবহার করতে পারেন।

এটি একটি লাইন অনুসরণ করার সময় GiggleBot উত্তোলন না করার পরামর্শ দেওয়া হয় এবং তারপরে এটি আবার এটিতে রাখুন কারণ গণনা করা ত্রুটিটি জমা হতে পারে এবং রোবটের রুটকে পুরোপুরি বিঘ্নিত করতে পারে। যদি আপনি এটি উত্তোলন করতে চান, তবে বোতামটি টিপুন এবং তারপর যখন আপনি এটি আবার রাখবেন তখন A টিপুন।

প্রস্তাবিত: