Forum: Mikrocontroller und Digitale Elektronik Verwendete Algorithmen für effizientes Staubsaugen


von Alexander M. (a_lexander)


Lesenswert?

Hallo Zusammen,

Ich hab mich jetzt schon irre gesucht und leider noch nichts 100% 
passendes gefunden...
Es geht um die Frage, welcher Algorithmus / welche Algorithmen aktuell 
verwendet werden bei z. B. Staubsaugrobotern / CNC Maschinen, mit der 
die Roboter die komplette Fläche mit Intelligenz abfahren können.
Hier ist eine Idee, wie die Fahrroute aussehen könnte:
https://www.akku-und-roboter-staubsauger.de/ratgeber/orientierung-im-raum/

Kann mir da jemand vielleicht weiterhelfen? Sind diese Algorithmen evtl. 
sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?

Danke ;)

Grüße

von Wolfgang (Gast)


Lesenswert?

Alexander M. schrieb:
> Sind diese Algorithmen evtl.
> sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?

G-Code (RS-274) ist kein Algorithmus sondern eine 
CNC-"Programmiersprache" (Befehlssatz), u.a. zur Übertragung von 
Fahrbefehlen.

von Alexander M. (a_lexander)


Lesenswert?

Wolfgang schrieb:
> Alexander M. schrieb:
>> Sind diese Algorithmen evtl.
>> sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?
>
> G-Code (RS-274) ist kein Algorithmus sondern eine
> CNC-"Programmiersprache" (Befehlssatz), u.a. zur Übertragung von
> Fahrbefehlen.

Stimmt. Daher ja: "Erstellung von G-Code". Oder noch genauer: Erstellung 
der Wegpunkte für den G-Code.

Grüße

von Kaj (Gast)


Lesenswert?

Prof. Dr. Volker Sommer (Beuth  Hochschule Berlin) hat zu 
Staubsaugerrobotern schon 1998 Patente angemeldet.
https://prof.beuth-hochschule.de/fileadmin/prof/sommer/Publikationen_Patente/Patente.pdf

Vielleicht hilft dir das ja bei deiner suche.

von Alexander M. (a_lexander)


Lesenswert?

Kaj schrieb:
> Prof. Dr. Volker Sommer (Beuth  Hochschule Berlin) hat zu
> Staubsaugerrobotern schon 1998 Patente angemeldet.
> 
https://prof.beuth-hochschule.de/fileadmin/prof/sommer/Publikationen_Patente/Patente.pdf
>
> Vielleicht hilft dir das ja bei deiner suche.

Vielen Dank. Werde ich mir mal anschauen. Bin mir aber auf dem 1. Blick 
nicht ganz sicher, ob er auch wirklich was in dem Bereich 
"Wegpunkte-Erstellung" gemacht hat.

Nur um nochmal klar zu werden: Für diese "Wegpunkt-Erstellung" würde ich 
gern den "Standard-Algorithmus" wissen, der üblicherweise eingesetzt 
wird. Also ähnlich wie z.B. beim Suchen eines Pfades der A*-Algorithmus 
eingesetzt wird, nur jetzt zur Erstellung dieser Punkte (auch mit z. B. 
Hindernisse).

Grüße

von Jens M. (schuchkleisser)


Lesenswert?

Bei den meisten ist der Algo eher sowas wie:
1
while (batteryFull() {
2
    driveUntilCrash();
3
    turnRandomAmount();
4
    }
5
findHomeBase();

Es gibt einige, die erstmal die Wände des Raumes erfassen (ähnlich dem 
o.g. Algo) und dann immer eine "Wagenbreite" Abstand zwischen den 
Streifen lassen um die Fläche abzufahren, die zwischen den vorher 
erfassten Wänden liegt.

von Schlaumaier (Gast)


Lesenswert?

Alexander M. schrieb:
> Kann mir da jemand vielleicht weiterhelfen? Sind diese Algorithmen evtl.
> sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?

Ich denke der ist Firmengeheimnis. Wer den besten hat, dessen Gerät 
arbeitet am Effektivsten. Darüber haben Sie im TV sogar schon berichtet. 
Und das war auch "Testkriterium".

Kennst du das Kinder-Zeichenspiel "Hier ist das Haus vom ni-ko-laus." ?? 
Da geht es darum ein Haus in einen Strich zu zeichnen. Bei einen 
Staubsaugerroboter ist es 100% da selbe. Es gilt eine Raum mit 
Hindernissen so zu reinigen das jede Stelle so wenig wie möglich aber 
min. 1 x angefahren wird.

Den perfekte Algorithmus und ich habe für den Rest meines Lebens 
ausgesorgt in einer schönen Villa im Wand am See. (Ich mags nicht wenn 
es zu heiß ist).

von Ludwig (Gast)


Lesenswert?

Schlaumaier schrieb:

> Den perfekte Algorithmus ...

Ein Staubsaugerroboter der einen Raum abfährt? Wo soll denn da das 
Problem sein? Der Algorithmus ist maximal ein Dreizeiler.

von Alexander M. (a_lexander)


Lesenswert?

Schlaumaier schrieb:
> Alexander M. schrieb:
>> Kann mir da jemand vielleicht weiterhelfen? Sind diese Algorithmen evtl.
>> sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?
>
> Ich denke der ist Firmengeheimnis. Wer den besten hat, dessen Gerät
> arbeitet am Effektivsten. Darüber haben Sie im TV sogar schon berichtet.
> Und das war auch "Testkriterium".
>
> Kennst du das Kinder-Zeichenspiel "Hier ist das Haus vom ni-ko-laus." ??
> Da geht es darum ein Haus in einen Strich zu zeichnen. Bei einen
> Staubsaugerroboter ist es 100% da selbe. Es gilt eine Raum mit
> Hindernissen so zu reinigen das jede Stelle so wenig wie möglich aber
> min. 1 x angefahren wird.
>
> Den perfekte Algorithmus und ich habe für den Rest meines Lebens
> ausgesorgt in einer schönen Villa im Wand am See. (Ich mags nicht wenn
> es zu heiß ist).

Das wäre natürlich echt schade.

Nochmal zurück zur Erstellung eines G-Code, speziell die ganzen 3D 
Drucker Hersteller: Da muss es doch dafür irgendein öffentlich bekannter 
Algorithmus geben oder macht da wirklich jeder sein eigenes Ding?
Wenn ja, dann werde ich das so akzeptieren (müssen)...

Danke.

Grüße

von Schlaumaier (Gast)


Lesenswert?

Ludwig schrieb:
> Ein Staubsaugerroboter der einen Raum abfährt? Wo soll denn da das
> Problem sein? Der Algorithmus ist maximal ein Dreizeiler.

Schwätzer.

Wir reden hier nicht von einer leeren Turnhalle, sondern von einen Raum 
mir Möbeln. Selbst Gartenroboter bekommen das Problem nicht sauber in 
den Griff.

von Gerald K. (geku)


Lesenswert?

Der Algorithmus ist ein Wechselspiel zwischen Sensoren einlesen und 
Motoren steuern. Wesentlich ist, wie beim Auftreten eines Hindernisses 
reagiert wird. Der einfachste Fall ist sofort mit einer zufälligen 
Richtungsänderung zu reagieren oder diese als letzte Vorgangsweise zu 
reservieren.

Der schwierigste Teil ist, mit der richtigen Restkapazität, die 
Ladestation rechtzeitig zu  erreichen.

von Tim  . (cpldcpu)


Lesenswert?


von F. M. (foxmulder)


Lesenswert?

Ludwig schrieb:
> Der Algorithmus ist maximal ein Dreizeiler.

Sicher nicht oder evtl. bei den allerbilligsten.

Bei Rasenrobotern habe ich etwas gefunden, das sieht nicht nach 
Dreizeiler aus, also wieder einmal typisches Gewäsch.

https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.331.4359&rep=rep1&type=pdf

https://core.ac.uk/download/pdf/36754165.pdf

https://www.sciencedirect.com/science/article/pii/S2352664516300050

https://robotics.stackexchange.com/questions/628/what-algorithm-should-i-implement-to-program-a-room-cleaning-robot

https://kth.diva-portal.org/smash/get/diva2:1214422/FULLTEXT01.pdf

Aber hochinteressantes Thema, hätte ich so nicht daran gedacht.
Ich denke aber, dass bald jeder Roboter Lidar oder eine Kamera an Bord 
hat und so die Wohnung relativ einfach kartiert. Dann ist recht leicht 
eine Route zu planen.

mfg

von Alexander M. (a_lexander)


Lesenswert?

Danke. Da sind echt ein paar interessante Ideen dabei.

Ich hab z. B. das hier gefunden:
https://www.researchgate.net/publication/266646377_Complete_Coverage_Path_Planning_and_Obstacle_Avoidance_Strategy_of_the_Robot

Leider ist das alles halt sehr wissenschaftlich beschrieben und jetzt 
nicht ohne Weiteres zu verstehen...

Grüße

von Schlaumaier (Gast)


Lesenswert?

F. M. schrieb:
> Ich denke aber, dass bald jeder Roboter Lidar oder eine Kamera an Bord
> hat und so die Wohnung relativ einfach kartiert. Dann ist recht leicht
> eine Route zu planen.

Es gibt sogar schon Modelle die deine Wohnraum-Pläne an einen Fremden 
Server übertragen.  "Angeblich zur Optimierung des Saugens". Wers 
glaubt. ;:)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Wenn ich meinem Grixx zugucke, ist zumindest auffällig, das er seine 
Aussenmaße genau kennt, schon um die Eckenbürste genau an die Kanten zu 
positionieren.
Ob A* der richtige Weg ist, wage ich zu bezweifeln, denn der Bursche 
will ja nicht den schnellsten Weg, sondern die grösstmögliche Fläche in 
der kleinsten Zeit bearbeiten. Er startet bei mir mit einer Spirale in 
Raummitte, bis er ein Hindernis erkennt. Dann geht er aufs 
Kantenprogramm, die er abfährt mit der Bürstenseite. Ist alles frei, 
gehts nach einer Weile wieder in eine Spirale von innen nach aussen.

Die Sensoren sind 3 Abstandsensoren auf der Vorderseite (links, rechts, 
vorne), zwei Bumperkontakte am Vorderrand links und rechts, ein 
Abstandsensor nach unten vorne für Treppenstufen, Radsensoren für die 
Umdrehungen und ein IR Auge oben drauf für Sperrbaken und Ladestation.

Der MC ist ein STM32F103.

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Alexander M. schrieb:
> die Roboter die komplette Fläche mit Intelligenz abfahren können

Können sie ja nicht.

Ob Staubsauger oder Rasenmäher, die scheitern schon an den simpelsten 
Hürden. Ein Baum in der Grasfläche, überhängende Zweige, eine Delle oder 
Buckel im Rasen oder ein auf dem Rasen stehender Stuhl lässt die Kiste 
"ich fahre random, dann werd ich zwar nie alles mähen, hab aber einige 
Stellen durch 10000-faches Drüberrollen wenigstens plattgefahren" genau 
so kläglich scheitern (falls sie im Vorgarten nicht von vorbeilaufenden 
Souvenierjägern mitgenommen werden) wie der Staubsauger an Teppichen, 
Netzwerkkabeln, sich unter Sofas festklemmt oder zwischen Stuhlbeinen 
hängen bleibt, falls er sich nicht am Versuch, eine Socke oder 
Fernsehzeitung einzusaugen, verschluckt oder die Treppe runterfällt - 
nein, die will er runtergetragen werden, zudem stolpert man über diese 
Konservendosen die immer im Weg rumfahren - oder mal wieder mit leerem 
Akku und vollem Mikrominiaturstaubsaugerbeutel rumstehen.

von Jemand (Gast)


Lesenswert?

Hallo

na ganz so schlimm würde ich es jetzt nicht sehen, - es gibt da schon 
einige recht gute Ausführungen:
Aber trotzdem:
Ja vom Grundsatz hast du vollkommen recht - überall wo 
Haushaltssaugroboter und automatischer Mäher gut arbeiten kann man es 
auch direkt selbst ohne viel Anstrengung fast schon nebenher mal eben 
schnell machen.
Ausgerechnet dort wo es interessant werden würde und man als Mensch auch 
aufpassen muss und locker >=30 Minuten am Saugen ist, bzw. sich durch 
den Garten manövriertet und 10 mal die Mäherhöhe verstellen muss, 
(Huckel, Steigungen, Vegetation an den blödesten Ecken - halt kein 
englische Rasen im Minivorgarten) ergänzt mit lustigen Vorwärts- und 
Rückwärts schieben , von mehreren Stellen das Ziel anfahren und all der 
Kram (schei... Maulwürfe, blöde Kiesel), ist ganz schnell Schluss.

Somit:
Alles immer noch eine Nette Spielerei die vor allem Geld verschlingt 
aber nur wenig Arbeit abnimmt - die 60m³ rechteckiger und ebener 
Neubaugrundstückrasen sind innerhalb weniger Minuten gemäht (und es 
macht da sogar Spaß und ist nicht Schweißtreiben).

Jemand

von aluhut (Gast)


Lesenswert?

Schlaumaier schrieb:

> Es gibt sogar schon Modelle die deine Wohnraum-Pläne an einen Fremden
> Server übertragen.  "Angeblich zur Optimierung des Saugens". Wers
> glaubt. ;:)

Nein! DIE DA OBEN wollen natürlich ausspionieren wo Deine Sessel und 
Bodenvasen stehen. Das ist doch ganz klar. Lass Dir das nicht gefallen!

Auch wichtig: Durch Auswertung von Beiträgen in Onlineforen soll 
angeblich sogar feststellbar sein ob noch alle Tassen im Schrank sind... 
Ganz gefährlich!

von Anderer Ansatz (Gast)


Lesenswert?

Bei 3D Druckern gibts doch auch Open Source CAM Software. Da kannst Du 
dann sogar selber rein schauen.

Bsp.
PyCAM
Splic3r

von Joachim B. (jar)


Lesenswert?

Jens M. schrieb:
> Es gibt einige, die erstmal die Wände des Raumes erfassen (ähnlich dem
> o.g. Algo) und dann immer eine "Wagenbreite" Abstand zwischen den
> Streifen lassen um die Fläche abzufahren, die zwischen den vorher
> erfassten Wänden liegt.

genauso fährt mein neuer proscenic M8pro!

leider gabs Probleme,
1. Lieferung saugt prima, als ich die App installierte blieb das 
Firmwareupdate bei 80% stecken, aber ich konnte einmal die Fahrroute 
sehen.
Danach verlor der Roboter die Verbindung zur Basis, es kam nur noch die 
Fehlermeldung pairing fail!
2. Lieferung, App nicht installiert, saugt auch prima, aber die 
Absaugung war defekt, er fuhr zur Basis sprach seinen Text ("dust 
collection") aber der Absauger blieb stumm und der Beutel füllte sich 
nicht und der Robi wurde auch nicht geleert. Heute soll Nr. 3 geliefert 
werden. Schaun wir mal.

Wenn alles funktionieren würde wäre er super:
Gute Saugergebnisse, gute Akkulaufzeit, gute Navigation, 2,5cm Stufen 
kein Problem, gute Kollisionserkennung, schnelles arbeiten, wischen 
inclusive, leichte Inkontinenz stört auf Teppiche wenig weil die 
Raumluft eh immer zu trocken ist, für Parkett wohl dann weniger geeignet 
wegen der verlorenden Wassertropfen, aber das Wischergebniss hatte mir 
bei Kanditat 1. gefallen.

von Gerald K. (geku)


Lesenswert?

Jemand schrieb:
> 60m³ rechteckiger und ebener Neubaugrundstückrasen sind innerhalb
> weniger Minuten gemäht (und es macht da sogar Spaß und ist nicht
> Schweißtreiben).

Und man spart sich Kosten fürs Fitnisstudio;)

von Udo S. (urschmitt)


Lesenswert?

Ludwig schrieb:
> Der Algorithmus ist maximal ein Dreizeiler.

Dann schreib die 3 Zeilen doch hin.
Ach so, kannst du nicht ...

von Yalu X. (yalu) (Moderator)


Lesenswert?

Udo S. schrieb:
> Ludwig schrieb:
>> Der Algorithmus ist maximal ein Dreizeiler.
>
> Dann schreib die 3 Zeilen doch hin.

In Fortran 77 war die Zeilenlänge noch auf 72 Zeichen limitiert. In C
und praktisch allen anderen neueren Programmiersprachen gibt es diese
Beschränkung nicht mehr ;-)

von MeierKurt (Gast)


Lesenswert?

Schlaumaier schrieb:
> Schwätzer.
>
Angenehm, MeierKurt

> Wir reden hier nicht von einer leeren Turnhalle, sondern von einen Raum
> mir Möbeln. Selbst Gartenroboter bekommen das Problem nicht sauber in
> den Griff.

Was soll ein Gartenroboter in einem Raum mit Möbeln?

von MeierKurt (Gast)


Lesenswert?

Jemand schrieb:
> die 60m³ rechteckiger und ebener
> Neubaugrundstückrasen

Sechzig Kubikmeter Rasen? Na, nicht gleich übertreiben.
Da würde ja ein Wald- und Wiesen-Rasenmäher zwölfhundert Mal seinen 
50l-Sack voll bekommen... Und als Fläche wär das (4cm Rasenhöhe) auch 
nicht zu verachten: 0,15ha. Oder 0,21 Fußballfelder, wie man hier in 
Deutschland sagen würde.

von Rolf M. (rmagnus)


Lesenswert?

Yalu X. schrieb:
> Udo S. schrieb:
>> Ludwig schrieb:
>>> Der Algorithmus ist maximal ein Dreizeiler.
>>
>> Dann schreib die 3 Zeilen doch hin.
>
> In Fortran 77 war die Zeilenlänge noch auf 72 Zeichen limitiert. In C
> und praktisch allen anderen neueren Programmiersprachen gibt es diese
> Beschränkung nicht mehr ;-)

Außer für den Präprozessor - dort nur nicht wegen der Zeilenlänge, 
sondern der Anzahl an Anweisungen. Man kann also nur maximal zwei Header 
inkludieren. ;-)

von Ludwig (Gast)


Lesenswert?

Udo S. schrieb:
> Ludwig schrieb:
>> Der Algorithmus ist maximal ein Dreizeiler.
>
> Dann schreib die 3 Zeilen doch hin.
> Ach so, kannst du nicht ...

Für Dich. Stellvertretend für alle: zum einen verstehst Du nicht was ein 
Dreizeiler ist, zum anderen werde ich bestimmt hier keine Perlen vor die 
Säue werfen. Ihr müsst irgendwann einmal lernen selbstständig zu denken.

von Schlaumaier (Gast)


Lesenswert?

aluhut schrieb:
> Schlaumaier schrieb:
>
>> Es gibt sogar schon Modelle die deine Wohnraum-Pläne an einen Fremden
>> Server übertragen.  "Angeblich zur Optimierung des Saugens". Wers
>> glaubt. ;:)
>
> Nein! DIE DA OBEN wollen natürlich ausspionieren wo Deine Sessel und
> Bodenvasen stehen. Das ist doch ganz klar. Lass Dir das nicht gefallen!
>
> Auch wichtig: Durch Auswertung von Beiträgen in Onlineforen soll
> angeblich sogar feststellbar sein ob noch alle Tassen im Schrank sind...
> Ganz gefährlich!

https://www.t-online.de/digital/id_85170130/viele-saugroboter-spionieren-ihre-besitzer-aus.html

k.k.

von Schlaumaier (Gast)


Lesenswert?

Wieso der Internet braucht ist mir eh unlogisch.  Upgrades gehen via 
USB-Sticks auch.

von MaWin (Gast)


Lesenswert?

MeierKurt schrieb:
> Sechzig Kubikmeter Rasen?

Nicht so viel
.
Wenn ich anfange zu mähen, hat der Rasen 15cm, zurückgeschnitten wird 
auf 5, sind nur 600m2. Allerdings wird der Rasenschnitt schon kompakter, 
so 6m3.

MeierKurt schrieb:
> Da würde ja ein Wald- und Wiesen-Rasenmäher zwölfhundert Mal seinen
> 50l-Sack voll bekommen.

Daher sind Grasauffangsäcke nutzlos. Die ganzen Nährstoffe, die man mit 
ihm abtransportiert, muss man ja als Dünger wieder teuer kaufen.

von Dieter H. (kyblord)


Lesenswert?

Wer braucht denn einen Staubsauberroboter... Das macht bei mir die Frau.

von Rolf M. (rmagnus)


Lesenswert?

Ludwig schrieb:
> zum einen verstehst Du nicht was ein
> Dreizeiler ist, zum anderen werde ich bestimmt hier keine Perlen vor die
> Säue werfen.

Oder anders ausgedrückt: Du hast nur irgendeinen Quatsch gelabert, 
willst das aber nicht zugeben.

Dieter H. schrieb:
> Wer braucht denn einen Staubsauberroboter... Das macht bei mir die Frau.

Das wird ihrer Lunge auf Dauer aber nicht guttun.

von Schlaumaier (Gast)


Lesenswert?

Rolf M. schrieb:
> Das wird ihrer Lunge auf Dauer aber nicht guttun.

Löl. Du glaubst auch jeden Mist.  Meine Mutter (und auch ich) hatten nie 
einen und sie ist 84 Jahre alt geworden.

Und den Staub den ein Staubsauger saugt, ist eh nicht gefährlich. Nur 
durch die vielen Desinfektionen steigt das Risiko auf Allergien immens.

von Stefan F. (Gast)


Lesenswert?

Yalu X. schrieb:
> In Fortran 77 war die Zeilenlänge noch auf 72 Zeichen limitiert. In C
> und praktisch allen anderen neueren Programmiersprachen gibt es diese
> Beschränkung nicht mehr ;-)

Du hast Go und Python vergessen

von Rolf M. (rmagnus)


Lesenswert?

Schlaumaier schrieb:
> Rolf M. schrieb:
>> Das wird ihrer Lunge auf Dauer aber nicht guttun.
>
> Löl. Du glaubst auch jeden Mist.

Nein, du hast nur meinen Scherz nicht verstanden.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Stefan ⛄ F. schrieb:
> Yalu X. schrieb:
>> In Fortran 77 war die Zeilenlänge noch auf 72 Zeichen limitiert. In C
>> und praktisch allen anderen neueren Programmiersprachen gibt es diese
>> Beschränkung nicht mehr ;-)
>
> Du hast Go und Python vergessen

In Go kann man doch ähnlich wie in C alles in eine Zeile schreiben, wenn
man aufeinanderfolgende Anweisungen durch Semikola trennt, oder nicht?

An Python habe ich nicht gedacht, als ich obiges schrieb. Aber Python
wäre nicht Python, wenn es nicht doch eine Möglichkeit gäbe, alles in
eine Zeile zu quetschen:

1
exec('for n in range(2,100):\n for k in range(2,n-1):\n  if n%k==0:break\n else:print(n)')

;-)

: Bearbeitet durch Moderator
von Schlaumaier (Gast)


Lesenswert?

Yalu X. schrieb:
> Aber Python
> wäre nicht Python, wenn es nicht doch eine Möglichkeit gäbe, alles in
> eine Zeile zu quetschen:

Irgendwie erinnert mich das an die Zeitung C=64.  Die hatte mal ein 
Wettbewerb laufen "Der Einzeiler des Monats". Da kamen coole Sachen 
raus, aber lesbar war was anderes. ;)

von Pydant (Gast)


Lesenswert?

> An Python habe ich nicht gedacht, als ich obiges schrieb. Aber Python
> wäre nicht Python, wenn es nicht doch eine Möglichkeit gäbe, alles in
> eine Zeile zu quetschen:
>
>
>
1
> exec('for n in range(2,100):\n for k in range(2,n-1):\n  if 
2
> n%k==0:break\n else:print(n)
3
>
>
> ;-)

Das ist aber noch kein Python: zähl mal Klammern und 
Anführungszeichen...

NB: wozu das exec()?

von Rolf M. (rmagnus)


Lesenswert?

Pydant schrieb:
> NB: wozu das exec()?

Wie würdest du es ohne das exec machen?

von Yalu X. (yalu) (Moderator)


Lesenswert?

Pydant schrieb:
> Das ist aber noch kein Python: zähl mal Klammern und
> Anführungszeichen...

Danke, gut aufgepasst :)

Da sind beim Kopieren die letzten beiden Zeichen verloren gegangen. Ich
habe das oben korrigiert.

von Sheeva P. (sheevaplug)


Lesenswert?

Yalu X. schrieb:
>
1
> exec('for n in range(2,100):\n for k in range(2,n-1):\n  if 
2
> n%k==0:break\n else:print(n)')
3
>

Bitte jetzt mal nicht die Builtins compile() (Optimierung!), eval() und 
im Zweifel auch gerne die Module "parser", "code" und "codeop" 
vergessen, wenn das Ganze ggf. schrittweise ablaufen soll 
(Benutzerinteraktion)! ;-)

Außerdem, was sehr, sehr viele nicht wissen: Anweisungen kann man in 
Python oft auch durch Semikola oder Kommata trennen (bei Loops und 
Branches geht das nicht); das hier ist valider Code:
1
exec('for i in range(2):\n\tfor k in range(2): print(i); print(k*3)')

jenes hier aber nicht (Zeilenumbruch ohne Einrückung!):
1
exec('for i in range(2):\n\tfor k in range(2):\nprint(i); print(k*3)')

von Sheeva P. (sheevaplug)


Lesenswert?

Pydant schrieb:
>> An Python habe ich nicht gedacht, als ich obiges schrieb. Aber Python
>> wäre nicht Python, wenn es nicht doch eine Möglichkeit gäbe, alles in
>> eine Zeile zu quetschen:
>>
>>
>>
1
>> exec('for n in range(2,100):\n for k in range(2,n-1):\n  if
2
>> n%k==0:break\n else:print(n)
3
>>

Du mußt schon vollständig zitieren, kleiner Grashüpfer... in Deinem 
Zitat fehlen das abschließende Singlequote und die abschließende 
Klammer. ;-)

> Das ist aber noch kein Python: zähl mal Klammern und
> Anführungszeichen...

Also das, was Yalu original gepostet hat, führt mein Python 3.8.5 unter 
Kubuntu 20.04 LTS korrekt aus, genau wie erwartet.

> NB: wozu das exec()?

Die einfache Erklärung ist, daß exec() den übergebenen Code ausführt.

(Der Rest ist für Menschen mit tieferem Interesse an Python interessant 
-- allerhöchstens.)

Der übergebene Code kann dabei ein ein Bytecode-Objekt sein, das aus 
einem str()- oder bytes()-Objekt mit der Builtin-Funktion compile() in 
Bytecode übersetzt wurde. Wenn exec() dagegen ein str()- oder 
bytes()-Objekt übergeben wird, führt es den compile()-Schritt 
selbständig aus. Zu den spannenden Aspekten von exec() und seiner 
Schwesterfunktion eval() -- die nur einzelne Anweisungen ausführen kann 
und im Gegensatz zu exec() einen Rückgabewert daraus erzeugt und 
zurückgibt -- gehört es, daß den beiden Funktionen jeweils zwei 
Dictionaries (dict(), {}) für "globals" und "locals" mitgegeben werden 
können, denen dann im ausgeführten Code Werte zugewiesen werden 
können... einfach mal das Beispiel ausprobieren:
1
#!/usr/bin/env python
2
CODE = '''rv = 0\nfor i in range(a): rv += i**2'''
3
4
5
if __name__ == '__main__':
6
    
7
    try:
8
        print(exec(CODE))
9
    except Exception as e:
10
        print(str(e))
11
    finally:
12
        print('-----------------------------------')
13
14
    try:
15
        print(exec(compile(CODE, 'string', 'exec')))
16
    except Exception as e:
17
        print(str(e))
18
    finally:
19
        print('-----------------------------------')
20
21
    try:
22
        g = {'a': 3}
23
        l = {'b': 5}
24
        print(exec(CODE, g, l))
25
        print(g)
26
        print(l)
27
    except Exception as e:
28
        print(str(e))
29
    finally:
30
        print('-----------------------------------')
31
    
32
    try:
33
        g = {'a': 3}
34
        l = {'b': 5}
35
        bo = compile(CODE, 'string', 'exec')
36
        print(exec(bo, g, l))
37
        print(g)
38
        print(l)
39
    except Exception as e:
40
        print(str(e))
41
    finally:
42
        print('-----------------------------------')

HF, YMMV! ;-)

von Oliver S. (oliverso)


Lesenswert?

Alexander M. schrieb:
> Kann mir da jemand vielleicht weiterhelfen? Sind diese Algorithmen evtl.
> sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?

Ums mal kurz zu beantworten: Nein.

Dein Artikel ist halt im wesentlichen veraltet. Alle Saugroboter, die 
heutzutage Stand der Technik sind, funktionieren mehr oder weniger 
ähnlich: Raum in Quadrate aufteilen, und die eins nach dem anderen 
absaugen. Erst den Rand, dann Bahn für Bahn die Fläche, oder umgekehrt.
Hindernisse werden umfahren. Orientieren tun die sich über LIDAR oder 
Kameras an den Wänden, auf den cm genau. Das funktioniert erstaunlich 
gut, und ohne übersehen Ecken.

Bei Rasenmährobotern klappt das mangels Wänden nicht. Die allermeisten 
fahren daher noch zufällige Zickzackmuster. Auch das führt allerdings zu 
guten Ergebnissen, nur sind die Fahrzeiten länger, um sicherzustellen, 
daß auch alles gemäht wird.

Bahnenmähen mit Orientierung per Radumdrehung zählen plus etwas 
Funkpeilung gibts von Bosch, funktioniert aber nur mittelmäßig. Per 
Differential-GPS gehts besser, das gibt es aber nur als Selbstbau - 
Stichwort Ardumäher. In dem Bereich wird sich sicherlich in den nächsten 
Jahren noch was tun.

Oliver

von Rolf M. (rmagnus)


Lesenswert?

Oliver S. schrieb:
> Bei Rasenmährobotern klappt das mangels Wänden nicht.

Gibt es da die "Wände" nicht in Form eines Drahtes, den man auf den 
Boden legt oder eingräbt? Natürlich braucht man da andere Sensorik als 
Lidar oder Kamera.

von Harald (Gast)


Lesenswert?

Oliver S. schrieb:
> Per
> Differential-GPS gehts besser, das gibt es aber nur als Selbstbau -
> Stichwort Ardumäher. In dem Bereich wird sich sicherlich in den nächsten
> Jahren noch was tun.

Schon passiert, dieses Jahr wird bereits ausgeliefert.

Husqvarna Epos

https://www.youtube.com/watch?v=WUb0rxWfxvs

Vlt. noch ne Anmerkung, will Dir aber nicht besserwisserisch über den 
Mund fahren: DGPS ist technisch veraltet, heute macht man das mit RTK. 
Das hat zwar irgendwo im Kern den gleichen Ansatz, unterscheidet sich 
technologisch aber erheblich. Ist eine längere Geschichte, einfach 
googeln.

von Yalu X. (yalu) (Moderator)


Lesenswert?

Rolf M. schrieb:
> Oliver S. schrieb:
>
>> Bei Rasenmährobotern klappt das mangels Wänden nicht.
>
> Gibt es da die "Wände" nicht in Form eines Drahtes, den man auf den
> Boden legt oder eingräbt?

Mit der Drahtschleife kann der Roboter nur erkennen, ob er sich 
innerhalb oder außerhalb davon befindet. Mit einem Lidar hingegen kann 
er über mehrere Meter Distanz die Kontur von Wänden und anderen Objekten 
erfassen und diese damit zur Positionsbestimmung nutzen.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Für einen Staubsaugrobbi ist GPS natürlich ungeeignet.

von Alexander M. (a_lexander)


Lesenswert?

Oliver S. schrieb:
> Alexander M. schrieb:
>> Kann mir da jemand vielleicht weiterhelfen? Sind diese Algorithmen evtl.
>> sogar ähnlich zur Erstellung von G-Code für 3D Drucker / CNC Maschinen?
>
> Ums mal kurz zu beantworten: Nein.
>
> Dein Artikel ist halt im wesentlichen veraltet. Alle Saugroboter, die
> heutzutage Stand der Technik sind, funktionieren mehr oder weniger
> ähnlich: Raum in Quadrate aufteilen, und die eins nach dem anderen
> absaugen. Erst den Rand, dann Bahn für Bahn die Fläche, oder umgekehrt.
> Hindernisse werden umfahren. Orientieren tun die sich über LIDAR oder
> Kameras an den Wänden, auf den cm genau. Das funktioniert erstaunlich
> gut, und ohne übersehen Ecken.
>
> Bei Rasenmährobotern klappt das mangels Wänden nicht. Die allermeisten
> fahren daher noch zufällige Zickzackmuster. Auch das führt allerdings zu
> guten Ergebnissen, nur sind die Fahrzeiten länger, um sicherzustellen,
> daß auch alles gemäht wird.
>
> Bahnenmähen mit Orientierung per Radumdrehung zählen plus etwas
> Funkpeilung gibts von Bosch, funktioniert aber nur mittelmäßig. Per
> Differential-GPS gehts besser, das gibt es aber nur als Selbstbau -
> Stichwort Ardumäher. In dem Bereich wird sich sicherlich in den nächsten
> Jahren noch was tun.
>
> Oliver

Wobei der Ardumower sein Gebiet nicht einfach "Bahn für Bahn" abfährt, 
sondern sein Gebiet schon nochmal in kleinere Polygone aufteilt.
Siehe Minute 18:05 https://www.youtube.com/watch?v=QT4dSrSzJAc

--> Die Frage ist, mit welchem Algorithmus wird diese Map so erstellt? 
Muss da der Kunde selbst seine "Polygone" & "Richtung zum Mähen pro 
Polygon" einzeichnen oder gibt es da bereits einen guten Algorithmus, 
der irgendwie erkennt, wie die Unterpolygone gute verteilt werden...

Beispielhaft eine Fläche mit meiner logischen Einteilung der 
Unterflächen. Genau das müsste halt der Algorithmus alleine schaffen, 
aber ich bin mir sehr unschlüssig, ob das geht?!
---------
|       |
|   1   |
|       |
-----|  |
     | 2|
     |  |
-----   |
|       |
|   3   |
|       |
---------

Grüße

: Bearbeitet durch User
von Alexander M. (a_lexander)


Lesenswert?

Anderer Ansatz schrieb:
> Bei 3D Druckern gibts doch auch Open Source CAM Software. Da kannst Du
> dann sogar selber rein schauen.
>
> Bsp.
> PyCAM
> Splic3r

Danke, vielleicht geht es wirklich in die Richtung. Leider hab ich hier 
noch kein gutes Tutorial gesehen, in dem mal so eine Software 
nachprogrammiert wird. Was sind denn da die besten Schlagwörter: CAM 
Software, G-Code,...?

Grüße

von Jemand (Gast)


Lesenswert?

Hallo

Rolf M. schrieb:
> Gibt es da die "Wände" nicht in Form eines Drahtes, den man auf den
> Boden legt oder eingräbt?

Und noch ein Punkt der nicht unbedingt für einen der (privat bezahlbaren 
und unterbringbaren) Mähroboter spricht.
Der Draht muss ja auch erstmal installiert werden - soll das Wetterfest, 
stolper frei und was sein was auch 1 Jahrzehnt und länger hält und in 
dieser Zeit keiner Wartung bedarf ist der Installationsaufwand schon 
heftig.

Was mir nebenbei eingefallen ist:
Ein "normaler" Mäher bedarf Wartung und Reinigung - das wird bei so 
einen Mähroboter auch der Fall sein - vermutlich wegen der nun mal (im 
privaten Umfeld) eingeschränkten Größe eher sogar mehr.

Ob so ein Mähroboter einen wirklich schweißtreibende und ungeliebte 
Arbeit abnimmt bezweifele ich immer mehr.

Wie schon in meinen vorausgehenden Beitrag geschrieben:
Es geht mir - nicht-(!) um die 60m² topfebenen "Englischen Zierrasen" in 
der Neubaugegend sondern... siehe man erster Beitrag...

Und beim Staubsaugerroboter ist es vom letztendlich auch nicht anders - 
nur das Staubsaugen generell kein Spaß macht und daher in ganz 
speziellen Fällen so ein Saugroboter ein klein wenig Arbeit abnimmt.

Tja - alles mehr ein nettes Nerdspielzeug bzw. eine Arbeitserleichterung 
da wo sowieso kaum Arbeit anfällt - aber nichts was einen wenigstens 
eine der vielen nervigen und ungeliebten Pflichten abnimmt und was man 
einmal eingeschaltet einfach "vergessen" kann...

von Stefan F. (Gast)


Lesenswert?

Alexander M. schrieb:
> Danke, vielleicht geht es wirklich in die Richtung. Leider hab ich hier
> noch kein gutes Tutorial gesehen, in dem mal so eine Software
> nachprogrammiert wird.

Wahrscheinlich, weil man dafür ja nur 3 Zeilen Code braucht. Dafür 
braucht es kein Tutorial.

(ironisch gemeint)

von Harald (Gast)


Lesenswert?

Jemand schrieb:
> Der Draht muss ja auch erstmal installiert werden - soll das Wetterfest,
> stolper frei und was sein was auch 1 Jahrzehnt und länger hält und in
> dieser Zeit keiner Wartung bedarf
Habe bei mir den Draht in einen extra Schlauch gezogen, durch diesen 
Schutz lebt die Installation schon länger als 10 Jahre.

> ist der Installationsaufwand schon heftig.

Yoah, geht so. Kann nicht sagen, dass das keine Arbeit war (500qm), aber 
es ging ganz gut, ca. 1/2 Tag.
>
> Was mir nebenbei eingefallen ist:
> Ein "normaler" Mäher bedarf Wartung und Reinigung - das wird bei so
> einen Mähroboter auch der Fall sein - vermutlich wegen der nun mal (im
> privaten Umfeld) eingeschränkten Größe eher sogar mehr.

Wartung: 2x Jahr Messer wechseln, dauert 5 Minuten. Alle 3-5 Jahre Akku 
tauschen, dauert 30 Minuten. Ganz selten mal ein Ausfall, kann man als 
technisch versierter Mensch alles selber machen, Ersatzteile bei 
Husqvarna/Gardena recht preiswert.

>
> Ob so ein Mähroboter einen wirklich schweißtreibende und ungeliebte
> Arbeit abnimmt bezweifele ich immer mehr.

Oh doch, auf jeden Fall. Bei einem guten Produkt läuft das von ganz 
alleine. Ich persönlich rate zu Gardena/Husqvarna, die haben evtl. nicht 
immer den heißen Sch… der irgendwo beworben wird aber die Dinger 
funktionieren einfach tadellos.

von Framulestigo (Gast)


Angehängte Dateien:

Lesenswert?

Eine simulierte Umgebung (links) aus Sicht des Roboters (rechts als 
Gridmap, also als 2D-Array. Die vom Laserscanner detektierten 
Hindernisse (weiß) sind hier bereits um den Radius des Roboters 
vergrößert, so dass nur die befahrbaren Punkte in grau dargestellt 
werden).

Was ich mir vorstellen könnte:
- Extrahiere aus den zusammenhängenden freien Feldern im Array 
horizontale oder vertikale Linien
- Fasse benachbarte Linien mit benachbarten Endpunkten zu Linienblöcken 
zusammen (habe ich in der Grafik mal durch die roten Balken für den 
oberen Raum angedeutet). Diese Blöcke haben zwei Eck- oder 
Ein-/Ausfahrtpunktepaare.

Wenn mich nicht täuscht, muss man dann "nur" noch die 
Ein-/Ausfahrtpunktepaare der Linienblöcke auf kürzestmögliche 
Verbindungswege untersuchen (Travelling Salesman?).

Praktisch steht allerdings im Weg:
- Die Lage der Map wird durch den Startwinkel des Roboters bestimmt. Sie 
kann auch z.b. 30° gedreht sein. Das müsste man transformieren.
- Real ist die Map nicht statisch. Für einen Staubsaugerroboter ist in 
der Regel die liegengebliebene Sporttasche als temporäres Hindernis 
nicht in der Karte verzeichnet. Sie wird erst unterwegs von den 
Nahfeldsensoren erfasst und bringt den Masterplan unter Umständen 
gewaltig durcheinander.

von Rolf M. (rmagnus)


Lesenswert?

Stefan ⛄ F. schrieb:
> Alexander M. schrieb:
>> Danke, vielleicht geht es wirklich in die Richtung. Leider hab ich hier
>> noch kein gutes Tutorial gesehen, in dem mal so eine Software
>> nachprogrammiert wird.
>
> Wahrscheinlich, weil man dafür ja nur 3 Zeilen Code braucht. Dafür
> braucht es kein Tutorial.

Klar, in Arduino-Manier:
1
Map map = LoadMap();
2
map.subdivide();
3
Robot.drive(map);

von Oliver S. (oliverso)


Lesenswert?

Harald schrieb:
> Schon passiert, dieses Jahr wird bereits ausgeliefert.
>
> Husqvarna Epos

Na ja,

„ Die Mähroboterlösung eignet sich für den Einsatz auf öffentlichen 
Flächen, wie Fußballstadien, Golfanlagen, Stadtparks und Firmengeländen. 
Für private Rasenfläche ist EPOS nicht vorgesehen.“

Der fährt nicht auf den Zentimeter genau fahren, sondern bleibt halt 
ungefähr auf dem Grundstück. Liegt Preislich auch eher beim Kleinwagen.

iRobot hatte einen Rasenmähroboter ohne Draht entwickelt, den aber kurz 
vor Markteinführung zurückgezogen.

Dann gibts ein Startup, das ein Dings Namens Toadi baut. Der soll 
irgendwann mal alles können, aber bisher klappt das auch noch nicht.

Da ist überall noch viel Luft nach oben.

Der einzige, der tatsächlich funktioniert, ist der Ardumäher, nur ist da 
halt die Hardware fraglich.

Alexander M. schrieb:
> --> Die Frage ist, mit welchem Algorithmus wird diese Map so erstellt?
> Muss da der Kunde selbst seine "Polygone" & "Richtung zum Mähen pro
> Polygon" einzeichnen oder gibt es da bereits einen guten Algorithmus,
> der irgendwie erkennt, wie die Unterpolygone gute verteilt werden...

Ardumäher ist Open source. Anschauen kannst und musst du dir das einfach 
selber.

Jemand schrieb:
> Der Draht muss ja auch erstmal installiert werden - soll das Wetterfest,
> stolper frei und was sein was auch 1 Jahrzehnt und länger hält und in
> dieser Zeit keiner Wartung bedarf ist der Installationsaufwand schon
> heftig.

Quark. Draht verlegen klingt genauso einfach, wie es ist: einmal rum 
damit um den Garten, das war’s. Ist in weniger als einer Stunde 
erledigt.

Oliver

: Bearbeitet durch User
von Alexander M. (a_lexander)


Lesenswert?

> Ardumäher ist Open source. Anschauen kannst und musst du dir das einfach
> selber.
>

Leider nicht dieser Teil, die Kartenerstellung erfolgt nämlich in der 
App, die nicht Open Source ist ;)

von Alexander M. (a_lexander)


Lesenswert?

Framulestigo schrieb:
> Was ich mir vorstellen könnte:
> - Extrahiere aus den zusammenhängenden freien Feldern im Array
> horizontale oder vertikale Linien
> - Fasse benachbarte Linien mit benachbarten Endpunkten zu Linienblöcken
> zusammen (habe ich in der Grafik mal durch die roten Balken für den
> oberen Raum angedeutet). Diese Blöcke haben zwei Eck- oder
> Ein-/Ausfahrtpunktepaare.

Hallo, Kannst du das vielleicht konkretisieren? Ich würde nämlich gern 
im Detail verstehen, was du damit meinst :D...

Grüße

von Harald (Gast)


Lesenswert?

Oliver S. schrieb:
> Der fährt nicht auf den Zentimeter genau fahren, sondern bleibt halt
> ungefähr auf dem Grundstück. Liegt Preislich auch eher beim Kleinwagen.

Da liegst Du falsch. Google mal nach ublox F9P, das sind RTK Module für 
ca 100€, einen setzt Du als Ref, den mobilen als Mobile, dann eine 
beliebige Funkstrecke zwischen den Modulen für die Korrekturdaten und 
fertig ist die cm-genaue Navigation im Bereich des Kurzstreckenfunks. 
Klingt zu einfach? Schon selber mit gearbeitet, geht wie doof. Einzig 
die Korrekturdaten sind mit min 1kb pro Sekunde recht happig. Du musst 
keinerlei Kenntnisse über den Aufbau der Korrekturdaten haben, einfach 
1:1 beim Mobilmodul einspeisen.

von Harald (Gast)


Lesenswert?

Oliver S. schrieb:
Der fährt nicht auf den Zentimeter genau fahren, sondern bleibt halt 
ungefähr auf dem Grundstück. Liegt Preislich auch eher beim Kleinwagen.

Was Du meinst sind diese Standard-GPS Lösungen, die es schon seit 
längerer gibt. Da ist es tatsächlich so, dass die ungefähr sich merken, 
wo sie schon warten. Das hat in der Tat nichts mit RTK zu tun.

von Framulestigo (Gast)


Angehängte Dateien:

Lesenswert?

Alexander M. schrieb:
> Hallo, Kannst du das vielleicht konkretisieren? Ich würde nämlich gern
> im Detail verstehen, was du damit meinst :D...

Du kannst doch die Karte Zeile für Zeile durchgehen und Dir befahrbare 
Linien herauspinnen (pro Zeile eine Liste von 1D-Linie mit StartY und 
EndY).
Anschließend suchst Du von oben nach unten diese Zeilenlisten durch und 
vergleichst mit dem Nachbarelement, welche Linien mit StartY und EndY in 
etwa (+/-2) übereinstimmen, so dass sich ein zusammenhängend abfahrbarer 
Block bildet.

So einen Linienblock (Bild) kann man im einfachsten Fall im Zickzack 
abfahren. In angehängten Bild fange ich unten links an, dann endet das 
Muster oben rechts. Würde ich unten rechts anfangen, wäre der Endpunkt 
oben links.

Das ist nicht immer so: Hätte der gezeigte Block eine Zeile mehr, würden 
Start und Endpunkt auf der gleichen Seite liegen. Das wird einfach 
dadurch bestimmt, ob die Anzahl der Linien im Block gerade oder ungerade 
ist.
Letztlich entscheidend: Es gibt vier mögliche Startpunkte (Du kannst 
Start- und Endpunkt auch tauschen), zu jedem Startpunkt aber nur genau 
einen Endpunkt.

Egal, welcher der vier Startpunkte genutzt wird, innerhalb des Blockes 
ist der zu fahrende Weg gleich. Nach außen betrachtet kommt man aber 
jeweils an einem anderen Endpunkt an. Das wird wichtig, wenn man 
abschlie0end versucht, den Weg zwischen den Linienblöcken möglichst kurz 
zu halten. Hier muss man jeweils die vier möglichen Startpunkte aller 
Linienblöcke testen.
Das wird beim Roboter rechnerisch recht kostspielig, weil er sich nicht 
einfach wie der Druckkopf am 3D-Drucker über die Hindernisse 
herüberlupfen kann, sondern erst mit dem Pathfinder die Länge der 
Verbindungen suchen muss.

Bei n Blöcken sind das (wenn ich mich nicht verrechnet habe) 8*(n)(n-1) 
resultierende Verbindungen. Bevor man sich dem optimierten 
Verbindungstesten hingibt, müssen so bei z.B. 30 Blöcken erst einmal 
7000 Wege generiert werden.
Da könnte ich mir vorstellen, dass man da in der Praxis doch etwas 
pfuscht. Viel mehr als ein Raspi-Äquivalent haben auch die intelligenten 
Sauger nicht an Bord.

von (prx) A. K. (prx)


Lesenswert?

Oliver S. schrieb:
> Quark. Draht verlegen klingt genauso einfach, wie es ist: einmal rum
> damit um den Garten, das war’s. Ist in weniger als einer Stunde
> erledigt.

Allerdings ist der Garten lebendiger als der Draht. Es kann also schon 
sein, dass irgendwann Anpassungen fällig werden.

von (prx) A. K. (prx)


Lesenswert?

Jemand schrieb:
> Der Draht muss ja auch erstmal installiert werden - soll das Wetterfest,
> stolper frei

On the Internet, nobody knows you're a mole.
Der wird einige Zentimeter unterirdisch verlegt.

von Hr. Karlsbach (Gast)


Lesenswert?

Framulestigo schrieb:

> Da könnte ich mir vorstellen, dass man da in der Praxis doch etwas
> pfuscht. Viel mehr als ein Raspi-Äquivalent haben auch die intelligenten
> Sauger nicht an Bord.

Nicht viel mehr? Wozu auch? Da reicht ein kleiner µC. Einfach mal ein 
Buch über Algorithmen lesen.

von (prx) A. K. (prx)


Lesenswert?

Jemand schrieb:
> Ob so ein Mähroboter einen wirklich schweißtreibende und ungeliebte
> Arbeit abnimmt bezweifele ich immer mehr.

Kann auch eine Frage des Alters sein.

von Framulestigo (Gast)


Lesenswert?

Framulestigo schrieb:
> (pro Zeile eine Liste von 1D-Linie mit StartY und
> EndY).

Ups Korrektur: StartX und EndX sollte es heißen

von Alexander M. (a_lexander)


Lesenswert?

Framulestigo schrieb:
> Alexander M. schrieb:
>> Hallo, Kannst du das vielleicht konkretisieren? Ich würde nämlich gern
>> im Detail verstehen, was du damit meinst :D...
>
> Du kannst doch die Karte Zeile für Zeile durchgehen und Dir befahrbare
> Linien herauspinnen (pro Zeile eine Liste von 1D-Linie mit StartY und
> EndY).
> Anschließend suchst Du von oben nach unten diese Zeilenlisten durch und
> vergleichst mit dem Nachbarelement, welche Linien mit StartY und EndY in
> etwa (+/-2) übereinstimmen, so dass sich ein zusammenhängend abfahrbarer
> Block bildet.
> ...

Um das aber jetzt komplett zu verstehen:
In deiner Variante werden diese "Blöcke" (bei dir rot umrandet) nicht 
automatisch generiert, sondern das muss man dann selbst machen? Oder 
hast du hier gedanklich bereits einen "Kantenalgorithmus" implementiert, 
der dann automatisch dieses Rechteck erstellen kann? Wie sieht es dann 
aber aus, wenn die Kanten nicht 90° sind...?

Grüße

von Rainer V. (a_zip)


Lesenswert?

Jemand schrieb:
> Tja - alles mehr ein nettes Nerdspielzeug bzw. eine Arbeitserleichterung
> da wo sowieso kaum Arbeit anfällt - aber nichts was einen wenigstens
> eine der vielen nervigen und ungeliebten Pflichten abnimmt und was man
> einmal eingeschaltet einfach "vergessen" kann...

Typisches Beispiel war mein leider schon verstorbener Freund und 
Arbeitskollege. Ein Junggeselle, der neben anderen Spielereien einen 
(natürlich selbst aufgepimpten) Saugroboter hatte. Das Ding ist Tag und 
Nacht durch die Wohnung geeiert und hat deshalb kaum größere 
Dreckansammlungen gefunden. Es hat zuverlässig seine Ladestation 
gefunden und ebenso zuverlässig nach Entleerung verlangt. Ob 
Nerdspielzeug oder nicht...Staubsaugen mußte mein Freund sein Lebtag 
nicht mehr :-)
Gruß Rainer

von Bernd (Gast)


Lesenswert?

Das ist zwar mit Sicherheit nicht der schnellste Algorithmus, aber er 
dürfte funktionieren:
https://de.wikipedia.org/wiki/Floodfill

von Framulestigo (Gast)


Angehängte Dateien:

Lesenswert?

Alexander M. schrieb:
> In deiner Variante werden diese "Blöcke" (bei dir rot umrandet) nicht
> automatisch generiert, sondern das muss man dann selbst machen? Oder
> hast du hier gedanklich bereits einen "Kantenalgorithmus" implementiert,
> der dann automatisch dieses Rechteck erstellen kann? Wie sieht es dann
> aber aus, wenn die Kanten nicht 90° sind...?

Nein, das gießt man in Code. Im Bild einmal aus zwei benachbarten Zeilen 
die extrahierten Linien farblich markiert (blau/gelb). Am rechten Rand 
umkringelt ein Sprung (Da würde der Punktevergleich nicht passen).
Rechteckig muss ein Linienblock auch nicht sein (rot umrandet, könnte 
auch ein Trapez, ein Parallelogramm oder etwas Bauchiges (ich, aber ohne 
Arme und Beine) sein).


Hr. Karlsbach schrieb:
> Nicht viel mehr? Wozu auch? Da reicht ein kleiner µC. Einfach mal ein
> Buch über Algorithmen lesen.
Es lassen sich aber so schlecht Bilder aus dem Buch oder dem Controller 
hier einstellen.
Und ROS will auch nicht so richtig auf meinem Nucleo.
Vielleicht soll der Robbi auch mal singen und tanzen. Bin gespannt auf 
Deinen Lektürevorschlag. :)

(Ha, "Robotertanzen in C++")

von Alexander M. (a_lexander)


Lesenswert?

Framulestigo schrieb:
> Alexander M. schrieb:
>> In deiner Variante werden diese "Blöcke" (bei dir rot umrandet) nicht
>> automatisch generiert, sondern das muss man dann selbst machen? Oder
>> hast du hier gedanklich bereits einen "Kantenalgorithmus" implementiert,
>> der dann automatisch dieses Rechteck erstellen kann? Wie sieht es dann
>> aber aus, wenn die Kanten nicht 90° sind...?
>
> Nein, das gießt man in Code. Im Bild einmal aus zwei benachbarten Zeilen
> die extrahierten Linien farblich markiert (blau/gelb). Am rechten Rand
> umkringelt ein Sprung (Da würde der Punktevergleich nicht passen).
> Rechteckig muss ein Linienblock auch nicht sein (rot umrandet, könnte
> auch ein Trapez, ein Parallelogramm oder etwas Bauchiges (ich, aber ohne
> Arme und Beine) sein).
> ...

Hallo,

Okay, ich glaub, ich weiß ungefähr auf was du hinaus willst...Nur bis 
auf das letzte Detail hab ich das ehrlich gesagt noch nicht verstanden. 
Speziell bei Hindernissen oder sehr verwinkelten Flächen ist das dann 
wahrscheinlich eher schwierig, oder?

Grüße

von Alexander M. (a_lexander)


Lesenswert?

Bernd schrieb:
> Das ist zwar mit Sicherheit nicht der schnellste Algorithmus, aber er
> dürfte funktionieren:
> https://de.wikipedia.org/wiki/Floodfill

Hallo,

Ja das ist schon mal eine gute Idee, nur dann müssten halt auch alle 
Punkte eingespeichert werden, was 1. sehr viel Speicherplatz benötigt 
und 2. das Gerät Punkt für Punkt anfahren würde ohne mal "mehrere" 
Punkte in einer Linie z. B. anzufahren. Solche Algorithmen gehen aber 
schon in die richtige Richtung.

Grüße

von Oliver S. (oliverso)


Lesenswert?

Harald schrieb:
> Da liegst Du falsch. Google mal nach ublox F9P, das sind RTK Module für
> ca 100€, einen setzt Du als Ref, den mobilen als Mobile, dann eine
> beliebige Funkstrecke zwischen den Modulen für die Korrekturdaten und
> fertig ist die cm-genaue Navigation im Bereich des Kurzstreckenfunks.

Mag ja sein, was aber was hat das mit aktuell kaufbaren Rasenmährobotern 
zu tun?

Oliver

von Harald (Gast)


Lesenswert?

Oliver S. schrieb:
> Mag ja sein, was aber was hat das mit aktuell kaufbaren Rasenmährobotern
> zu tun?

Na, das ist die Technik, die im Epos eingesetzt wird. Du hattest ja 
gemeint, dass das enthaltene GPS nicht cm-genau wäre und mal gerade 
dafür sorgen würde das Gerät auf dem Grundstück zu halten.

Der Epos ist ab sofort kaufbar und hat nichts mehr mit allen bisherigen 
Ansätzen zu drahtlosen Rasenmährobotern zu tun. Das der nicht für 
private Flächen vorgesehen ist hat wohl eher damit zu tun, dass die 
Einführungsphase nicht zu üppig werden soll und Privatleute da eben eher 
nerven. Es gibt ja genug Leute, denen der hohe Kaufpreis schlichtweg 
egal ist.

von Klaro (Gast)


Lesenswert?

Wozu einen Algorithmus?
Hast du keine Möbel, klappt das Staubsaugen mit den üblichen simplen 
Algorithmen recht gut, bei NULL Wohnkomfort.

Hast du Möbel, hast du immer (!) schlecht gereinigte Bereiche.
Auch wenn alle Möbel "hochbeinig" sind, reicht dazu schon, dass ein
Socken noch da liegt, wo vorher gekrümelt wurde.

Mit einer Stunde (<1% der Wach-Zeit) weniger geistlosem Video-Streaming
pro Woche hast du eine 100 m² Bude ordentlich gesaugt und sogar noch
ein klein wenig für die Fitness getan.

von Alexander M. (a_lexander)


Lesenswert?

Klaro schrieb:
> Wozu einen Algorithmus?
> Hast du keine Möbel, klappt das Staubsaugen mit den üblichen simplen
> Algorithmen recht gut, bei NULL Wohnkomfort.
>
> Hast du Möbel, hast du immer (!) schlecht gereinigte Bereiche.
> Auch wenn alle Möbel "hochbeinig" sind, reicht dazu schon, dass ein
> Socken noch da liegt, wo vorher gekrümelt wurde.
>
> Mit einer Stunde (<1% der Wach-Zeit) weniger geistlosem Video-Streaming
> pro Woche hast du eine 100 m² Bude ordentlich gesaugt und sogar noch
> ein klein wenig für die Fitness getan.

Mir geht's in erster Linie um die Machbarkeit, und nicht um die 
Sinnhaftigkeit :D... Mag sein, dass das mit bisherigen Methoden ganz gut 
geht, aber vielleicht geht es ja mit anderen Methoden noch besser...

Also deshalb abschließend nochmals die Frage:
Kann sich jemand hier vorstellen, mit welchem Algorithmus diese Karte so 
unterteilt wurde, wie in Minute 18:05 zu sehen ist?
https://www.youtube.com/watch?v=QT4dSrSzJAc&t=1066s

Grüße

von Karsten (Gast)


Lesenswert?

Alexander M. schrieb:

> Kann sich jemand hier vorstellen, mit welchem Algorithmus diese Karte so
> unterteilt wurde, wie in Minute 18:05 zu sehen ist?
> https://www.youtube.com/watch?v=QT4dSrSzJAc&t=1066s

Poste doch einfach einen Screenshot von der Karte.

von Alexander M. (a_lexander)


Angehängte Dateien:

Lesenswert?

Klar, Bild im Anhang. Nur ist das da eben leider nicht so ganz gut 
sichtbar...
Die schwarzen Punkte sind die Punkte, die er nacheinander anfahren soll. 
Die schwarzen Linien sind die vorhergesehenen Strecken, wie der Mäher 
dann fahren soll.

--> Hier wird halt irgendwie die Karte einigermaßen gut unterteilt, und 
ich frage mich: Wie genau funktioniert diese "Aufteilung".

Grüße

von Yalu X. (yalu) (Moderator)


Lesenswert?

Alexander M. schrieb:
> Klar, Bild im Anhang. Nur ist das da eben leider nicht so ganz gut
> sichtbar...

Hier gibt es bessere Bilder, falls das jemand analysieren möchte:

  https://wiki.ardumower.de/index.php?title=Ardumower_Sunray#Mowing_pattern.2C_pattern_angle.2C_mowing_offset

von Oliver S. (oliverso)


Lesenswert?

Harald schrieb:
> Der Epos ist ab sofort kaufbar und hat nichts mehr mit allen bisherigen
> Ansätzen zu drahtlosen Rasenmährobotern zu tun.

Nun ja, da bisher noch keine Geräte in freier Wildbahn unterwegs sind, 
warten wir da einfach mal ab, ob die Dinger unterhalb von Fußball.  oder 
Golfplätzen einsetzbar sind.

Wenn’s (bezahlbar) klappt, prima, wenn nicht, muß halt weiterentwickelt 
werden.

Oliver

von Willy L. (sabberlotte)


Lesenswert?


von Joachim (Gast)


Lesenswert?


von MaWin (Gast)


Lesenswert?

Oliver S. schrieb:
> Quark. Draht verlegen klingt genauso einfach, wie es ist: einmal rum
> damit um den Garten, das war’s. Ist in weniger als einer Stunde
> erledigt.

Wenn man den seit der Finanzkrise üblichen Handtuchrasen der Neubauslums 
hat

Wer einen GARTEN hat, hat mehrere Rasenflächen (zumindest Vorgarten und 
Garten) und innerhalb der Rasenflächen Hindernisse wie Bäume mit 
Wurzeln, Rabatten, Gehwegsteinen, und natürlich Bodenunebenheiten wie 
Spundmauern oder Regenablaufrinnen.

All das muss man umzäunen, sonst bleibt das Kinderspielzeug stecken.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.