PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 360° Sensor Netz



nick-d-n
03.10.2020, 00:53
Hallo ich bin noch neu in dem Thema,

und meinen Roboter hab ich noch nicht mal zu laufen gebracht, weil noch immer die Batterien fehlen.
Aber ich mach mir schon so meine Gedanken wie es weiter gehen soll, wenn die ersten Fahrtest geschafft sind.

Mein Roboter kann wegen den "Mecanum Wheels" Rädern ohne Wendung seine Fahrrichtungen jeder Zeit ändern. Also Fahrrichtung in X und Y Achse.

Ich will eigentlich dass der Roboter irgend wann mal Autonom fahren kann.
Dafür brauch ich ein Sensornetzwerk das nach Möglichkeit alle Hindernisse (360° Rundum) um dem Fahrzeug erkennt.

Ich hab mir schon ein paar Gedanke gemacht.
Wenn ich 4 Sensoren im 45° Winkel schräg vor die Räder, auf den Boden richte. (Rot auf dem Bild)
Dann kann ich die meisten Hindernisse Vor- und Neben den Rädern erkenne.
Sogar Stufen könne ich erkennen und damit verhindern dass der Roboter eine Treppe runter stürzt.

Als Fern-Sensoren würde ich,
in Hauptfahrrichtung zwei Sensoren (Rechts/Links) aufbauen
und noch mal je einen Sensor für Rechts / Links und Hinten. (Grün auf dem Bild)

https://www.roboternetz.de/community/attachment.php?attachmentid=35244&d=1601677146

Was meint ihr?

Ultraschall Sensoren liefern mir einen Analogen Wert als Abstand, was gut für die Fernsensoren ist.


Für den Nahbereich (also direkt vor den Rädern) würde mir eigentlich Binär reichten, aber ich brauch zwei Arbeitspunkte für die Sensoren (Zu-Tief oder Zu-Hoch um weiter zu fahren)
Also entweder Infrarot oder auch wieder Ultraschall also Messmethode.

Was meint ihr geht das mit so vielen Ultraschall Sensoren?
Was sollte ich beachten?
Und wie lese ich am besten so viele Analogwerte ein?
Gibt es eine Möglichkeit die Sensoren über einen Bus ein zu lesen? z.B. I2C ???

gruß Dirk

oberallgeier
03.10.2020, 09:45
Halo Dirk!

.. Was meint ihr geht das mit so vielen Ultraschall Sensoren? .. Was sollte ich beachten? .. DirkNa gehen tut das sicher.

Mit Ultraschallsensoren alleine würde ich das nicht machen. Die muss man, wenn man sicher detektieren will, "alleine" - einzeln, nacheinander - benutzen um Störungen von Echos benachbarter Sensoren zu verhindern. Da die meist bis zu sechs Meter funktionieren braucht man - neben der Verarbeitungszeit - ne Laufzeit von 2x6m zwischen einzelnen Messungen. Schall läuft, grob gerechnet, über 12 m Distanz rund 0,04 sec. Mehr z.B. hier (https://www.mikrocontroller-elektronik.de/ultraschallsensor-hc-sr04/). Mit Vorsicht betrachtet also weniger als 20 Messungen pro Sekunde.

Die Charakteristik der US-Sensoren ist zu beachten. Bestenfalls hat man ne Keule von ca. ± 30° (http://www.hit-karlsruhe.de/hit-info/info-ws12/Ultraschallsensor_Eingabe_Verarbeitung/standdertechnik.html) bei kürzeren Entfernungen, wenns über einen Meter oder so rausgehen soll, wird man vorsichtig mit ± 15°/20° rechnen. Auf Grundlage ± 20° braucht mal also bis zu neun US-Sensoren für Rundumblick. Nach Milchmädchenrechnung also 20 Messungen pro Sekunde für zehn Sensoren macht zwei Messungen pro Sekunde. Dann fährt der Bot mit 2 m/s bereits im kritischen Bereich (alles mit wenig Sicherheitsreserve/n). Natürlich wird man für Deine Omniweel-Ausrüstung softwaremässig immer nur die Sensoren in Fahrtrichtung betreiben/ingang setzen . . . (natürlich gilt Messung in Fahrtrichtung bei so ziemlich allen autonomen Varianten *gg*)

Möglicherweise bietet da die alte Lösung von Siro (https://www.roboternetz.de/community/threads/31179-Schnelle-180%C2%B0-IR-Sto%C3%9Fstange-mit-Winkel-und-grober-Entfernung) mit Leuchtdioden die besseren Möglichkeiten? Sieht jedenfalls im Video gut (https://www.youtube.com/watch?v=AAdm9u9GZCo) aus.

Aber bei geringerer Geschwindigkeit funktionieren viele Bots hier im Forum auch mit weniger Sensoren. Und für den Nahbereich ist die Lösung mit Fühlern wie z.B. beim Nibobee (http://www.nicai-systems.com/de/nibobee) recht praktisch; sieht bei zwei "Fühlern" auch pfiffig aus.

Da man ja, wie oben erwähnt, eher nur in Fahrtrichtung "fühlen" muss, gehts ja z.B. wie bei meinem Dottie (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=357178&viewfull=1#post357178) oder dem fast baugleichen System im MiniD0 (https://www.roboternetz.de/community/threads/36121-Autonom-in-kleinen-Dosen-R2_D03-Nachfolger-R3D01?p=495507&viewfull=1#post495507).

Defiant
03.10.2020, 10:56
Wieso nimmst du keinen Laserscanner, z.B. RPLidar (https://www.exp-tech.de/sensoren/entfernungnaeherung/8946/rplidar-a1m8-360-degree-laser-scanner-kit-12m)? 5 US-Sensoren sind auch nicht gerade billig und haben das oben beschriebe Problem mit der ungenauen Keule, du siehst dann ein Tischbein, kannst aber nicht genau detektieren wo es ist, also ob links oder rechts mehr Platz ist zum Vorbeifahren.

Die Hauptfrage hier ist wohl, ob du die Datenmengen von einem Laserscanner verarbeiten kannst, was hast du denn für einen Prozessor an Bord?

-

Die SRF10 und SRF08 US-Sensoren können auch I2C.

nick-d-n
03.10.2020, 21:06
Hallo, ich danke Euch schon mal für die guten Antworten.
Die Ultraschall Sensoren abhängig von Fahrrichtung und dann Pulsweise Inbetrieb zu nehmen ist eine Idee die ich noch nicht hatte.

Der 2D Laserscanner ist natürlich die Luxus Variante, die mir auch sehr gefällt.

Standardmäßig ist eine Atmel MEGA2560 verbaut, also nicht ganz unfähig das kleine Ding.
Aber ich will abhängig vom Entwicklungsstand gern mehrere µC verbauen.

Einer für die Sensoren,
Einer für die Fahrmodi´s
Einer für die Kartenerstellung,

Falls die Fahrdaten und Karte noch an ein Tablett gesendet werden soll oder,
Falls noch ein ( Fangen / Jagen ) von zwei Roboter statt finden soll,
dann würde ich dies noch mal über einen µC realisieren.


Ihr seht schon Ideen hab ich noch einige (ich will halt gern mich mit dem Roboter aus toben, um mich mal wieder etwas mit Elektronik und Programmierung auseinander zu setzen.


gruß Dirk

oberallgeier
04.10.2020, 09:43
Hallo Dirk,
.. Sensoren abhängig von Fahrrichtung .. Idee die ich noch nicht hatte ..Na schön, vielleicht hilft´s. Und wenns nicht grad für nen Roboterkampf sein soll, dann ist auch kein Angriff(Crash) "von NICHTvorne" zu befürchten.


.. Aber ich will abhängig vom Entwicklungsstand gern mehrere µC verbauen ..Genau so hab ich es bei meinem archie (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=638683&viewfull=1#post638683) gemacht. Kopfcontroller (KoCo) im Kopf, Armcontroller (ARCo + ALCo) in den Oberarmen (https://www.roboternetz.de/community/threads/61379-Kopfsache-und-ein-m1284-etliche-Servos-viel-Alu?p=637320&viewfull=1#post637320) usf. UND ! ! ich hatte schon anfangs ziemlich genau die Topologie des Ganzen (https://dl.dropbox.com/s/n7wo15ku238b4si/R5_konfiguration2020.pdf?dl=0) geplant und aktuell gehalten. Dann hat man es bei der Kommunikation (manchmal?) etwas leichter. Kommunikation archie-intern eigentlich nur I²C, JEDE Platine mit UART für Testläufe und Information etc. vom Terminal/PC aus, die Zentralplatine zusätzlich mit RC-5 (IR-TV-Steuerung) um verschiedene Tasks starten zu können. Beim archie recht ordentlich den ferngesteuerten Modus beim Fahren mit Befehlen links, rechts, schneller, langsamer, Richtungswechsel, stopp, auch mal halbe und ganze Turns rechts und links rum etc.

Nachträge :
Hier noch die IR-TV-FB mit dem Tastencode (https://dl.dropbox.com/s/3s61up989gfqrnq/RC-5_IR-Steuerg_besch-kplt_33%25.JPG?dl=0)

Siehe Angabe im Topo : I²C läuft mit tatsächlichem Clock 600 kHz (https://dl.dropbox.com/s/4vg6d27shh9efcq/i2c_Kurvenform_29Jun2020-1936.jpg?dl=0) bzw. TWBR = 8,6667 - theoretisch, tatsächlich 8bittig, also 8 obwohl ich fast zwei Meter Buskabel habe.

nick-d-n
05.10.2020, 14:41
Hallo Oberallgeier,

Ja I²C als Bus zwischen den µC schwebt mir auch vor.

Na ja Roboter Kampf klingt so dramatisch, das soll es auch nicht werden.
Aber wenn ich einen Roboter so weit hab, dass er alleine sich im Raum gut und sicher bewegt.
Dann war mein Gedanke halt dass zwei Roboter mit IR Licht Fange oder Versteck spielen.

Auf Bewegliche Hinderniss zu reagieren,
ihnen auszuweichen oder zu flogen halte ich für so anspruchsvoll,
dass ich mich damit die nächsten 10 Jahre sicher austoben kann.

@ Alle
Mein Favorit wäre jetzt ja der 360° Laserscanner und für den Nahbereich (Boden) dann die Ultraschall Sensoren.
Je nachdem wie groß der Kegel ist müssten es vielleicht sogar 2 Sensoren je Rad sein.
IR geht ja wahrscheinlich nicht als Überwachung, da ich ja Löcher und Hindernisse erkennen möchte und das Unabhängig vom Untergrund.

Was ich aber zur Zeit überhaupt nicht einschätzen kann ist der Aufwand für den Laserscanner, ich hab schon etwas im Forum gesucht.
Aber viellleicht könnt ihr mir wenigstens das Prinzip der Auswertung etwas nähr birngen.

Der Scanner misst die Entfernung zum nächstem Hinderniss. Dann dreht er sich weiter und misst wieder.
Und als Daten Output bekommt man den Winkel und die Entfernung?
Wie wird daraus eine Karte?

Bei Binärmeldungen hätte ich gedacht dass man in einem Mehrdimensioales Arrays alle Hindernisse als Bit abspreichern kann.
Aber bei einer rotierenden Messung wäre es für mich zur Zeit noch nicht verständliche wie man die Daten verarbeiten kann.
Vielleicht könnt hier mir das etwas erklären.

gruß Dirk

Defiant
05.10.2020, 18:08
Vom Laserscanner bekommst du ein Array der Entfernungen, also Beispiel bei einer Auflösung von 1° bekommst du ein Array mit 360 Float-Werten. Diese Datenmenge mit einem AVR zu verarbeiten wird schon schwierig genug, für die Erstellung von Karten wird üblicherweise ein simultaneous localization and mapping (SLAM) (https://openslam-org.github.io/gmapping)-Algorithmus verwendet, auf einem AVR halte ich das nicht durchführbar.

HaWe
05.10.2020, 18:48
ich würde auch allen, die mit mobilen Robots und room mapping per LIDAR etc anfangen, empfehlen, mindestens einen SAM3X8E (Arduino Due), SAMD51 (Adafruit Grand Central) oder ESP32 zu verwenden. Oder einen Rasperry Pi 2B, 3B oder 3B+.

nick-d-n
07.10.2020, 21:11
Danke für Eure Tipps,

Ich glaub ich weiß jetzt, wie ich das Thema angehe.

Ich werd wirklich erstmal 4 Ultraschall Messungen für den Nahbereich nehmen.
Und wenn der Roboter dann sicher vor Treppenstufen Hindernissen anhält und umdreht.
Also dann werd ich eine Laserscanner mit einem eigenen µC Nachrüsten.

Ich werd aber kein SLAM Verwenden (also keine Karte erstellen)
sondern nur die Messdaten nutzen um vorrauschauender zu fahren und um die Sensorlücken (in der Horizontalen) zu schließen.
Von dem Array muss ich ja auch nicht alle Daten lesen.
Die 90° die in Fahrtrichtung Messen würden ja reichen.
Nach dem kleinsten Wert suchen und ggf. dann einen Ausweichkurs setzen.

Aber jetzt erstmal den Nahbereich absichern und alles zum laufen bringen.

gruß Dirk

Moppi
08.10.2020, 12:44
Hallo!

Ein Gedanke am Rande:

Was können heute Kameras in Sachen Objekterkennung (runde, eckige, evtl. Türrahmen, Pfosten, Farben).
Vielleicht ist es nicht schlecht, auch mal in diese Richtung zu experimentieren, um zu sehen, was sich damit an Erkennung
abdecken ließe. Ergänzen kann man dies mit den üblichen Methoden zur Entfernungsmessung.

MfG

oberallgeier
08.10.2020, 14:29
.. Ich glaub ich weiß jetzt, wie ich das Thema angehe .. erstmal 4 Ultraschall Messungen für den Nahbereich .. und alles zum laufen bringen ..Aus eigener Erfahrung rate ich Dir mal: nimm zwei, leicht gegeneinander verdrehbar. Dann z.B. anfangen mit einem Verdrehwinkel von - sagen wir mal ca. 30° - so ist mit den zweien ein Bereich von 75 bis fast 90° (je nach Messabstand) abzudecken. UND - die Sensoren müssen alternierend messen - erst Nr. 1, wenn das Messergebnis da ist dann 2, dann, wenn vorhanden . . . der Rest, nacheinander, dann Nr. 1 usf. Anders ist vagabundierenden Echos kaum beizukommen. Ergebnisse evtl. auf ein LCDisplay oder PC-Terminalprogramm (per UART).

Dann das spassige an der Vorarbeit: Messtests. Du misst z.B. knapp über dem Fußboden auf verschiedene Hindernisse: Tisch- und/oder Stuhlbeine, Blumen (mit Topf und z.B. überhängendem Grün), Bücherregale - unten in Bodennähe. Dann mal vielleicht 10/15 cm höher und spasseshalber auch mal so auf "halber" Höhe - vielleicht ein Meter. Mal ein Hängeschrank - usf. Mal ein paar verwandte Tests in einer Reihe mit jeweils leichtem Schwenk, z.B. von Hand - etwa je 5°-Schritte gegen ein einzelnes Hindernis. Und mach Dir Gedanken über die Ergebnisse.

Nicht uninteressant ist auch mal ein Test senkrecht nach unten auf Teppichboden ergänzt durch ein paar mit zunehmendem Schief-Winkel - also erst senkrecht nach unten, dann 10° vom Lot geneigt, 20°, 30° usf bis an die 60° oder so. Und zum Abrunden dazu, wenn vorhanden, Test auf Parkett, evtl. Kacheln, Vinyl usf.

Steht wirklich dafür.

Anmerkung: sorry - diesen, vorhergehenden Beitrag irrtümlich gelöscht

nick-d-n
21.04.2021, 00:13
Hallo Gemeinde, ich hab schon lang nix mehr von meinem Projekt geschrieben.

Eigentlich wollte ich auch schon viel weiter sein.
Aber es kommt ja immer anders.

Aber zumindest hab ich die Sensoren erstmal verbaut.
6x Ultraschall Sensoren und
4x IR Sensoren (vorn + hinten)

Vielleicht werde ich die Ultraschallsensoren noch etwas steiler aufstellen,
um besser eine Wand zu erkennen.

Jetzt muss ich mir nur noch die Zeitnehmen und alles Verdrahten damit ich dann mal anfangen kann.

3549035489

jmoors
21.04.2021, 09:00
Das Projekt gefällt mir, ist aber ein irrer Hardware-Aufwand. Da würde ich eine TOF-Kamera oder ein LIDAR bevorzugen.

nick-d-n
21.04.2021, 23:34
Ja ich wollte erstmal dem Roboter ein paar Sensoren verpassen die ihn im Nahbereich vor Fahrfehler schützt.
Danach wollte ich ihm anfangen etwas klüger zu machen.

Ich hab noch vor ein Kompassmodul, eine IR Fernbedienung und ein XYZ Sensor zu verbauen.
Er soll dann irgenwan auch mal den Weg zurück zum Startpunkt finden oder über gezielt zu einem Sender fahren können.
Vielleicht kommt auch ein 360° Lasermessgerät noch mit dazu.

Aber leider geht es seit Ende Februar nicht mehr so richtig weiter.
Mir fehlt irgend wie Zeit und Lust, mit etwas Angst vor Fehlschläge.
Aber ich werde mich jetzt mal darum kümmern das die Sensoren Strom bekommen.

nick-d-n
17.05.2021, 22:13
Hallo ich hab jetzt endlich mal angefangen.
Und auch schon Blut geleckt.

Die Ultraschall Sensoren hab ich jetzt mal zum laufen gebracht.
Aber ich bin mir noch nicht sicher ob der Winkel so gut gewählt ist.
Etwas Senkrechter gibt vielleicht noch mehr vorwarnzeit und etwas mehr nach Vorn und Hinten da eine Wand von Vorne noch nicht so gut erkannt wird.

Aber ich hab mal eine Frage.
Wie groß ist die Streuung der gemessenen Werte?

Ich frag, weil der Roboter gerade still steht.
Und ich die Messdaten lass ich über Arduino Serieller Monitor
Auf dem PC mitschreiben.

Je nach Untergrund und je nach Winkel schwankt der Messwert trotz gleicher Distance sehr stark.

Er mist erst stabil den Abstand mit 55cm dann schiebe ich was in den Weg,
nehme es wieder weg und er Misst plötzlich 120cm für den gleichen Abstand wie vorher bei 55cm.

Der Echte Abstand liegt aber bei ca 13cm

Was mich schon mal zur zweiten Frage bringt (eigentlich ist mir der Zahlenwert ja egal)
aber lasse ich vielleicht irgend wie den Wert flasch berechnen?

Abstand = Gemessene Zeit * 0.01657
Hier mal der Code


digitalWrite(Trig_Echo_1_PIN,LOW);
delayMicroseconds(5);
digitalWrite(Trig_Echo_1_PIN,HIGH);
delayMicroseconds(15);
digitalWrite(Trig_Echo_1_PIN,LOW);

Echo_1 = pulseIn(Echo_1_PIN,HIGH);
Echo_1 = Echo_1*0.01657;

Serial.println(Echo_1);


Ich danke Euch schon mal für die Antworten

- - - Aktualisiert - - -

Ich hab jetzt den Fehler gefunden, das glaube ich zumindest.

Ich fand die Ultraschallsensoren ja so praktisch weil sie im 45° Winkel eingebaut, ja MIN und MAX überwachen sollten.
So das man Stufen und Gegenstände erkennen kann.
Aber durch den Winkel kommt es anscheint zu keiner 100% Erkennung.

Ich hab noch die Orignal "Katzenaugen" Ultraschall Messung auf dem Servomotor.
Damit wird ja im 90° Winkel aber dafür nur Horizontal gemessen.
Und da funktioniert es gut und das Messergebnis ist auch viel genauer.

Was kann ich jetzt machen?
Die Signalqualität von Ultraschall finde ich zumindest im meinem Aufbau als sehr ungeeignet.
Und wenn ich den Winkel ändere geht die Qualität der Signale für den einen Messbereich nach oben aber gleichzeitig für den anderen Messbereich nach unten. Also entweder Gegenstände erkennen oder den Abgrund.

Was meint ihr, macht IR vielleicht mehr sinn?
Allerdings hab ich noch keinen Sensor gefunden der zwei Schaltpunte hat und mir MIN und MAX Abstand liefert.
Also müsste ich immer zwei Sensoren verbauen.

Hat einer Erfahrung und kann mir schon mal tipps geben, so erspare ich mir vielleicht lange Erprobungsphasen.

oberallgeier
18.05.2021, 11:11
.. endlich mal angefangen .. Wie groß ist die Streuung der gemessenen Werte .. Je nach Untergrund und je nach Winkel schwankt der Messwert trotz gleicher Distance sehr stark ..Da hast Du doch schon Antworten auf Deine Frage. Wichtig ist Deine Aussage ".. Untergrund .. Winkel .." - die beiden wichtigen Einflussgrößen. Dass die Temperatur ne Rolle spielt ist eher untergeordnet (aber man sollte dran denken) - denn Du misst ja keine Entfernung sondern die Laufzeit eines Tonbursts zu einem Hindernis und zurück.

Natürlich kann man (kannst Du) mit einer akustischen Lösung den Abstand zu einem Objekt ziemlich gut messen. Dazu braucht man halt einen ziemlich gut programmierten Rechner und wenn möglich zwei gute Akustiksensoren. Mit einem eher ausgedehnten Training (des Rechners) kriegt man da überaschend gute Ergebnisse - und sogar öfters auch gute Aussagen über die reflektierende Fläche. Der Rechnertyp? Der sitzt auf Deinem Hals in einer festen Knochenschale. Und blinde Menschen können mit der "Zungen-knack-Methode" teils perfekte Ergebnisse bekommen. Bei ner elektronischen Lösung muss halt die ganze Analytik - Laufzeit, Analyse des reflektierten Spektrums, Schätzen der reflektierten Lautstärke und solche Dinge usf - nachgebildet werden. Ist etwas aufwendig.


.. Was meint ihr, macht IR vielleicht mehr sinn? ..Mehr Sinn? Es kommt auch auf Deine Aufgabenstellung an - die ist ja wie bei (meinen) ähnlichen Fällen nicht ganz simpel. Du tauscht aber manche Probleme gegen andere aus. Vergleichbar ist die Albedo (https://de.wikipedia.org/wiki/Albedo), da gibts Effekte die eine gewisse Ähnlichkeit von akustischen Wellen und elektromagnetischen Wellen der Wellenlängen zwischen ca. 380 und 780 nm (IR bis um die 1000 nm) denken lassen.

Ne gute Vorstellung über das Messen mit IR-Sensoren wie sie in Anwendungen dieses Forums vorkommen und dessen Tücken gibts beim Team Iwan (http://www.team-iwan.de/technik/sharp1.php). SEHR lesenswert, sehr interessant.


.. Hat einer Erfahrung und kann mir schon mal tipps geben, so erspare ich mir vielleicht lange Erprobungsphasen ..Erfahrung selber machen ist immer gut.

Rousseau
27.11.2023, 08:56
Und als Daten Output bekommt man den Winkel und die Entfernung?