সুচিপত্র:

স্বায়ত্তশাসিত যান: 7 টি ধাপ (ছবি সহ)
স্বায়ত্তশাসিত যান: 7 টি ধাপ (ছবি সহ)

ভিডিও: স্বায়ত্তশাসিত যান: 7 টি ধাপ (ছবি সহ)

ভিডিও: স্বায়ত্তশাসিত যান: 7 টি ধাপ (ছবি সহ)
ভিডিও: স্বামীর মৃত্যুর খবর নিজেকেই বলতে হচ্ছে ব্রেকিং নিউজে। 2024, নভেম্বর
Anonim
স্বায়ত্তশাসিত যানবাহন
স্বায়ত্তশাসিত যানবাহন
স্বায়ত্তশাসিত যানবাহন
স্বায়ত্তশাসিত যানবাহন

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

রোবটটি দুটি ডিসি মোটর চালিত চাকা এবং দুটি কাস্টার চাকা দিয়ে চলাচল করবে। মোটরগুলি একটি বৃত্তাকার প্ল্যাটফর্মের নীচে সংযুক্ত থাকবে। মোটর দুটি মোটর চালক দ্বারা নিয়ন্ত্রিত হবে। মোটর চালকরা Zynq প্রসেসর থেকে PWM কমান্ড পাবেন। প্রতিটি মোটর এ এনকোডার সব গাড়ির অবস্থান এবং অভিযোজন ট্র্যাক রাখতে ব্যবহার করা হবে। পুরো সিস্টেম একটি LiPo ব্যাটারি চালিত হবে।

ধাপ 1: যানবাহন একত্রিত করা

যানবাহন একত্রিত করা
যানবাহন একত্রিত করা
যানবাহন একত্রিত করা
যানবাহন একত্রিত করা
যানবাহন একত্রিত করা
যানবাহন একত্রিত করা
যানবাহন একত্রিত করা
যানবাহন একত্রিত করা

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

নির্বাচিত মোটরটি ছিল একটি পোর্ট এস্ক্যাপ 12V ডিসি মোটর যার মধ্যে ছিল এনকোডার। এই মোটরটি ইবেতে খুব যুক্তিসঙ্গত মূল্যে কেনা যায় (বিল অফ ম্যাটেরিয়ালস দেখুন)। মোটর খুঁজে পেতে ইবেতে "12V Escap 16 Coreless Geared DC Motor with Encoders" কীওয়ার্ড খুঁজুন। সাধারণত বেছে নেওয়ার জন্য ন্যায্য পরিমাণ বিক্রেতা থাকে। মোটরের চশমা এবং পিনআউটগুলি নীচের চিত্রগুলিতে দেখানো হয়েছে।

রোবটের সমাবেশ চ্যাসির সিএডি মডেল ডিজাইন দিয়ে শুরু হয়েছিল। নীচের মডেলটি চ্যাসিসের জন্য ডিজাইন করা 2D আকৃতির প্রোফাইলের শীর্ষ দৃশ্য দেখায়।

এটি প্রস্তাব করা হয়েছে যে চ্যাসিগুলি 2Dprofile হিসাবে ডিজাইন করা হোক যাতে এটি সহজেই তৈরি করা যায়। আমরা ওয়াটার-জেট কাটার ব্যবহার করে চেসিসের আকারে অ্যালুমিনিয়ামের 12”X12” শীট কেটেছি। চ্যাসি প্ল্যাটফর্মটি একটি ব্যান্ড করাত দিয়েও কাটা যায়।

ধাপ 2: মাউন্ট করা মোটর

মাউন্ট করা মোটর
মাউন্ট করা মোটর
মাউন্ট করা মোটর
মাউন্ট করা মোটর

পরবর্তী ধাপ হল মোটর মাউন্ট করা। এটা সুপারিশ করা হয় যে মোটর মাউন্ট 90 ডিগ্রী শীট মেটাল অ্যালুমিনিয়াম থেকে তৈরি করা হবে। এই অংশটি ব্যবহার করে, মোটরটি দুটি ব্যবহার করে শীট মেটালের এক মুখে ক্যান্টিলিভার সংযুক্ত করা যেতে পারে

মোটরের M2 গর্ত এবং অন্য মুখটি প্ল্যাটফর্মে বোল্ট করা যায়। মোটর মাউন্টে ছিদ্র করতে হবে যাতে মোটর মাউন্টে মোটর বেঁধে স্ক্রু ব্যবহার করা যায় এবং প্ল্যাটফর্মে মোটর মাউন্ট করা যায়। উপরের চিত্রে মোটর মাউন্ট দেখা যায়।

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

ধাপ 3: ভিভাদো ব্লক ডিজাইন তৈরি করা

ভিভাদো ব্লক ডিজাইন তৈরি করা
ভিভাদো ব্লক ডিজাইন তৈরি করা
ভিভাদো ব্লক ডিজাইন তৈরি করা
ভিভাদো ব্লক ডিজাইন তৈরি করা

- একটি নতুন ভিভাদো প্রকল্প তৈরি করে শুরু করুন এবং টার্গেট ডিভাইস হিসেবে জাইবো জাইঙ্ক 7000 Z010 নির্বাচন করুন।

- পরবর্তী নতুন ব্লক ডিজাইন তৈরি করতে ক্লিক করুন, এবং Zynq আইপি যোগ করুন। Zynq IP তে ডাবল ক্লিক করুন এবং Zynq এর জন্য প্রদত্ত XPS সেটিংস আমদানি করুন। তারপরে MIO কনফিগারেশন ট্যাবের অধীনে MIO 10..11 দিয়ে UART0 সক্ষম করুন, এবং নিশ্চিত করুন যে টাইমার 0 এবং ওয়াচডগ টাইমার সক্রিয় আছে।

- ব্লক ডিজাইনে দুটি AXI GPIOS যোগ করুন। GPIO 0 এর জন্য দ্বৈত চ্যানেল সক্ষম করুন এবং উভয় আউটপুটে সেট করুন। চ্যানেল 1 থেকে 4 বিট এবং চ্যানেল 2 থেকে 12 বিটের জন্য জিপিআইও প্রস্থ সেট করুন, এই চ্যানেলগুলি মোটরের দিক নির্ধারণ করতে এবং প্রসেসরের কাছে এনকোডার পরিমাপের টিক পাঠানোর জন্য ব্যবহার করা হবে। জিপিআইও 1 এর জন্য 4 বিটের চ্যানেল প্রস্থ সহ সমস্ত ইনপুটগুলিতে কেবল একটি চ্যানেল সেট করুন। এটি এনকোডারদের কাছ থেকে তথ্য গ্রহণের জন্য ব্যবহার করা হবে। সমস্ত জিপিআইও পোর্ট বাহ্যিক করুন।

- পরবর্তী দুটি AXI টাইমার যোগ করুন বাহ্যিক উভয় টাইমারে pwm0 পোর্টগুলি তৈরি করুন। এগুলি হবে পিডব্লিউএম যা মোটর ঘুরানোর গতি নিয়ন্ত্রণ করে।

- অবশেষে ব্লক অটোমেশন এবং সংযোগ অটোমেশন চালান। যাচাই করুন যে আপনার যে ব্লক ডিজাইনটি দেওয়া আছে তার সাথে মেলে।

ধাপ 4: লিডার এর সাথে যোগাযোগ করা

এই LiDAR UART এর মাধ্যমে যোগাযোগ করার জন্য একটি SCIP 2.0 প্রোটোকল ব্যবহার করে, সংযুক্ত ফাইলটি সম্পূর্ণ প্রোটোকল বর্ণনা করে।

LiDAR এর সাথে যোগাযোগ করার জন্য আমরা UART0 ব্যবহার করব। LiDAR 68২ টি ডাটা পয়েন্ট প্রদান করে যার প্রতিটি সেই কোণে একটি বস্তুর দূরত্বের প্রতিনিধিত্ব করে। LiDAR 0.351 ডিগ্রি ধাপে -30 ডিগ্রী থেকে 210 ডিগ্রী পর্যন্ত ঘড়ির কাঁটার বিপরীতে স্ক্যান করে।

- LiDAR- এর সমস্ত যোগাযোগ ASCI অক্ষর দিয়ে করা হয়, ব্যবহৃত বিন্যাসের জন্য SCIP প্রোটোকল দেখুন। আমরা লিডার চালু করতে QT কমান্ড পাঠিয়ে শুরু করি। তারপরে আমরা USTS 64 বাইট FIFO- এ ফুটে একবারে 18 টি ডেটা পয়েন্টের অনুরোধ করে GS কমান্ডটি কয়েকবার পাঠাই। লিডার থেকে ফেরত আসা ডেটাগুলি বিশ্লেষণ করে SCANdata গ্লোবাল অ্যারেতে সংরক্ষণ করা হয়।

- সংরক্ষিত প্রতিটি ডেটা পয়েন্ট এনকোডেড ডেটার 2 বাইট। ডিকোডারে এই ডেটা পাস করলে মিলিমিটারে দূরত্ব ফিরে আসবে।

Main_av.c ফাইলে আপনি LiDAR এর সাথে যোগাযোগ করার জন্য নিম্নলিখিত ফাংশনগুলি পাবেন

পাঠান LIDARcmd (কমান্ড)

- এটি UART0 এর মাধ্যমে LiDAR কে ইনপুট স্ট্রিং পাঠাবে

recvLIDARdata ()

- লিডারকে একটি কমান্ড পাঠানোর পরে এটি ডেটা গ্রহণ করবে এবং RECBuffer এ ডেটা সংরক্ষণ করবে

requestDistanceData ()

- এই ফাংশন সমস্ত 682 ডেটা পয়েন্ট পুনরুদ্ধারের জন্য একটি সিরিজের কমান্ড পাঠাবে। 18 টি ডেটা পয়েন্টের প্রতিটি সেট পাওয়ার পর পার্স লিডারইনপুট () কে ডেটা বিশ্লেষণ করতে বলা হয় এবং ক্রমবর্ধমান স্ক্যানডাটাতে ডেটা পয়েন্ট সংরক্ষণ করতে বলা হয়।

ধাপ 5: বাধা সহ গ্রিড পপুলেটিং

বাধা সহ গ্রিড পপুলেটিং
বাধা সহ গ্রিড পপুলেটিং
বাধা সহ গ্রিড পপুলেটিং
বাধা সহ গ্রিড পপুলেটিং

যে GRID সংরক্ষণ করা হয় তা হল একটি 2D অ্যারে যার প্রতিটি সূচক মান একটি অবস্থানকে প্রতিনিধিত্ব করে। প্রতিটি সূচকে সংরক্ষিত ডেটা যথাক্রমে 0 বা 1, কোন বাধা এবং বাধা নেই। মিলিমিটারে বর্গ দূরত্ব যা প্রতিটি সূচকটি প্রতিনিধিত্ব করে তা গাড়ির.এইচ ফাইলে GRID_SCALE সংজ্ঞা দিয়ে পরিবর্তন করা যায়। GRID_SIZE সংজ্ঞা পরিবর্তন করে যানবাহনকে বৃহত্তর এলাকা স্ক্যান করার অনুমতি দিতে 2D অ্যারের আকারও বৈচিত্র্যময় হতে পারে।

লিডার আপডেটগ্রিড () থেকে একটি নতুন দূরত্বের ডেটা স্ক্যান করার পরে বলা হয়। এটি SCANdata অ্যারেতে সংরক্ষিত প্রতিটি ডেটা পয়েন্টের মাধ্যমে পুনরাবৃত্তি করবে যাতে গ্রিডের কোন সূচীতে বাধা থাকে তা নির্ধারণ করা যায়। গাড়ির বর্তমান অভিযোজন ব্যবহার করে আমরা প্রতিটি ডেটা পয়েন্টের সাথে সংশ্লিষ্ট কোণ নির্ধারণ করতে পারি। আপনি কোন বাধা কোথায় তা নির্ধারণ করতে তারপর সংশ্লিষ্ট দূরত্বকে কোণের cos/sin দ্বারা গুণ করুন। গাড়ির বর্তমান x এবং y অবস্থানে এই দুটি মান যোগ করলে বাধার গ্রিডে সূচক ফিরে আসবে। GRID_SCALE দ্বারা এই ক্রিয়াকলাপের দ্বারা প্রদত্ত দূরত্বকে ভাগ করলে আমাদের প্রতিটি সূচকের বর্গ দূরত্ব কত বড় হবে তা পরিবর্তিত হতে দেয়।

উপরের ছবিগুলি গাড়ির বর্তমান পরিবেশ এবং ফলস্বরূপ গ্রিড দেখায়।

ধাপ 6: মোটরগুলির সাথে যোগাযোগ

মোটরগুলির সাথে যোগাযোগ করার জন্য আমরা GPIO গুলি শুরু করে শুরু করি নিয়ন্ত্রণের জন্য মোটরটি ঘুরতে থাকে। তারপর AXI টাইমারে PWMs এর মূল ঠিকানায় সরাসরি লেখা আমাদের সময়কাল এবং ডিউটি চক্রের মতো জিনিসগুলি সেট করতে দেয় যা সরাসরি নিয়ন্ত্রণ করে মোটর গতিতে ঘুরছে।

ধাপ 7: পথ পরিকল্পনা

অদূর ভবিষ্যতে বাস্তবায়ন করা হবে।

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

প্রস্তাবিত: