সুচিপত্র:

বল ট্র্যাকিং রোবট: 8 টি ধাপ
বল ট্র্যাকিং রোবট: 8 টি ধাপ

ভিডিও: বল ট্র্যাকিং রোবট: 8 টি ধাপ

ভিডিও: বল ট্র্যাকিং রোবট: 8 টি ধাপ
ভিডিও: ঘুমানোর সময় ঘাড়ে উকুন উঠে গেলো #cartoon 2024, নভেম্বর
Anonim
বল ট্র্যাকিং রোবট
বল ট্র্যাকিং রোবট
বল ট্র্যাকিং রোবট
বল ট্র্যাকিং রোবট
বল ট্র্যাকিং রোবট
বল ট্র্যাকিং রোবট

সুতরাং, আমি বলব কিভাবে একটি বল ট্র্যাকিং রোবট তৈরি করা যায় যা একটি রোবট একটি বল সনাক্ত করে এবং তা অনুসরণ করে। এটি মূলত একটি স্বয়ংক্রিয় নজরদারি কৌশল যা আধুনিক বিশ্বে ব্যবহার করা যেতে পারে। সুতরাং, আসুন আমরা কেবল ভিতরে যাই এবং নির্মাণ শুরু করি …

দ্রষ্টব্য: এটি ডিকিন ইউনিভার্সিটি, স্কুল অফ আইটি, এসআইটি -210 এমবেডেড সিস্টেম ডেভেলপমেন্টে জমা দেওয়া অংশ অংশ।

সরবরাহ

www.hackster.io/junejarohan/ball-tracking-robot-7a9865

ধাপ 1: ভূমিকা

ভূমিকা
ভূমিকা

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

যেকোনো বহিরঙ্গন নজরদারি ব্যবস্থা অবশ্যই তার দৃশ্যের ক্ষেত্রে চলমান বস্তুগুলিকে ট্র্যাক করতে, এই বস্তুর শ্রেণিবিন্যাস করতে এবং তাদের কিছু কার্যকলাপ সনাক্ত করতে সক্ষম হতে হবে। আমি বাস্তবসম্মত পরিস্থিতিতে এই বস্তুগুলিকে ট্র্যাক এবং শ্রেণিবদ্ধ করার একটি পদ্ধতি তৈরি করেছি। একক ক্যামেরায় অবজেক্ট ট্র্যাকিং ব্যাকগ্রাউন্ড বিয়োগ ব্যবহার করে সঞ্চালিত হয়, এর পরে অঞ্চলের চিঠিপত্র। এটি গতি, মাপ এবং সীমানা বাক্সের দূরত্ব সহ একাধিক সংকেত বিবেচনায় নেয়।

ধাপ 2: এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য

এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য
এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য
এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য
এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য
এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য
এই প্রকল্পে ব্যবহৃত উপকরণ এবং নরম দ্রব্য

ব্যবহৃত হার্ডওয়্যার উপাদান:

  • রাস্পবেরি পাই (x1)
  • রাস্পবেরি পাই ক্যামেরা মডিউল (x1)
  • অতিস্বনক সেন্সর (x3)
  • স্পার্কফুন ডুয়াল এইচ-ব্রিজ মোটর ড্রাইভার L298 (x1)
  • ডিসি মোটর (x1)
  • ব্রেডবোর্ড (x1)
  • তারের সংযোগ

ব্যবহৃত সফটওয়্যার:

ওপেনসিভি

হাতের যন্ত্রপাতি:

পাইথন

ধাপ 3: কি করতে হবে?

যেকোনো বহিরঙ্গন নজরদারি ব্যবস্থা অবশ্যই তার দৃশ্যের ক্ষেত্রে চলমান বস্তুগুলিকে ট্র্যাক করতে, এই বস্তুগুলিকে শ্রেণীবদ্ধ করতে এবং তাদের কিছু কার্যকলাপ সনাক্ত করতে সক্ষম হতে হবে। আমি বাস্তবসম্মত পরিস্থিতিতে এই বস্তুগুলিকে ট্র্যাক এবং শ্রেণিবদ্ধ করার একটি পদ্ধতি তৈরি করেছি। একক ক্যামেরায় অবজেক্ট ট্র্যাকিং ব্যাকগ্রাউন্ড বিয়োগ ব্যবহার করে সঞ্চালিত হয়, এর পরে অঞ্চলের চিঠিপত্র। এটি গতি, মাপ এবং সীমানা বাক্সের দূরত্ব সহ একাধিক সংকেত বিবেচনায় নেয়।

ফ্রেম দ্বারা ছবি ফ্রেম সনাক্ত করার সময় গুরুত্বপূর্ণ বিষয় ছিল কোন ফ্রেম ড্রপ এড়ানো, কারণ বট যদি ফ্রেমের ড্রপের কারণে বলের গতিবিধি লক্ষ্য করতে ব্যর্থ হয় তাহলে বট একটি লিম্বো অবস্থায় যেতে পারে। যদি বলটি ক্যামেরার সীমার বাইরে চলে যায়, তাহলে সেটাকে আমরা লিম্বো স্টেট বলি, সেই ক্ষেত্রে, বটটি তার চারপাশের স্থান দেখার জন্য 360 ডিগ্রী টার্ন করে, যতক্ষণ না বলটি ফ্রেমে ফিরে আসে ক্যামেরা এবং তারপর তার দিকে চলতে শুরু করুন।

চিত্র বিশ্লেষণের জন্য, আমি প্রতিটি ফ্রেম নিচ্ছি এবং তারপরে প্রয়োজনীয় রঙ দিয়ে এটি মাস্ক করছি। তারপর আমি সব কনট্যুর খুঁজে এবং তাদের মধ্যে সবচেয়ে বড় খুঁজে এবং এটি একটি আয়তক্ষেত্র মধ্যে আবদ্ধ। এবং মূল ছবিতে আয়তক্ষেত্র দেখান এবং আয়তক্ষেত্রের কেন্দ্রের স্থানাঙ্কগুলি খুঁজুন।

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

ইমেজ প্রসেসিংয়ের উদ্দেশ্যে, আপনাকে আপনার রাস্পবেরি পাইতে ওপেনসিভি সফটওয়্যার ইনস্টল করতে হবে যা আমার জন্য বেশ চতুর ছিল।

আপনি এই লিঙ্কের মাধ্যমে OpenCV ইনস্টল করার জন্য কোন প্রয়োজনীয় তথ্য পেতে পারেন: এখানে ক্লিক করুন

ধাপ 4: স্কিম্যাটিক্স

Image
Image
স্কিম্যাটিক্স
স্কিম্যাটিক্স
স্কিম্যাটিক্স
স্কিম্যাটিক্স

উপরে আমি আমার প্রকল্পের জন্য স্কিম্যাটিক্স সরবরাহ করেছি এবং এর সাথে প্রিন্টেড সার্কিট বোর্ড (পিসিবি) রয়েছে।

এবং এখানে কিছু প্রধান সংযোগ যা আপনাকে করতে হবে:

All প্রথমত রাস্পবেরি পাই ক্যামেরা মডিউল সরাসরি রাস্পবেরি পাই এর সাথে সংযুক্ত।

Ult অতিস্বনক সেন্সর VCC সাধারণ টার্মিনালের সাথে GND (স্থল) এর সাথে সংযুক্ত এবং অতিস্বনক সেন্সরের অবশিষ্ট দুটি পোর্ট রাস্পবেরি পাইতে GPIO পিনের সাথে সংযুক্ত।

Mot মোটরগুলি এইচ-ব্রিজ ব্যবহার করে সংযুক্ত।

The ব্যাটারি ব্যবহার করে বিদ্যুৎ সরবরাহ করা হয়।

আমি সেই ভিডিওটিও যোগ করেছি যা হয়তো অতিস্বনক সেন্সরের কাজ বোঝার জন্য এবং এটি কীভাবে কাজ করে তা বুঝতে সাহায্য করতে পারে।

এবং যদি আপনি উপরের ভিডিওটি খুঁজে না পান তবে আপনি এই লিঙ্কটি অনুসরণ করতে পারেন।

ধাপ 5: কিভাবে করবেন?

আমি এই প্রজেক্টটি তৈরি করেছি একটি মৌলিক রোবট যা একটি বল ট্র্যাক করতে পারে। রোবট একটি ক্যামেরা ব্যবহার করে ফ্রেম গ্রহণ করে এবং বল ট্র্যাক করে ইমেজ প্রসেসিং করে। বল ট্র্যাক করার জন্য বিভিন্ন বৈশিষ্ট্য যেমন তার রঙ, আকার, আকৃতি ব্যবহার করা হয়।

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

একটি H- সেতু মোটর ঘূর্ণনের দিক পরিবর্তন বা তাদের বন্ধ করার জন্য ব্যবহার করা হয়েছে।

চিত্র বিশ্লেষণের জন্য, আমি প্রতিটি ফ্রেম নিচ্ছি এবং তারপরে প্রয়োজনীয় রঙ দিয়ে এটি মাস্ক করছি। তারপর আমি সব কনট্যুর খুঁজে এবং তাদের মধ্যে সবচেয়ে বড় খুঁজে এবং এটি একটি আয়তক্ষেত্র মধ্যে আবদ্ধ। এবং মূল ছবিতে আয়তক্ষেত্র দেখান এবং আয়তক্ষেত্রের কেন্দ্রের স্থানাঙ্কগুলি খুঁজুন।

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

ধাপ 6: ছদ্ম-কোড

সুডোকোড
সুডোকোড

ওপেনসিভি ব্যবহার করে শনাক্তকরণ অংশের জন্য এখানে ছদ্ম-কোড রয়েছে যেখানে আমরা একটি বল সনাক্ত করি।

ধাপ 7: কোড

কোড
কোড
কোড
কোড
কোড
কোড
কোড
কোড

উপরে কোডের স্নিপেট রয়েছে এবং নীচে কোডটির বিস্তারিত বিবরণ রয়েছে।

# প্রয়োজনীয় প্যাকেজ আমদানি করুন

আমরা সমস্ত প্রয়োজনীয় প্যাকেজ আমদানি করি

picamera.array থেকে PiRGBArray আমদানি করুন #যেহেতু রাস্পবেরি পাইতে একটি রেজল্যুশন সমস্যা রয়েছে, ভিডিওক্যাপচার দ্বারা ফ্রেমগুলি ক্যাপচার করতে সক্ষম হবে না

পিকামেরা আমদানি থেকে পাইকামেরা আমদানি RPi. GPIO হিসাবে GPIO আমদানি সময় আমদানি অস্পষ্ট np হিসাবে

এখন আমরা হার্ডওয়্যার সেট করি এবং রাস্পবেরি পিআই -এর সাথে সংযুক্ত পিনগুলি অ্যাসাইন করি

GPIO.setmode (GPIO. BOARD)

GPIO_TRIGGER1 = 29 #বাম অতিস্বনক সেন্সর

GPIO_ECHO1 = 31

GPIO_TRIGGER2 = 36 #সামনের আল্ট্রাসনিক সেন্সর

GPIO_ECHO2 = 37

GPIO_TRIGGER3 = 33 #ডান অতিস্বনক সেন্সর

GPIO_ECHO3 = 35

মোটর 1 বি = 18 #বাম মোটর

মোটর 1 ই = 22

MOTOR2B = 21 #ডান মোটর

মোটর 2 ই = 19

LED_PIN = 13 #যদি এটি বল খুঁজে পায়, তাহলে এটি নেতৃত্বকে আলোকিত করবে

# আউটপুট এবং ইনপুট হিসাবে পিন সেট করুন

GPIO.setup (GPIO_TRIGGER1, GPIO. OUT) # ট্রিগার GPIO.setup (GPIO_ECHO1, GPIO. IN) # ইকো GPIO.setup (GPIO_TRIGGER2, GPIO. OUT) # ট্রিগার GPIO.setup (GPIO. EUO) GPIO_TRIGGER3, GPIO. OUT) # ট্রিগার GPIO.setup (GPIO_ECHO3, GPIO. IN) GPIO.setup (LED_PIN, GPIO. OUT)

# মিথ্যা (কম) ট্রিগার সেট করুন

GPIO.output (GPIO_TRIGGER1, মিথ্যা) GPIO.output (GPIO_TRIGGER2, মিথ্যা) GPIO.output (GPIO_TRIGGER3, মিথ্যা)

এই ফাংশনটি ব্যবহার করে সমস্ত আল্ট্রাসোনিক সেন্সর আমাদের বটের চারপাশের বস্তু থেকে দূরত্ব সংগ্রহ করে

# মডিউলকে নিষ্পত্তির অনুমতি দিন

ডিফ সোনার (GPIO_TRIGGER, GPIO_ECHO): start = 0 stop = 0 # পিন সেট আউটপুট এবং ইনপুট GPIO.setup (GPIO_TRIGGER, GPIO. OUT) # ট্রিগার GPIO.setup (GPIO_ECHO, GPIO. IN) # Echo # Set trigger to False (কম) GPIO.output (GPIO_TRIGGER, মিথ্যা) #মডিউলকে সময় স্থির করার অনুমতি দিন। ঘুম (0.01) #সময় দূরত্ব> 5: #10us পালস পাঠান GPIO.output (GPIO_TRIGGER, True) time.sleep (0.00001) GPIO। আউটপুট (GPIO_TRIGGER, মিথ্যা) শুরু = time.time () যখন GPIO.input (GPIO_ECHO) == 0 এবং time.time ()

রাস্পবেরি পিআইয়ের সাথে কাজ করার জন্য ডিসি মোটর পাওয়া

GPIO.setup (MOTOR1B, GPIO. OUT)

GPIO.setup (MOTOR1E, GPIO. OUT)

GPIO.setup (MOTOR2B, GPIO. OUT) GPIO.setup (MOTOR2E, GPIO. OUT)

রোবটটি পরিচালনা করতে এবং বিভিন্ন দিকনির্দেশে এটি চালানোর জন্য ফাংশনগুলি সংজ্ঞায়িত করা

ডিফ ফরোয়ার্ড ():

GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) ডিফ রিভার্স (): GPIO.out1, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH) def rightturn (): GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR1E, GPIO. HIGH) GPIO.output (MOTOR2B, GPIO. HIGH) GPIO.output (MOTOR2E, GPIO. LOW) def leftturn (): GPIO.output (MOTOR1B, GPIO. HIGH) GPIO.output, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. HIGH)

ডিফ স্টপ ():

GPIO.output (MOTOR1E, GPIO. LOW) GPIO.output (MOTOR1B, GPIO. LOW) GPIO.output (MOTOR2E, GPIO. LOW) GPIO.output (MOTOR2B, GPIO. LOW)

ক্যামেরা মডিউল কাজ করা এবং সেটিংগুলি সামঞ্জস্য করা

#ক্যামেরা ক্যাপচার

# ক্যামেরা শুরু করুন এবং কাঁচা ক্যামেরা ক্যাপচার ক্যামেরা = PiCamera () camera.resolution = (160, 120) camera.framerate = 16 rawCapture = PiRGBArray (ক্যামেরা, সাইজ = (160, 120)) # রেফারেন্স ধরুন গরম করার সময় ঘুমাতে (0.001)

এখন যেখানে বটটি ফলো করে সেখানে প্রধান জিনিসটি প্রয়োগ করুন এবং পথের মধ্যে কোন বাধা এড়ান

যখন (1 <10): { #দূরত্ব আসছে অতিস্বনক সেন্সর দূরত্ব থেকে, GPIO_ECHO1) যদি (distanceC = 8: rightturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) #while found == 0: leftturn () time.sleep (0.00625) elif distanceL> = 8: leftturn () time.sleep (0.00625) stop () time.sleep (0.0125) forward () time.sleep (0.00625) stop () time.sleep (0.0125) রাইটটার্ন () টাইম।স্লিপ (0.00625) স্টপ () টাইম।স্লিপ (0.0125) অন্যথায়: স্টপ () টাইম স্লিপ (0.01) অন্যথায়: #অন্যথায় এটি সামনের দিকে এগিয়ে যায় () time.sleep (0.00625) যদি (দূরত্ব C> 10): #এটি ক্যামেরার কাল্পনিক অক্ষের কেন্দ্রে বলের স্থানাঙ্ক নিয়ে আসে।) stop () time.sleep (0.00625) else: stop () time.sleep (0.01)

অন্য:

#যদি এটি বল খুঁজে পায় এবং এটি খুব কাছাকাছি থাকে তবে এটি নেতৃত্বের আলো জ্বালায়। GPIO.output (LED_PIN, GPIO. HIGH) time.sleep (0.1) stop () time.sleep (0.1) # cv2.imshow ("draw", frame) rawCapture.truncate (0) # প্রস্তুতিতে স্ট্রিম পরিষ্কার করুন পরবর্তী ফ্রেম}

প্রয়োজনীয় পরিষ্কার -পরিচ্ছন্নতা করুন

GPIO.cleanup () #সব GPIO পিন ফ্রি

ধাপ 8: বাহ্যিক লিঙ্ক

বিক্ষোভ ভিডিও লিঙ্ক: এখানে ক্লিক করুন (ইউটিউব)

গিট-হাবের কোডের লিঙ্ক: এখানে ক্লিক করুন (গিট-হাব)

প্রস্তাবিত: