İçindekiler:

Roomba İzci Gezgini: 8 Adım
Roomba İzci Gezgini: 8 Adım

Video: Roomba İzci Gezgini: 8 Adım

Video: Roomba İzci Gezgini: 8 Adım
Video: Boy Scout Stem Event 2017 : Alan Timm and Thomas Messerschmidt Talk about A.I. and Robots 2024, Kasım
Anonim
Roomba İzci Gezgini
Roomba İzci Gezgini

En çok beklenen ve en çok araştırılan Amerikan projelerinden biri olan Mars gezici projeleri, yalnızca arkasındaki kızıl gezegenin kara kütlelerini ve yüzeylerini araştırmak ve yorumlamak amacıyla sürekli gelişen yüksek teknolojili otonom sistemlerin üretiminde insan başarıları haline geldi. Dünya. Mars misyonlarına saygı duruşunda bulunan daha kişisel bir projenin parçası olarak amacımız, belirli bir zaman diliminde otonom olarak hareket edebilen ve çevresinde belirli kriterlere göre tepki verebilen bir roomba robotu yaratmaktı.

Benzersizliğe gelince, robotun kökeninden aldığı her yolu gösteren bir diyagram oluşturmaya odaklandık. Ayrıca robot, çevresindeki nesnelerin sayısını panoramik bir tarzda sayabilecek.

Adım 1: Ekipman

-Roomba w/ Takılabilir Kamera (belirli adı bilinen)

-Bağlı Sunucu

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

-Parlak platform

-Karanlık zemin

-Tek renkli tasarıma sahip başıboş nesneler

Adım 2: MATLAB Kurulumu

MATLAB Kurulumu
MATLAB Kurulumu

Roomba'nız için görevler ve işlevler oluşturmak için, roomba komutlarını içeren özel kodlara ve araç setlerine sahip olmanız gerekir.

MATLAB 2016a ve sonrası indirildiğinde, bu robot dosyalarını içerecek bir klasör oluşturun ve aşağıdaki MATLAB dosyasını klasöre ekleyin ve kalan gerekli roomba dosyalarını yüklemek için çalıştırın.

Bundan sonra, Geçerli Klasör penceresine sağ tıklayın, farenizi "Bir Yol Ekle" üzerine getirin ve "Geçerli Klasör" üzerine tıklayın. Şimdi, bu dosyaların her birinin roomba'yı etkinleştirmek için kullanılacağı şekilde bir yol oluşturulmalıdır.

Şimdi, roomba'yı kurmak için komut penceresinde aşağıdaki komutu kullanın:

r=odaba(#).

# sembolü, belirtilen oda numarasının 'sayısıdır'; ancak, yalnızca roomba simülatörü istiyorsanız, aşağıdaki komutu yazmanız yeterlidir:

r=odaba(0).

Hareket modellerini test etmek için simülasyon tavsiye edilir.

Roomba'nın hangi komutları takip edebileceğini merak ediyorsanız, komut penceresine aşağıdakileri yazın:

doktor odası.

Daha fazla ayrıntı için aşağıdaki web sitesini ziyaret edin:

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

Adım 3: İşlev: Hareket

İşlev: Hareket
İşlev: Hareket
İşlev: Hareket
İşlev: Hareket

Hareketle ilgili olarak, roomba girişlerde verilen belirli bir süre boyunca otomatik olarak hareket etmelidir. Robotun hareketinin amacı, çeşitli engellerin varlığında sensörleri (tamponlar, hafif tamponlar ve uçurum sensörleri) değiştiğinde düzgün tepki vermektir. Bu kısım, daha sonra koda daha fazla özellik eklendiğinden, tüm roomba komutları için temel görevi görecektir. Bazı spesifikasyonlar gerekliydi:

- Hasarı azaltmak için robotun hızı daha düşük bir hıza düşürmesi gerekir.

-Bir uçuruma veya duvara yaklaşırken, robot ters yönde hareket edecek ve çarpma noktasına bağlı olarak açısını değiştirecektir.

-Bir süre araba kullandıktan sonra, oda sonunda duracak ve çevredeki alanın fotoğraflarını çekecektir.

Kullanılan değerlerin simülatörle ilgili olduğuna dikkat edin; dönüş açıları dönüş hızları ve robot sensör ön ayarları gibi değerler, ekipman hatası için stabilite ve muhasebe sağlamak için gerçek robot kullanılırken değiştirilmelidir.

Adım 4: İşlev: Görüntü İşleme

İşlev: Görüntü İşleme
İşlev: Görüntü İşleme

İsteğe göre, robotun kamerası tarafından alınan bir görüntünün (veya birkaç görüntünün) verilerini değiştirmekle görevlendirildik ve odayı görüntüde gördüğü nesnelerin sayısını "saymaya" karar verdik.

MATLAB'ın beyaz bir arka planla kontrast oluşturan karartılmış nesnelerin çevresine sınırlar çizmesi tekniğini izledik. Bununla birlikte, kamera tarafından algılanan farklı şekiller ve renkler nedeniyle bu işlev açık bir alanda zorluk çekmeye eğilimlidir ve bu da alışılmadık derecede yüksek sayımlara neden olur.

Bir kamera sağlanmadığından bu işlevin simülatörde çalışamayacağını unutmayın; denenirse, yalnızca bir (:,:, 3) matrisinin kullanılabileceğini bildiren bir hata oluşacaktır.

Adım 5: İşlev: Haritalama

İşlev: Haritalama
İşlev: Haritalama
İşlev: Haritalama
İşlev: Haritalama
İşlev: Haritalama
İşlev: Haritalama
İşlev: Haritalama
İşlev: Haritalama

Robotun sahip olmasını istediğimiz ek bir özellik, çevreyle doğrudan etkileşime girdiği için konumlarının haritasını çıkarmaktı. Bu nedenle, aşağıdaki kod bir harita açmayı ve robotun tampon sensörlerine basıldığı her konumu detaylandıran bir koordinat sistemi kurmayı amaçlamaktadır. Bu, ayrı ayrı test edilecek üç parçanın en uzun kısmı olduğunu kanıtladı, ancak son komut dosyasına uygulandığında çok daha basit olduğunu kanıtladı.

Fonksiyonun çalışma süresinin uzunluğuna bir limit eklemek için, test amacıyla while döngüsündeki n<20 limiti kullanıldı.

Kodun karmaşıklığı nedeniyle, kod segmenti uzun süre çalıştığında daha fazla hata oluştuğunu unutmayın; önceki testlerden, on tümsek, önemli hatalar meydana gelmeden önceki puan sayısı gibi görünmektedir.

6. Adım: Yan yana yerleştirme

yan yana
yan yana
yan yana
yan yana
yan yana
yan yana
yan yana
yan yana

Bütün bunlar tek bir dosyaya yerleştirileceğinden, önceki iki adımın her birini alt fonksiyonları olarak kullanarak bir fonksiyon yarattık. "recon" adı verilen redux işlevinde yapılan aşağıdaki değişiklikle son bir taslak yapıldı. MATLAB için karışıklığı önlemek için, "counter" ve "rombplot3" komut dosyaları sırasıyla "CountR" ve "plotr" gömülü işlevler olarak yeniden adlandırıldı.

Önceki komut dosyalarının aksine, son sürümde birkaç değişiklik yapılması gerekiyordu:

- Başlangıç noktası her zaman kırmızı bir daire ile işaretlenecektir.

- Roomba tamponlarından her durduğunda, konum siyah bir daire ile işaretlenir

- Roomba uçurum sensörlerinden her durduğunda, konum mavi bir daire ile işaretlenir

- Roomba'nın alanı incelemesi her durduğunda, konum yeşil bir daire ile işaretlenir

-Görüntüler, sonuçlara potansiyel olarak müdahale eden zaman damgası nedeniyle üst kısmı kaldırılacak şekilde değiştirildi

-Sınırlar, elde edilen oldukça yüksek sayılar nedeniyle bir nesne olarak sayılmayacaktır.

-Birkaç değişken değiştirildi, bu nedenle karışıklığı önlemek için referans olarak yukarıdaki sürümleri kullanın.

7. Adım: Test Etme

Test yapmak
Test yapmak

Her bir bileşen için yapılan testler zaman zaman oldukça karışık olduğunu kanıtladı, bu nedenle belirli önceden ayarlanmış değerlerde değişiklik yapılması gerekliydi. Robotun yeteneklerini kapalı bir alanda test etmek istediğimiz tematik arka plan, çok daha koyu bir zemine yerleştirilmiş bir beyaz tahtadan ibaretti. Nesneleri alanın etrafına dağıtabilirsiniz; çarpılacak nesneler veya robotun hareket alanından uzaktaki nesneler gibi davranmalarını sağlayın.

Regüle edilmiş zamanını ve temel hızını ayarladıktan sonra, roomba çarptığı her bir "uçurumdan" veya nesneden durarak ve gerileyerek ve yakınlarda bir şey algıladığında yavaşlayarak yeterli hareket davranışı sergiledi. İstenen üç metrelik hareket mesafesine ulaşıldığında robot durup alanı değerlendirerek her 45 derecelik bölgenin görüntüsünü alır ve zaman kalırsa ilerlemeye devam ederdi. Ancak dönüşleri istenenden daha büyük göründü, bu da koordinat verilerinin gizleneceği anlamına geliyordu.

Her durduğunda, konumunun koordinat sistemi üzerindeki yaklaşık bölgesine yeni bir nokta yerleştirildi; bununla birlikte, roomba'nın başladığı ilk yönün, haritanın tasarımında çok önemli bir rol oynadığı belirtilmektedir. Bir pusula özelliği uygulanabilseydi, harita tasarımının çok önemli bir parçası olarak kullanılmış olurdu.

İşlevin tam olarak çalışması için gereken gerçek süre her zaman istenen sürenin üzerine çıkar; bu, kurtarmalarından birinin ortasında duramayacağı düşünüldüğünde mantıklıdır. Ne yazık ki, görüntü sayımının bu versiyonunun, özellikle de çoğunlukla tek renkli veya parlaklığın değişken olduğu alanlarda bazı sorunları vardır; iki tonu birbirinden ayırmaya çalıştığı için, istenmeyen nesneleri algılamaya meyillidir, bu nedenle her zaman delicesine yüksek sayılara kadar sayar.

Adım 8: Sonuç

Çözüm
Çözüm

Bu görev, rahatlama sevincini getiren çok maceralı ve yaratıcı bir çalışma olsa da, kişisel gözlemlerime göre, hem kodda hem de robotun davranışında sorun yaratabilecek çok sayıda hata görebiliyordum.

while döngüsünde zaman belirtimini kullanma sınırlaması, toplam sürenin istenenden daha uzun olmasına neden olur; Panorama tekniği ve görüntü işleme süreci, yavaş bir bilgisayar tarafından çalıştırılırsa veya önceden kullanılmadıysa, aslında daha uzun sürebilir. Ayrıca sunumumuzda kullanılan roomba, simülatöre göre özellikle hareket konusunda çok sayıda hata ile hareket etti. Kullanılan robot ne yazık ki düz giderken ve istenilenden daha büyük dönüşler yaptığı için biraz sola eğilme eğilimindeydi. Bu ve daha pek çok nedenden dolayı, bu hataları telafi etmek için dönüş açılarında değişiklik yapılması şiddetle tavsiye edilir.

Bununla birlikte, bu, gerçek bir robotun davranışını doğrudan etkilemek için kodları ve komutları uygulamak için ilginç bir öğrenme deneyimi olarak hareket eden uzun ama entelektüel olarak teşvik edici bir projedir.

Önerilen: