সুচিপত্র:

রোবোটিক আর্ম: জেনসেন: 4 টি ধাপ
রোবোটিক আর্ম: জেনসেন: 4 টি ধাপ

ভিডিও: রোবোটিক আর্ম: জেনসেন: 4 টি ধাপ

ভিডিও: রোবোটিক আর্ম: জেনসেন: 4 টি ধাপ
ভিডিও: এবার গোটা পৃথিবীর ইতিহাস পাল্টে দিতে চলেছে আমেরিকা ! লাখ লাখ রোবোটিক আর্মি মাঠে নামার জন্য... 2024, অক্টোবর
Anonim
রোবোটিক আর্ম: জেনসেন
রোবোটিক আর্ম: জেনসেন

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

ধাপ 1: মূল নকশা এবং সুযোগ

মূল নকশা এবং সুযোগ
মূল নকশা এবং সুযোগ

এই প্রকল্পের জন্য আমি যে সিএডি সফ্টওয়্যারটি শিখতে বেছে নিয়েছিলাম তা ছিল অনশেপ, এবং আমি প্রথম যে মডেলটি তৈরি করেছি তা হাইটেক এইচএস -4২২ এনালগ সার্ভো। আমি সার্ভোটি বেছে নিয়েছিলাম কারণ এটি স্থানীয়ভাবে আমার কাছে উপলব্ধ ছিল এবং এটি একটি যুক্তিসঙ্গত মূল্য। এটি আমার নিজের যন্ত্রাংশ ডিজাইন করার আগে OnShape শেখার জন্য ভাল অনুশীলন হিসাবেও কাজ করে। প্রকল্পের এই প্রথম দিকে, আমার সাধারণ ধারণা ছিল যে আমি হাতটি কী সক্ষম হতে চাই। আমি চেয়েছিলাম এটি একটি ভাল পরিসীমা গতি এবং জিনিসগুলি বাছাই করার জন্য একটি গ্রিপার। এই সাধারণ স্পেসিফিকেশনগুলি ডিজাইনকে অবহিত করেছিল কারণ আমি CAD এ মডেলিং চালিয়ে যাচ্ছিলাম। এই সময়ে আমার আরেকটি ডিজাইনের সীমাবদ্ধতা ছিল আমার 3D প্রিন্টারে প্রিন্ট বিছানার আকার। এজন্য উপরের ছবিতে আপনি যে ভিত্তিটি দেখতে পাচ্ছেন তা তুলনামূলকভাবে আদিম বর্গ।

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

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

পদক্ষেপ 2: নিয়ন্ত্রণ

নিয়ন্ত্রণ
নিয়ন্ত্রণ

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

এই নিয়ন্ত্রণ পদ্ধতিতে, অনেকগুলি জিনিস বের করতে হয়েছিল। প্রতিটি সার্ভো একটি সংরক্ষিত কোণে ফিরে আসার জন্য, আমাকে একরকম প্রথমে সেই কোণগুলিকে "সংরক্ষণ" করতে হয়েছিল। এর জন্য প্রয়োজন ছিল Arduino Uno আমি প্রতিটি servo এর বর্তমান কোণ গ্রহণ করতে সক্ষম হচ্ছি। আমার বন্ধু জেরেমি প্যারাডি, যিনি একটি রোবোটিক বাহু তৈরি করেছিলেন যা এই নিয়ন্ত্রণ পদ্ধতিটি ব্যবহার করে, আমাকে প্রতিটি শখের সার্ভোর অভ্যন্তরীণ পোটেন্টিওমিটার ব্যবহার করার জন্য আমাকে নির্দেশ করে। এটি হল পোটেন্টিওমিটার যা সার্ভো নিজেই তার কোণকে এনকোড করতে ব্যবহার করে। আমি একটি টেস্ট সার্ভো বেছে নিয়েছি, অভ্যন্তরীণ পোটেন্টিওমিটারের মাঝের পিনে একটি তারের সোল্ডার করেছি এবং তারের বাইরে খাওয়ানোর জন্য ঘেরের মধ্যে একটি গর্ত ড্রিল করেছি।

আমি এখন পটেন্টিওমিটারের মধ্য পিনের ভোল্টেজ পড়ে বর্তমান কোণটি পেতে পারি। যাইহোক, দুটি নতুন সমস্যা ছিল। প্রথমত, মাঝের পিন থেকে আসা সিগন্যালে ভোল্টেজ স্পাইকের আকারে গোলমাল ছিল। এই সমস্যাটি পরবর্তীতে একটি বাস্তব ইস্যুতে পরিণত হয়। দ্বিতীয়ত, একটি কোণ পাঠানো এবং একটি কোণ গ্রহণের মানগুলির পরিসীমা ভিন্ন ছিল।

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

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

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

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

ধাপ 3: গোলমাল

গোলমাল
গোলমাল

উপরের ছবি

লাল: মূল ইনপুট সংকেত

নীল: প্রক্রিয়াকরণের পরে ইনপুট সংকেত

ইনপুট সিগন্যালে গোলমাল কমানোর প্রথম ধাপ ছিল এর কারণ বোঝা। একটি অসিলোস্কোপে সংকেত অনুসন্ধান করে জানা গেছে যে ভোল্টেজ স্পাইক 50Hz হারে ঘটছে। আমি জানতে পেরেছি যে PWM সিগন্যালটি সার্ভারে পাঠানো হচ্ছে 50Hz হারেও, তাই আমি অনুমান করেছি যে ভোল্টেজ স্পাইকের সাথে এর কিছু করার আছে। আমি অনুমান করেছিলাম যে সার্ভোসের চলাচল কোনওভাবে পোটেন্টিওমিটারের V+ পিনে ভোল্টেজ স্পাইক সৃষ্টি করছে, যা পরিবর্তে মাঝের পিনে পড়াকে গোলমাল করছে।

এখানেই আমি গোলমাল কমানোর প্রথম প্রচেষ্টা করেছি। আমি প্রতিটি সার্ভো আবার খুললাম এবং পটেন্টিওমিটারে V+ পিন থেকে আসা একটি তার যুক্ত করেছি। Arduino Uno- এর চেয়ে তাদের পড়ার জন্য আমার আরও এনালগ ইনপুট দরকার ছিল, তাই আমি এই সময়ে একটি Arduino Mega তে চলে এসেছি। আমার কোডে, আমি কোণের ইনপুটটি মধ্য পিনের ভোল্টেজের এনালগ পড়া থেকে মধ্য পিনের ভোল্টেজের মধ্যে অনুপাত থেকে V+ পিনের ভোল্টেজের মধ্যে পরিবর্তন করেছি। আমার আশা ছিল যে পিনগুলিতে যদি ভোল্টেজ স্পাইক থাকে তবে এটি অনুপাতে বাতিল হয়ে যাবে।

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

আমি বুঝতে পারছিলাম না কেন এটি ঘটছে, তাই আমি অবশেষে সার্ভিসগুলিতে আমার স্থল সংযোগ অনুসন্ধান করেছি। স্থলজুড়ে প্রায় 0.3 ভোল্টের গড় ভোল্টেজ ড্রপ ছিল, এবং সার্ভিসগুলি কারেন্ট টানলে এটি আরও বেশি বৃদ্ধি পায়। এটা তখন আমার কাছে পরিষ্কার ছিল যে সেই পিনগুলিকে আর "স্থল" হিসেবে বিবেচনা করা যাবে না এবং "রেফারেন্স" পিন হিসাবে আরও ভালভাবে বর্ণনা করা যেতে পারে। সার্ভিসের কন্ট্রোল বোর্ডগুলি অবশ্যই V+ এবং রেফারেন্স পিনের উভয় ভোল্টেজের সাপেক্ষে পটেন্টিওমিটারের মাঝের পিনের ভোল্টেজ পরিমাপ করছে। পোটেন্টিওমিটারগুলিকে পৃথক করে সেই আপেক্ষিক পরিমাপকে গোলমাল করে দিয়েছে কারণ এখন সমস্ত পিনে ভোল্টেজ স্পাইকের পরিবর্তে, এটি কেবল রেফারেন্স পিনে ঘটেছে।

আমার পরামর্শদাতা ড Mal মল্লচ আমাকে এই সব ডিবাগ করতে সাহায্য করেছিলেন এবং পরামর্শ দিয়েছিলেন যে আমি অন্যান্য পিনের তুলনায় মধ্য পিনের ভোল্টেজও পরিমাপ করি। কোণ ইনপুটের গোলমাল কমানোর জন্য আমার তৃতীয় এবং চূড়ান্ত প্রচেষ্টার জন্য আমি সেটাই করেছি। আমি প্রতিটি সার্ভ খুলে দিলাম, আমি যে তারটি ছিঁড়ে ফেলেছিলাম তা পুনরায় সংযুক্ত করলাম এবং পোটেন্টিওমিটারে রেফারেন্স পিন থেকে আসা তৃতীয় তার যুক্ত করলাম। আমার কোডে, আমি নিম্নোক্ত অভিব্যক্তির সমান কোণ ইনপুট তৈরি করেছি: (মধ্য পিন - রেফারেন্স পিন) / (ভি+পিন - রেফারেন্স পিন)। আমি এটি পরীক্ষা করেছি এবং এটি সফলভাবে ভোল্টেজ স্পাইকের প্রভাব হ্রাস করেছে। উপরন্তু, আমি এই ইনপুটে একটি EWMA ফিল্টারও রাখি। এই প্রক্রিয়াকৃত সংকেত এবং মূল সংকেত উপরে চিত্রিত।

ধাপ 4: জিনিসগুলি মোড়ানো

জিনিস মোড়ানো
জিনিস মোড়ানো

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

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

CAD নথি:

cad.onshape.com/documents/818ea878dda7ca2f…

প্রস্তাবিত: