IRobot Roomba an IPS

Wenn der Roomba in der Ladeschale ist, ist er natürlich ständig aktiv, genau so wenn unterwegs ist. Wenn er aber einige Zeit nur in der Gegend rumsteht, schaltet er sich doch ab, dann sollte wenn möglich auch der TX nicht mehr unbedingt aktiv sein um Strom zu sparen und den Akku nicht mehr zu belasten. Der RX des XBee kann ja auch weiterhin auf Empfang stehen.

Doc

Hallo Doc,

ich wollte nur sicher gehen, dass diese ominösen Leerzeichen nicht wirklich im String enthalten sind.

Ich hatte mir schon so etwas gedacht. So weit mir bekannt ist, gibt es bei Zahlen keine Groß- oder Kleinschreibung ;). Welchen Zweck hat hier also die Funktion strtoupper(…)?

Die Funktion explode(…) ist hier ebenfalls überflüssig. Sie bewirkt absolut nichts, da der String, wie wir jetzt wissen, überhaupt keine Leerzeichen enthält.

Daraus folgt diese stark vereinfachte Version:

$instr=GetValueString("XBee.RX");
$BatteryCurrent = (ord($instr[19])<<8) + ord($instr[20]);
if ($BatteryCurrent > 0x7fff) $BatteryCurrent |= 0xffff0000;

Es geht also auch ohne strtoupper() und explode().

Gruß
HJH

0

Hallo HJH,
das hatte ich so übernommen von meiner Auswertung der Contronics Signalstationen. Das hattest du mir ,glaube ich ,mal so gegeben.

Ich habe deine Anregeungen jetzt soweit mal umgesetzt, einiges aber doch noch belassen, mal schauen, ob man das evtl. nochmal gebrauchen kann.

Jetzt stehe ich schon vor dem nächsten Problem, aber hier glaube ich, das der Roomba falsche Daten sendet. Ich wollte noch den zurückgelegten Weg berechnen, allerdings bekomme ich völlig falsche Werte zurück.
In der Protokollbeschreibung der Hersteller steht:

The distance that Roomba has traveled in millimeters since the distance it was last requested is sent as a
signed 16-bit value, high byte first. This is the same as the sum of the distance traveled by both wheels
divided by two. Positive values indicate travel in the forward direction; negative values indicate travel in
the reverse direction. If the value is not polled frequently enough, it is capped at its minimum or
maximum.
Range: -32768 – 32767

Allerdings bekomme ich mit diesem Script hier bei Vorwärtsfahrt und pollen alle 2 Sec. immer Werte vom 0 bis -75 zurück, was entgegen der Beschreibung ist, da negativ und auch zu wenige mm.


//Berechnung des zurückgelegten Weges seit letzter Abfrage in mm
$Way = ($Byte[12]<<8) + $Byte[13];
if ($Way > 0x7fff) $Way |= 0xffff0000;
SetValueFloat("WayComplete", $Way);

Ich glaube, ich muss hier noch ganz schöne Pionierarbeit leisten :wink:

Gruß,
Doc

Hallo Doc,

der Roboter liefert einen Integer. Hat es einen bestimmten Grund, warum Du die Wegstrecke als Float abspeicherst?

Gruß
HJH

Hallo HJH,

das hatte schon einen Grund. Wir aber erst klar, wenn du die auskommentierten Zeilen siehst.

//Berechnung des zurückgelegten Weges seit letzter Abfrage in mm
$Way = ($Byte[12]<<8) + $Byte[13];
if ($Way > 0x7fff) $Way |= 0xffff0000;
 // Kompletter Weg
//SetValueFloat("WayComplete", (GetValueFloat("WayComplete") + ($Way /1000)));
SetValueFloat("WayComplete", $Way);

Ich wollte den zurückgelegten Weg weiter als Meter mit Nachkommastelle aufsummieren, um später Rückschlüsse auf Verschleiss usw. ziehen zu können.
Nur leider liefert der Roomba nicht das, was in der Interface-Beschreibung steht.

Gruß,
Doc

Hallo Doc,

Float ist dann natürlich OK.

Ich kann mir das nur so erklären, dass möglicherweise die Position im String nicht stimmt. In den Unterlagen habe ich keinen Hinweis darauf gefunden, dass die Reihenfolge mit der am Ende der Beschreibung übereinstimmt.

Stehen Dir evtl. noch weitere Quellen zur Verfügung? Oder woher kennst Du die Reihenfolge?

Gruß
HJH

Hallo HJH,

ich bin mal einfach davon ausgegangen, das dies die richtige Reihenfolge ist, sonst würde mit die Schreibung nicht viel nützen.
Bei allen anderen Sensoren die ich bis jetzt eingebunden habe passte das aber auch.
Auch kann ich eine Abhängigkeit zur Geschwindigkeit bzw. Weg bei dem Wert „Distance“ erkennen, wenn der Roomba sich bewegt, aber erstens nicht negativ als auch zu kleine Werte.
Was mich auch wundert, das hier die Sensoren für das linke und rechte Rad angegeben werden, die zusammen durch 2 geteilt den gleichen Wert liefern sollen. Bei den Radsensoren sehe ich aber nur Angaben zur Geschwindigkeit mm/s.
Das passt irgendwie nicht. Ich weiss nicht, ob sich IRobot da etwas vertan hat :confused:

Gruß,
Doc

Hallo Doc,

wenn Du den Roboter exakt geradeaus fahren lässt, dann müssten die Werte von Distance und Encoder Counts (left oder right) etwa gleich sein.

Das setzt allerdings voraus, dass 1 Count = 1mm ist. Falls nicht, müsste zumindest eine deutliche Proportionalität festzustellen sein. Leider liefern die Counts keine Richtungsinformation.

Gruß
HJH

Jetzt habt ihr es geschafft, jetzt hab ich mir auch ein neues Spielzeug bestellt. Bin ja mal gespannt wie das Teilchen so putzt :wink:

Die Umbauanleitung brauch ich dann natürlich auch, allerdings hab ich bisher noch gar nix mit XBEE, was brauch man dazu dann noch so ?

Anti

Finde das basteln ja grundsätzlich lustig, aber welche Vorteile hat man mit der xBee Anbindung denn tatsächlich ?

Starten und Rückkehren lassen wäre ja auch mit IR Trans möglich, oder nicht ? (auch wenn nicht in jeder Ecke des Hauses ?

„Behälter voll“ abfragen ? Den zurückgelegten weg anschauen ?

Nun ja,

es soll Leute geben, die über ein Touchpad an der Wand im Designer ihre Beleuchtung, Rolladen oder Rasensprenger steuern, obwohl der Lichtschalter 3m weiter auch zu finden wäre.
Warum soll man dann nicht auch auf ein sonst autonom arbeitenden Haushaltroboter zugriff haben und diesen steuern?
Hier sehe ich eher einen Sinn, als bei den vielen anderen Dingen, die mit IPS umgesetzt werden.

Grüße,
Doc

Auf jeden Fall ein zweites XBee :smiley:

Hi
Ich spiele ja auch arg mit dem Gedanken mir so einen Flitzer in die Wohnung zu holen. :cool:

Was den Nutzen einer Xbee Schnittstelle angeht:

Ich persönlich fände es stark wenn man (mittels umstrittenen Touchscreen :wink: ) den Roomba zu einem bestimmten Ort in der Wohnung schicken kann damit er dort im „Spotmodus“ reinigt. Wenn also mal Mehl in der Küche umgefallen ist oder die Katzen im Katzenklo gewütet haben.
Ich habe ohnehin auf meinem Display einen Grundriss meiner Wohnung. ^^

Klar ist das enorm viel Aufwand denn man müsste für den „Transit“ die komplette Steuerung vom Roomba selbst programmieren und der Roboter müsste sich lokalisieren können.
Allerdings gibt es dafür schon gleich zwei Ideen mit denen ich auch schon selbst gearbeitet habe.

  1. Am Kompliziertesten aber auch am coolsten:
    Indoor Navigation mit Bluetooth Hilfe.
    Das ganze basiert auf meheren Bluetooth Sendern (Pcs/Laptops/Handys) dessen Position bekannt ist und die als Referenzpunkte verwendet werden.
    Dabei wird die Signalstärke zwischen dem „Bluetooth-GPS-Modul“ (am Roomba, z.B. Pda) und den Positionssendern gemessen (RSSI) und so die genaue Position bestimmt.
    Wen es interessiert: klick (Nur eines von Vielen Dokumenten zu dem Thema)

  2. Eine gute Webcam Überwachung.
    mit 1-2 Webcams (pro Raum) an der Decke auf den Boden gerichtet lässt sich relativ einfach eine Bilderkennung zur Positions-Bestimmung umsetzen.
    Ein großer Grüner Punkt (Aufkleber) auf dem „Kopf“ unseres automatisierten Freundes sollte das ganze vereinfachen.

Sollte man unerwartet auf ein Hinderniss stoßen (der Roomba sich also nicht erwartet weiterbewegt) kann man ja kurz in den „Saugmodus“ schalten und Ihn sich selbst befreien lassen.

Vielleicht kann man ja auch einfach Pfade einprogrammieren, aber ich bezweifle das das gut funktioniert :wink:

Was meint Ihr?

Gruß
Hülke

Hallo Hülke,

ich starte den Roomba morgens, wenn ich mit dem Hund spazieren gehe. Alle zwei Tage schicke ich dann den Scooba noch hinterher. Seit die Robbys bei uns saubermachen ist der Boden einfach immer sauber.

Ich habe den Eindruck dieses, „wir wollen den Staubsauger auch noch per IPS kontrollieren“, ist eine Spielerei, einen Zusatznutzen kann ich noch nicht erkennen. Was will man mehr, als einen Sauger, der automatisch saubermacht?

Anders sieht es natürlich aus, wenn man Dinge per Sauger transportieren möchte (z. B. eine WebCam). Daran hätte ich auch noch Interesse. Dazu müsste man aber wohl in die Programmierung des Saugers eingreifen, um ihm klarzumachen, dass er jetzt bestimmte LH passieren soll. So wie ich das bisher mitbekommen habe, scheint aber genau dies nicht zu klappen.

Aber ich bin mal weiter gespannt, vielleicht findet ja noch jemand eine Anwendung für den Roomba, außer saugen.

Ich wünsche einen schönen Abend.

Christoph.

Hallo,

also ich werde zunächst mal die Möglichkeit implementieren, das Gerät automatisch loslegen zu lassen wenn ich die „Abwesend“-Taste drücke (oder ein paar Minuten danach).

Außerdem habe ich einem Einbauschrank hier eine kleine „Garage“ verpasst, in welcher der Roomba schon jetzt „wohnt“. Die Garage steuere ich auch per IPS. Hört sich vielleicht nicht so an, aber so ist der Roomba elegant versteckt und das motorisch öffenbare Bodenbrett des Schranks sieht auf den ersten Blick völlig unauffällig aus.

Zusätzlich finde ich es noch nett, Fehlermeldungen wie „Roomba hat sich verfangen“ etc. verschicken zu können.

Ich habe jetzt mal eine Bestelliste zusammengestellt für die Bauteile die man benötigt. Bitte korrigiere mich wenn ich einen Fehler gemacht habe:

-2x XBee Pro
-1x XBee Dongle (USB Carrier)
-1x Schaltregler http://www.conrad.de/goto.php?artikel=154973
-1x Elko 100 µF (den anderen bräuchte man ja nur bei höherer Vin oder?)
-1x Widerstand 2K (Pegelanpassung)

Ist es richtig dass die Pegelanpassung nur so herum notwendig ist, d.h. der Roomba kommt seinerseits auch mit 3.3V an seinem Rx klar?

Was das automatische Anfahren eines Raums anbelangt: Dürfte etwas schwieriger werden, aber mit viel Tüftelei nicht unmöglich. Man muss dann eben sehr lowlevelmäßig programmieren, aber die Lighthouses geben ja schon eine Möglichkeit zu wissen, in welchem Raum man gerade ist.

Klasse Idee mit der „Garage“, sieht bestimmt klasse aus wenn er sich dann an die Arbeit macht :wink:

Wie genau funktioniert das eigentlich mit den Lighthouses…
Also das die mittels IR eine „Wand“ erzeugen ist klar, und ich hab gelesen das die beim 560er per Funk gesteuert werden können.
Aber macht das der Roboter selber? Also erkennt er das er in Raum 1 fertig ist und schaltet sich selbst „den Weg frei“?
Oder muss man das per „Fernbedienung“ machen?
Kann man den Status der Lighthouses irgendwie abrufen und lässt sich daraus wirklich ermitteln in welchem Raum sich der Roomba befindet?

Das wär ja schonmal was.

Den Roomba rufen macht für mich auch nur für akute Fälle sinn. Also etwas wo man nicht warten möchte bis der Roomba wieder alle Räume gereinigt hat sondern auf direkte Hilfe angewiesen ist.

Wär doch schon ärgerlich wenn man dafür den Alten Staubsauger aus dem Keller holen oder den Roomba tragen oder umständlich zum Einsatzort lenken müsste.
Ein „Saug die Küche“ Befehl fände ich da schon schick. Wenn sich das mittels Lighthouses lösen lässt: Um so besser :wink:

…wenn man Dinge per Sauger transportieren möchte…
:stuck_out_tongue:
Na da fällt mir doch gleich ein „befahrbarer Snackschrank“ ein…
Sitze auf der Couch, gucke nen Film und mich lüstets nach Chips… einfach eben den Robobutler zum Snackschrank schicken und ihn entsprechend beladen lassen :wink:

… Nagut das ist wirklich ne Spielerei ^^

Die Lighthouses projizieren per IR vier Dinge: Einen „Zaun“ in der Mitte, eine „grüne Boje“ (Steuerbord) und eine „rote Boje“ (Backbord) auf den jeweiligen Seiten des Zauns. Zudem einen „Heiligenschein“, der verhindert dass der Roboter das Teil umfährt oder verschiebt. Führt natürlich auch dazu, dass im Bereich der Lighthouses selbst der Dreck liegenbleibt…

So sehen meine Ideen auch in etwa aus. Allerdings braucht es dafür nicht gerade viel Programmierung. Das ist nur ein kurzer Befehl und der Roomba legt los.

Mal her mit den Bildern. Würde mich mal interessieren, wie du das mechanisch gelöst hast? Bei mir hält er Winterschlaf unterhalb des Kachelofens. Aber so ein Klappe hat auch was für sich.

Dito

Das scheint problemlos zu funktionieren. Allerdings habe ich wie im Datenblatt angegeben eine 47µ C am Eingang des Recon plaziert und den 100µ C am Ausgang weggelassen.
Was mich immo noch beschäftig ist, wie ich das XBee deaktivieren kann, wenn der Roomba sich selber abschaltet. Das passiert z.B. dann, wenn er sich verfängt und nicht mehr selber befreien kann oder er die Base nicht findet. Dann schaltet er sich 5 Min. später ab. Da aber die Schnittstelle weiter mit Strom versorgt wird, würde das XBee nun den Akku weiter bis zur Tiefentladung belasten. Das muss auf jeden Fall noch gelöst werden.

Es gibt im I-Net sehr einfache Baubeschreibungen für eine Virtuell Wall. Was ich mir vorstellen könnte ist einfach ein IR-LED im Türrahmen „unsichtbar“ einzulassen und dann mit 1-Wire zu steuern. Allerdings weiss ich nicht, ob diese älteren VW’s auch mit dem neuen Roomba 560 können. Kann das „von schon länger nicht mehr selber sauber machern“ mal jemand testen?

Was das Erkennen von den Positionen her angehet gibt es auch schon was im Netz. Einfach einen RFID leser in den Roomba und dann ein paar Klebetags z.B. unter der Tapete ein den einzelnen Räumen verteilen. Irgenwann kommt er dann mal da vorbei und übermittelt seine aktuelle Position.

Grüße,
Doc

Hier die Garage bei geschlossenem Schrank:
Klick

…und bei offenem:
Klick

Das ganze besteht aus einem alten Scheibenwischermotor und zwei Zugmagneten mit Rückstellfedern. Der Scheibenwischermotor hat die wunderbare Eigenschaft, bei einem einsekündigen Impuls genau eine Umdrehung durchzuführen und danach wieder in Ruheposition zu verharren. Die Zugmagnete sind so angebracht, dass sie aufgrund der Sprungfedern bei hochgezogener Klappe herausspringen und die Klappe so oben halten. Ein Stromimpuls lässt sie dann anziehen, so dass die Klappe unsanft aber zuverlässig herunterfällt.

Wie man sieht schaut das noch ganz schön bastelmäßig aus. Ich bin auch nicht wirklich der begabte Handwerker, aber die Konstruktion funktioniert soweit und fällt auch nicht beim Angucken schon auseinander. Für meine Verhältnisse ist das ziemlich gut.

Dass es im Schrank hässlich ausschaut ist mir klar, das ist auch ok so für mich denn darin befindet sich weiter oben ohnehin meine sämtliche Technik. Wenn die Türen zu sind ist davon nichts mehr zu sehen, darauf kommt es mir an.

Ich warte momentan ja leider noch auf den Schaltregler vom großen C, aber wäre durchaus an Fotos vom Mod interessiert! :wink: