সুচিপত্র:

Roomba Explorer: 4 টি ধাপ
Roomba Explorer: 4 টি ধাপ

ভিডিও: Roomba Explorer: 4 টি ধাপ

ভিডিও: Roomba Explorer: 4 টি ধাপ
ভিডিও: Basic Computer Course For Beginners in Bangla Tutorial 2021 | Basic Computer Full Course | Part- 4 2024, জুলাই
Anonim
রুমবা এক্সপ্লোরার
রুমবা এক্সপ্লোরার

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

যন্ত্রাংশ এবং উপকরণ

এই প্রকল্পের জন্য, আপনার প্রয়োজন হবে

-একটি কম্পিউটার

MATLAB এর নতুন সংস্করণ (MATLAB R2018b এই প্রকল্পের জন্য ব্যবহৃত হয়েছিল)

- রুমবাইনস্টল টুলবক্স

-iRobot এর Create2 রোবট

ক্যামেরা সহ রাস্পবেরি পাই

ধাপ 1: সূচনা এবং সেন্সর

সূচনা এবং সেন্সর
সূচনা এবং সেন্সর

কোন প্রোগ্রামিং শুরু করার আগে, আমরা রুমবাইনস্টল টুলবক্স ডাউনলোড করেছিলাম, যা রোবটের বিভিন্ন অংশে প্রবেশের অনুমতি দেয়।

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

নীচের কোডটি (MATLAB R2018b থেকে)

%% আরম্ভ

dlgPrompts = {'Roomba Number'};

dlgTitle = 'আপনার রুমবা নির্বাচন করুন';

dlgDefaults = {''};

opts. Resize = 'on';

dlgout = inputdlg (dlgPrompts, dlgTitle, 1, dlgDefaults, opts) % উইন্ডো তৈরি করুন যা ব্যবহারকারীকে তাদের রুমবা নম্বর ইনপুট করতে অনুরোধ করে

n = str2double (dlgout {1});

r = রুমবা (n); % ব্যবহারকারী নির্দিষ্ট রুম্বা সূচনা করে %% লাইট বাম্প সেন্সর থেকে গতি নির্ধারণ যখন সত্য s = r.getLightBumpers; % হালকা বাম্প সেন্সর পান

lbumpout_1 = extractfield (গুলি, 'বাম'); % সেন্সরের সংখ্যাসূচক মান নেয় এবং সেগুলিকে আরও ব্যবহারযোগ্য করে তোলে lbumpout_2 = extractfield (s, 'leftFront');

lbumpout_3 = extractfield (গুলি, 'leftCenter');

lbumpout_4 = extractfield (গুলি, 'rightCenter');

lbumpout_5 = extractfield (গুলি, 'rightFront');

lbumpout_6 = extractfield (গুলি, 'ডান');

lbout = [lbumpout_1, lbumpout_2, lbumpout_3, lbumpout_4, lbumpout_5, lbumpout_6] % মানকে ম্যাট্রিক্সে রূপান্তরিত করে

sLbump = সাজান (lbout); %সর্বনিম্ন মান থেকে ম্যাট্রিক্স বের করা যায়

lowLbump = sLbump (1); গতি =.05+(lowLbump)*।

r.setDriveVelocity (গতি, গতি)

শেষ

% শারীরিক বাম্পার

b = r.getBumpers; %আউটপুট সত্য, মিথ্যা

bsen_1 = extractfield (b, 'left')

bsen_2 = extractfield (b, 'right')

bsen_3 = extractfield (b, 'front')

bsen_4 = extractfield (b, 'leftWheelDrop')

bsen_5 = extractfield (b, 'rightWheelDrop')

বাধা = [bsen_1, bsen_2, bsen_3, bsen_4, bsen_5] tbump = sum (bums)

যদি tbump> 0 r.setDriveVelocity (0, 0)

শেষ

% ক্লিফ সেন্সর

c = r.getCliffSensors %% 2800 নিরাপদ, অন্যথায় জল

csen_1 = extractfield (c, 'left')

csen_2 = extractfield (c, 'right')

csen_3 = extractfield (c, 'leftFront')

csen_4 = extractfield (c, 'rightFront')

ক্লিফ = [csen_1, csen_2, csen_3, csen_4]

ordcliff = সাজান (cliffs)

যদি ordcliff (1) <2750

r.setDriveVelocity (0, 0)

যদি ক্লিফ <800

ডিপ 'ক্লিফ'

অন্য

ডিসপ 'জল'

শেষ

r. TurnAngle (45)

শেষ

ধাপ 2: ডেটা পাওয়া

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

img = r.getImage; imshow (img);

imwrite (img, 'imgfromcamera.jpg')

ছবি = imread ('imgfromcamera.jpg')

ocrResults = ocr (ছবি)

স্বীকৃত পাঠ = ocrResults. Text;

চিত্র;

ইমশো (ছবি) পাঠ্য (220, 0, স্বীকৃত পাঠ্য, 'ব্যাকগ্রাউন্ড কালার', [1 1 1]);

ধাপ 3: মিশন শেষ করা

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

% ই-মেইল পাঠানো হচ্ছে

setpref ('ইন্টারনেট', 'SMTP_Server', 'smtp.gmail.com');

setpref ('ইন্টারনেট', 'E_mail', '[email protected]'); setpref ('ইন্টারনেট', 'SMTP_Username', 'প্রেরক ইমেল লিখুন') থেকে পাঠানোর জন্য % মেল অ্যাকাউন্ট; % প্রেরকদের ব্যবহারকারীর নাম setpref ('ইন্টারনেট', 'SMTP_Password', 'প্রেরকের পাসওয়ার্ড লিখুন'); % প্রেরকদের পাসওয়ার্ড

প্রপস = java.lang. System.getProperties; props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');

পাঠান

রোবটটির কাজ শেষ।

ধাপ 4: উপসংহার

উপসংহার
উপসংহার

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

*রিমাইন্ডার: ভুলে যাবেন না যে রুমবাইনস্টল টুলবক্সটি ম্যাটল্যাবকে রোবট এবং বোর্ডে রাস্পবেরি পাই এর সাথে যোগাযোগ করার জন্য প্রয়োজন।

প্রস্তাবিত: