Агуулгын хүснэгт:
Видео: Марс Roomba төсөл UTK: 4 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:03
ХАРИУЦЛАГА: ӨӨРӨМБИЙГ АЖЛААР СУУГСАН БОЛ ЭНЭ ЗӨВХӨН АЖИЛЛАХ болно.
МАШ ӨӨРӨӨ АРГА ХЭМЖЭЭГЭЭР ЭНЭ АРГА ХЭМЖЭЭГ ТЕННИСИЙН ОЮУТАН, ФАКУЛЬТИЙН ИХ СУРГУУЛИЙН ЗОРИУЛСАН БА АШИГЛАХ ЗОРИЛГОТОЙ.
Энэ кодыг MATLAB дээр орон нутгийн бичсэн, хадгалсан кодыг ажиллуулахын тулд Roomba -ийг тохируулахад ашигладаг. Хэрэв та Теннесси их сургуулийн вэбсайтаас шаардлагатай номын санг авах боломжгүй бол энэ нь ажиллахгүй болно. Хэрэв танд номын сан байгаа бол та номын сангийн функцийг ашиглан өөрийн Roomba програмыг ашиглах боломжтой болно. Энэхүү заавар нь номын санг хэрхэн суулгах, бүх кодын хавтас үүсгэх, доор өгсөн програмыг хэрхэн кодлох, ашиглахыг танд заадаг.
Шаардлагатай материал:
· Roomba
· MATLAB
· Raspberry Pi ба Pi камер
Алхам 1: Номын сан авах
Инженерийн вэбсайт дээр багажны хайрцаг/номын сан байгаа бөгөөд үүнийг татаж аваад шинэ хавтсанд байрлуулна уу. Энэ фолдер нь төслийн ажлын бүх файлыг агуулсан байх ёстой, учир нь таны хийсэн програмд ашиглагдах аливаа функц нь номын санд хандах шаардлагатай болно. Үүнийг хийсний дараа та програм дээрээ ажиллаж эхлэх боломжтой
Алхам 2: Програм бичих
Хөтөлбөрт ашиглаж болох цөөн хэдэн функц байдаг бөгөөд эдгээр функцэд "doc roomba" командыг ашиглан хандах боломжтой. Эдгээр функцийг ашигласнаар та Roomba -г янз бүрийн аргаар удирдах боломжтой. Доорх код нь овойлт мэдрэгч, гэрлийн бар мэдрэгч, камер, хадан мэдрэгчийг ашиглан марс ровер бүтээхэд янз бүрийн аргаар ашигладаг. Бид овойлтын мэдрэгчийг ашиглан Roomba объект руу цохих үед, робот буцааж, эргэж, үргэлжлүүлэн хөдлөх болно. Roomba нь объект руу цохиулахаас өмнө гэрлийн бар нь объектыг илрүүлж, Roomba -г удаашруулдаг тул цохих мэдрэгчийг идэвхжүүлэхийн тулд объект руу цохих үед Roomba цохилтонд бага өртөх/өртөх болно. Камер гадаргуу дээр ус эсвэл лаав хайж байна, хэрэв шингэн байхгүй бол робот үргэлжлүүлэн хайна, хэрэв ус олдвол робот операторуудад мэдэгдэнэ. Хадны мэдрэгч нь робот хадан цохионд ойртох үед түүнийг зогсоох зориулалттай. Хэрэв робот хадан цохио мэдэрч байвал унахаас зайлсхийхийн тулд ухарч эргэх болно.
Алхам 3: Код
Үүнийг хуулж аваад номын сангуудтай нэг хавтсанд байрладаг MATLAB файлд буулгана уу
functionMainRoombaFile (r)
r.setDriveVelocity (0.1, 0.1)
while true % кодыг ажиллуулахын тулд Infinte while loop
dontFall = cliffCheck (r) % 'dontFall' хувьсагчийг 'cliffCheck' функцид оноож өгдөг
if dontFall % if мэдэгдэл нь 'cliffCheck' дууссаны дараа кодоор үргэлжлэх болно
r.setDriveVelocity (0.1, 0.1) % нь "cliffCheck" дууссаны дараа Roomba -г хөдөлгөдөг.
end % төгсгөл нь 'dontFall' if мэдэгдэл дуусна
bumper = bumpcheck (r) % 'bumper' хувьсагчийг 'bumpcheck' функцид оноож өгдөг
if bumper % if 'bumpcheck' дууссаны дараа кодоор үргэлжлүүлэх мэдэгдэл
r.setDriveVelocity (0.1, 0.1) % 'Bumpcheck' дууссаны дараа Roomba -г хөдөлгөдөг.
end % if if 'bumper' төгсгөлтэй болно
LiquidCheck (r) % 'LiquidCheck' функцэд 'шингэн' хувьсагчийг өгдөг.
if likids % if 'LiquidCheck' дууссаны дараа кодыг үргэлжлүүлэх болно
r.setDriveVelocity (0.1, 0.1) % 'LiquidCheck' дууссаны дараа Roomba -г хөдөлгөдөг.
end % if 'илэрхийлэлийг дуусгана
lightbumper = lightcheck (r) % 'lightbamper' хувьсагчийг 'lightcheck' функцид оноож өгдөг.
түр зогсоох (0.1) % Давталтын давталтыг давтахгүйн тулд хэсэг хугацаанд түр зогсооно
end % нь loop байхад хязгааргүй дуусна
end % төгсгөлийн функц
функц bumper = bumpcheck (r) % 'bumpcheck' функцийг үүсгэнэ
bumpdata = r.getBumpers % Бамбайнаас бүх өгөгдлийг 'bumpdata' хувьсагч руу оноож өгдөг
bamper = bumpdata.right || bumpdata.зүүн || bumpdata.front % Төрөл бүрийн бамперт хадгалагдсан 'bumper' гэсэн хувьсагч үүсгэнэ
if bumpdata.right> 0 % Бампер нь цохигдсон тохиолдолд Roomba -ийн өөр өөр функцүүдийг үүсгэх мэдэгдэл
r.stop % Roomba -г зогсооно
r.moveDistance (-0.3, 0.2) % Roomba 0.3m-ийг буцаана
r.turnAngle (90, 0.5) % Roomba -г аль болох хурдан 90 градус эргүүлнэ
Төгсгөл
хэрэв bumpdata.front> 0
r. зогсоох
r.moveDistance (-0.3, 0.2)
r.turnAngle (randi (270), 0.5) % Roomba -г санамсаргүй байдлаар 0 -ээс 270 градусын хооронд эргүүлнэ.
Төгсгөл
хэрэв bumpdata.left> 0
r. зогсоох
r.moveDistance (-0.3, 0.2)
r.turnAngle (-90, 0.5) % Roomba -90 градусыг аль болох хурдан эргүүлнэ
Төгсгөл
Төгсгөл
lightbumper = lightcheck (r) % 'lightcheck' функцийг үүсгэнэ
lightdata = r.getLightBampers % Гэрлийн цохилт мэдрэгчийн бүх өгөгдлийг 'lightdata' хувьсагч руу оноож өгдөг.
lightbamper = lightdata.left || lightdata.зөв || lightdata.rightCenter || lightdata.leftCenter % Өөр өөр гэрлийн бамперт зориулж 'lightbumper' гэсэн хадгалагдсан хувьсагч үүсгэнэ.
if lightbumper % If the statement to call the lightbamper data from above
if lightdata.left> 10 % Хэрэв гэрлийн бампер 10 -аас дээш утгыг мэдэрч байвал Roomba -ийн өөр өөр функцуудыг гүйцэтгэх шалтгаан болно.
r.setDriveVelocity (0.05, 0.05) % Бөөндөхөд бэлтгэхийн тулд өрөөний хурдыг удаашруулдаг.
end % if if гэсэн эхний үгийг төгсгөдөг
хэрэв lightdata.rightCenter> 10
r.setDriveVelocity (0.05, 0.05)
Төгсгөл
хэрэв lightdata.right> 10
r.setDriveVelocity (0.05, 0.05)
Төгсгөл
хэрэв lightdata.leftCenter> 10
r.setDriveVelocity (0.05, 0.05)
Төгсгөл
end % if if 'lightbumper' -ийг төгсгөдөг
end %нь lightcheck функцийг дуусгадаг
dontFall = cliffCheck (r) % функц 'cliffCheck' функцийг бий болгодог
өгөгдөл = r.getCliffSensors; % Цохио мэдрэгчийн бүх өгөгдлийг хувьсах өгөгдөлд оноож өгдөг.
dontFall = өгөгдөл.зүүн <1020 || data.leftFront <1020 || data.rightFront <1020 || data.right <1020 % Хадны янз бүрийн мэдрэгчийн хувьд 'dontFall' хадгалагдсан хувьсагчийг үүсгэнэ.
if dontFall % If мэдэгдэл нь дээрээс авирах мэдрэгчийн өгөгдлийг дуудах болно
if data.left <1010 % Хадны мэдрэгч нь 1010 -аас бага утгыг мэдэрч байвал Roomba -ийн өөр өөр функцуудыг гүйцэтгэх мэдэгдэл
r. зогсоох
r.moveDistance (-0.2, 0.2) % Roomba 0.2m-ийг буцаана
r.turnAngle (-90, 0.5) % Roomba -90 градусыг аль болох хурдан эргүүлнэ
elseif data.leftFront <1010
r. зогсоох
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Roomba -г аль болох хурдан 90 градус эргүүлнэ
elseif data.rightFront <1010
r. зогсоох
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Roomba -г аль болох хурдан 90 градус эргүүлнэ
өөр өгөгдөл.баруун <1010
r. зогсоох
r.moveDistance (-0.3, 0.2)
r.turnAngle (90, 0.5) % Roomba -г аль болох хурдан 90 градус эргүүлнэ
Төгсгөл
Төгсгөл
Төгсгөл
шингэн шингэн = LiquidCheck (r) % 'LiquidCheck' функцийг бий болгодог
үнэн %нь шалгалт тохируулга хийх хязгааргүй давталтыг эхлүүлдэг
img = r.getImage; % нь роботыг унтраасан байна
image (img) % нь зургийг цонхонд харуулна
red_mean = дундаж (дундаж (img (200, 150, 1)))% нь улаан пикселийн дундаж хэмжээг уншдаг
blue_mean = дундаж (дундаж (img (200, 150, 3))))% нь цэнхэр пикселийн дундаж хэмжээг уншдаг
шингэн = red_mean || blue_mean % Төрөл бүрийн өнгөний хувьсагчдад зориулж 'шингэн' гэсэн хадгалагдсан хувьсагч үүсгэнэ
if шингэн байвал If image бол дээрээс өгөгдлийг дуудах
if red_mean> 170 % Камер нь 170 -аас дээш дундаж улаан өнгийг олж харвал Roomba -ийн өөр өөр функцүүдийг гүйцэтгэх шалтгаан болно.
r.stop % нь roomba -г зогсооно
r.setLEDCenterColor (255) % нь тойргийг улаан болгож тохируулна
r.setLEDDigits (); % дэлгэцийг цэвэрлэнэ
f = хүлээх мөр (0, '*ОРУУЛАХ Мессеж*'); % нь ачаалах зурвасыг хүлээх мөрийг үүсгэдэг
r.setLEDDigits ('HOT'); % нь LED дэлгэцийг 'HOT' гаралтанд тохируулдаг.
түр зогсоох (0.5) %Богино хугацаанд түр завсарлаж мэдээлэл алдагдсан байна
r.setLEDDigits ('LAVA'); % нь LED дэлгэцийг 'LAVA' гаралтанд тохируулдаг.
түр зогсоох (0.5)
хүлээх самбар (.33, f, '*ОРУУЛАХ Мессеж*'); %нь хүлээлтийн самбарын өсөлтийг бий болгодог
r.setLEDDigits ('HOT');
түр зогсоох (0.5)
r.setLEDDigits ('LAVA');
түр зогсоох (0.5)
хүлээх мөр (.67, f, '*ОРУУЛАХ Мессеж*'); % нь хүлээлтийн самбарын өсөлтийг бий болгодог
r.setLEDDigits ('HOT');
түр зогсоох (0.5)
r.setLEDDigits ('LAVA');
хүлээх мөр (1, f, '*ОРУУЛАХ Мессеж*'); %нь хүлээх мөрийг бөглөнө
түр зогсоох (1)
close (f) %нь хүлээлгийн мөрийг хаадаг
r.setLEDDigits (); % нь LED дэлгэцийг цэвэрлэнэ
бүгдийг хаах %Өмнөх бүх цонхыг хаадаг
axes ('Color', 'none', 'XColor', 'none', 'YColor', 'none') % тэнхлэг ба диаграмын схемийн цонхыг цэвэрлэнэ
y = 0.5; % нь зургийн цонхонд байгаа текстийн y-байрлалыг тохируулна
x = 0.06; % нь зургийн цонхонд текстийн x-байрлалыг тохируулна
гарчиг ('FROM MARS ROOMBA', 'fontsize', 32) % Зургийн цонхонд гарчиг нэмнэ
quadeqtxt = 'АЮУЛТАЙ ЛАВА'; % 'Quadeqtxt' хувьсагчийг 0 гаралт болгож тохируулна
текст (x, y, quadeqtxt, 'тайлбарлагч', 'латекс', 'фонт хэмжээ', 36); % нь график цонхонд quadeq текстийг харуулдаг
r.moveDistance (-0.2, 0.2) %нь өрөөг 0.2м эргүүлнэ
r.turnAngle (180, 0.5) %нь өрөөний өрөөг аль болох хурдан 180 градус эргүүлнэ
r.setLEDCenterColor (128, 128); % нь roomba center LED -ийг улбар шар болгож тохируулна
%бүгдийг хаах нь үлдсэн нээлттэй цонхыг хаадаг
elseif blue_mean> 175 % Хэрэв камер 175 -аас дээш дундаж цэнхэр өнгийг олж харвал Roomba -ийн өөр өөр функцуудыг үүсгэх мэдэгдэл гарах болно.
r.stop % нь roomba -г зогсооно
r.setLEDCenterColor (255) % нь тойргийг улаан болгож тохируулна
r.setLEDDigits (); % дэлгэцийг цэвэрлэнэ
f = хүлээх мөр (0, '*ОРУУЛАХ Мессеж*'); % нь ачаалах зурвасыг хүлээх мөрийг үүсгэдэг
r.setLEDDigits ('LOOK'); % нь LED дэлгэцийг 'LOOK' гаралтанд тохируулна.
түр зогсоох (0.5) %Товч завсарлага авсан мэдээллийг уншихын тулд түр зогсоох
r.setLEDDigits ('WATR'); % нь LED дэлгэцийг 'WATR' гаралтанд тохируулдаг.
түр зогсоох (0.5)
хүлээх самбар (.33, f, '*ОРУУЛАХ Мессеж*'); %нь хүлээлтийн самбарын өсөлтийг бий болгодог
r.setLEDDigits ('LOOK');
түр зогсоох (0.5)
r.setLEDDigits ('WATR');
түр зогсоох (0.5)
хүлээх мөр (.67, f, '*ОРУУЛАХ Мессеж*'); % нь хүлээлтийн самбарын өсөлтийг бий болгодог
r.setLEDDigits ('LOOK');
түр зогсоох (0.5)
r.setLEDDigits ('WATR');
хүлээх самбар (1, f, '*ОРУУЛАХ Мессеж*'); %нь хүлээх мөрийг бөглөнө
түр зогсоох (1)
close (f) %нь хүлээлгийн мөрийг хаадаг
r.setLEDDigits (); % нь LED дэлгэцийг цэвэрлэнэ
бүгдийг хаах %Өмнөх бүх цонхыг хаадаг
axes ('Color', 'none', 'XColor', 'none', 'YColor', 'none') % тэнхлэг ба диаграмын схемийн цонхыг цэвэрлэнэ
y = 0.5; % нь зургийн цонхонд байгаа текстийн y-байрлалыг тохируулна
x = 0.06; % нь зургийн цонхонд текстийн x-байрлалыг тохируулна
гарчиг ('FROM MARS ROOMBA', 'fontsize', 32) % Зургийн цонхонд гарчиг нэмнэ
quadeqtxt = 'УСЫГ ОЛСОН'; % 'Quadeqtxt' хувьсагчийг 0 гаралт болгож тохируулна
текст (x, y, quadeqtxt, 'тайлбарлагч', 'латекс', 'фонт хэмжээ', 36); % нь график цонхонд quadeq текстийг харуулдаг
r.moveDistance (-0.2, 0.2) %нь өрөөг 0.2м эргүүлнэ
r.turnAngle (180, 0.5) %нь өрөөний өрөөг аль болох хурдан 180 градус эргүүлнэ
r.setLEDCenterColor (128, 128); % нь roomba төвийн LED -ийг улбар шар болгож тохируулна
%бүгдийг хаах нь үлдсэн нээлттэй цонхыг хаадаг
end %if if 'red_mean' if -г төгсгөдөг
end %if 'илэрхийлэл "шингэн" -ийг төгсгөдөг
end % нь loop байхад хязгааргүй хаадаг
end % төгсгөлүүд нь 'LiquidCheck' функцийг гүйцэтгэдэг.
Алхам 4: Кодыг ажиллуулах
Кодыг MATLAB руу хуулж, буулгасны дараа та Roomba -тай холбогдох ёстой. Roomba холбогдсоны дараа r хувьсагчийг нэрлэх ёстой. Функцууд нь Roomba -ийг дурдахдаа r хувьсагчийг ашигладаг тул Roomba -г r хувьсагч гэж тодорхойлох ёстой. Кодыг ажиллуулсны дараа Roomba зааврын дагуу ажиллах ёстой.
Зөвлөмж болгож буй:
Робот төсөл UTK 2017: 3 алхам
Роботын төсөл UTK 2017: Эрхэм зорилго: Манай инженерүүдийн баг нээлттэй эх сурвалжтай технологийг хөгжүүлэх ашгийн бус байгууллага болох Froogle-ээс хөлсөлж, Хүний туслалцаа үзүүлэх Mars Rover-ийг зохион бүтээжээ. Энэ бол бидний цуврал нэвтрүүлэг хийхийн тулд кодчилсон өрөө юм
Raspberry Pi - Автономит Марс Ровер нь OpenCV объектын хяналт: 7 алхам (зурагтай)
Raspberry Pi - Автономит Марс Ровер нь OpenCV объектыг хянах боломжтой: Raspberry Pi 3, CV -ийг нээлттэй таних, хэт авианы мэдрэгч, тогтмол гүйдлийн хөдөлгүүрээр ажилладаг. Энэхүү ровер нь бэлтгэгдсэн аливаа объектоо хянаж, ямар ч газар хөдлөх боломжтой
Марс Roomba: 6 алхам
Mars Roomba: Энэхүү зааварчилгаа нь Raspberry Pi -ийн хяналттай Roomba вакуум ботыг ажиллуулах зааварчилгаа өгөх болно. Бидний ашиглах үйлдлийн систем бол MATLAB юм
Эхлэгчдэд зориулсан Arduino -ийн 10 үндсэн төсөл! Нэг самбараар хамгийн багадаа 15 төсөл хий !: 6 алхам
Эхлэгчдэд зориулсан Arduino -ийн 10 үндсэн төсөл! Хамгийн багадаа 15 төслийг нэг самбараар хий !: Arduino Project & Хичээлийн зөвлөл; Arduino -ийн үндсэн 10 төслийг багтаасан болно. Бүх эх код, Gerber файл болон бусад. SMD байхгүй байна! Хүн бүрт хялбар гагнах. Зөөврийн болон сольж болох хялбар бүрэлдэхүүн хэсгүүд. Та хамгийн багадаа 15 төсөл хийх боломжтой
USB -ээр ажилладаг шарагч! Энэхүү төсөл нь хуванцар / мод / цаасаар шатаж болно (хөгжилтэй төсөл нь маш нарийн мод байх ёстой): 3 алхам
USB -ээр ажилладаг шарагч! Энэ төсөл нь хуванцар / мод / цаасаар шатаж болно (хөгжилтэй төсөл нь маш нарийн мод байх ёстой): ЭНЭ USB ашиглан бүү хий !!!! Энэ нь бүх сэтгэгдлээс таны компьютерийг гэмтээж болохыг олж мэдсэн. миний компьютер сайн байна 600ma 5V утасны цэнэглэгч ашиглана уу. Би үүнийг ашигласан бөгөөд энэ нь сайн ажилладаг бөгөөд хэрэв та цахилгаан тэжээлийг зогсоохын тулд хамгаалалтын залгуур ашиглавал юу ч гэмтээхгүй