İçindekiler:

RADbot: 7 Adım
RADbot: 7 Adım

Video: RADbot: 7 Adım

Video: RADbot: 7 Adım
Video: Radbot 1 - understanding how it works and how it can save you energy 2024, Ekim
Anonim
RADbot
RADbot

EF 230 için Jackson Breakell, Tyler McCubbins ve Jakob Thaler tarafından bir proje

Mars'ta astronotlar, aşırı sıcaklıklardan toz fırtınalarına kadar çeşitli tehlikelere maruz kalacak. Bununla birlikte, genellikle gözden kaçan bir faktör, gezegenin yüzeyinde bulunan güçlü radyoizotopların sunduğu tehlikedir. RADbot, seyahat ederken yüksek aktiviteye sahip kaya örneklerini tanımlayarak Mars yüzeyindeki astronotları keşfetmeye yardımcı olur ve ayrıca uçurum sensörlerini, ışık sensörlerini, tampon sensörlerini ve bir kamerayı kullanarak robotun hasar görmesini önleyen programlanmış güvenlik özelliklerine sahiptir. affetmez Mars arazisinde. Astronotları yüzeydeki olası radyoaktif tehlikelere karşı uyarmanın yanı sıra, robotun radyoaktif örnek konum özelliği, büyük miktarda Uranyum ve diğer aktinitleri tutabilecek alanları belirlemek için bir araç olarak uygulanabilir. Astronotlar bu elementleri çıkarabilir, yeterince zenginleştirebilir ve onları nükleer reaktörlerde ve termoelektrik jeneratörlerde kullanabilir, bu da gezegende kalıcı, kendi kendini idame ettiren bir koloniye güç sağlamaya yardımcı olabilir.

Tipik Mars gezgininin aksine, tasarımımız kullanıma hazır bileşenler ve makul bir fiyat etiketi içeriyor. Paranız ve isteğiniz varsa, bu kılavuzu izleyerek kendiniz bile bir tane oluşturabilirsiniz. Kendi RADbot'unuzu nasıl yapacağınızı öğrenmek için lütfen okumaya devam edin.

Adım 1: Gerekli Parçaları ve Malzemeleri Edinin

Gerekli Parçaları ve Malzemeleri Edinin
Gerekli Parçaları ve Malzemeleri Edinin
Gerekli Parçaları ve Malzemeleri Edinin
Gerekli Parçaları ve Malzemeleri Edinin
Gerekli Parçaları ve Malzemeleri Edinin
Gerekli Parçaları ve Malzemeleri Edinin

Başlamak için neye ihtiyacınız olacak (Listelendikleri sırayla yerleştirilmiş resimler)

1. One Roomba (herhangi bir yeni model)

2. Bir Geiger-Mueller Sayacı

3. Bir Ahududu Pi

4. USB çıkışlı tek kartlı kamera

5. Bir mikro USB - USB kablosu

6. Bir USB - USB kablosu

7. Yeterli aktiviteye sahip bir radyoaktif numune (~5μSv veya daha yüksek)

8. Matlab kurulu bir bilgisayar

9. Yapıştırıcı (Kolay çıkarılabilmesi için tercihen koli bandı)

Adım 2: Kameranın ve Geiger-Muller Sayacının Yapılandırılması

Kameranın ve Geiger-Muller Sayacının Yapılandırılması
Kameranın ve Geiger-Muller Sayacının Yapılandırılması

Artık RADbot'u oluşturmak için gerekli tüm materyallere sahip olduğunuza göre, kamerayı tezgahtaki etkinliği okuyabilmesi için basitçe yerleştirerek başlayacağız. Geiger-Muller sayacını Roomba'nın sonuna mümkün olduğunca yakın yerleştirin ve sensörünün engellenmediğinden emin olun. Seçtiğiniz yapıştırıcı ile sayacı sıkıca yerine sabitleyin ve kamerayı yüzünüze gelecek şekilde monte etmeye devam edin. Dışarıdan gelen girdilerin programı etkilemesini önlemek için kamerayı sayaç ekranına mümkün olduğunca yakın yerleştirin ve kendinizi rahat hissettiğinizde yerine sabitleyin. Yine de kameranın güvenliğini en sona saklamanızı öneririz, çünkü kodunuz bittiğinde kameradan bir görüntüyü bilgisayarınıza görüntüleyerek kamerayı görüş alanına göre konumlandırmanıza olanak tanır. Hem kamera hem de sayaç sıkıca yerine oturduğunda, kamerayı USB - USB kablosuyla Raspberry Pi'nin USB girişlerinden birine takın ve Raspberry Pi'yi mikro USB - USB kablosuyla Roomba'ya takın.

3. Adım: Roomba'nıza Bağlanın ve Işık Sensörü Kodu Oluşturun

Roomba'nıza Bağlanın ve Işık Sensörü Kodu Oluşturun
Roomba'nıza Bağlanın ve Işık Sensörü Kodu Oluşturun

Öncelikle EF 230 web sitesinin Roomba araç kutusunu indirin ve belirtilen klasörlere yerleştirdiğinizden emin olun. Roomba'nıza bağlanmak için, Raspberry Pi'ye iliştirilmiş etikete bakın ve komut penceresine tırnak işaretleri olmadan "r=roomba(x)" yazın ve burada x, Roomba'nın numarasını gösterir. Roomba bir melodi çalmalı ve temiz düğmesi çevresinde yeşil bir halka göstermelidir. Kodunuzu bir "while" ifadesi ile başlatın ve sensör listesinde göründükleri gibi ışık sensörlerine bakın. Komut penceresine "r.testSensors" yazarak sensör listesini açın.

Ne kadar ışığın yansıdığını belirleyen nesnemizin rengine bağlı olarak, while ifadesinin bir > işlevi olarak yürütülmesi için gereksinimleri ayarlayın. Bizim durumumuzda, sol veya sağ orta ışık sensörlerindeki okuma >25 ise, ön ışık sensörünü while ifadesindeki kodu çalıştıracak şekilde ayarladık. Yürütülebilir ifade için, "r.setDriveVelocity(x, y)" yazarak Roomba'nın hızını yavaşlatacak şekilde ayarlayın; burada x ve y sırasıyla sol ve sağ tekerleklerin hızlarıdır. Roomba'nın belirtilmemiş değerler için yavaşlamaması için bir "else" ifadesi ekleyin ve farklı bir hız dışında ayarlı sürücü hızı komutunu tekrar girin. while ifadesini bir "end" ile bitirin. Bu kod segmenti, Roomba'nın nesneye yaklaşmasını sağlayacak ve etkiyi en aza indirmek için belirli bir aralığa ulaştığında yavaşlayacaktır.

Ekte kodumuzun bir ekran görüntüsü var, ancak onu görev parametrelerinize en uygun şekilde düzenlemekten çekinmeyin.

Adım 4: Tampon Kodu Oluşturun

Tampon Kodu Oluştur
Tampon Kodu Oluştur

Roomba yavaşlarken, fiziksel tamponu tetiklemeyecek kadar olmasa da nesne üzerindeki etkisini en aza indirecektir. Bu kod parçası için tekrar bir "while" döngüsü ile başlayın ve ifadesini true olarak ayarlayın. İfade için, T değişkenini false ve true için tamponun çıktısına 0 veya 1 olarak ayarlayın. Bunun için "T=r.getBumpers" kullanabilirsiniz. T bir yapı olarak çıktı verecektir. Bir "if" ifadesi girin ve T.front altyapısı için ifadesini 1'e eşitleyin ve ifadeyi "r.setDriveVelocity(x, y)" veya "r.stop kullanarak sürücü hızını 0'a ayarlayacak şekilde ayarlayın. ". Roomba'nın sonraki koddaki koşul karşılandıktan sonra hareket edebilmesi için bir "mola" girin. Bir "else" ekleyin ve sürücü hızını Roomba'nın normal seyir hızına ayarlamak için ifadesini ayarlayın.

Ekte kodumuzun bir ekran görüntüsü var, ancak onu görev parametrelerinize en uygun şekilde düzenlemekten çekinmeyin.

Adım 5: Sayaç Ekranını Okumak, Yorumlamak ve Kaynaktan Geri Çekmek için Kod Oluşturun

Sayaç Ekranını Okumak, Yorumlamak ve Kaynaktan Geri Çekmek için Kod Oluşturun
Sayaç Ekranını Okumak, Yorumlamak ve Kaynaktan Geri Çekmek için Kod Oluşturun

Projemizin merkezinde Geiger-Muller sayacı yer alıyor ve kamerayı kullanarak ekrandaki verilerin ne anlama geldiğini belirlemek için aşağıdaki kod segmenti kullanılıyor. Sayacımızın ekranının kaynağın etkinliğine göre renk değiştirdiği göz önüne alındığında, kamerayı ekranın rengini yorumlayacak şekilde ayarlayacağız. "r.getImage" komutuna eşit bir değişken ayarlayarak kodunuzu başlatın. Değişken, çektiği resmin kırmızı, yeşil ve mavi renk değerlerinin 3 boyutlu bir dizisini içerecektir. "mean(mean(img1(:,:, x)))" komutunu kullanarak bu ilgili renk matrislerinin ortalamalarına eşit değişkenleri ayarlayın; burada x 1 ila 3 arasında bir tamsayıdır. 1, 2 ve 3 kırmızı, yeşil ve sırasıyla mavi. Başvurulan tüm komutlarda olduğu gibi, tırnak işaretleri eklemeyin.

Sayacın örneğin doğru bir okumasını alabilmesi için programı "duraklat(20)" kullanarak 20 saniye duraklatın ve ardından bir "if" ifadesi başlatın. Roomba bip sesini birkaç kez "r.beep" kullanarak "Radyoizotop bulundu! Dikkat!" metnini içeren bir menü görüntülemeden önce aldık. bu, "waitfor(helpdlg({'texthere'})" komutuyla gerçekleştirilebilir. Tamam'ı tıkladıktan sonra, Roomba "if" ifadesindeki kodun geri kalanını izlemeye devam edecektir. "r.moveDistance" ve "r.turnAngle" komutlarının bir kombinasyonu. if ifadenizi bir "end" ile sonlandırdığınızdan emin olun.

Ekte kodumuzun bir ekran görüntüsü var, ancak onu görev parametrelerinize en uygun şekilde düzenlemekten çekinmeyin.

Adım 6: Bir Cliff Sensör Kodu Oluşturun

Bir Uçurum Sensörü Kodu Oluşturun
Bir Uçurum Sensörü Kodu Oluşturun

Roomba'nın yerleşik uçurum sensörlerini kullanmak üzere bir kod oluşturmak için bir "while" döngüsü ile başlayın ve ifadesini true olarak ayarlayın. "r.getCliffSensors" değerine eşit bir değişken ayarlayın ve bu bir yapı ile sonuçlanacaktır. Bir "if" ifadesi başlatın ve yapıdan "X.leftFront" ve "X.rightFront" değişkenlerini önceden belirlenmiş bir değerden büyük olacak şekilde ayarlayın; burada "X", "r.getCliffSensors" komutunu seçtiğiniz değişkendir. Eşit olmak. Bizim durumumuzda, bir uçurumu temsil etmek için bir beyaz kağıt parçası kullanıldığından 1000 kullandık ve sensörler yaklaştıkça kağıda, değerler 1000'in üzerine çıktı ve kodun yalnızca bir uçurum algılandığında yürütülmesini sağladı.. Ardından "break" komutunu ekleyin ve ardından bir "else" ifadesi ekleyin. Herhangi bir uçurum algılanmazsa yürütülecek olan "else" ifadesi için, sürüş hızını her bir tekerlek için normal seyir hızına ayarlayın. Roomba bir uçurum algılarsa, "break" yürütülür ve ardından while döngüsünün dışındaki kod yürütülür. "İf" ve "while" döngüsü için "son"u yerleştirdikten sonra, hareket mesafesi komutunu kullanarak Roomba'yı geriye doğru hareket edecek şekilde ayarlayın. Astronotları yakında bir uçurum olduğu konusunda uyarmak için, sürüş hızı komutunda her tekerleğin sürüş hızlarını, x ve y'yi a ve -a olacak şekilde ayarlayın, burada a gerçek bir sayıdır. Bu, Roomba'nın dönmesine ve astronotun uçuruma karşı uyarılmasına neden olur.

Ekte kodumuzun bir ekran görüntüsü var, ancak onu görev parametrelerinize en uygun şekilde düzenlemekten çekinmeyin.

7. Adım: Sonuç

Çözüm
Çözüm

RADbot'un Mars'taki nihai hedefi, astronotların kızıl gezegeni keşfetmelerine ve kolonileştirmelerine yardımcı olmaktır. Yüzeydeki radyoaktif örnekleri tanımlayarak, bu durumda robotun veya gezicinin astronotları gerçekten güvende tutabilmesini ve üsleri için güç kaynaklarının belirlenmesine yardımcı olmasını umuyoruz. Tüm bu adımları izledikten sonra ve belki de bazı deneme yanılmalarla RADbot'unuz çalışır durumda olmalıdır. Radyoaktif numuneyi test alanınızda bir yere yerleştirin, kodunuzu yürütün ve gezicinin tasarlandığı şeyi yapmasını izleyin. RADbot'unuzun keyfini çıkarın!

-EF230 RADbot Ekibi

Önerilen: