সুচিপত্র:

রাস্পবেরি পাই - ওপেনসিভি অবজেক্ট ট্র্যাকিং সহ স্বায়ত্তশাসিত মার্স রোভার: 7 টি ধাপ (ছবি সহ)
রাস্পবেরি পাই - ওপেনসিভি অবজেক্ট ট্র্যাকিং সহ স্বায়ত্তশাসিত মার্স রোভার: 7 টি ধাপ (ছবি সহ)

ভিডিও: রাস্পবেরি পাই - ওপেনসিভি অবজেক্ট ট্র্যাকিং সহ স্বায়ত্তশাসিত মার্স রোভার: 7 টি ধাপ (ছবি সহ)

ভিডিও: রাস্পবেরি পাই - ওপেনসিভি অবজেক্ট ট্র্যাকিং সহ স্বায়ত্তশাসিত মার্স রোভার: 7 টি ধাপ (ছবি সহ)
ভিডিও: রাস্পবেরি পাই পরিচিতি ও প্রথম বুট Raspberry Pi Bangla 2024, নভেম্বর
Anonim
রাস্পবেরি পাই - ওপেনসিভি অবজেক্ট ট্র্যাকিং সহ স্বায়ত্তশাসিত মার্স রোভার
রাস্পবেরি পাই - ওপেনসিভি অবজেক্ট ট্র্যাকিং সহ স্বায়ত্তশাসিত মার্স রোভার

একটি রাস্পবেরি পাই 3, ওপেন সিভি অবজেক্ট রিকগনিশন, অতিস্বনক সেন্সর এবং গিয়ার্ড ডিসি মোটর দ্বারা চালিত। এই রোভার ট্রেনিং করা যেকোনো বস্তুকে ট্র্যাক করতে পারে এবং যে কোনো ভূখণ্ডে চলে যেতে পারে।

ধাপ 1: ভূমিকা

Image
Image
উপকরণ এবং সফ্টওয়্যার প্রয়োজন
উপকরণ এবং সফ্টওয়্যার প্রয়োজন

এই নির্দেশাবলীতে, আমরা একটি স্বায়ত্তশাসিত মার্স রোভার তৈরি করতে যাচ্ছি যা একটি ওয়েবক্যাম ডিভাইস বা আসল রাস্পবেরি পাই ক্যামেরা ব্যবহার করার বিকল্প সহ রাস্পবেরি পাই 3 তে চলমান ওপেন সিভি সফ্টওয়্যার ব্যবহার করে বস্তুগুলিকে সনাক্ত করতে এবং তাদের ট্র্যাক করতে পারে। এটি একটি অতিস্বনক সেন্সর দিয়ে সজ্জিত যা একটি সারভোতে লাগানো হয় যাতে অন্ধকার পরিবেশে ক্যামেরা কাজ না করে। পাই থেকে প্রাপ্ত সিগন্যালগুলি মোটর ড্রাইভার IC (L293D) এর কাছে পাঠানো হয় যা পিভিসি পাইপ দিয়ে তৈরি শরীরে লাগানো 4 x 150RPM DC মোটর চালায়।

পদক্ষেপ 2: উপকরণ এবং সফ্টওয়্যার প্রয়োজন

উপকরণ এবং সফ্টওয়্যার প্রয়োজন
উপকরণ এবং সফ্টওয়্যার প্রয়োজন
উপকরণ এবং সফ্টওয়্যার প্রয়োজন
উপকরণ এবং সফ্টওয়্যার প্রয়োজন

প্রয়োজনীয় সামগ্রী

  1. রাস্পবেরি পাই (শূন্য ছাড়া যে কোন)
  2. রাস্পবেরি পিআই ক্যামেরা বা একটি ওয়েবক্যাম
  3. L293D মোটর ড্রাইভার IC
  4. রোবট হুইল (7x4cm) X 4
  5. গিয়ার্ড ডিসি মোটরস (150 আরপিএম) এক্স 4
  6. চেসিসের জন্য পিভিসি পাইপ

সফটওয়্যার প্রয়োজন

  1. এসএসএইচ পাই এর জন্য পুটি
  2. বস্তুর স্বীকৃতির জন্য সিভি খুলুন

ধাপ 3: রোভার চ্যাসি নির্মাণ

রোভার চ্যাসি নির্মাণ
রোভার চ্যাসি নির্মাণ
রোভার চ্যাসি নির্মাণ
রোভার চ্যাসি নির্মাণ
রোভার চ্যাসি নির্মাণ
রোভার চ্যাসি নির্মাণ

এই পিভিসি চ্যাসি তৈরি করতে আপনার প্রয়োজন হবে

  • 2 এক্স 8"
  • 2 এক্স 4"
  • 4 টি-জয়েন্ট

কাঠামোর মতো একটি সিঁড়িতে পিভিসি পাইপ সাজান এবং টি-জয়েন্টগুলোতে োকান। জয়েন্টগুলোকে আরও শক্তিশালী করতে আপনি পিভিসি সিল্যান্ট ব্যবহার করতে পারেন।

গিয়ারড ডিসি মোটরগুলি পিভিসি পাইপ চ্যাসির সাথে ক্ল্যাম্প ব্যবহার করে সংযুক্ত করা হয় এবং তারপরে স্ক্রু ব্যবহার করে মোটরগুলির সাথে চাকা সংযুক্ত থাকে।

ধাপ 4: অতিস্বনক রেঞ্জফাইন্ডার সমাবেশ নির্মাণ

বিল্ডিং অতিস্বনক রেঞ্জফাইন্ডার সমাবেশ
বিল্ডিং অতিস্বনক রেঞ্জফাইন্ডার সমাবেশ

অতিস্বনক পরিসীমা সন্ধানকারী সমাবেশ একটি মাইক্রো সার্ভো মোটরের সাথে সংযুক্ত একটি HC-SR04 অতিস্বনক সেন্সর ব্যবহার করে নির্মিত হয়। প্লাস্টিকের ক্ষেত্রে beforeোকানোর আগে তারগুলি অতিস্বনক সেন্সরের সাথে সংযুক্ত থাকে যা স্ক্রুগুলির মাধ্যমে সার্ভো মোটরের সাথে সংযুক্ত থাকে।

ধাপ 5: স্কিম্যাটিক্স এবং বৈদ্যুতিক সংযোগ

স্কিম্যাটিক্স এবং বৈদ্যুতিক সংযোগ
স্কিম্যাটিক্স এবং বৈদ্যুতিক সংযোগ
স্কিম্যাটিক্স এবং বৈদ্যুতিক সংযোগ
স্কিম্যাটিক্স এবং বৈদ্যুতিক সংযোগ

দয়া করে সংযুক্ত সার্কিট ডায়াগ্রাম অনুযায়ী বৈদ্যুতিক সংযোগগুলি তৈরি করুন।

ধাপ 6: SSH এবং সিভি ইনস্টলেশন খুলুন

এসএসএইচ এবং সিভি ইনস্টলেশন খুলুন
এসএসএইচ এবং সিভি ইনস্টলেশন খুলুন

এখন, প্রয়োজনীয় সফ্টওয়্যার ইনস্টল করার জন্য আমাদের রাস্পবেরি পাইতে SSH করতে হবে। আমরা SSHing দ্বারা আমাদের রাস্পবেরি পাইতে শুরু করব। নিশ্চিত করুন যে আপনার পাই আপনার পিসির সাথে একই রাউটারের সাথে সংযুক্ত এবং আপনি জানেন যে এটি আপনার রাউটার দ্বারা নির্ধারিত আইপি ঠিকানা। এখন, যদি আপনি উইন্ডোজে থাকেন এবং একটি কমান্ড প্রম্পট বা PUTTY খুলুন এবং নিম্নলিখিত কমান্ডটি চালান।

ssh [email protected]

আপনার Pi এর IP ভিন্ন হতে পারে, আমার হল 192.168.1.6।

এখন, আপনার ডিফল্ট পাসওয়ার্ড লিখুন - "রাস্পবেরি"

এখন, যে আপনি আপনার পাইতে SSH'd করেছেন, আসুন এই কমান্ড দিয়ে আপডেট করে শুরু করি।

sudo apt-get update && sudo apt-get upgrade

আসুন এখন প্রয়োজনীয় ডেভেলপার সরঞ্জামগুলি ইনস্টল করি, sudo apt-get build-essential cmake pkg-config

পরবর্তী, আমাদের কিছু ইমেজ I/O প্যাকেজ ইনস্টল করতে হবে যা আমাদের Pi কে ডিস্ক থেকে বিভিন্ন ইমেজ ফরম্যাট আনতে সাহায্য করবে।

sudo apt-get libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev ইনস্টল করুন

এখন, ভিডিও আনার জন্য কিছু প্যাকেজ, লাইভ স্ট্রিমিং এবং ওপেনসিভি পারফরম্যান্স অপ্টিমাইজ করা

sudo apt-get libavcodec-dev libavformat-dev libswscale-dev libv4l-dev ইনস্টল করুন

sudo apt-get libxvidcore-dev libx264-dev ইনস্টল করুন

sudo apt-get libgtk2.0-dev libgtk-3-dev ইনস্টল করুন

sudo apt-get libatlas-base-dev gfortran ইনস্টল করুন

আমাদের পাইথন 2.7 এবং পাইথন 3 হেডার ফাইলগুলিও ইনস্টল করতে হবে যাতে আমরা পাইথন বাইন্ডিংয়ের সাথে ওপেনসিভি কম্পাইল করতে পারি

sudo apt-get python2.7-dev python3-dev ইনস্টল করুন

OpenCV সোর্স কোড ডাউনলোড করা হচ্ছে

সিডি

wget -O opencv.zip

opencv.zip আনজিপ করুন

Opencv_contrib সংগ্রহস্থল ডাউনলোড করা হচ্ছে

wget -O opencv_contrib.zip

opencv_contrib.zip আনজিপ করুন

ওপেনসিভি ইনস্টল করার জন্য ভার্চুয়াল পরিবেশ ব্যবহার করারও সুপারিশ করা হয়।

sudo pip virtualenv virtualenvwrapper ইনস্টল করুন

sudo rm -rf ~/.cache/pip

এখন, যে virtualenv এবং virtualenvwrapper ইনস্টল করা হয়েছে, আমাদের নীচের লাইনগুলি অন্তর্ভুক্ত করার জন্য আমাদের ~/.profile আপডেট করতে হবে

WORKON_HOME = $ HOME/.virtualenvs রপ্তানি

আপনার পাইথন ভার্চুয়াল পরিবেশ তৈরি করুন

mkvirtualenv cv -p python2

তৈরি ভার্চুয়াল পরিবেশে স্যুইচ করুন

উৎস ~/। প্রোফাইল

ওয়ার্কন সিভি

NumPy ইনস্টল করা হচ্ছে

pip ইনস্টল numpy

OpenCV কম্পাইল এবং ইনস্টল করুন

cd ~/opencv-3.3.0/

mkdir নির্মাণ

সিডি বিল্ড

cmake -D CMAKE_BUILD_TYPE = RELEASE / -D CMAKE_INSTALL_PREFIX =/usr/local / -D INSTALL_PYTHON_EXAMPLES = ON / -D OPENCV_EXTRA_MODULES_PATH =//cBULE_PUT =//c rib

অবশেষে OpenCV কম্পাইল করুন

make -j4

এই কমান্ডটি চলার পরে। আপনাকে যা করতে হবে তা হল এটি ইনস্টল করা।

sudo make config

sudo ldconfig

ধাপ 7: রোভারের জন্য পাইথন কোড চালানো

Image
Image

Tracker.py নামে একটি পাইথন ফাইল তৈরি করুন এবং এতে নিচের কোডটি যোগ করুন।

sudo ন্যানো tracker.py

কোড:-

#আসার প্রোগ্রাম

#এই প্রোগ্রামটি একটি লাল বল ট্র্যাক করে এবং একটি রাস্পবেরি পাইকে এটি অনুসরণ করার নির্দেশ দেয়। sys.path.append আমদানি করুন (7, IO. OUT) IO.setup (15, IO. OUT) IO.setup (13, IO. OUT) IO.setup (21, IO. OUT) IO.setup (22, IO. OUT) def fwd (): IO.output (21, 1)#বাম মোটর ফরওয়ার্ড IO.output (22, 0) IO.output (13, 1) #Right Motor Forward IO.output (15, 0) def bac (): IO.output (21, 0)#বাম মোটর ব্যাকওয়ার্ড আইও আউটপুট (22, 1) আইও আউটপুট (13, 0)#ডান মোটর ব্যাকওয়ার্ড আইও আউটপুট (15, 1) ডিফ রাইট (): আইও আউটপুট (21, 0) #বাম মোটর পিছনে আইও আউটপুট (22, 1) আইও আউটপুট (13, 1)#ডান মোটর ফরওয়ার্ড আইও আউটপুট (15, 0) ডিফ এলএফটি (): আইও আউটপুট (21, 1)#বাম মোটর ফরওয়ার্ড আইও.output (22, 0) IO.output (13, 0)#রাইট মোটর ব্যাকওয়ার্ড IO.output (15, 1) def stp (): IO.output (21, 0)#বাম মোটর স্টপ IO.output (22, 0) IO.output (13, 0)#রাইট মোটর স্টপ IO.output (15, 0) ########################### ############################################ ####################### def main (): capWebcam = cv2। ভিডিওক্যাপচার বস্তু এবং ওয়েবক্যামের সাথে যুক্ত, 0 => 1 ম ওয়েবক্যাম ব্যবহার করুন # মূল রেজোলিউশন প্রিন্ট দেখান "ডিফল্ট রেজোলিউশন =" + str (capWebcam.get (cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT) capWebcam.set (cv2. CAP_PROP_FRAME_WIDTH, 320.0) # দ্রুত প্রসেসিং capWebcam.set (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) # 320x240 রেজোলিউশন পরিবর্তন করুন) + "x" + str (capWebcam.get (cv2. CAP_PROP_FRAME_HEIGHT)) যদি capWebcam.isOpened () == মিথ্যা: # চেক করুন ভিডিওক্যাপচার বস্তুটি ওয়েবক্যামের সাথে সফলভাবে প্রিন্ট করা হয়েছে কিনা "ত্রুটি: capWebcam সফলভাবে অ্যাক্সেস করা যায়নি / n / n" # যদি না হয়, স্টার আউট os.system ("বিরতি") এ ত্রুটি বার্তা মুদ্রণ করুন # বিরতি দিন যতক্ষণ না ব্যবহারকারী একটি কী টিপেন যাতে ব্যবহারকারী ত্রুটি বার্তা রিটার্ন # এবং প্রস্থান ফাংশন দেখতে পারেন (যা প্রোগ্রাম থেকে বেরিয়ে আসে) # শেষ হলে cv2.waitKey (1 !! 27 ully, imgOriginal = capWebcam.read () # পরের ফ্রেম পড়ুন যদি blnFrameReadSuccessfully বা imgOriginal না হয়: # যদি ফ্রেম সফলভাবে না পড়ে প্রিন্ট করা হয় "ত্রুটি: ওয়েবক্যাম থেকে ফ্রেম পড়া হয়নি / n" # প্রিন্ট ত্রুটি বার্তা এসটিডি আউট os.system এ ("বিরতি") # বিরতি দিন যতক্ষণ না ব্যবহারকারী একটি কী টিপেন যাতে ব্যবহারকারী ত্রুটি বার্তা বিরতি দেখতে পারেন # লুপের সময় প্রস্থান করুন (যা প্রোগ্রাম থেকে প্রস্থান করে) # শেষ হলে imgHSV = cv2.cvtColor (imgOriginal, cv2. COLOR_BGR2HSV) imgThreshLow = cv2.inRange (imgHSV, np.array ([0, 135, 135]), np.array ([18, 255, 255])) imgThreshHigh = cv2.inRange (imgHSV, np.array ([165, 135, 135]), np অ্যারে ([179, 255, 255])) imgThresh = cv2.add (imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur (imgThresh, (3, 3), 2) imgThresh = cv2.dilate (imgThresh, ng 5, 5), np.uint8)) imgThresh = cv2.erode (imgThresh, np.ones ((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape circle = cv2। HOUGH_GRADIENT, 5, intRows / 4) # প্রক্রিয়াকৃত চিত্রের সমস্ত চেনাশোনাগুলির সাথে পরিবর্তনশীল বৃত্তগুলি পূরণ করুন যদি চেনাশোনাগুলি কোনটি নয়: # এই লাইনটি পরবর্তী লাইনে প্রোগ্রামটি ক্র্যাশ করা থেকে বিরত রাখতে প্রয়োজন যদি কোন বৃত্ত পাওয়া না যায় IO.output (7, 1) বৃত্তের বৃত্তের জন্য [0]: # প্রতিটি বৃত্তের জন্য x, y, ব্যাসার্ধ = বৃত্ত # x, y, and radius print "ball position x =" + str (x) + ", y =" + str (y) + ", ব্যাসার্ধ =" + str (ব্যাসার্ধ) # প্রিন্ট বলের অবস্থান এবং ব্যাসার্ধ obRadius = int (ব্যাসার্ধ) xAxis = int (x) যদি obRadius> 0 & obRadius100 & xAxis180: মুদ্রণ ("ডানদিকে সরানো") ryt () elif xAxis <100: print ("সরানো বাম") lft () else: stp () else: stp () cv2.circle (imgOriginal, (x, y), 3, (0, 255, 0), -1) # সনাক্তকৃত বস্তুর কেন্দ্রে ছোট সবুজ বৃত্ত আঁকুন cv2.circle (imgOriginal, (x, y), ব্যাসার্ধ, (0, 0, 255), 3) # সনাক্তকৃত বস্তুর চারপাশে লাল বৃত্ত আঁকুন # অন্যথায় # শেষ হলে: IO.output (7, 0) cv2.namedWindow ("imgOriginal", cv2. WINDOW_AUTOSIZE) # উইন্ডোজ তৈরি করুন, একটি নির্দিষ্ট উইন্ডো সাইজের জন্য WINDOW_AUTOSIZE ব্যবহার করুন। ginal)#উইন্ডোজ দেখান cv2.imshow ("imgThresh", imgThresh)#end যখন cv2.destroyAllWindows ()#মেমরি রিটার্ন থেকে উইন্ডোজ সরান #################### ############################################ ##############################

এখন, যা করার বাকি আছে তা হল প্রোগ্রামটি চালানো

পাইথন tracker.py

অভিনন্দন! আপনার স্ব-ড্রাইভিং রোভার প্রস্তুত! অতিস্বনক সেন্সর ভিত্তিক নেভিগেশন অংশ শীঘ্রই সম্পন্ন করা হবে এবং আমি এই নির্দেশনা আপডেট করব।

পড়ার জন্য ধন্যবাদ!

প্রস্তাবিত: