সুচিপত্র:

হ্যাপটিক ড্রইং রোবট: ৫ টি ধাপ (ছবি সহ)
হ্যাপটিক ড্রইং রোবট: ৫ টি ধাপ (ছবি সহ)

ভিডিও: হ্যাপটিক ড্রইং রোবট: ৫ টি ধাপ (ছবি সহ)

ভিডিও: হ্যাপটিক ড্রইং রোবট: ৫ টি ধাপ (ছবি সহ)
ভিডিও: হ্যাপটিক ফিডব্যাক কি? | 2.0 Update Haptic Feedback Feature Explain Pubg Mobile & Bgmi (Bangla) 2024, জুলাই
Anonim

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

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

www.projehocam.com/arduino-saati-yazan-kol-…

blogs.sap.com/2015/09/17/plot-clock-weathe…

www.heise.de/make/meldung/Sanduhr-2-0-als-Bausatz-im-heise-shop-erhaeltlich-3744205.html

যান্ত্রিকভাবে এই রোবট তৈরি করা সহজ। তাদের কেবল মৌলিক জয়েন্টগুলির প্রয়োজন এবং দুটি অ্যাকচুয়েটর রয়েছে যা বেশ কিছু তরল গতি তৈরি করতে পারে। এই কাঠামোটি এমন ডিজাইনারদের জন্য আদর্শ যারা চলমান কাঠামো তৈরিতে আগ্রহী কিন্তু আমি একজন মেকানিক্যাল ইঞ্জিনিয়ার নই, আমি কোডে অনুবাদ করা কাইনেমেটিক্সকে বেশ কঠিন মনে করেছি। অতএব আমি মৌলিক Arduino কোড প্রদান করব যা ফরোয়ার্ড এবং ইনভার্স কিনেমেটিক্সের পরিসংখ্যান দেবে যাতে আপনি সহজেই আপনার ভবিষ্যতের ডিজাইনগুলিতে এটি ব্যবহার করতে পারেন!;-)

দয়া করে নিচের কোডটি ডাউনলোড করুন!

* সম্পাদনা করুন: একটি অনুরূপ প্রকল্পের জন্য, https://haply.co এ দেখুন *

ধাপ 1: কাঠামো তৈরি করা

কাঠামো নির্মাণ
কাঠামো নির্মাণ

আপনার মনে যে উদ্দেশ্য রয়েছে তার উপর নির্ভর করে আপনাকে প্রথমে 5-লিঙ্কেজ স্ট্রাকচার ডিজাইন করতে হবে। পরিমাপ, আপনি ব্যবহার করতে চান actuators, এবং মসৃণ আন্দোলনের জন্য জয়েন্টগুলোতে কিভাবে সংযুক্ত করা যায় তা নিয়ে চিন্তা করুন।

আমার প্রোটোটাইপের জন্য, আমি আমার কোডটি একটি Arduino DUE এ চালাই যা আমার ম্যাকের একটি প্রোগ্রাম দ্বারা সিরিয়াল দ্বারা নিয়ন্ত্রিত হয় যা ওপেন ফ্রেমওয়ার্কগুলিতে তৈরি করা হয়েছিল। প্রোগ্রামটি একটি ইউনিটি 3D ভিত্তিক ড্রাইভিং সিমুলেটরের সাথে যোগাযোগের জন্য একটি UDP সংযোগ ব্যবহার করে।

স্ক্রিবল প্রোটোটাইপ 5 মিমি বিয়ারিং ব্যবহার করে এবং এটি 5 মিমি লেজার-কাট অ্যাক্রিলিক দিয়ে তৈরি। অ্যাকচুয়েটর হলো ফ্রাঙ্ক ভ্যান ভ্যালেকনহোফের হ্যাপটিক ইঞ্জিন যা অ্যাকচুয়েশন, পজিশন আউট এবং ভেরিয়েবল ফোর্স আউটপুট করার অনুমতি দেয়। এটি তাদের স্ক্রিবলের পছন্দসই হ্যাপটিক বৈশিষ্ট্যের জন্য আদর্শ করে তুলেছিল। তার অভিনেতা সম্পর্কে আরও এখানে পাওয়া যাবে:

পদক্ষেপ 2: আপনার হার্ডওয়্যারের মানগুলি জানুন

আপনার হার্ডওয়্যার মানগুলি জানুন
আপনার হার্ডওয়্যার মানগুলি জানুন

ফরওয়ার্ড কিনেমেটিক্স এসএপি দ্বারা প্লট ক্লক ওয়েদার স্টেশনের উপর ভিত্তি করে তৈরি করা হয়েছে:

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

আপনার হার্ডওয়্যারের উপর নির্ভর করে অ্যালগরিদমকে আপনার হার্ডওয়্যারের বৈশিষ্ট্যগুলি জানতে হবে:

int leftActuator, rightActuator; // ডিগ্রীতে অ্যাকচুয়েটরে লিখার জন্য কোণ, যদি আপনি আরও নির্ভুলতা চান তবে ভাসাতে পরিবর্তন করুন

int posX, posY; // পয়েন্টার অবস্থানের স্থানাঙ্ক

আপনার ইনপুট মানগুলির রেজোলিউশন সেট করুন

int posStepsX = 2000;

int posStepsY = 1000;

আপনার সেটআপের মাত্রা, মানগুলি মিমি (এসএপি ছবি দেখুন)

#ডিফাইন L1 73 // দৈর্ঘ্য মোটর আর্ম, এসএপি ছবি দেখুন (বাম এবং ডান একই)

#ডিফাইন L2 95 // দৈর্ঘ্য এক্সটেনশন আর্ম, এসএপি ছবি দেখুন (বাম এবং ডান একই)

বিন্দু সরানোর জন্য X দিকনির্দেশের এক্স 250 // সর্বাধিক পরিসীমা নির্ধারণ করুন (বাম থেকে ডানে, 0 - ম্যাক্সভাল)

#সংজ্ঞায়িত করুন Y165 // বিন্দু সরানোর জন্য Y দিকের সর্বাধিক পরিসীমা (কেন্দ্রে থাকার সময় 0 থেকে সর্বাধিক নাগালে

#ডিফাইন অরিজিন এল 90 // অফসেট দূরত্ব বেশিরভাগ মিনিমিম এক্স ভ্যালু থেকে অ্যাকচুয়েটর সেন্টার পজিশনে

#ডিফাইন অরিজিন R 145 // অফসেট দূরত্ব বেশিরভাগ মিনিমিম এক্স ভ্যালু থেকে অ্যাকচুয়েটর সেন্টার পজিশনে, দুটি মোটরের মধ্যে দূরত্ব এই ক্ষেত্রে

ধাপ 3: Kinematics ফরওয়ার্ড করুন

ফরওয়ার্ড কিনেমেটিক্স
ফরওয়ার্ড কিনেমেটিক্স

পূর্ববর্তী ধাপে উল্লেখ করা হয়েছে, ফরওয়ার্ড কিনেমেটিক্স এসএপির অ্যালগরিদমের উপর ভিত্তি করে।

শূন্যতা বাম এবং ডান অ্যাকচুয়েটরের পছন্দসই কোণ মানগুলি পূর্বে সংজ্ঞায়িত করেছে। X এবং Y মানগুলির উপর ভিত্তি করে যা এটি প্লাগ করা আছে এই অবস্থানে পয়েন্টার পেতে সঠিক কোণ গণনা করবে।

void set_XY (double Tx, double Ty) // আপনার X এবং Y মান ইনপুট করুন {// কিছু ভ্যাল আমাদের প্রয়োজন কিন্তু দীর্ঘ ডাবল dx, dy, c, a1, a2, Hx, Hy; // বাস্তব জগতে আপনার কনফিগারেশনের পরিসরের জন্য মানচিত্রের ইনপিট রেজোলিউশন int realX = map (Tx, 0, posStepsX, 0, rangeX); // অদলবদল যদি ম্যাপিং করা হয় তাহলে int realY = map (Ty, posStepsX, 0, 0, rangeY); // উল্টানো হলে ম্যাপিং করলে swap // বাম অ্যাকচুয়েটরের জন্য ক্যালক কোণ // কার্টেশিয়ান dx/dy dx = realX - originL; // অফসেট dy = realY অন্তর্ভুক্ত করুন; // মেরু দৈর্ঘ্য (c) এবং কোণ (a1) c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); leftActuator = মেঝে (((M_PI - (a2 + a1)) * 4068) / 71); // চূড়ান্ত কোণ এবং রাড থেকে ডিগিতে রূপান্তর // ডান অ্যাকচুয়েটরের জন্য ক্যালস কোণ dx = realX - originR; // অফসেট dy = realY অন্তর্ভুক্ত করুন; c = sqrt (dx * dx + dy * dy); a1 = atan2 (dy, dx); a2 = return_angle (L1, L2, c); rightActuator = মেঝে (((a1 - a2) * 4068) / 71); // চূড়ান্ত কোণ এবং রেড থেকে ডিগ্রিতে রূপান্তর করুন}

কোণ গণনার জন্য অতিরিক্ত শূন্যতা:

ডাবল রিটার্নএঙ্গেল (ডাবল এ, ডাবল বি, ডাবল সি) {// সি এবং রিটার্ন অ্যাকোসের মধ্যে কোণের জন্য কোসাইন নিয়ম ((a * a + c * c - b * b) / (2 * a * c)); }

ধাপ 4: বিপরীত গতিবিদ্যা

বিপরীত কিনেমেটিক্স
বিপরীত কিনেমেটিক্স

বিপরীত গতিবিদ্যা অন্যভাবে কাজ করে। আপনি আপনার অ্যাকচুয়েটরগুলিকে ডিগ্রীতে ঘোরান এবং শূন্যতা পূর্বে সংজ্ঞায়িত অবস্থান আপডেট করবে।

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

প্রস্তাবিত: