Агуулгын хүснэгт:

MATLAB -тай Roomba: 4 алхам (зурагтай)
MATLAB -тай Roomba: 4 алхам (зурагтай)

Видео: MATLAB -тай Roomba: 4 алхам (зурагтай)

Видео: MATLAB -тай Roomba: 4 алхам (зурагтай)
Видео: Electric Charges and Fields ( Gujarati Medium - Session 11 ) 2024, Арваннэгдүгээр
Anonim
MATLAB програмтай Roomba
MATLAB програмтай Roomba

Энэхүү төсөл нь MATLAB болон iRobot Create2 програмчлагдах роботыг ашигладаг. MATLAB -ийн талаархи мэдлэгээ туршиж үзээд бид Create2 програмыг ашиглан дүрсийг тайлбарлаж, дохиог илрүүлж чадна. Роботын үйл ажиллагаа нь голчлон MATLAB гар утасны програм болон Raspberry Pi камерын модулаас хамаардаг.

Алхам 1: эд анги, материал

Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги

1. iRobot Create, Хувилбар 2

- Энэ бол Roomba шиг харагддаг програмчлагдах робот юм. IRobot -ийн энэ бүтээгдэхүүн нь вакуум биш гэдгийг анхаарна уу. Энэ нь хэрэглэгчийн захиалгаар програмчлахад зориулагдсан болно.

2. MATLAB 2017a

- Ихэнх хуучин хувилбарууд нь бидний доор ашигласан кодтой нийцэж байх болно. MATLAB нь танд байгаа хувилбартай тохирохгүй командыг тодорхойлж, хамгийн сайн тохирох командыг санал болгоно.

3. Raspberry Pi 3 Model B, хувилбар 1.2

- Raspberry Pi аль нь таны iRobot -тэй нийцэж байгааг шалгаарай. Нэмэлт туслалцаа авахын тулд энэ холбоосыг үзнэ үү: https://www.irobotweb.com/~/media/MainSite/PDFs/A… Энэхүү зааварчилгаа нь таныг урьдчилан програмчилсан Raspberry Pi -тэй ажиллаж байгаа гэж үзнэ. Дараахь алхамуудыг хэрэгжүүлэхийн тулд та урьдчилан програмчилсан Пи програмтай ажиллах шаардлагатай болно гэдгийг анхаарна уу. Урьдчилан програмчилсан Pi ашигласнаар та бүх кодчилолоо зөвхөн MATLAB дээр хийх боломжтой болно.

4. Камерын модуль V2 (Raspberry Pi -ийн хувьд)

- Та гайхаж магадгүй юм; Raspberry Pi камерын модуль нь том хэмжээтэй ч гэсэн маш сайн чанартай байдаг. Энэ төслийн хувьд хамгийн хямд бөгөөд хамгийн нийцтэй сонголт юм.

Нэмэлт: 3D хэвлэсэн индэр. Энэ нь камерыг тогтворжуулахад ашиглагддаг. Энэ нь роботын үйл ажиллагаанд нөлөөлөхгүй, гэхдээ хэрэв та өнгө дүрс ба/эсвэл объект танихын тулд дүрс бичлэгийн өгөгдлийг ашиглахыг хүсвэл кодчилоход тань туслах болно.

Алхам 2: Тохиргоо

Тохиргоо
Тохиргоо
Тохиргоо
Тохиргоо

1. Raspberry Pi болон камерын модулийг холбох (Тоног төхөөрөмж)

- Raspberry Pi -ийг тэжээхийн тулд та микроконтроллер дээрх эмэгтэй тэжээлийн порт руу эрэгтэй төгсгөлтэй микро USB ажиллуулах хэрэгтэй болно. Нэмэлт: Хүчдэл 5 В -оос хэтрэхгүй байхын тулд хүчдэлийн зохицуулагчийг ашиглаж болно. Raspberry Pi -ийг асаасны дараа та үүнийг эх роботоос эрэгтэй USB USB a ажиллуулж микроконтроллер дээрх USB порт A руу холбож роботтой холбож болно.

- Pi -г Roomba -д холбосны дараа камер суурилуулахад бэлэн болно. Камерын модуль нь таны бодож байснаас хамаагүй бага байх болно. Линзийг мэдрэгч дээр суурилуулсан бөгөөд камераас цагаан тууз сунгасан болохыг анхаарна уу. Туузыг бүү салга, урж бүү таслаарай! Энэ бол Raspberry Pi -тэй холбоход танд хэрэгтэй кабель юм. Нэгдүгээрт, туузны үзүүрийг барьж, мөнгөн холбогч ба цэнхэр кабелийг олоорой. Эдгээр нь эсрэг талд байрладаг. Дараа нь Raspberry Pi дээрх Ethernet болон HDMI портуудын хоорондох үүрийг олоорой. Түүнийг жижиг цагаан цоожоор бүрхсэн болохыг анхаарна уу. Түгжээг аажмаар өргөж, гэхдээ үүрнээс нь бүү салгаарай, учир нь энэ нь эвдэрч гэмтэх болно. Түгжээг авсны дараа туузыг аваад HDMI порт руу мөнгөн холбогчтой тулгарна уу. Цэнхэр тал нь Ethernet порттой тулгарах болно. Туузыг онгойлгоогүй байхад үүр рүү аажмаар гулсуулна уу. Та үүнийг үүрэнд оруулах шаардлагагүй. Оруулсны дараа түгжээг буцааж доошлуул. Хэрэв таны камер найдвартай бэхлэгдсэн бол туузыг (зөөлөн) татаж, хурцадмал байдлыг мэдрэх ёстой. Тууз нь сул байх ёсгүй. Камераа Pi -д холбосны дараа энэ нь хэр сул байгааг анзаарч магадгүй юм. Тиймээс бид үүнийг тогтвортой байлгахын тулд 3D хэвлэсэн бэхэлгээг ашигласан. Өндөр чанартай зураг авахын тулд камераа хөдөлгөөнгүй байлгахын тулд ямар материалыг ашиглахыг хүсч байгаагаа тодорхойлох нь таны сонголт юм.

2. Зөв файлуудыг суулгаж, Roomba-г компьютерт холбох Бүх тоног төхөөрөмжөө тохируулсны дараа та одоо роботтой харилцах боломжийг олгодог холбогдох m-файлуудын хамт MATLAB-ийг суулгаж болно. Үүнийг хийхийн тулд MATLAB -ийг нээж, холбогдох бүх файлуудыг хадгалах шинэ хавтас үүсгэнэ үү. Шаардлагатай файлуудыг суулгах/шинэчлэхийн тулд энэ скриптийг ашиглана уу:

- Одоо бүх файлууд таны үүсгэсэн хавтсанд харагдах ёстой. Одоогийн хавтасны цонх дээр хулганы баруун товчийг дараад "Зам руу нэмэх" -ийг сонгоод энэ замыг MATLAB файл хайж буй директоруудын жагсаалтад нэмнэ үү. Таны бүх файл зөв зам дээр байгаа эсэхийг шалгаарай.

3. Файлуудыг суулгасны дараа та одоо роботтойгоо холбогдож эхлэх боломжтой. Роботыг асааж, асаасны дараа шууд дахин тохируулах замаар эхлүүлээрэй (ашиглахаасаа өмнө болон дараа нь роботоо дахин тохируулахаа бүү мартаарай). Хоёрдугаарт, робот болон зөөврийн компьютерээ хоёуланг нь ижил wifi сүлжээнд холбоно уу. Үүний дараа бид MATLAB -ээр урьдчилан програмчлагдсан Raspberry Pi -тэй Roomba -ийн нэр болон Roomba функцийг ашиглан утсаар ярих болно. Жишээлбэл, би дараах роботыг ашиглан робот 28 -тай холбогдох болно: R = roomba (28).

Би объектыг R хувьсагчид хэрхэн хуваарилсаныг анзаараарай. Би R хувьсагчийг бүтэц шиг авч үзэх замаар одоо холбогдох Roomba функцуудад суулгалтын файлаас хандаж болно.

- R.turnAngle (90) Хэрэв бүх зүйл сайн болсон бол хөгжмийн аялгуу тоглох ёстой бөгөөд энэ нь холболтыг баталгаажуулдаг.

Алхам 3: MATLAB логик

Энэ алхамын доод талд байгаа PDF баримт бичиг нь MATLAB дахь кодлох үйл явцын нарийвчилсан логик урсгалын диаграм юм. Бид робот ойролцоо байгаа объектыг илрүүлэх үед бидэнтэй харилцах боломжийг олгохын тулд бид хадан цохио, гэрэл, гэрэл цохилтын мэдрэгчийг идэвхжүүлсэн. Жишээлбэл, робот урагшлахад түүний гэрэл мэдрэгч нь явж буй векторын дагуу замд байгаа объектуудыг хайдаг. Бид роботын зайны босгыг сонгосон бөгөөд ингэснээр тэр объект руу ойртоход тэр түүнтэй мөргөлдөхийн оронд ухрах болно. Манай роботыг кодлох явцад тодорхойлсон Twitter -ээр тохируулсан болно (үүнийг доор харуулах болно).

Туршлага сайжруулахын тулд бид гар утсаа хазайлгах замаар роботын хөдөлгөөнийг хянах боломжтой болохын тулд гар утсан дээрээ MATLAB програмыг ашигласан болно. MATLAB кодын сегмент дэх moveDistance командыг ашиглан роботыг хөдөлгөж болно. Хэрэв таны зорилго нарийн байх юм бол роботыг удирдахын тулд MATLAB командыг ашиглах нь илүү дээр гэдгийг санаарай. Хэрэв та камерыг тодорхой байршилд зураг авахын тулд роботыг чиглүүлэхийг хүсч байвал роботын хөдөлгөөнийг MATLAB дээр кодчилсон нь дээр байх. Зугаа цэнгэлийн үеэр роботоо удирдахын тулд MATLAB програмыг ашиглах нь нарийвчлалтай байхыг хүсдэггүй.

Код нь Roomba -д үндсэн тохиргоог хийж дараа нь тасралтгүй давталтаар үргэлжлүүлэхийг тушаадаг. Эхэндээ зөөврийн компьютер нь Roomba () командыг ашиглан Roomba -тай холбоос үүсгэх болно. Энэ нь MATLAB дахь webwrite () командыг ашиглан twitter холболтыг тохируулдаг. Цогцолбор нь Roomba -гийн хүрээлэн буй орчноос хамаарч таван үндсэн логик урсгалыг агуулдаг. Эхлээд Roomba саад тотгор байгаа эсэхийг шалгаж, саад тотгор учруулсан бол ухардаг. Энэхүү гогцоонд суулгасан нь Roomba -ийг авч явах тохиолдолд хэрэглэгчдэд анхааруулах хоёр дахь зам юм. Ангараг гаригийн хатуу ширүүн бүсийн чухал хэрэгсэл. Roomba өөрийн байрлалыг аюулгүй гэж тодорхойлсны дараа дараагийн хөдөлгөөнөө тодорхойлохын тулд хөдөлгөөнт төхөөрөмж рүү харна. Хэрэв хөдөлгөөнт төхөөрөмж урагш хазайсан бол дугуйны хурдыг эргэлтийн түвшинг харгалзан эргүүлэхээс илүү өнхрөх хэмжилтийн ноцтой байдлаас хамааран үндсэн хурдыг тооцоолох болно. Утас нь Roomba -ийг урвуугаар хөдөлгөж болно. Төвийг сахисан хөдөлгөөнт төхөөрөмжийн төлөв нь эцсийн хоёр замыг нээдэг. Амрах Roomba нь харь гарагийн тугийг хайж, хэрэглэгчдэд зохих дохиог өгөх болно.

Манай код доор байна (MATLAB 2017a дээр бөглөсөн)

%оролт: Wi -Fi сүлжээнд холбогдсон төхөөрөмж, камераас авсан чиг баримжаа

%мэдээлэл, мэдрэгчийн өгөгдөл

%гаралт: хөдөлгөөнийг wifi холбогдсон төхөөрөмж болон хөдөлгөөнөөр хянадаг

% нь мэдрэгчийн өгөгдлийг унших замаар аюулгүй байдлыг шалгадаг. Хэрэв камер илрүүлбэл

% харь гаригийн далбаа, дараа нь Roomba дайсны тугийг жиргэх замаар хариулдаг

% -ийг илрүүлсэн байна.

%зорилго: манай төхөөрөмж хамгаалж байгаа хүмүүсийг хамгаалахаас өөр зорилгогүй амьдардаг

% үүнийг бүтээсэн, энэ нь бүтээгчдээ үйлчилж, хийдэг

% яг юу гэж хэлсэн.

%Хэрэглээ: үндсэндээ програм өөрөө ажиллах болно.

бүгдийг цэвэрлэх, бүгдийг хаах, clc

%Объект ба хувьсагчийг эхлүүлэх

r = Roomba (28);

м = хөдөлгөөнт төхөөрөмж;

%ашиглах хариулт = вэб бичих (хостын нэр, өгөгдөл)

хостын нэр = 'https://api.thingspeak.com/apps/thingtweet/1/statuses/update';

API = 'SGZCTNQXCWAHRCT5';

tweet = 'RoboCop бол ажиллагаатай… Тушаал хүлээж байна';

өгөгдөл = strcat ('api_key =', API, '& status =', жиргэх);

хариулт = вэб бичих (хостын нэр, өгөгдөл);

%байнга ажиллаж байгаа давталт

байхад 1 == 1

Үл хамаарах өгөгдөл агуулсан бүтэц

o = m. чиг баримжаа; Хөдөлгөөнт төхөөрөмжийн %чиглэл

гэрэл = r.getLightBampers (); %Хөнгөн бамперын утга

a = r.getCliffSensors (); %CLiff мэдрэгчийн утга

овойлт = r.getBumpers (); %Бампер мэдрэгч

%бампер шалгах

хэрэв овойлт.аруун == 1 || овойлт.зүүн == 1 || овойлт.нүүр == 1

r.moveDistance (-. 2,.2);

%гэрэл мэдрэгчийг шалгана уу

elseif гэрэл.зүүн> 60 || гэрэл.зүүнЗүүн> 60 || light.leftCenter> 60 || гэрэл.баруун> 60 || гэрэл.баруунФронт> 60 || гэрэл.баруун төв> 60

r.moveDistance (-. 2,.2);

Клифф мэдрэгчийг шалгах

%Хулгайн эсрэг дохио ба мэдэгдэл

өөр бол a.left <300 && a.right <300 && a.leftFront <300 && a.rightFront <300

r.stop ();

r. beep ();

tweet = 'RoboCop -ийг өргөж авлаа!'

өгөгдөл = strcat ('api_key =', API, '& status =', жиргэх);

хариулт = вэб бичих (хостын нэр, өгөгдөл);

%Энгийн Клиффээс зайлсхийх үйл ажиллагаа

өөрөөр a.зүүн <300 || a.баруун <300 || a.leftFront <300 || a.rightFront <300

r.moveDistance (-. 2,.2);

%Roomba шалгалтуудыг давсан бөгөөд одоо хэвийн ажиллах болно.

%Эхэндээ төхөөрөмжийн өнхрөлтийг хэмжиж, суурь болно

Дараа нь дугуйны хурдыг тооцоолоход ашигладаг %хурд

%Урагшлах хөдөлгөөн

elseif o (3)> = 0 && o (3) <= 60

baseVel = (-. 5/60)*(o (3) -60);

хэрэв o (2)> =-70 && o (2) <0

r.setDriveVelocity (baseVel+(. 3/50)*abs (o (2)), baseVel-(. 3/50)*abs (o (2)));

өөр o (2) = 0

r.setDriveVelocity (baseVel-(. 3/50)*abs (o (2)), baseVel+(. 3/50)*abs (o (2)));

өөр r.stop

Төгсгөл

%Буцах хөдөлгөөн

elseif o (3)> 100 && o (3) <150

r.setDriveVelocity (-. 2, -.2)

r. beep ();

r. beep ();

%resting roomba нь флюресцент гэж тэмдэглэгдсэн харь гарагийн тугийг хайх болно

%ногоон цаас

өөр

r. зогсоох

img = r.getImage (); %зураг авах

босго = саарал өнгө (img (200: 383,:, 2))+. 1; %ногоон кальцийн түвшин

хэрэв босго>.42

tweet = 'Дайсан толботой !!'

өгөгдөл = strcat ('api_key =', API, '& status =', жиргэх);

хариулт = вэб бичих (хостын нэр, өгөгдөл);

өөр

r. зогсоох

Төгсгөл

Төгсгөл

Төгсгөл

Алхам 4: Дүгнэлт

Та дээр бичсэн скриптийг ашиглаж болно, гэхдээ та үүнийг хэрэгцээнд нийцүүлэн өөрчлөх боломжтой гэдгийг санаарай. Үүнийг утсаараа хянах шаардлагагүй! (Гэсэн хэдий ч энэ нь илүү хөгжилтэй болгодог.) Роботыг удирдахын тулд аль аргыг ашиглахаа сонгоорой. Роботтойгоо хамт жолоодож, зугаацаарай!

Зөвлөмж болгож буй: