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

Roomba MATLAB төсөл: 5 алхам
Roomba MATLAB төсөл: 5 алхам

Видео: Roomba MATLAB төсөл: 5 алхам

Видео: Roomba MATLAB төсөл: 5 алхам
Видео: Roomba Control (ROS & MATLAB) 2024, Арваннэгдүгээр
Anonim
Roomba MATLAB төсөл
Roomba MATLAB төсөл

НАСА -гийн Ангараг гараг дээр явуулдаг одоогийн төлөвлөгөө бол энэ нь өгөгдөл цуглуулж, Ангарагийг тойрон тэнүүчилж, хөрсний дээжийг цуглуулж, дэлхий рүү буцааж авчрах бөгөөд ингэснээр эрдэмтэд манай гариг дээр урьд өмнө ямар нэгэн амьтан байсан эсэхийг олж мэдэх боломжтой юм. Нэмж дурдахад ровер нь эрдэмтэд рүү зураг илгээдэг бөгөөд ингэснээр тэд жолоодлогыг удирдан чиглүүлж, тулгарч буй аливаа асуудлыг шийдвэрлэхэд тусалдаг.

Манай группийн санаачилсан төсөл бол энэхүү ровер нь 2020 онд дэлхийг орхих НАСА -гийн жолоодлоготой ижил зүйлийг хийх боловч газрынхаа газарзүйн зураглалыг гаргах явдал юм. Roomba нь хадан цохио мэдэрч, унахаасаа өмнө өөрийгөө зогсоож, дараа нь ухрах, гэмтээхгүйн тулд ухрах, эргүүлэх, чиглэлээ өөрчлөх боломжтой болно. Бидний төсөлд нэгтгэсэн бидний өөр нэг санаа бол Roomba нь өөрийн үзэж буй газруудыг төлөвлөх, тойрог дуусах, гүйлт эхлэх бүрт талбайг харуулах явдал юм.

Энэхүү заавар нь roomba -ийнхаа ижил төрлийн код үүсгэхийг хүссэн хэн бүхэнд зориулагдсан болно.

Алхам 1: Алхам 1: Шаардлагатай материал

Алхам 1: Шаардлагатай материал
Алхам 1: Шаардлагатай материал
Алхам 1: Шаардлагатай материал
Алхам 1: Шаардлагатай материал

Танд хэрэгтэй болно:

  1. Өрөөний баавгай
  2. МАТЛАБ
  3. Энэ файл нь roomba ажиллуулах болно
  4. Хавтгай гадаргуутай
  5. "Хадан цохио" болж ажиллах ширээний гадаргуу

Алхам 2: Алхам 2: Roomba код тохируулах/авах

Алхам 2: Roomba код тохируулах/авах
Алхам 2: Roomba код тохируулах/авах

Файлуудыг оруулсны дараа таны дэлгэц иймэрхүү харагдах болно.

Алхам 3: Алхам 3: Клифф мэдрэгч/LED гэрлийг тохируулах

Энэ код нь танай өрөөний өрөөнд яг ямар өнцгөөр эргэхийг хэлж, батерейны мэдээллийг шалгаж, өрөө тасалгаандаа хэр хурдан явах, мөн камерын камераар дамжуулан хүн байгаа эсэхийг шалгах болно. Хэрэв энэ нь хүнийг таних юм бол хадан дээрээс гарахаасаа өмнө зогсох болно.

% оролдож үзээрэй rob.setLEDDigits ('') x = 0; y = 0; тета = 0; саад = ; мөчлөг = 1; AngCorr = @(x) x + 3.059.*X.^0.4205; Rob.getBatteryInfo.percent> 15 rob.setLEDDigits (') rob.setDriveVelocity (0.1) %Go %AA_checkperson (rob) rob.beep end %AA_cliffcheck бол Cliff Sensor -ийг шалгана уу.) rob.stop rob.setLEDDigits ('Cliff') түр зогсоох (0.5) саад (мөчлөг) = 2; AA_cliffbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) төгсгөл

Алхам 4: Алхам 4: Саадыг шалгах

Энэ код нь өрөөний эргэн тойронд байгаа зүйлсийг шалгах боломжтой бөгөөд овойлт мэдрэгчийг өөрөө гэмтэхээс өмнө зогсох эсэхийг шалгана.

%AA_lightcheck (rob) rob.stop rob.setLEDDigits ('Wall') түр зогсоох (0.5) саад (мөчлөг) = 1 байвал Гэрлийн мэдрэгчийг шалгана уу; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %AA_bumpcheck (rob) rob.stop rob.setLEDDigits ('Wall') түр зогсоовол (0.5) саад бэрхшээл (мөчлөг) = 1; %Wall AA_wallbeep (rob) %Back Up And Turn rob.moveDistance (-. 15) rob.turnAngle (30) end %Хэрэв байхгүй бол саад бэрхшээл (мөчлөг) = 0; elseif урт (саад) <мөчлөгийн саад (мөчлөг) = 0; Төгсгөл

Алхам 5: Алхам 5: Зураг зурах

Алхам 5: Зураг зурах
Алхам 5: Зураг зурах

Энэхүү код нь танай өрөөний аяллыг аян замд нь тааралдсан зүйлээ төлөвлөхийг танд хэлэх болно. Roomba зогссоны дараа иймэрхүү зураглал гарч ирнэ.

%Байрлал авах d = rob.getDistance; хэрэв мөчлөг == 1 тета (мөчлөг) = 0; x (мөчлөг) = d.*cosd (тета (мөчлөг)); x y (мөчлөг) = d.*sind (тета (мөчлөг)); y нийт аялсан % нийт зай өөр teta (мөчлөг) = тета (мөчлөг-1) + rob.getAngle; x (мөчлөг) = d.*cosd (тета (мөчлөг)) + x (мөчлөг-1); x нийт аяллын % д (мөчлөг) = d.*sind (тета (мөчлөг)).*d + y (мөчлөг-1); %нийт аяллын төгсгөл y % %rob.getButtons.clean break end %Break нөхцөл %Өсөн нэмэгдэж буй мөчлөгийн мөчлөг = мөчлөг + 1; дуусгах rob.stop for i = 1: саад бол мөчлөг (i) == 1 %Ханын зураг (x (i), y (i), 'Marker', 'square', 'MarkerEdgeColor', 'r') өөр саад байвал (i) == 2 %Cliff plot (x (i), y (i), 'Marker', 'o', 'MarkerEdgeColor', 'k') төгсгөлийн текст (.9, 0.9, sprintf ('Square = Wall) nCircle = Cliff '),' Units ',' Normalized ') % Distress Signal -ийг барьж байх үед жинхэнэ rob.beep түр зогсоох (3) rob.getButtons. цэвэр завсарлах төгсгөл % барих % rob.stop % төгсгөл

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