Home / ইলেক্ট্রনিক্স / Line following Robot with obstacle avoiding

Line following Robot with obstacle avoiding

1_1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v:* {behavior:url(#default#VML);}
o:* {behavior:url(#default#VML);}
w:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}


Normal
0
false
false
false
MicrosoftInternetExplorer4

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}

রোবোটিক্স
নিয়ে কাজ করার ইচ্ছে আমার বহুদিনের। Undergraduate Course হিসেবে Microprocessor
এর
সাথে পরিচয়। তারপর নিজ প্রচেষ্টায় Microcontroller
শিখা।
কিন্তু তারপরেও ভেবে পাচ্ছিলাম না কোথা থেকে শুরু করা যায়। আপনারা সবাই জানেন আমাদের
দেশে রোবোটিক্স নিয়ে কাজ করা কতটা ঝক্কি ঝামেলার। BUET এর
student রা যাও বা
কিছু কাজ করার সুযোগ পায়। আমার মত সাধারণ ছাত্রের সেই সুযোগও নেই। তাই বলে হাল
ছাড়িনি। অনেক ঘাটাঘাটির পর  youtube 
থেকে
এই Idea টা পাই।
রোবোটিক্স প্রজেক্টের শুরু হিসেবে এটা মন্দ নয়।

কাজ
করার সময় আমি নিম্নোক্ত Link এর সাহায্য
নিয়েছি:

http://www.micahcarrick.com/failurebot-line-following-robot.html

 

আমার
রোবোট এর Video Link:

http://www.youtube.com/watch?v=cz_DibBgT3U

 

 

Line following robot বা "Line follower" খুবই common
concept রোবোটিক্স
প্রতিযোগিতা গুলিতে। Main Theory হচ্ছে রোবট ৩/৪ ইঞ্চি প্রস্থ বিশিষ্ট  Darker
Line follow করবে,
অপেক্ষাকৃ্ত
Lighter floor – এ। Robot মুলতঃ  Light Reflection এর মাধ্যমে Line
detect করে। Darker Line যেখানে কোন Light
reflect করবেনা,
সেখানে
Lighter floor light reflect করবে। As simple as that।

My Robot's Overview

বিভিন্ন
website  ঘাটাঘাটি
করলে দেখতে পারবেন এই ধরনের Robot গুলো শুধু Line follow এর মধ্যেই
সীমাবদ্ধ নয়। আরো
অনেক Feature সমৃদ্ধ। কিন্তু এটা
যেহেতু
আমার প্রথম প্রজেক্ট, তাই জটিলতা পরিহার করার চেষ্টা করেছি। আমার রোবোট ২টি
কাজ করতে পারে – Line following এবং Obstacle avoiding.

Components:

১) 2 DC
gearhead motors

২) a
sensor board with 5 photo-transistor/ Infrared LED sensors

৩) an
L293D H-Bridge motor controller IC

৪) an
Atmel ATtiny26 microcontroller

 

untitled

 

 

 

 

 

 

 

 

 

 

 

Infrared LED থেকে
আলো floor বা  Line-এ reflect করে photo transistor এ আসবে। তারপর
microcontroller এর
ADC দিয়ে
transistor এর
output মাপা
হবে। এর উপর ভিত্তি করে রোবোট ঠিক করবে কোনদিকে যেতে হবে।

1_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Figure: একটি Ice Cream Box এর ভিতর আমার রোবোট

আমার রোবোট
differential-drive পদ্ধতিতে
move করে। 
Just like a Tank। একটা মোটর এর তিনটি state থাকে। Forward, backward and Stop। তাহলে
দাড়ালো –

                             
        বাম মোটর
 
               
ডান মোটর

সামনে———————- 
Forward                      
Forward

ডানে———————— 
Forward                         
Stop

আরো নিখুত ডানে——-  
Forward                     
Backward

বামে————————    
Stop                    
     Forward    

আরো নিখুত বামে——– 
Backward                   
Forward

পিছনে———————
  Backward                  
Backward 

 

মোটর
এবং চাকা

এই
প্রজেক্টে সবচেয়ে বেশি ঝামেলা পোহাতে হয়েছে মোটর নিয়ে। বিভিন্ন মোটর লাগিয়েও
রোবোটটিকে move করাতে
পারছিলাম না। পরে ঠিক করলাম gearmotor
use করবো।
Gearmotor এর torque অনেক বেশি। খরচও অনেক বেশি। ৩৫০
টাকা করে মোট ৭০০ টাকা মোটরের পিছেই গেছে। মোটর ২৪ ভোল্টের ছিল। কিন্তু আমার কাছে
সর্বোচ্চ supply voltage ছিল ১২
ভোল্ট। স্বাভাবিক ভাবেই আমার মোটর ধীরে ঘুরে। সেটা overcome করার জন্য আমি বেশি ব্যাসার্ধের চাকা ব্যবহার করেছি। কারণ পরিধি
যত বেশি হবে তত বেশি রোবোট  move করবে।

 

পাওয়ার
সাপ্লাই সার্কিট(৫ ভোল্ট)

1_10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1_17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

সেন্সর
বোর্ড

1_4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1_9

 

 

আমি
৫টি লাইন সেন্সর ব্যবহার করেছি। প্রতিটি লাইন সেন্সর একটি Infrared LED এবং একটি  photo
transistor নিয়ে
গঠিত। সেন্সর বোর্ড floor কাছাকাছি হতে
হবে। কারণ photo transistor
ambient light sensitive। ভালো performance
এর
জন্য photo transistor এবং Infrared LED নিম্নের ছবির ন্যায় সংযুক্ত
করতে হবে:

 

transistor

 

 

 

 

 

 

 

 

৫টি
লাইন সেন্সরই একটি ADC এর input এ গিয়ে যুক্ত হয়েছে। রোবোট শুরুতেই
সেন্সর গুলো (৫টিই) calibrate করে নিবে,
লাইনের নিচে থাকলে কি রকম মান দিবে আর floor এর উপর থাকলে কি রকম মান দিবে। সেই মান store করা থাকবে।

রোবোটের
কলকব্জা

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

মোটর
কন্ট্রোলার হিসেবে simple
H-bridge IC (L293D ৯০Tk) use করেছি। এটা খুবই কমন DC motor control concept। Google করলে আরও জানতে পারবেন। আমি এর
ব্যাখায় আর গেলাম না।

1_11

 

 

 

 

 

 

Obstacle Avoiding

এই feature টার জন্য এক জোড়া Infrared LED এবং photo transistor use করেছি। Photo transistor এর output Microcontroller এর Interrupt 0 তে গিয়ে যুক্ত হয়েছে।

1_13

 

 

 

 

 

 

 

মাইক্রোকন্ট্রোলার

AVR series এর ATtiny26 microcontroller use করেছি।

1_12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

সফটওয়্যার

প্রোগ্রামিং
কোড C তে লেখা AVR Studio তে। অনেক Robot-এ দেখে থাকবেন স্পিড কন্ট্রোলের জন্য PWM ব্যবহার করে। কিন্তু আগেই বলেছি, আমার
মোটর ধীর গতির হওয়ায় ব্যবহার করার প্রয়োজন হয়নি। Turn On করার পর Robot
কতক্ষন
স্থীর দাঁড়িয়ে থেকে Calibration
সম্পন্ন
করবে। শেষ হলে Line Detection
algorithm loop এর মাধ্যমে Line
track করতে
থাকবে। সামনে কোন বাধা (obstacle) থাকলে external interrupt এর মাধ্যমে MCU তে পৌছে যাবে। Robot তখন ১৮০ ডিগ্রী ঘুরে আবার Line track করতে থাকবে।

ক্যালিব্রেশন

ক্যালিব্রেশনের
সময় Robot প্রথমে Line এর উপর স্থির হয়ে থেকে Sensor এর জন্য মান নিবে। কতক্ষন পর
একটু সামনে এগিয়ে Floor এর উপর স্থির
হয়ে থেকে Sensor এর জন্য মান
নিবে। এরপর প্রতিটি Sensor এর জন্য ২টি value set করা
হবে। একটা হবে lowest value এবং আরেকটি
হবে Highest value।
ক্যালিব্রেশন শেষে এই ২ ভ্যালুর মধ্যবর্তী মানই হবে প্রতিটি sensor এর জন্য "Trip point"। Line tracking এর সময় কোন
ভ্যালু Trip point এর বেশি হলে
সেটা High এবং কম হলে
সেটা Low value ধরা হবে।

           Trip point  =  Low
value + (  (High value  –  Low
value)   /  2  )

 

লাইন
ডিটেকশন লজিক

পাচটি
সেন্সরের উপর নির্ভর করে Robot তার পরবর্তী
কর্মপন্থা ঠিক করে। At a time একটি করে
সেন্সরের মান নিয়ে একটি ৮-বিট রেজিষ্টারে সংরক্ষন করা হয়। আপনি ভাবতে পারেন, একটি
করে সেন্সরের মান নিয়ে রেজিষ্টারে সংরক্ষন করে Robot এর সিদ্ধান্ত নিতে হলে অনেক সময় লেগে যাবে। কিন্তু আসল কথা
হচ্ছে ATtiny26 default ভাবে 1MHz গতিতে কাজ করে। অতএব পুরো ব্যাপারটায় ১
সেকেন্ডেরও কম সময় লাগে। প্রতিটি সেন্সরের লজিক (High/Low) রেজিষ্টারের LSB
তে
store করে Left shift করা হয়। তারমানে একদম বামের সেন্সরটা হচ্ছে MSB। সম্ভাব্য কম্বিনেশন গুলো হচ্ছে :


Normal
0
false
false
false
MicrosoftInternetExplorer4

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-parent:””;
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin:0in;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.0pt;
font-family:”Times New Roman”;
mso-ansi-language:#0400;
mso-fareast-language:#0400;
mso-bidi-language:#0400;}

Bit Pattern

Hex Value

সিদ্ধান্ত

00100

0x04

লাইন মধ্যখানে।  সামনে যাও।

01110

0x0E

লাইন মধ্যখানে (সম্ভবত লাইনের
প্রশস্ত বেশি)।  সামনে যাও।

11111

0x1F

সামনে যাও।

00001

0x01

ডানে যাও (নিখুঁত)।

00011

0x03

ডানে যাও (নিখুঁত)।

00111

0x07

ডানে যাও (নিখুঁত)।

00010

0x02

ডানে যাও।

00110

0x06

ডানে যাও ।

01100

0x0C

বামে যাও ।

01000

0x08

বামে যাও ।

10000

0x10

বামে যাও ।

11000

0x18

বামে যাও (নিখুঁত)।

11100

0x1C

বামে যাও (নিখুঁত)।

?

N/A

Last direction এ যাও।

 

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

 

About Fahad

Check Also

নিজে হাতে বানাই – কম্পিউটর নিয়ন্ত্রিত রোবট বিমান

{mosimage}পাখির মতো ডানা মেলে আকাশে উড়ার স্বপ্ন মানুষের বহুদিনের। বিশ্বের ইতিহাসে রাইট ভাইগন প্রথম এই …

ফেসবুক কমেন্ট


  1. রোবটিক্সে কিছুদিন থেকে আমারও আগ্রহ জন্মেছে। আমার আপনার মত অবস্থা হয়েছে, ঠিক কিভাবে কোথাথেকে শুরু করব বুঝতে পারছিলাম না। আপনার পোষ্টটা আমরা আমার অনেক উপকারে দিবে। ধন্যবাদ

  2. There’s been a mistake. In obstacle avoiding ckt, INT0 should connect with emitter, above the 10k resister. Sorry for the inconvenience.

  3. অনেক সুন্দর হয়েছে, চালিয়ে যান। আমাদের মত মানুষ উপক্রিত হবে

  4. সালামু আলাইকুম সবাইকে আন্তরিক ধন্যবদ আমি ককস বাজারের ছেলে আমি ককস বাজার মডেল পলিটেকনিকালে ইলেকট্রিক্যাল ৬ষ্ট পর্বের ছাএ আমার কথা হচ্চে আমরা মূলত গুগুলে ইলেকট্রনিক্ল সমর্পকে বাংলায় কিছুই পাইনা

মন্তব্য করুন

আপনার ই-মেইল এ্যাড্রেস প্রকাশিত হবে না। * চিহ্নিত বিষয়গুলো আবশ্যক।