«

»

নভে. 25

রোবটিক্স পরিচিতি – লেকচার ৪-২ –ট্র্যাজেক্টরি / পাথ প্ল্যানিং

banajajaj[কোর্সের মূল পাতা | নিবন্ধনের লিংক]

 

কি থাকছে আজকের লেকচারে

 

পার্ট ১: টাস্ক অরিয়েন্টেড কন্ট্রোল

পার্ট ২: ট্র্যাজেক্টরি/ পাথ প্ল্যান

পার্ট ৩: হিউম্যানয়েড রোবট বানানো কঠিন ক্যান

পার্ট ৪: রোবট কি সুইসাইড করতে পারে?

 

 

Task oriented control

ধরুন মশা একটা প্যা প্যা করতেসে কানের কাছে। দুই হাত দিয়ে মশা টা মেরে ফেললেন। আপনি কি মশাটা কে follow করার সময় continuously  দুই হাতের আর্ম, কবজি, আঙ্গুল এর মধ্যকার জয়েন্ট গুলোর angle , position, orientation এগুলা হিসাব করছেন? 😀 বিষয়টা আগে চিন্তা করে থাকলেও আপনি নিশ্চয়ই ইনভার্স কাইন্যামেটিক্স (লেকচার-২) apply করে জয়েন্ট angle  গুলো বের করেন নি আমি নিশ্চিত। আসলে আমরা মানুষেরা ইনভার্স কাইন্যামেটিক্স ব্যাবহার করে কোনো মুভমেন্ট/ওয়ার্ক করি না। কোনো কিছু গ্রিপ/ পিকপ্লেস/ মশা মারা/ খাওয়া/ মারামারি/ ঘুষাঘুষি/ চড় বা থাপ্পর কোনো কিছুতেই আমরা হাতের জয়েন্ট এর এঙ্গুলার পজিশন ভেবে কাজ করিনা। কারন আমরা কোনো “নির্দিষ্ট ট্র্যাজেক্টরি” বা পথ ফলো করিনা, শুধু “কাজটা করা” থাকে উদ্দেশ্য।

Taskorientedcontrol

অধিকাংশ কাজে আমরা Object কে ফলো করি, তা অনেকটা ম্যাগনেট এর মত। object টা moving  হলে তো এ ছাড়া কোনো কিছু করারও নাই আসলে। এক্ষেত্রে চোখ হল আমাদের সেন্সর, হাত হলো End effector যেটা দিয়ে অব্জেক্ট আমরা ধরি বা টাচ করি। (optics is sight, haptics is touch) .  এই কাজ গুলা আমরা যেভাবে করি, একটা n dof ধরলাম ৬ degree of freedom robot এর জন্য কাজ গুলো করতে হলে কি কি জানা লাগবে চিন্তা করুন তো।

bouncingball

Bouncing ball and gripper arm

১, তার ভিশন লাগবে। যা থেকে রোবট ‘লক্ষ্য’ এর পজিশন ইনফরমেশন estimate করবে, তা থেকে end effector এর  কে কোথায়  reach করতে হবে সেই co-ordinate সম্পর্কে ধারনা  করবে।

২, দুই কি?

প্রতিটা জয়েন্ট মুভ করাতে তাকে মোশন দিতে হবে। object oriented কাজটা করার জন্য কোন জয়েন্ট কতটুকই বা মুভ করবে? সেই মুভমেন্ট কিভাবে দিবো? খেয়াল করুন, এ ধরনের কাজে কিন্তু “কতটুকু” মুভ করবে প্রতিটা জয়েন্ট, তা নির্দিষ্ট না, কারন ফিক্সড কোনো পাথ (path) নাই, আবার অব্জেক্ট  টাও মুভিং। তো আপনি ৬ টা মোটর কে কি ইনপুট দিবেন? ব্যাপার টা হয়তো ছোট্ট আর কম DOF এর রোবটে অতটা প্রব্লেম্যাটিক না। (in large scale, everything is different) কিন্তু যদি বড় ডাইমেনশন/ওয়েট এর  ৬ টা  বা  আরো বেশি জয়েন্ট থাকে এমন রোবটে? এই প্রব্লেম এর সমাধান দিবে জ্যাকোবিয়ান। জ্যাকোবিয়ান ম্যাট্রিক্স কিভাবে ফর্ম করতে হয় আমরা শিখছি ৩য় লেকচারে, ডাইনামিক্স এ। (জানিনা কেউ দেখছেন কিনা, কিন্তু জ্যাকোবিয়ান খুবি গুরত্তপূর্ন জিনিষ)

কোনো কিছু ধরার জন্য আমরা কি করি? আমরা হাতে ফোর্স অ্যাপ্লাই করি হাত কে “গোল পজিশনে” নেবার জন্য। এই কাজ টাই করা যাবে নিচের ফর্মূলা দিয়ে।

যেটা করতে হবে তা হল, End Effector এর জ্যাকোবিয়ান বের করতে হবে। ব্যাস।

jacobian

উদাহরন

2dofjacobian

এখানে টাউ  হল মোটরের টর্ক,  F হল end effector এ exerted force. আপনাকে এন্ড এফেক্টর এর ফোর্স টা ইনপুট দিতে হবে। ক্যামন চাচ্ছেন তার ওপর। জ্যাকোবিয়ান ম্যাট্রিক্স হচ্ছে পজিশন ইনফরমেশন আর রোবট ডাইমেনশন নিয়ে। (জটিলতা এড়ানোর জন্য অনেক কিছু এড়িয়ে গেলাম, তবে এতটুকু জেনে apply করতে পারবেন)

তাহলে, এখন “টার্গেট পয়েন্ট” টা ভিশন থেকে পাবেন, ওইটার ‘ভেক্টর’ টা জেনে ফেললেন। সে অনুযায়ী, এখন আপনাকে শুধু বুদ্ধি করে F (F= ix. fx +jy. fy+ kz. fz ) ঠিক করে দিয়ে সব মোটরের টাউ বের করতে হবে। সেই ‘টাউ’ আপনি যদি অনবরত ইনপুট দেন (ভিশন থেকে ফিডব্যাক নিয়ে নিয়ে নতুন টাউ দিতে থাকেন) তাহলে আপনার গ্রিপার object এর দিকে রওনা দিবে। আমরা যে কাজটা করতেসি এটা হল Task oriented control. এছাড়া আরও কয়েকটি মেথড আছে এরকম কাজের জন্য। (in task oriented control,  gripper will attracted to move to goal position)

ট্র্যাজেক্টরি / পাথপ্ল্যানিং 

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

pathplan

পাথ কিঃ ম্যানিপুলেটর এর ক্ষেত্রে পাথ(path) বলতে নির্দিষ্ট পথ বোঝায়, যেখানে TIME নির্দিষ্ট থাকেনা।

ট্র্যাজেক্টরিঃ নির্দিষ্ট পথ বোঝায়, যেখানে TIME নির্দিষ্ট থাকে।

নির্দিষ্ট কার্ভ/ রেখা দেয়া থাকলে Trajectory plan এ ইনভার্স কাইন্যামেটিক্স লাগবে। ইনভার্স কাইনেম্যাটিক্স কি ছিল মনে আছে কি?  ২নং লেকচারের শেষে আমরা  2 DOF robot এর ইনভার্স কাইন্যামেটিক্স দেখেছিলাম। কোনো নির্দিষ্ট বিন্দুর জন্য এটা জয়েন্ট এর এঙ্গেল গুলা বের করে দিতো। কিন্তু এটা একটা সমস্যা ও বটে, আবারো একি কথা, DOF যদি বেশি হয়, তাহলে একটা বিন্দুর জন্য একাধিক এঙ্গেল সলুশন আসবে। নিচের চিত্রটা দেখলে বুঝবেন, একটা নির্দিষ্ট পয়েন্ট এ 6 DOF Puma রোবট ৪টা কনফিগারেশনে (major তিনটা জয়েন্ট এর ক্ষেত্রে বলা হয়েছে) reach করতে পারে। একে বলে redundancy. (Redundancy depends on point.)

diff_configuration

এতে প্রব্লেমটা কই? প্রব্লেম হলো আপনাকে যদি একটা পথ আর টাইম দিয়ে দেয়া হয়, কোন সেট সলুশন চাচ্ছেন তা খেয়াল রাখতে হবে। চলার মধ্যে ভিন্ন কনফিগারেশন এর এঙ্গেল দিলে বাগড়া বাধবে। তাই পাথ এ থাকতে হলে এঙ্গেলের কারেক্ট সেট বের করে ক্রমাগত ইনপুট দিতে হবে। এলোমেলো হয়ে গেলে প্রব্লেম হবে। (বিস্তারিত লেকচার-২)

path_follow

পাথ প্ল্যানিং এর স্ট্রাকচার টা মোটামুটি এরকম,

pathplanDiagram

উপরের চিত্রে Path specification হতে পারে কার্ভ বা যে কোনো কাঙ্খিত রাস্তা (অবশ্যই রোবটের maximum reach এর মধ্যে থাকতে হবে)। path constraints হতে পারে পথের কোনো প্রতিবন্ধকতা। সেন্সর থেকে পাওয়া ইনফরমেশন থেকে Trajectory Planner পাথ modify করে নিবে। সাধারনত, যে ইকুএশন দেয়া থাকবে, সেই পাথ এ end-effector কে রাখার জন্য given time এর সাথে সাথে জয়েন্ট এঙ্গেল বের করাই Trajectory Planner এর কাজ। আমরা ২ নং লেকচার এর শুরুতে এরকম দেখেছি, শেষের অংশে দেখেছি 2 DOF robot এর IK।

ভিডিও তে দেখানো ফাইল টা পাওয়া যাবে এখানে।

https://www.dropbox.com/s/31jri3bnp5b2vu7/pathplan.ppsx

হিউম্যানয়েড রোবট কন্ট্রোল কঠিন ক্যানঃ তাত্তিক ব্যাখ্যা

আমরা এর পরের লেকচারে কন্ট্রোল ঢুকে যাবো, যেটা সবচেয়ে ইন্টারেস্টিং পার্ট। প্রজেক্ট, শখে অনেকেই আমরা রোবট বানিয়েছি। মেজ সল্ভার, লাইন ফলোয়ার, অবস্টাকল এভয়েড, গ্রিপার, ওয়াল ক্লাইম্বার, আর্ম, ছোটো কোয়াড কপ্টার, কথা বলে, কথা শুনে, গান গায় 😛 আরো নানান নামে বিভিন্ন কিছু বানিয়েছি। কিন্তু কখনো বাইপ্ড (biped) হিয়ম্যানয়েড  কি বানিয়েছি? আমি রিয়েল স্কেল এর হিয়ম্যানয়েড এর কথা বলছি, যেটা হাটতে পারে? ওজন মিনিমাম ৩০ কেজি এরকম কোনো biped robot? ক্রিয়েটিভিটি দিয়ে হয়তো আপনি biped-walker (দুই পায়ে হাটে)   এরকম কিছু বানাতে পারেন, এমনকি মোটর ছাড়াও। ওজন এর কথাটা বলে দিলাম কারন ছোটো স্কেলে অনেক ননলিনিয়ারিটি আপনি টের পাবেন না। বড় স্কেল পুরাপুরি আলাদা ব্যাপার। ডাইনামিক্স এর পেচাল তো কিছু পারছিলাম আগে, কিন্তু দিন শেষে আপনার “CONTROL” method ক্যামন, সেটাই বলবে আপনার রোবট হাটবে না পড়ে যাবে। নিচে ওয়াকিং এ তাত্তিক প্রবলেম টা কোথায় বা চ্যালেঞ্জ টা কোন জায়গাতে তা বলেছি। তাহলে বোঝা যাবে ক্যান অরডিনারি কন্ট্রোলার দিয়ে  আপনি হাটাতে পারবেন না। পরের লেকচারে আমরা মোটামুটি একটা ভালো কন্ট্রোলার পড়বো। (কন্ট্রোলের বেসিক নিয়ে আরো একটি কোর্স দিচ্ছি, ওই কোর্স টা করে আসলে এখান কার কন্ট্রোলার গুলো বুঝতে কিছুটা সুবিধা হবে।)

3 D তে একটা body এর ৬ টি DOF.     (fig: a)

তিন টি পজিশন ইনফরমেশন (x,y,z) –> অর্থাৎ তিন দিকে ট্রান্সলেট করতে পারে।

তিন টি অরিয়েন্টেশন ইনফরমেশন –> roll, pitch আর yaw. অর্থাৎ তিনটা দিকে ঘুরতে পারে।

কিন্তু আমরা যদি একটা জয়েন্ট দিয়ে দেই, তাহলে ৫ টি DOF  বিদায় হয়ে যায়। (fig: b) কারন হল,  px,py,pz শুধু মাত্র Theta  এর ওপর ডিপেন্ড করবে তখন। আর ‘জয়েন্ট’ দেয়ার সাথে সাথে অন্য ২ টা রোটেশন বাতিল হবে। (same as for prismatic motion, prismatic will allow only one translation towards one direction. no rotation allowed.)

 why_humanoid is tuff to control

তো এখন যদি আমাদের শুরু থেকে পড়া 2 DOF রোবট এর প্রথম গ্রাউন্ড জয়েন্ট খুলে দেই, জয়েন্ট টা fig: e এর মত লাগাই এবং হাটানোর চেষ্টা করি, (fig: c) তাহলে ৬ টি নতুন DOF  যোগ হবে আমাদের সিস্টেমে, যে মোশন গুলার ওপর লিটার‍্যালি আমাদের কোনো কন্ট্রোল নাই। এটাই হল কন্ট্রোল সিস্টেমের চ্যালেঞ্জ। রিয়েল হিয়ম্যানয়েড এর আরো অসংখ্য জয়েন্ট, সিরিয়াল লিঙ্কেজ, প্যারালাল লিঙ্কেজ, স্পেরিক্যাল জয়েন্ট, ইউনিভার্সাল জয়েন্ট, বডি স্ট্রাকচার, ব্যালেন্স/ওয়েট, ডিজাইন, মোশন, আন্সার্টেন্টি, ডিস্টার্বেন্স  সত্যি বেশ কঠিন।

রোবট সুইসাইড করতে পারে?

শুরুতে আমরা Isaac  Asimov এর law গুলো দেখি আসি। 😀

  1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.
  2. A robot must obey orders given it by human beings except where such orders would conflict with the First Law.
  3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Law.

http://www.nydailynews.com/news/world/roomba-commits-suicide-hotplate-article-1.1516652

rule গুলা অনুযায়ী এটা সম্ভব না, কারন রোবট টা মানুষের জন্য ক্ষতিকর অনেক কিছু করে ফেলসে! 😀

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

 

যেকোন প্রশ্ন বা মন্তব্য থাকলে কমেন্টে জানান। সাধ্যমত জবাব দিতে চেষ্টা করবো।  ভাল থাকুন সবাই।

Comments

comments

About the author

নাহিয়ান

আমি নাহিয়ান, জন্ম-বেড়ে উঠা ঢাকাতে। বাংলাদেশ প্রকৌশল বিশ্ববিদ্যালয় থেকে মেকানিক্যাল ইঞ্জিনিয়ারিং ‘কষ্টসাধ্য’ স্নাতক শেষ করি ২০০৯ এ। ২-২ এর শেষের দিকে দল বেধে সোহাগ ভাইদের পাইল্যাবস এ যাই, প্রবল আগ্রহে সবকিছু বাদ দিয়ে মাইক্রোকন্ট্রলার শিখা শুরু করি। মূলত তখন থেকেই রোবট রিলেটেড কিছু পড়ার ইচ্ছা। এছাড়া জাপানে অনুষ্ঠিত রোবোকোন-২০০৯ এর মেকবুয়েটে দলে কিছু কাজ(!) করেছিলাম। মাইক্রোকন্ট্রলার এর beginner দের জন্য একটা পেইজ বানাইছিলাম, কারো আগ্রহ থাকলে দেখতে পারেন।
http://nahians-avr.webs.com/
কোরিয়ার পুশান ন্যাশনাল ইউনিভারসিটি থেকে রোবটিক্স (Intelligent Control and automation system) এ মাস্টার্স সম্পন্ন করে বর্তমানে Advanced Robotics এ পি এইচ ডি করছি ইটালিয়ান ইন্সটিটিউট অফ টেক এ (http://www.iit.it/) । (http://www.iit.it/en/people/nahian-rahman.html)
বর্তমানে গবেষনার বিষয় ডেক্সটারাস ম্যানুপুলেশন, রোবোট কন্ট্রোল, সার্জিকাল রোবোটিক্স, হ্যাপ্টিক্স নিয়ে। রোবটিক্স নিয়ে মাঝেমধ্যে লিখি এখানে http://nahiansrobotics.net/

Leave a Reply