İçindekiler:

Localino Roomba IRobot'u İzler, Ortamı Haritalar ve Kontrol Sağlar.: 4 Adım
Localino Roomba IRobot'u İzler, Ortamı Haritalar ve Kontrol Sağlar.: 4 Adım

Video: Localino Roomba IRobot'u İzler, Ortamı Haritalar ve Kontrol Sağlar.: 4 Adım

Video: Localino Roomba IRobot'u İzler, Ortamı Haritalar ve Kontrol Sağlar.: 4 Adım
Video: Отзыв и обзор iRobot Roomba 780. Робот-пылесос от iRobot. 2024, Kasım
Anonim
Image
Image

WiFi-UART köprüsünü kurmak için şu github deposuna göz atabilirsiniz:

Başlangıç için güzel bir temeli var. Kılavuzu iyi okuduğunuzdan emin olun, çünkü Roomba VCC şarj sırasında 20 Volt'a kadar yükselir! Uygun bir dönüştürücü olmadan 20V'a kadar çalışan ve 3,3V'a aşağı dönüştüren bir ESP8266 eklerseniz, ESP'nize zarar verirsiniz.

Ayrıca, 5V UART mantık seviyelerini Roomba'dan ESP tarafından kullanılan 3.3V'a kaydırmak için bir seviye değiştirici (örneğin bir voltaj bölücü kullanarak) kullandığınızdan emin olun.

Diğer bir önemli detay ise, dönüştürücünün 300mA'ya sahip olması, ancak çok daha az veya çok daha fazla olmamasıdır (buck dönüştürücünün kendisine bağlı olarak). Çok daha fazla akım yapabilen, ancak başlatma sırasında çok fazla akım çektikleri için Roomba'nın çökmesine neden olan bazıları var. Pololu 3.3V, 300mA Düşürücü Voltaj Regülatörünün (D24V3F3) mükemmel çalıştığını öğrendik. 500mA / 600mA'ya sahip alternatif versiyonlar Roomba UART arayüzünün çökmesine neden oldu. Temel olarak Roomba, düğmeye basıldığında tepki veriyordu, ancak UART arayüzü üzerinden komutlara tepki vermiyordu. Bu olduğunda, Roomba pilini çıkarmamız ve WiFi-UART köprüsü takılıyken Roomba'yı soğuk yeniden başlatmamız gerekti. Ancak yalnızca D24V3F3 iyi çalıştı.

Bu teknik detayın yanı sıra, Roomba açık arayüz spesifikasyonlarında bulabileceğiniz koda ek komutlar eklemeniz gerekiyor. Roomba'nızın tepki vermesini istediğiniz tüm komutları eklemeniz gerekecek (örneğin, geri, ileri, hız, vb.).

arduino IDE içindeki örnekler:

geçersiz goForward() { char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print(c); }

void goBackward() { char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print(c); }

void spinLeft() { char c = {137, 0x00, 0xc8, 0x00, 0x01}; Seri.baskı(c); }

void spinRight() { char c = {137, 0x00, 0xc8, 0xff, 0xff}; Seri.baskı(c); }

lua ile yazarsanız biraz farklı görünür, SOL dönüş için bir örnek şöyle görünür:

if(_GET.pin == "LEFT")sonra yazdırın ('\137'); --VOR

tmr.delay(100);

yazdır ('\00'); -- Hız = 200 = 0x00C8 -> 0 ve 200

tmr.delay(100);

yazdır ('\200'); -- Hız

tmr.delay(100);

yazdır ('\254'); -- Yarıçap = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay(100);

yazdır ('\12'); -- Dönüş

son

Roomba'nız için açık arayüz açıklamasını düzeltmeniz gerektiğinden emin olun. En az iki açık arayüz özelliği mevcuttur.

Roomba 5xx serisi için:

Roomba 6xx serisi için:

WiFi-UART köprünüzü oluşturduktan ve komutları test ettikten sonra büyük bir adım attınız. Bu video, uygulamanın ve yaklaşımın işe yaradığını göstermektedir. Biraz tembeldik, web arayüzünde ileri, geri, hız, sağ, sol ve benzeri gibi diğer tüm kontrol komutları eksik, ancak komutları http üzerinden verebilirsiniz. Her neyse, bu sadece Roomba'nın uzaktan kumandasının bir ESP8266 kullanarak kolay bir donanım ve yazılım parçası ile çalıştığının bir göstergesi.

