সুচিপত্র:
- ধাপ 1: প্রয়োজনীয় জিনিসগুলি:
- ধাপ 2: কাজের নীতি:
- ধাপ 3: ইনপুট ক্যাপচার এবং প্রসেসিং:
- ধাপ 4:
- ধাপ 5:
- ধাপ 6: প্রক্রিয়াকরণ অংশ:
- ধাপ 7:
- ধাপ 8:
- ধাপ 9:
- ধাপ 10:
- ধাপ 11:
- ধাপ 12: গতি নিয়ন্ত্রণ:
- ধাপ 13:
ভিডিও: অঙ্গভঙ্গি হক: হাতের অঙ্গভঙ্গি নিয়ন্ত্রিত রোবট ইমেজ প্রসেসিং ভিত্তিক ইন্টারফেস ব্যবহার করে: 13 টি ধাপ (ছবি সহ)
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
একটি সহজ ইমেজ প্রসেসিং ভিত্তিক হিউম্যান-মেশিন ইন্টারফেস হিসাবে অঙ্গভঙ্গি হক TechEvince 4.0 এ প্রদর্শিত হয়েছিল। এর উপযোগিতা এই সত্যের মধ্যে রয়েছে যে ডিফারেনশিয়াল ড্রাইভ নীতি অনুসারে চলা রোবোটিক গাড়িটি নিয়ন্ত্রণ করার জন্য গ্লাভস ছাড়া কোন অতিরিক্ত সেন্সর বা পরিধানযোগ্য নয়। এই নির্দেশে, আমরা আপনাকে সিস্টেমে ব্যবহৃত বস্তু ট্র্যাকিং এবং অঙ্গভঙ্গি সনাক্তকরণের পিছনে কাজের নীতিটি নিয়ে যাব। এই প্রকল্পের সোর্স কোড লিথের মাধ্যমে গিথুব থেকে ডাউনলোড করা যাবে:
ধাপ 1: প্রয়োজনীয় জিনিসগুলি:
- L298N মোটর ড্রাইভার
- ডিসি মোটরস
- রোবট গাড়ির চ্যাসি
- আরডুইনো উনো
- লিপো ব্যাটারি
- আরডুইনো ইউএসবি কেবল (দীর্ঘ)
- পাইথন সহ OpenCV লাইব্রেরি
ধাপ 2: কাজের নীতি:
Gesture Hawk হল তিনটি ফেজ প্রসেসিং সিস্টেম যা আপনি উপরের ডায়াগ্রামে দেখতে পাচ্ছেন।
ধাপ 3: ইনপুট ক্যাপচার এবং প্রসেসিং:
উপরের ডায়াগ্রামে প্রদত্ত বিস্তৃত বিভাগগুলিতে ইনপুট ক্যাপচার বোঝা যায়।
পরিবেশ থেকে হাতের আকৃতি বের করার জন্য, আমাদের একটি নির্দিষ্ট রঙের মাস্কিং বা ফিল্টারিং ব্যবহার করতে হবে (এই ক্ষেত্রে - বেগুনি নীল ')। এটি করার জন্য আপনাকে ছবিটি BGR থেকে HSV ফর্ম্যাটে রূপান্তর করতে হবে যা নিম্নলিখিত কোড স্নিপেট ব্যবহার করে করা যেতে পারে।
hsv = cv2.cvtColor (ফ্রেম, cv2. COLOR_BGR2HSV)
এখন, পরবর্তী ধাপ হল মাস্ক বা ফিল্টারের মাধ্যমে হাত বের করার জন্য HSV প্যারামিটারের পছন্দসই পরিসীমা খুঁজে বের করা। এর জন্য, একটি উপযুক্ত পরিসীমা খোঁজার জন্য ট্র্যাক বারগুলি ব্যবহার করা সর্বোত্তম উপায়। এই প্রকল্পের জন্য ব্যবহৃত একটি ট্র্যাক বারের স্ক্রিনশট এখানে।
ধাপ 4:
ধাপ 5:
এখানে, মুখোশ নির্মাণের জন্য এই ধরনের একটি ট্র্যাকবার তৈরির জন্য নিচে একটি কোড স্নিপেট দেওয়া হয়েছে:
আমদানি cv2
npdef nothing (x) হিসাবে numpy আমদানি করুন: cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 110, 255, nothing) cv2.createTrackbar ('l_S ',' ইমেজ ', 50, 255, কিছুই না) cv2.createTrackbar (' l_V ',' image ', 50, 255, nothing) cv2.createTrackbar (' h_H ',' image ', 130, 255, nothing) cv2 createTrackbar ('h_S', 'image', 255, 255, nothing) cv2.createTrackbar ('h_V', 'image', 255, 255, nothing) while (1): _, frame = img.read ()
hsv = cv2.cvtColor (ফ্রেম, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'ইমেজ') lS = cv2.getTrackbarPos ('l_S', 'image') 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'image') lower_R = np অ্যারে ([lH, lS, lV]) higher_R = np.array ([hH, hS, hV]) mask = cv2.inRange (hsv, lower_R, higher_R) res = cv2.bitwise_and (ফ্রেম, ফ্রেম, মাস্ক = মাস্ক) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF যদি k == 27: break cv2.destroyAllWindows ()
ধাপ 6: প্রক্রিয়াকরণ অংশ:
ঠিক আছে, আমরা একটি হাতের জ্যামিতিক আকৃতি পেয়েছি, এখন সময় এসেছে এটিকে কাজে লাগানোর এবং হাতের অঙ্গভঙ্গি বের করার জন্য এটি ব্যবহার করার।
উত্তল জাহাজের কাঠাম:
উত্তল হুলের মাধ্যমে, আমরা আকৃতিতে উপস্থিত চরম পয়েন্টগুলির মাধ্যমে একটি আনুমানিক বহুভুজকে ফিট করার চেষ্টা করি। বামে উপস্থিত চিত্রটি আনুমানিক বহুভুজ দেখায় যা আকৃতিতে লাল দিয়ে চিহ্নিত উত্তল পয়েন্ট দিয়ে নির্ধারিত হয়েছিল।
উত্তল বিন্দু হল আকৃতির সেই বিন্দু যা এই আনুমানিক বহুভুজের একটি দিক থেকে সবচেয়ে দূরে। কিন্তু, উত্তল হুলের সমস্যা হল যে তার গণনার সময়, আমরা সমস্ত উত্তল বিন্দুর একটি অ্যারে পাব কিন্তু আমাদের যা দরকার তা হল নীল বিন্দু উত্তল বিন্দু। কেন এটি প্রয়োজন তা আমরা আপনাকে বলব।
এই উত্তল বিন্দুটি খুঁজে পেতে, আমাদের নিকটতম দিকের সাথে উত্তল বিন্দুর দূরত্ব বের করার জন্য লম্ব দূরত্ব সূত্র প্রয়োগ করতে হবে। আমরা লক্ষ্য করেছি যে নীল বিন্দু বিন্দু পাশ থেকে সর্বাধিক দূরত্ব ধারণ করে এবং তাই আমরা এই বিন্দুটি পাই।
ধাপ 7:
ধাপ 8:
পরবর্তীতে আমাদের থাম্বের ডগায় (অথবা চরম বিন্দু) অনুভূমিকভাবে এই উত্তল বিন্দুতে যোগ হওয়া রেখার প্রবণতা খুঁজে বের করতে হবে।
ধাপ 9:
উপরের ক্ষেত্রে, অঙ্গভঙ্গি 0 থেকে 90 ডিগ্রির মধ্যে হওয়া উচিত যদি অঙ্গভঙ্গি বাম দিকে ঘুরতে হয়। যে tan (α) ইতিবাচক হওয়া উচিত।
ধাপ 10:
উপরের ক্ষেত্রে, কোণ 180 180 থেকে 90 ডিগ্রির মধ্যে হওয়া উচিত যদি অঙ্গভঙ্গি ডানদিকে ঘুরতে হয়। যে tan (α) নেতিবাচক হওয়া উচিত।
অতএব, যদি টান positive ধনাত্মক হয়, তাহলে বাম মোড়। যদি Tan negative ণাত্মক হয়, তাহলে ডানদিকে ঘুরুন। এখন, সবচেয়ে গুরুত্বপূর্ণ স্টপ কমান্ডটি কীভাবে সনাক্ত করা যায় তা দেখার সময় এসেছে।
এখানে, একটি নির্দিষ্ট অনুপাত (হিট এবং ট্রায়াল দ্বারা পাওয়া) পরীক্ষা করা হয় এবং সর্বাধিক ক্ষেত্রে এই দূরত্বের অনুপাত এই নির্দিষ্ট পরিসরে থাকে।
ধাপ 11:
অবশেষে, সামনের গতি অঙ্গভঙ্গি OpenCV- এ matchShape () ফাংশন দ্বারা বিশ্লেষণ করা হয়। এই ফাংশনটি দুটি কাউন্টারের আকৃতির তুলনা করে, এই ক্ষেত্রে, উপরের ছবিতে থ্রাইটের উপর প্রশিক্ষণের উদাহরণের সাথে উপরের চিত্রের বাম পাশে কনট্যুরের সাথে। এটি দুটি কনট্যুরের আকারে বিদ্যমান বৈচিত্র অনুযায়ী 0 থেকে 2 বা 3 পর্যন্ত একটি মান প্রদান করে। একইভাবে একই কনট্যুরের জন্য, এটি 0 প্রদান করে।
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
এখানে, cn1 এবং cnt2 হল দুটি কনট্যুর যা তুলনা করতে হবে।
ধাপ 12: গতি নিয়ন্ত্রণ:
পাই সিরিয়াল:
Arduino USB Cable এর মাধ্যমে Arduino Uno- এর কাছে যোগাযোগ করার জন্য প্রক্রিয়াজাতকৃত তথ্যকে সিরিয়াল ডেটাতে রূপান্তর করার জন্য আমরা পাইথনের PySerial লাইব্রেরি ব্যবহার করেছি। একবার ওপেনসিভি দ্বারা একটি বিশেষ অঙ্গভঙ্গি ধরা পড়লে আমরা একটি অস্থায়ী ভেরিয়েবল তৈরি করে বলি 'x' এবং এটিকে কিছু অনন্য মান নির্ধারিত করেছি এবং নিম্নলিখিত কমান্ড লাইন ব্যবহার করে সিরিয়াল ইনপুটে রূপান্তর করেছি:-
আমদানি সিরিয়াল #পিসেরিয়াল লাইব্রেরি আমদানি করতে
সিরিয়াল।
serial.write (b'x ') # x হল পোর্টে পাঠানো বর্ণমালা … b হল এই স্ট্রিংটিকে বাইটে রূপান্তরিত করা।
Arduino প্রক্রিয়াকরণ:
এখন আরডুইনোকে এমনভাবে কোড করা হয়েছে যে রোবটের মসৃণ গতির জন্য দায়ী নির্দিষ্ট ক্রিয়াকলাপের জন্য প্রতিটি ভিন্ন সিরিয়াল x রৈখিকভাবে ম্যাপ করা হয়েছে (বলুন বাম অঙ্গভঙ্গি সনাক্তকরণ মোটরগুলিকে ডানদিকে বাম দিকে ট্রিগার করবে)। আমরা সঠিকভাবে কোড পরিবর্তন করে প্রতিটি চাকার গতি অনুবাদ এবং ঘূর্ণনগতভাবে নিয়ন্ত্রণ করতে পারি।
L298N মোটর ড্রাইভার:-
মোটর চালক মোটর এবং বিদ্যুতের উৎসের মধ্যস্থতাকারী হিসাবে ব্যবহৃত হয় কারণ কম ভোল্টেজ রেটিং এর কারণে মোটর সরাসরি চালিত হতে পারে না। লি-পো ব্যাটারি তার 12V ইনপুট টার্মিনালের সাথে সংযুক্ত এবং আমরা arduino এর 5V সকেটকে মোটর ড্রাইভারের 5V ইনপুট সকেটের সাথে সংযুক্ত করি যা অবশেষে লি-পো-এর স্থলকে সংযুক্ত করে এবং মোটর ড্রাইভারের একটি সাধারণ গ্রাউন্ড সকেটে আরডুইনোকে সংযুক্ত করে।
এখন মোটরগুলির টার্মিনালগুলি দেওয়া সকেটে সংযুক্ত। পরিশেষে আমরা মোটরের জন্য ইনপুট টার্মিনালগুলিকে আরডুইনো এর PWM আউটপুট সকেটের সাথে সংযুক্ত করি যা আমাদের গতির ঘূর্ণন এবং অনুবাদ দিকগুলি সঠিকভাবে সিদ্ধান্ত নেওয়ার অনুমতি দেয়।
প্রস্তাবিত:
ডিসি মোটর হাতের অঙ্গভঙ্গি নিয়ন্ত্রণ গতি এবং দিক নির্দেশনা ব্যবহার করে Arduino: 8 টি ধাপ
আরডুইনো ব্যবহার করে ডিসি মোটর হাতের অঙ্গভঙ্গি নিয়ন্ত্রণের গতি এবং দিকনির্দেশ: এই টিউটোরিয়ালে আমরা শিখব কিভাবে একটি ডিসি মোটরকে হাতের ইশারায় Arduino এবং Visuino ব্যবহার করে নিয়ন্ত্রণ করতে হয়। ভিডিওটি দেখুন! এছাড়াও এটি দেখুন: হাতের অঙ্গভঙ্গি টিউটোরিয়াল
ইমেজ প্রসেসিং ভিত্তিক অগ্নি স্বীকৃতি এবং নির্বাপক ব্যবস্থা: Ste টি ধাপ
ইমেজ প্রসেসিং ভিত্তিক অগ্নি শনাক্তকরণ এবং নির্বাপক ব্যবস্থা: হ্যালো বন্ধুরা এটি একটি ইমেজ প্রক্রিয়াকরণ ভিত্তিক অগ্নি সনাক্তকরণ এবং অগ্নিনির্বাপক ব্যবস্থা Arduino ব্যবহার করে
রাস্পবেরি পাই দিয়ে ইমেজ প্রসেসিং: ওপেনসিভি এবং ইমেজ রঙ বিচ্ছেদ ইনস্টল করা: 4 টি ধাপ
রাস্পবেরি পাই দিয়ে ইমেজ প্রসেসিং: ওপেনসিভি এবং ইমেজ কালার সেপারেশন ইনস্টল করা: এই পোস্টটি বেশ কয়েকটি ইমেজ প্রসেসিং টিউটোরিয়ালের মধ্যে প্রথম যা অনুসরণ করা হয়। আমরা একটি ছবি তৈরি করে এমন পিক্সেলগুলি ঘনিষ্ঠভাবে দেখি, রাস্পবেরি পাইতে ওপেনসিভি কীভাবে ইনস্টল করতে হয় তা শিখি এবং আমরা একটি চিত্র ক্যাপচার করার জন্য পরীক্ষার স্ক্রিপ্টও লিখি এবং গ
SCARA রোবট: Foward এবং Inverse Kinematics সম্পর্কে শেখা !!! (প্লট টুইস্ট প্রসেসিং ব্যবহার করে ARDUINO তে রিয়েল টাইম ইন্টারফেস তৈরি করতে শিখুন !!!!): 5 টি ধাপ (ছবি সহ)
SCARA রোবট: Foward এবং Inverse Kinematics সম্পর্কে শেখা !!! (প্লট টুইস্ট প্রসেসিং ব্যবহার করে ARDUINO তে রিয়েল টাইম ইন্টারফেস কিভাবে তৈরি করতে হয় তা শিখুন !!!!): একটি SCARA রোবট শিল্প জগতে একটি খুব জনপ্রিয় মেশিন। নামটি সিলেক্টিভ কমপ্ল্যান্ট অ্যাসেম্বলি রোবট আর্ম বা সিলেক্টিভ কমপ্ল্যান্ট আর্টিকুলেটেড রোবট আর্ম উভয়ের জন্য দাঁড়িয়েছে। এটি মূলত তিনটি ডিগ্রী স্বাধীনতা রোবট, প্রথম দুটি ডিসপ্লে
IOT ভিত্তিক অঙ্গভঙ্গি নিয়ন্ত্রিত রোবট: 10 টি ধাপ (ছবি সহ)
আইওটি ভিত্তিক অঙ্গভঙ্গি নিয়ন্ত্রিত রোবট: এই রোবটটি একটি অঙ্গভঙ্গি নিয়ন্ত্রিত যা ইন্টারনেটের সাহায্যে যে কোন জায়গা থেকে নিয়ন্ত্রণ করা যায়। এই প্রকল্পে অ্যাকসিলরোমিটার এমপিইউ 6050 আমাদের হাতের নড়াচড়া সংক্রান্ত তথ্য সংগ্রহের জন্য ব্যবহৃত হয়। এটি আমাদের হাতের ত্বরণের পরিমাপ করে তিনটি