সুচিপত্র:

স্ব-শিক্ষার বিশৃঙ্খল রোবট: 3 টি ধাপ
স্ব-শিক্ষার বিশৃঙ্খল রোবট: 3 টি ধাপ

ভিডিও: স্ব-শিক্ষার বিশৃঙ্খল রোবট: 3 টি ধাপ

ভিডিও: স্ব-শিক্ষার বিশৃঙ্খল রোবট: 3 টি ধাপ
ভিডিও: 🎬 Horizon Zero Dawn Complete Edition বাংলা 🎬 গেম মুভি এইচডি স্টোরি Cutscenes [ 1440p 60frps ] 2024, ডিসেম্বর
Anonim
স্ব-শিক্ষণ বিশৃঙ্খল রোবট
স্ব-শিক্ষণ বিশৃঙ্খল রোবট

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

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

ধাপ 1: হার্ডওয়্যার AKA রোবট

হার্ডওয়্যার AKA রোবট
হার্ডওয়্যার AKA রোবট
হার্ডওয়্যার AKA রোবট
হার্ডওয়্যার AKA রোবট
হার্ডওয়্যার AKA রোবট
হার্ডওয়্যার AKA রোবট

তোমার দরকার:

- 1 Arduino ডিউ

- 8 মাইক্রোসার্ভোস

- 1 PS/2 মাউস

- 1 লেভেল শিফটার

- একটি সেন্সর-ieldাল বা অনুরূপ কিছু বৈকল্পিক, আমি সেন্সর ieldাল ক্লান্ত এবং আমার নিজের ঝালাই।

-তারের

-সার্ভিসের জন্য বাহ্যিক 5V পাওয়ার সাপ্লাই

- কিছু স্ক্র্যাপ ধাতু টুকরা, কিছু আঠালো এবং কিছু ইস্পাত থ্রেড। এবং টেপ!

তাই মেঝেতে ডিউ রাখুন। তার চারপাশে একটি রিং মধ্যে servos রাখুন। স্ক্র্যাপ ধাতু, আঠালো এবং থ্রেড দিয়ে তাদের একসাথে রাখুন। এই বিশৃঙ্খলা অংশ! যেহেতু এটি তার নকশায় বিশৃঙ্খল, তাই এটি ক্রল করার জন্য কীভাবে সরানো যায় তা নির্ধারণ করা অনির্দেশ্য। এই কারণেই স্ব-লার্নিং কোডটি যাওয়ার উপায়!

টিপস: মোটামুটি ভারী ধাতব যন্ত্রাংশ ব্যবহার করুন, এটি রোবটের চলাফেরা সহজ করে তোলে।

পরিষেবাগুলিকে যথাযথভাবে সংযুক্ত করুন, আমার ক্ষেত্রে তারা D39, 41, 43, 45, 47, 49, 51, 53 এর সাথে সংযুক্ত।

বহিরাগত 5V বিদ্যুৎ সরবরাহের সাথে সার্ভিসগুলিকে সংযুক্ত করুন। এই জন্য, এক ধরনের ieldাল তৈরি করুন, অথবা একটি সেন্সর ieldাল বা অনুরূপ ব্যবহার করুন। বকেয়া 5V পিন থেকে সার্ভোস খাওয়াবেন না, এটি যথেষ্ট নয়, ডিউ জ্বলবে। আমি সব সার্ভোসে 5 V বিতরণ করার জন্য একটি ছোট প্রোটোটাইপ বোর্ড ব্যবহার করেছি। এই বোর্ডটি PS/2 মাউস ক্লক এবং ডেটা লাইনের জন্য লেভেল শিফটারও ধারণ করে। বোর্ড মাউসকে 5V দিয়েও খাওয়ায়। মনে রাখবেন বাহ্যিক শক্তি থেকে আরডুইনো ডিউ গ্রাউন্ডের সাথে সংযোগ স্থল! স্কিম্যাটিক্স দেখায় কিভাবে এটি সব সংযুক্ত করতে হয়।

PS/2 কে পাওয়ার (5V) এবং মাটিতে সংযুক্ত করুন। PS/2 এর ঘড়ি এবং ডেটা লাইনকে লেভেল শিফটারের মাধ্যমে ডিউতে সংযুক্ত করুন। (কারণে 3.3V যায়, PS/2 যায় 5V) D12 এ ঘড়ি এবং D13 তে ডেটা সংযুক্ত করুন।

PS/2 প্রোটোকলের বিশদ বিবরণের জন্য, এটি একটি খুব ভাল নির্দেশযোগ্য:

www.instructables.com/id/Optical-Mouse-Od…

PS/2 লাইব্রেরি যা আমি ব্যবহার করেছি jazzycamel দ্বারা:

ধাপ 2: কোড

কোড
কোড

প্রথমে আমাকে বলতে দিন: আমি প্রোগ্রামার নই। কিছু অংশ খুব বিস্তৃত, একজন দক্ষ প্রোগ্রামার অবশ্যই এটিকে ছোট করতে পারে এবং তাই এবং তাই।

কোডটি স্ব -শিক্ষার এবং এটি প্রকল্পের মূল। এটি এর মজার অংশ! এর মানে হল যে রোবটটি বিকশিত হয় এবং আরও ভাল এবং উন্নত হয়, এই ক্ষেত্রে এটি ক্রলিংয়ে আরও ভাল হয়। এই সম্পর্কে আশ্চর্যজনক বিষয় হল যে রোবটটি আপনি যে কোন সময়ে এটিকে ফিড-ব্যাক করতে পারবেন। এই ক্ষেত্রে এটি একটি পিএস/2 মাউস টেনে নিয়ে যায় এবং মাউসটি যত বেশি ড্র্যাগ করা হয়, তত বেশি পয়েন্ট পায়।

এর অর্থ এইও যে আপনি এই কোডটি ব্যবহার করে আপনার রোবটকে অন্য কিছু করতে প্রশিক্ষণ দিতে পারেন, যতক্ষণ না এটি পরিমাপ করা হয় এবং রোবটকে খাওয়ানো হয়!

আপনি ছবিতে দেখতে পাচ্ছেন, মাউস একটি পাতলা কর্ডে টেনে আনা হয়েছে। প্রথমে এটি মাউস-ক্যাবলে টেনে আনা হয়েছিল। যাইহোক, কেবলটি এক ধরণের শক্ত, তাই রোবটটি মাউসকে টেনে না নিয়ে নাড়াতে শিখেছে। ঝাঁকুনি উচ্চ পয়েন্ট উত্পাদিত…

কোড 50 individs ব্যবহার করে। এর মূল হল 50x50 বাইটের একটি অ্যারে।

একটি স্বতন্ত্র হল বাইটের একটি অ্যারে। যখন রোবট চালানোর জন্য ব্যক্তি ব্যবহার করা হয় তখন এই ব্যক্তিকে "টোলকেন" নামক কোডের একটি ফাংশনে পাঠানো হয়।

একটি রান শুরুতে 8 ভেরিয়েবল আছে m1, m2, m3, m4, m5, m6, m7 এবং m8 (প্রতিটি সার্ভোর জন্য একটি)। এই রোবটে তাদের সকলের ধ্রুবক মান রয়েছে। "টোলকেন" -এ mś কেস/সুইচ লুপে ব্যক্তির মানগুলির উপর নির্ভর করে রূপান্তরিত হয়। উদাহরণস্বরূপ "1" এর একটি মান নিম্নলিখিতগুলি সম্পাদন করে: m1 = m1 + m2।

যদি একজন ব্যক্তি হয়: 1, 2, 3, 0, 0, 0, 0….. তাহলে mś নিম্নলিখিত উপায়ে রূপান্তরিত হবে:

m1 = m1 + m2;

m1 = m1 + m3;

m1 = m1 + m4;

টলকেন হল 256 টি ভিন্ন গাণিতিক ক্রিয়াকলাপের একটি তালিকা, তাই individs অ্যারের প্রতিটি সম্ভাব্য মান m মানগুলির একটি গাণিতিক পরিবর্তনের প্রতিনিধিত্ব করে।

টোকেন-প্রক্রিয়াটি 4 বার সম্পন্ন করা হয়, প্রতিটি কোলের মধ্যে পড়ার সাথে, প্রতিটি "মি" এর জন্য চারটি ভিন্ন মোটর-কোড তৈরি করে। মোটরকোড হল সেই মান যা পরবর্তীতে সার্ভোসে পাঠানো হয়।

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

যদি কোন ব্যক্তি মোটেও সঞ্চালন না করে, তাহলে নতুনদের তৈরির জন্য অবিভক্তদের পরিবর্তন ঘটবে।

আপনি GitHub এ কোডটি খুঁজে পেতে পারেন:

ধাপ 3: কিভাবে এটি প্রশিক্ষণ?

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

রোবটটি তার প্রাথমিক অবস্থানে আছে তা নিশ্চিত করার জন্য আমি কোডের ভিতরে কয়েকটি চেক-পয়েন্ট রেখেছি।

সুতরাং রোবটটি সারিবদ্ধ করুন এবং এটি চালাতে দিন।

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

আমার রোবট কয়েক ঘন্টা পরে ক্রল করতে শিখেছে। এটি ক্রল করতে ভিডিওটি ডাউনলোড করুন। এটা যে দিকে আমি ভেবেছিলাম সেদিকে যায়নি!

এছাড়াও বিভিন্ন মেঝে চেষ্টা করুন! আমার রোবট একটি নাইলন কার্পেটে সবচেয়ে ভালো পারফর্ম করেছে।

সম্ভাব্য উন্নতি:

1. PS/2 মাউস পড়ার জন্য আলাদা ন্যানো থাকা ভালো হবে, এবং প্রক্রিয়াকৃত দূরত্বকে সিরিয়ালে সরিয়ে ন্যানোতে পাঠানো ভাল। আমার PS/2 মাউসের পড়াটা একটু নড়বড়ে। এটি মাউস পড়া/কোডের অংশগুলি সাফ করার কারণ।

2. কিছু ধরণের টেস্ট রিগ যা রোবটটিকে তার প্রারম্ভিক অবস্থানে ফিরিয়ে এনে প্রশিক্ষণের গতি বাড়াবে।

3. আমি মনে করি এটা আমার চেয়ে একটু ধীর প্রশিক্ষণ দেওয়া বুদ্ধিমানের কাজ। ধীর প্রশিক্ষণ নিশ্চিত করে যে এটি "সঠিক দিকে" প্রশিক্ষিত। বেশ কয়েকটি টেস্ট রানের গড় কর্মক্ষমতা একটি সম্ভাব্য উপায় হতে পারে।

প্রস্তাবিত: