PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hc-sr04 mit servo hindernisse erkennen und umfahren?



Ferdinand
16.04.2019, 11:05
Hallo ich habe eine Blockade und zwar möchte ich mit einem Servo und einem HC-SR04 hindernisse erkennen und umfahren so das man möglichst viel Raum erfassen kann und relativ sicher und genau an hindernisse vorbei kommt die Ansteuerung des Servos und des Sensors HC-SR04 einzeln und zusammen habe ich schon hin bekommen nur weiß ich nicht wie ich das anstellen kann das er an hindernisse heran fährt und sie dan gezielt umfährt oder wenn er in einer Ecke ist sauber die richtig erkennt wo es lang geht?

Moppi
16.04.2019, 12:05
Du kannst eine bevorzugte Richtung festlegen. So dass er z.B. immer rechts an einem Hindernis vorbei fährt. Oder links vorbei.


Desweiteren könntest Du berechnen, wo die kürze Strecke zum Ziel zu erwarten wäre. Links herum oder rechts um das Hnderniss herum. Ein Problem dürfte aber schon sein, dass Du die Maße es Hindernisses erst mal nicht kennst.


Mit Ecken dürfte es ähnlich sein. Du musst Dich dann für eine Richtung entscheiden.




Leider sind Deine Informationen sehr dürftig. Was soll das, das wir noch nicht kennen, tun? Welche Aufgabe erfüllen?



Auf jeden Fall müsstest Du zwei Arten von Hindernissen unterscheiden.

1. ein Hindernis, das man umfahren kann (Würfel etc.)
2. ein Hindernis, von dem Du eingeschlossen bist (Wände, wenn Du Dich z.B. in einem Würfel befindest)

Die Problembewältigungstrategie muss sich dann an dem Typ/Art des Hindernisses orientieren.



MfG

- - - Aktualisiert - - -

Den Ultraschallsensor kann man auf einem Servo montieren, so dass sich der Sensor drehen lässt.
So besteht die Möglichkeit, ein Hindernis "auszuloten", ohne das Gefährt bewegen zu müssen. Stößt man auf ein Hindernis, kann man durch Drehen des Sensors und anschließendes Messen herausfinden, wo das Hindernis endet.

Ferdinand
16.04.2019, 13:52
Ich verstehe, also ich mprogramire einen arduino Uno in c und bewege den sensor mit einem Servo was ich schon versucht habe ist den Servo in 10ner Schritten (0-180) fahren zulassen und dan je einen mess Vorgang zu starten di ganzen Messwerte in einem Array zu sammeln und dann mit einer Fall Unterscheidung zu prüfen

Moppi
16.04.2019, 14:25
Am besten fängt man mit ganz einfachen Beispielen an.

.......34124

In Bild 1 fährst Du geradeaus und misst voraus.
In Bild 2 triffst Du auf ein Hindernis.
In Bild 3 dreht das Gefährt auf 90 Grad nach rechts und misst aber zu 90 Grad nach links.
Das Gefährt fährt so lange geradeaus, bis (in Bild 4) der Abstand sprunghaft größer wird und dreht dann 90 Grad nach links und den Sensor 90 Grad nach rechts (in die Ausgangsposition Bild 1) .

Wenn der Sensor drehbar ist, kannst Du, mit einem Sensor, in alle 4 Himmelsrichtungen messen und Dich orientieren.
Nach Bild 3 wäre es sinnvoll, nach links zu messen, wo das Hindernis ist, an dem das Ding lang fährt und in Fahrtrichtung zu messen, um nirgendwo gegenzustoßen.


MfG

Gnom67
16.04.2019, 16:58
Vorausgesetzt, das Gefährt kennt seine eigene Position und Fahrtrichtung einigermaßen genau (das hängt wohl von Antrieb und Lenkung ab), könnte man es auch selbstständig eine grobe Karte der Umgebung erstellen lassen. Im Speicher könnte man eine 2D-Bitmatrix (Array) halten (z. B. mit 5-cm-Raster - also 20x20 = 400 Bit pro qm), in der man speichern kann, wo Hindernisse sind. Wenn das Gerät ein Hindernis erfasst, speichert es im zugehörigen Feld die Info ab.
Ist die Fläche komplett erfasst, kann sich das Gerät selbst an den gespeicherten Hindernissen orientieren.
Zunächst wäre ein drehbarer Sensor (oder drei Sensoren vorne und seitlich) sicher sinnvoll. Außerdem sollte das Teil erstmal nur im 90°-Winkel fahren. Sonst wird es mit der Navigation recht schwierig.


11111111111111111111
10000000000000000001
10000000011100000001
10000001111100000001
10010000111110000001
10011000001100000001
10011000000000000111
10011100000000001111
10000000000000000111
...
11111111111111111111