Projekt: Autonomer Roboter

  • Kann es vielleicht sein das du es ggf selber mehrfach ausführst oder sogar noch alte Instanzen aktiv sind?


    Als Benutzer root ist sudo überflüssig, da du doch bereits root bist was soll da sudo noch bewirken?





    PS: Du musst das Script mit python3 ausführen, nicht mit python. Kleiner aber feiner Unterschied! Letzteres wäre nämlich nur python2, der Shebang besagt aber?

    Und ja, Das Script aus Beitrag#137 wirft bei python3 dann einen Fehler, den es mit python2 nicht gibt. Das wiederum liegt an Deiner Abänderung des "brains".

  • Aufgrund privater Angelegenheiten, kann ich mich leider erst jetzt wieder zurück melden.


    Ich habe es jetzt gerade noch einmal getestet mit folgendem Script:



    Dieses habe ich mit sudo python3 MotorTest.pyeinmal ausgeführt. Der Fehler bleibt jedoch bestehen. Der pivot_left funktioniert. Jedoch dreht sich beim pivot_right immer nur ein Rad. Eine Fehlermeldung aufgrund der Abänderung des brains ist nicht aufgetreten.


    LG

    Bastelstube

  • Eine Fehlermeldung aufgrund der Abänderung des brains ist nicht aufgetreten.

    Wenn Ich deinen Code, unverändert, mit python3 ausführe kommt definitiv eine Fehlermeldung. Warum also nicht bei dir?


    Eine Fehlermeldung kommt nur mit python2 nicht - das Script ist aber für python3 geschrieben.


    Verstehst du jetzt wieso ich explizit sage das Du das Script falsch ausführst?


    WENN bei Dir keine Fehlermeldung erscheint dann weil DU es mit python2 ausführst!!!!

  • Das wäre die Ausgabe zum Script:



    Meinst du den mir nicht ersichtlichen Fehler in Zeile 90 ?


    LG

    Bastelstube

  • :denker: Was ist noch mal dein Problem? Ich hab jetzt keine Lust 8 Seiten Thread zu lesen - In dem von dir posteten Code sehe ich keine Fehlermeldung, das ist normaler Output wenn man STRG+C drückt.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • Das Ausgangsproblem ist, dass bei dem Code aus Beitrag #145 etwas nicht funktioniert, was sich meigrafd auch nicht erklären kann.


    Zunächst einmal was passieren sollte:


    Momentan habe ich zwei HC-SR04 Sensoren angebracht. Diese messen beide den jeweiligen Abstand. Wenn der linke Sensor nun merkt das die Distanz kleiner 15cm ist, so wird ein pivot_right()ausgeführt (Ein Rad dreht sich vorwärts und das andere Rückwärts). Das gleiche soll passieren, wenn der rechte Sensor merkt, dass die Distanz unter 15cm ist, dann soll ein pivot_left()ausgeführt.


    Was passiert nun:


    Es funktioniert immer nur eine Funktion. Wenn ich einen Gegenstand vor den rechten Sensor halte wird pivot_left()ohne Probleme ausgeübt. Mache ich das gleiche beim linken Sensor, so dreht sich immer nur ein Rad und das andere bleibt stehen.


    Was wurde bisher unternommen:


    - Sensoren getauscht um auszuschließen, dass einer defekt ist (negativ)

    - Alles entkabelt und neu verkabelt (negativ)

    - Neue Batterien in das Akkupack eingebaut (negativ)

    - Funktionen im Code getauscht (negativ)



    Nun zu dem was meigrafd meinte.


    Laut Beitrag #144 habe ich das Scipt nicht mit python3 ausgeführt. Dies habe ich dann im Anschluss gemacht. Mir ist jedoch nicht ersichtlich welchen Fehler meigrafd meint, der beim ausführen mit python3 auftreten soll.

    LG

    Bastelstube

  • Tip/Bitte: Würdest Du a) Deinen Motorvariablen sprechendere Namen geben (z.B. "motor_links_vor" statt "motor_a_in1") und b) Deiner Klasse Sonar_Ranger einen Namen spendieren, so daß sie z.B. "Distanz links: xxx cm" ausgäbe, ließen sich Skript und Ausgabe sicher besser lesen.


    Zur Fehlersuche:


    - Lassen sich denn beide Motoren in beide Richtungen steuern, wenn Du die ganz Logik weglässt? Also einfach mal Hauptroutine durch "Motor links vorwärts" ersetzen und schauen, was passiert.

    - Wenn das klappt, in der Hauptroutine alle Bewegungsmodi einzeln direkt aufrufen. Dann schauen, was passiert.

    - nach dem Aufruf von radar_left.print_distance() auch noch telemetry_left['distance'] ausgeben, um sicher zu gehen, daß beides den gleichen Wert liefert.

    Mache ich das gleiche beim linken Sensor, so dreht sich immer nur ein Rad und das andere bleibt stehen.

    Welches und in welche Richtung? Macht es einen Unterschied, in welcher Reihenfolge Du die Hand nach Programmstart vor die Sensoren hältst?

    Funktionen im Code getauscht (negativ)

    Was genau hast Du im Code "getauscht"? Mit welchem Ergebnis?