Artık Roomba'nızı bir PC uygulamasından uzaktan kontrol edebileceğiniz için, eksik olan tek şey iç mekan lokalizasyonu. Geri bildirim döngüsünü kapatmak için buna ihtiyacımız var, çünkü amacımız robotu belirli bir yöne yönlendirmekti. Bunu yapalım.

3. Adım: İç Mekan Yerelleştirme Sisteminizi Kurun

Geri bildirim döngüsünü kapatmak için bir iç mekan yerelleştirme sisteminden yararlanıyoruz. Bunun için Localino kullanıyoruz. Localino sistemi "çıpalar" ve "etiketler"den oluşur. Ankrajlar, oda içinde sabit konumlara yerleştirilmiştir ve (Roomba'ya yerleştirilen) hareketli etiketin konumunu belirler. Konum işleme bir PC uygulamasında yapılır. Bu büyük bir avantajdır, çünkü Roomba'yı aynı bilgisayardan da kontrol edebilirsiniz! Localino web sitesinde ücretsiz kaynak kodu mevcuttur, python ile yazılmıştır ve ayrıca etiketin XYZ koordinatlarını sunan gerçek zamanlı bir akış mevcuttur. Veri akışına UDP ağı üzerinden erişilebilir, ancak MQTT veya beğendiğiniz diğer süslü şeyleri de ekleyebilirsiniz. Python'u biliyorsanız, size yardımcı olacak yığınla kitaplık vardır.

Bu videoda Roomba'nın lokalizasyonu gösterilmektedir. Bu nedenle, Roomba'nın 3D konumlandırılmasına izin veren, odada sabit konumlarda 4 ankraj kurulumumuz var. Genel olarak, sadece 3 ankraja ihtiyaç duyarız, çünkü Roomba muhtemelen Z ekseninde hareket etmeyecektir, bu nedenle 2D yeterli olacaktır. Ancak ankrajlar AC ana fiş yüksekliğinde (yerden yaklaşık 30 cm yükseklikte) bulunduğundan, 2D kurulum çok az konum tahmini hatalarına neden olur. Bu yüzden 4 çapaya sahip olmaya ve 3 boyutlu olarak yerelleştirmeye karar verdik.

Şimdi Roomba'nın konumuna sahip olduğumuza göre, bir sonraki adımımız Roomba'yı aynı uygulamadan kontrol etmektir. Buradaki fikir, temel gerçeği kullanmak ve robot için mükemmel bir temizleme yolunu tahmin etmektir. Localino'nun kullanımıyla geri bildirim döngüsünü kapatabilir ve robotu PC uygulamasından kontrol edebiliriz.

Kurulum açıklamaları

Localino ankrajlarını odanın içinde farklı x, y konumlarına ve üç tanesini aynı z konumuna yerleştirin. Dört ankrajdan birini oda başına farklı bir yüksekliğe z yerleştirin. Roomba ile taşınacak olan Localino etiketinin iyi bir kapsama alanı olduğundan emin olun.

Tüm bağlantıların, Localino'nun barkodunda görüntülenen ve "localino yapılandırma" aracıyla okunabilen benzersiz bir bağlantı kimliği vardır.

X, Y, Z'deki konumları ve bağlantı kimliklerini not edin. Bu, Localino İşlemci Yazılımı için gereklidir ve “LocalinoProcessor” klasöründeki “localino.ini” dosyasına uyarlanmalıdır.

Ankrajlar Z'de (XY alanı kaplandığında) yukarı veya aşağı bakmalıdır, ancak kapsanan alan yönünde değil. Ankrajlar ayrıca metal veya herhangi bir kablosuz sinyali bozucu malzeme ile kapatılmamalıdır. Bu mümkün değilse, herhangi bir malzeme ile ankraj arasında da belirli bir hava boşluğu olmalıdır.

…gelmek için daha fazla.

4. Adım: Python Yazılımını Uyarlayın

bizi izlemeye devam edin. gelmek için daha fazla.

Önerilen: