সুচিপত্র:
- ধাপ 1: প্রয়োজনীয় উপাদান
- ধাপ 2: ট্র্যাক সেটআপ করুন
- ধাপ 3: পরিবেশ স্থাপন
- ধাপ 4: GiggleBot প্রোগ্রামিং
- ধাপ 5: এটি চালানো
ভিডিও: পাইগন ব্যবহার করে GiggleBot লাইন ফলোয়ার: 5 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
এই সময়, আমরা মাইক্রোপাইথন ডেক্সটার ইন্ডাস্ট্রিজ গিগলবট-এ প্রোগ্রামিং করছি যাতে তার বিল্ট-ইন লাইন ফলোয়ার সেন্সর ব্যবহার করে একটি কালো রেখা অনুসরণ করা যায়।
GiggleBot- কে বিবিসি মাইক্রো: বিটের সাথে যুক্ত করতে হবে যাতে এটি যথাযথভাবে নিয়ন্ত্রণ করা যায়।
যদি এই টিউটোরিয়ালটি আপনার জন্য খুব উন্নত হয় এবং GiggleBot এর প্রোগ্রামিং আপাতত খুব বেশি হয়, আপনি সবসময় স্টার্টার টিউটোরিয়াল দিয়ে যেতে পারেন যা আপনাকে দেখায় যে কিভাবে রোবটটি এখানে মেককোডে প্রোগ্রাম করা যায়। লিঙ্ক করা টিউটোরিয়ালটি আপনাকে একেবারে বেসিক দিয়ে নিয়ে যাবে।
ধাপ 1: প্রয়োজনীয় উপাদান
নিম্নলিখিত হার্ডওয়্যার উপাদান প্রয়োজন:
- x3 AA ব্যাটারী - আমার ক্ষেত্রে আমি রিচার্জেবল ব্যাটারি ব্যবহার করছি যার সামগ্রিক ভোল্টেজ কম।
- মাইক্রো: বিটের জন্য একটি ডেক্সটার ইন্ডাস্ট্রিজ গিগলবট রোবট।
- বিবিসির একটি মাইক্রো: বিট।
অবশ্যই, বিবিসি মাইক্রো: বিট প্রোগ্রাম করার জন্য আপনার একটি মাইক্রো ইউএসবি কেবল প্রয়োজন
মাইক্রোর জন্য 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 টিপুন।
প্রস্তাবিত:
Arduino Uno এবং L298N: 5 ধাপ ব্যবহার করে লাইন ফলোয়ার রোবট
Arduino Uno এবং L298N ব্যবহার করে লাইন ফলোয়ার রোবট: লাইন ফ্লাওয়ার একটি খুব সহজ রোবট যা নতুন ইলেকট্রনিক্সের জন্য আদর্শ
আরডুইনো (মাইক্রোকন্ট্রোলার) ব্যবহার না করে কীভাবে লাইন ফলোয়ার রোবট তৈরি করবেন: 5 টি ধাপ
Arduino (মাইক্রোকন্ট্রোলার) ব্যবহার না করে কিভাবে একটি লাইন ফলোয়ার রোবট তৈরি করবেন: এই নির্দেশনায়, আমি আপনাকে শিখাব কিভাবে Arduino ব্যবহার না করে রোবট অনুসরণ করে একটি লাইন তৈরি করতে হয়। আমি ব্যাখ্যা করার জন্য খুব সহজ ধাপ ব্যবহার করব। লাইনটি অনুসরণ করুন।আপনার কোন ধরনের প্রোগ্রামিং অভিজ্ঞতা প্রয়োজন হবে না
Arduino ব্যবহার করে লাইন ফলোয়ার - সহজ DIY প্রকল্প: 6 টি ধাপ
Arduino ব্যবহার করে লাইন ফলোয়ার | সহজ DIY প্রকল্প: এই টিউটোরিয়ালে, আমরা ArduinoParts এর প্রয়োজন অনুসারে একটি লাইন অনুসরণকারী তৈরি করব: চ্যাসি: BO মোটর এবং চাকা: https://amzn.to/2Yjh9I7 L298n মোটর ড্রাইভার: https://amzn.to/2IWNMWF IR সেন্সর : https://amzn.to/2FFtFu3 Arduino Uno: https://amzn.to/2FyTrjF J
লাইন ফলোয়ার রোবট উইটব্লক্স ব্যবহার করে: 3 টি ধাপ
লাইন ফলোয়ার রোবট উইটব্লক্স ব্যবহার করে: একটি রোবট তৈরি করা সবসময় আমাদের রোমাঞ্চিত করে। একটি বুদ্ধিমান রোবট তৈরি করা যা নিজের সিদ্ধান্ত নিতে পারে তা আরও বেশি রোমাঞ্চকর। চলুন আজ WitBlox ব্যবহার করে একটি লাইন ফলোয়ার রোবট তৈরি করি। লাইন ফলোয়ার হল একটি স্বায়ত্তশাসিত রোবট যা ব্ল্যাক অনুসরণ করে
Arduino ব্যবহার করে কিভাবে একটি লাইন ফলোয়ার তৈরি করবেন: 8 টি ধাপ (ছবি সহ)
আরডুইনো ব্যবহার করে কীভাবে লাইন ফলোয়ার তৈরি করবেন: আপনি যদি রোবোটিক্স দিয়ে শুরু করছেন, তাহলে প্রথম যে প্রকল্পটি শুরু করেন তার মধ্যে একটি লাইন ফলোয়ার অন্তর্ভুক্ত। এটি একটি বিশেষ খেলনা গাড়ি যা একটি লাইন বরাবর চালানোর জন্য যা সাধারণত কালো রঙের এবং ব্যাকগ্রাউন্ডের বিপরীতে।