Mündəricat:

Roomba Scout Explorer: 8 addım
Roomba Scout Explorer: 8 addım

Video: Roomba Scout Explorer: 8 addım

Video: Roomba Scout Explorer: 8 addım
Video: Is iRobot really superior??? #shorts #short #youtubeshorts 2024, Noyabr
Anonim
Roomba Scout Explorer
Roomba Scout Explorer

Ən çox gözlənilən və ən çox araşdırılan Amerika layihələrindən biri olan Mars gəzən layihələri, arxasındakı qırmızı planetin torpaqlarını və səthlərini araşdırmaq və şərh etmək üçün yüksək texnologiyalı muxtar sistemlərin istehsalında insan nailiyyətləri oldu. yer kürəsi. Mars missiyalarına hörmətlə bağlı daha fərdi bir layihənin bir hissəsi olaraq, məqsədimiz, müəyyən bir zaman kəsiyində avtonom hərəkət edə bilən və yaxınlıqdakı müəyyən meyarlara uyğun olaraq reaksiya verə bilən bir otaqba robotu yaratmaq idi.

Unikallığa gəldikdə, biz robotun mənşəyindən götürdüyü hər yolu göstərən bir diaqram yaratmağa diqqət etdik. Bundan əlavə, robot panoramik üslubda yaxınlıqdakı obyektlərin sayını hesablaya biləcək.

Addım 1: Avadanlıq

-Əlavə Kamera ilə Rooomba (xüsusi adı məlumdur)

-Bağlı server

-İnternet bağlantısı olan Windows 10 / Mac

-Parlaq platforma

-Qaranlıq mərtəbə

-Monoxromatik dizaynlı hər hansı bir sahibsiz obyekt

Addım 2: MATLAB Quraşdırması

MATLAB Quraşdırması
MATLAB Quraşdırması

Roomba üçün tapşırıqlar və funksiyalar yaratmaq üçün, roomba əmrlərini ehtiva edən xüsusi kodlara və alət dəstlərinə sahib olmalısınız.

MATLAB 2016a və daha sonra endirildikdə, bu robot fayllarını ehtiva edən bir qovluq yaradın və aşağıdakı MATLAB faylını qovluğa daxil edin və qalan lazımlı roomba fayllarını quraşdırmaq üçün işlədin.

Bundan sonra, Cari Qovluq pəncərəsində sağ siçan düyməsini sıxın, "Yol əlavə et" in üzərinə gedin və "Cari Qovluq" düyməsini basın. İndi, bu faylların hər biri Roomba aktivləşdirmək üçün istifadə ediləcək bir yol qurulmalıdır.

İndi Roomba qurmaq üçün komanda pəncərəsindəki aşağıdakı əmrdən istifadə edin:

r = roomba (#).

# Simvolu, göstərilən otaq nömrəsinin 'nömrəsidir'; ancaq roomba simulyatoru istəsəniz, sadəcə aşağıdakı əmri yazın:

r = roomba (0).

Hərəkət nümunələrini sınamaq üçün simulyasiya tövsiyə olunur.

Roomba'nın hansı əmrləri yerinə yetirə biləcəyini bilmək istəyirsinizsə, aşağıdakıları əmr pəncərəsinə yazın:

sənəd otağı.

Daha ətraflı məlumat üçün aşağıdakı veb saytına daxil olun:

ef.engr.utk.edu/ef230-2017-08/projects/roomba-s/setup-roomba-instructable.php

Addım 3: Funksiya: Hərəkət

Funksiya: Hərəkət
Funksiya: Hərəkət
Funksiya: Hərəkət
Funksiya: Hərəkət

Hərəkətlə əlaqədar olaraq, otaq girişləri verilən müəyyən bir müddət ərzində avtomatik olaraq hərəkət etməlidir. Robotun hərəkətinin məqsədi, sensorları (bamperlər, işıq tamponları və uçurum sensorları) müxtəlif maneələr olduqda dəyişəndə düzgün reaksiya verməkdir. Bu hissə, daha sonra koda daha çox xüsusiyyət əlavə olunduğundan, bütün roomba'nın əmrləri üçün əsas rolunu oynayacaq. Bəzi spesifikasiyalara ehtiyac var idi:

-Zərəri azaltmaq üçün robot sürəti daha aşağı sürətlə azaltmalıdır.

-Uçuruma və ya divara yaxınlaşanda, robot əks istiqamətdə hərəkət edəcək və təsir nöqtəsindən asılı olaraq bucağını dəyişəcək.

Bir az sürdükdən sonra, roomba nəticədə dayanacaq və ətrafdakıların şəkillərini çəkəcək

Qeyd edək ki, istifadə olunan dəyərlər simulyatorla əlaqədardır; dönmə bucaqları dönmə sürətləri və robot sensoru ön parametrləri kimi dəyərlər, avadanlıq səhvində sabitlik və mühasibatlığı təmin etmək üçün əsl robotdan istifadə edərkən dəyişdirilməlidir.

Addım 4: Function: Image Processing

Function: Image Processing
Function: Image Processing

İstəyə görə, bizə robotun kamerası tərəfindən alınan bir görüntünün (və ya bir neçə görüntünün) məlumatlarını dəyişdirmək tapşırığı verildi, buna görə otaq otağının görüntüdə gördüyü obyektlərin sayını "saymağa" qərar verdik.

MATLAB -ın ağ fonla ziddiyyət təşkil edən qaralmış cisimlərin ətrafında sərhəd çəkməsi texnikasına riayət etdik. Ancaq bu funksiya, kamera tərəfindən fərqli şəkillər və rənglər algılandığı üçün qeyri -adi yüksək saylarla nəticələndiyi üçün açıq bir sahədə çətinlik çəkməyə meyllidir.

Qeyd edək ki, kamera verilmədiyi üçün bu funksiya simulyatorda işləyə bilməz; cəhd edilsə, yalnız (:,:, 3) matrisin istifadə edilə biləcəyini bildirən bir səhv meydana gələcək.

Addım 5: Funksiya: Xəritəçəkmə

Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə
Funksiya: Xəritəçəkmə

Robotun olmasını istədiyimiz bir əlavə xüsusiyyət, ətraf mühitlə birbaşa qarşılıqlı əlaqədə olduğu üçün yerlərini xəritələşdirmək idi. Beləliklə, aşağıdakı kod bir xəritəni açmaq və robotun tampon sensorlarının basıldığı hər yeri ətraflı şəkildə göstərən bir koordinat sistemi qurmağa çalışır. Bu, üç hissədən ayrı -ayrılıqda sınanacaq ən uzun hissə olduğunu sübut etdi, lakin son skriptə tətbiq edildikdə daha asan oldu.

Funksiyanın işləmə müddətinə bir məhdudiyyət əlavə etmək üçün while döngəsindəki n <20 limiti test məqsədləri üçün istifadə edilmişdir.

Kodun mürəkkəbliyi səbəbindən kod seqmenti uzun müddət işlədikdə daha çox səhvlərin meydana çıxdığını unutmayın; əvvəlki testlərdən on çarpma, əhəmiyyətli səhvlər meydana gəlməzdən əvvəl bal sayı kimi görünür.

Addım 6: Qarşılaşma

Qarşılaşma
Qarşılaşma
Qarşılaşma
Qarşılaşma
Qarşılaşma
Qarşılaşma
Qarşılaşma
Qarşılaşma

Bütün bunlar tək bir faylda yerləşdiriləcəyi üçün əvvəlki iki addımın hər birini alt funksiyaları olaraq istifadə edərək bir funksiya yaratdıq. "Yeniləmə" adlı redux funksiyasına aşağıdakı dəyişikliklə son bir qaralama edildi. MATLAB -da qarışıqlıq yaratmamaq üçün "sayğac" və "rombplot3" skriptləri sırasıyla əlaqədar "CountR" və "plotr" funksiyaları olaraq dəyişdirildi.

Əvvəlki skriptlərdən fərqli olaraq son versiyada bir neçə dəyişiklik edilməli idi:

-Mənşə həmişə qırmızı dairə ilə işarələnəcək

-Roomba tamponlarından hər dəfə dayananda yeri qara dairə ilə işarələnir

-Roomba uçurum sensörlərindən hər dəfə dayananda, yeri mavi bir dairə ilə işarələnir

-Roomba ərazini araşdırmağı dayandırdıqda, yer yaşıl bir dairə ilə işarələnir

-Şəkillər, nəticələrə müdaxilə etmək üçün vaxt möhürü səbəbiylə üst hissənin çıxarılması üçün dəyişdirilir

Sərhədlər, əldə edilən çox sayda rəqəm səbəbiylə bir obyekt olaraq sayılmayacaq

-Bir neçə dəyişən dəyişdirildi, buna görə də qarışıqlığın qarşısını almaq üçün yuxarıdakı versiyaları istinad üçün istifadə edin.

Addım 7: Test

Test
Test

Hər bir fərdi komponent üçün testlərin bəzən qarışıq olduğu ortaya çıxdı, bu səbəbdən müəyyən əvvəlcədən təyin edilmiş dəyərlərdə dəyişikliklər etmək lazım idi. Robotun qabiliyyətini qapalı bir sahədə sınamaq istədiyimiz tematik fon sadəcə daha qaranlıq bir zəminə qoyulmuş ağ lövhədən ibarət idi. Əşyaları ətrafa səpə bilərsiniz; Onları robotun hərəkət edən sahəsinə vurulacaq və ya uzaqdakı cisimlər kimi hərəkət etdirsin.

Tənzimlənən vaxtı və baza sürətini təyin etdikdən sonra, roomba hər bir "uçurumdan" və ya qaçdığı obyektdən uzaqlaşaraq, yaxınlıqda bir şey aşkar etdikdə yavaşlayaraq, adekvat hərəkət davranışı nümayiş etdirdi. İstədiyiniz üç metrlik məsafəyə çatdıqdan sonra, robot hər 45 dərəcə bölgənin şəkillərini çəkərək bölgəni dayandırmağa və qiymətləndirməyə davam edəcək və vaxt imkan verərsə irəliləyəcək. Bununla birlikdə, növbələr tələb olunduğundan daha böyük göründü, yəni koordinat məlumatları gizlədiləcək.

Hər dayananda koordinat sistemindəki mövqeyinin təxmini bölgəsinə yeni bir nöqtə qoyuldu; Bununla birlikdə, xəritənin dizaynında Roomba'nın başladığı ilkin istiqamətin əsas rol oynadığı qeyd olunur. Bir kompas xüsusiyyəti tətbiq oluna bilsəydi, bu, xəritə dizaynının həlledici bir hissəsi olaraq istifadə olunardı.

Funksiyanın tam işləməsi üçün lazım olan vaxt, hər zaman tələb olunan vaxtın üstünə çıxır, bu da onun bərpalarından birinin ortasında dayana bilməyəcəyini nəzərə alır. Təəssüf ki, şəkil saymanın bu versiyasının, xüsusən ya monoxromatik olan və ya parlaqlığı fərqli olan sahələrdə problemləri var; iki çalar arasında fərq qoymağa çalışdığı üçün arzu edilməyən cisimləri dərk etməyə meyllidir, buna görə də həmişə çox yüksək rəqəmlərə qədər sayılır.

Addım 8: Nəticə

Nəticə
Nəticə

Bu vəzifə rahatlıq sevinci gətirən çox sərgüzəştli və yaradıcı bir iş olsa da, şəxsi müşahidələrimə görə həm kodda, həm də robotun davranışında problemli ola biləcək çoxlu səhvlər görə bildim.

Zaman spesifikasiyasından istifadə müddətinin məhdudlaşdırılması, ümumi vaxtın istədiyindən daha uzun olmasına səbəb olur; panorama texnikası və görüntünün işlənməsi prosesi yavaş bir kompüter tərəfindən idarə olunarsa və ya əvvəlcədən istifadə edilməsə əslində daha uzun çəkə bilər. Bundan əlavə, təqdimatımızda istifadə olunan roomba, simulyatorla müqayisədə, xüsusən də hərəkətdə çox sayda səhvlə hərəkət etdi. Təəssüf ki, istifadə olunan robot düz sürərkən və istədiyindən daha böyük dönüşlər edərkən sola bir az əyilmə meylinə sahib idi. Bu səbəbdən və bir çox digərlərindən, bu səhvləri kompensasiya etmək üçün, dönmə bucaqları üçün dəyişikliklər edilməsi tövsiyə olunur.

Buna baxmayaraq, bu, həqiqi bir robotun davranışına birbaşa təsir etmək üçün kod və əmrləri tətbiq etmək üçün maraqlı bir öyrənmə təcrübəsi rolunu oynayan uzun, lakin intellektual stimullaşdırıcı bir layihədir.

Tövsiyə: