Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Smalltalk
Antworten
Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von paedubucher » 19.10.2017 09:18:43

Ich habe mich bereits im Raspberry-Stromversorgungs-Thread zu einem anstehenden Projekt Informationen eingeholt; dazu werde ich in den nächsten Tagen die ersten Tests durchführen.
Die Anforderungen, was der Kleincomputer leisten muss, sind nun recht vielfältig geworden: Optische Zielerkennung, Distanzmessung, Motorensteuerung plus vielleicht noch Berührungssensorik.
Der Raspberry Pi Zero dürfte für die Bildverarbeitung wohl etwas zu schwach auf der Brust sein, darum tendieren wir im Moment zu einem Raspberry Pi 3 Model B. Dazu gibt es auch eine leichte und günstige Kamera sowie Ultraschallsensor.
Nun ist die Frage, wie das mit der Motorsteuerung realisiert werden sollte. Hier habe ich von vielen Leuten gehört, dass es best practice sei, einen Raspberry Pi mit einem Arduino zu koppeln. Der Arduino habe eine genauere Hardwareuhr, darum soll er genauer reagieren können. Nun frage ich mich allerdings, was das bringen soll, wenn die Kommunikation doch wieder über den Raspi läuft, also der Raspberry dem Arduino das Signal (start, stopp) gibt, und dieses Signal schon verzögert abgesetzt wird. Ist das vielleicht noch eine Praxis "von früher" bzw. für die schwächeren Raspi-Modelle mit Single Core? Oder ist die Genauigkeit der Arduino-Hardwareuhr wirklich um so vieles besser, dass sich die Koppelung (mit all den negativen Folgen punkto höhere Komplexität, Stromverbrauch, Platzanspruch etc) doch auszahlt?
Und wäre eine Stromversorgung des Arduino per USB über den Raspi praktikabel?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

BenutzerGa4gooPh

Re: Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von BenutzerGa4gooPh » 19.10.2017 09:52:00

paedubucher hat geschrieben: ↑ zum Beitrag ↑
19.10.2017 09:18:43
Nun ist die Frage, wie das mit der Motorsteuerung realisiert werden sollte. Hier habe ich von vielen Leuten gehört, dass es best practice sei, einen Raspberry Pi mit einem Arduino zu koppeln. Der Arduino habe eine genauere Hardwareuhr, darum soll er genauer reagieren können.
Welche Motoren? State of the Art sind Schrittmotoren, die recht genau und einfach (ohne Lageregelung, Position = Anzahl (Teil-) Schritte) bezüglich Endlage gesteuert werden können. Bei der Ansteuerung von Schrittmotoren könnte ein Arduino als zusätzliche Baugruppe hilfreich sein. Wofür eine (bessere) Hardwareuhr dafür hilfreich sein soll, erschließt sich mir nicht. Eher sind spezielle (gekaufte) Ansteuerungsbaugruppen mit Leistungsverstärker für Schrittmotoren sinnvoll. Für digitale Baugruppen ist erst mal nur ein Takt notwendig, nicht unbedingt die Zeit. Oder willst du eine Steuerung bauen: "Motor, drehe x sec?" Schwierig, wegen notwendiger Berücksichtigung Beschleunigung/Bremsen mit Einfluss auf Endlage.

Oder genügen dir "normale" Motoren, bei denen keine Positionierung erforderlich ist? Also nur Drehzahl gesteuert, z. B. per Frequenzumrichter? Im "professionellen" Fall, geht natürlich einfacher bei Gleichspannungsmotoren. Dein "Vehikel" solltest du mal näher beschreiben. Sowas wie ein Staubsaugerroboter, Mähroboter? Positionsänderung per Regelung aufgrund Sensorauswertung (Abstand Hindernis). Wobei auch der Mensch den Regler darstellen kann - z. B. bei ferngesteuertem Autos, Flugzeugen, Schraubhubern. Oder Regelung vorgegebener Weg vs. aktuelle Position (GPS) vs. Hindernis?

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von paedubucher » 20.10.2017 11:16:31

Die Art des Motors wurde noch nicht festgelegt. Bei dem Vehikel handelt es sich um eine kleine Gondel, die sich an einem festen Seil entlang bewegen muss. Das ganze Vehikel dürfte so um die 2-5kg herum wiegen. Wir sind noch in der Konzeptionsphase.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

BenutzerGa4gooPh

Re: Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von BenutzerGa4gooPh » 20.10.2017 14:56:18

paedubucher hat geschrieben: ↑ zum Beitrag ↑
20.10.2017 11:16:31
Bei dem Vehikel handelt es sich um eine kleine Gondel, die sich an einem festen Seil entlang bewegen muss.
Schwebebahn? Lasten-Schwebahn wie in Alpen? "Bahnhöfe", Zwischenstopps? Lageregelung/Positionierung? Endlagenerkennung? Alles per Kamera/Bild-Auswertung? Dunkelheit? Überlastetfall? Geschwindigkeitsregelung oder Steuerung per Schrittmotor? Stromversorgung, Spannungen, Leistungen, Geschwindigkeit?
paedubucher hat geschrieben: ↑ zum Beitrag ↑
20.10.2017 11:16:31
Wir sind noch in der Konzeptionsphase.
Bei der Antwort ganz offensichtlich. :mrgreen:
Würde mal für eine erfolgreiche Konzeptionsphase in die Berge fahren oder ein Modellbahn-Ausstellung oder eine "Mniwelt" besuchen.

Jedenfalls sollte vor irgendwelchen Gedanken um Steuerung und Zeiten erst mal Mechanik, alle Antriebe, deren Leistungen und notwendige Sensorik (u. a. Endlagenerkennung, Zwischenstopps, Überlastschutz) geplant sein. Skizze der Mechanik mit Sensoren/Lichtschranken, Antrieben, Endlagenerkennung etc. Vom Getriebe könnten Motoren abhängig sein: Elektromotoren sind nicht selbsthemmend, Schrittmotor ist selbsthemmend unter Spannung, Schneckengetriebe und Schraubengetriebe sind prinzipbedingt selbsthemmend. Oder zusätzliche elektromechanische Bremsen für 2,5 kg Gondel? Man kann sich Modellbau auch erleichtern.

Nach mechanischer und elektrischer Konstruktion (bzw. Lastenheft für Elektrokonstrukteur) kann man sich über irgendwelche Steuerungen Gedanken machen: Auswahl oder Konstruktion/Schaltplan der Steuerung/Regelung und deren Programmierung. Für letztere erfolgt die verbale Formulierung der Steuerung/Regelung als Blackbox mit Ein- und Ausgängen für Sensoren und Aktoren als Lastenheft für den Programmierer. Vielleicht ist auch Siemens Logo! oder eine alte SPS SIMATIC S5 geeignet? Auswahl der Steuerung ist Sache des Elektroplaners.

Irgendwie sehr dünne Thread-Eröffnung und was soll man bei deiner Antwort noch sagen? Pferd von hinten aufgezäumt. Ohne mechanische Konstruktionsskizze einschl. Sensoren und Aktoren Thread sinnlos.
Nun ist die Frage, wie das mit der Motorsteuerung realisiert werden sollte. Hier habe ich von vielen Leuten gehört, dass es best practice sei, einen Raspberry Pi mit einem Arduino zu koppeln. Der Arduino habe eine genauere Hardwareuhr, darum soll er genauer reagieren können. Nun frage ich mich allerdings, was das bringen soll, wenn die Kommunikation doch wieder über den Raspi läuft, also der Raspberry dem Arduino das Signal (start, stopp) gibt, und dieses Signal schon verzögert abgesetzt wird. Ist das vielleicht noch eine Praxis "von früher" bzw. für die schwächeren Raspi-Modelle mit Single Core? Oder ist die Genauigkeit der Arduino-Hardwareuhr wirklich um so vieles besser, dass sich die Koppelung (mit all den negativen Folgen punkto höhere Komplexität, Stromverbrauch, Platzanspruch etc) doch auszahlt?
Und wäre eine Stromversorgung des Arduino per USB über den Raspi praktikabel?
Versetze dich mal in die Lage eines Auftragnehmers, Elektroplaners, Programmierers. Erste Frage wäre doch: Steuerung wofür? Zweite Frage: Was soll die Steuerung konkret machen? Wenigstens verbale Beschreibung (Lastenheft) Programmablaufplan. Bis denne! :wink:

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von paedubucher » 22.10.2017 13:27:05

Du bringst mein Dilemma sehr gut auf den Punkt. Das Problem an diesem (Schul)projekt ist, dass wir eben alles zur gleichen Zeit evaluieren müssen. Wir haben einen morphologischen Kasten mit verschiedenen Antriebsmechanismen, Lösungen zur Stromversorgung, Hindernis- und Zielerkennung etc. Nun wäre es natürlich sinnvoll, zuerst zu wissen, welche Art von Motor wir einsetzen wollen, wie schwer das ganze ungefähr werden soll, wie schnell das laufen muss etc. Nur leider kann ich diese Entscheidung nicht vorwegnehmen.
Danke aber für deine Bemerkungen zu den verschiedenen Motorentypen. Das Thema werde ich bei der nächsten Sitzung mit den Maschinenbauern sicher erörtern! Grundsätzlich sind die Informatiker in diesem Projekt ganz hinten an der Nahrungskette: eigentlich müssten sie mit den anderen Disziplinen Schritt halten, müssen aber zuerst deren Designentscheidungen und bei der Umsetzung deren Ergebnis abwarten.
Noch etwas Hintergrund: Unsere Fachhochschule führt jedes Jahr ein Projektmodul namens "Produktentwicklung" durch, wobei "Prototypentwicklung" die passendere Bezeichnung wäre. Im Herbstsemester wird konzipiert, im Frühlingssemester umgesetzt. Ist halt klassisches V-Modell, was für die klassischen Ingenieursdiszipline besser funktioniert als für die Informatik.
Bei uns in der Gruppe sind wir acht Leute: vier Maschinenbauer, zwei Elektrotechniker und zwei Informatiker. Der Auftrag: eine autonome "Laufkatze" (eine Gondel) entwickeln, die an einem stehenden Seil mit 15kg Gegengewicht eine Last (Holzwürfel) erkennt, aufnimmt, über Hindernisse transportiert, in einem Zielbereich möglichst präzis ablegt und zum Schluss bis hoch zum Endmasten fährt; und das ganze so schnell wie möglich.
Zu Beginn haben wir als Gewicht 2-3 kg angenommen, da der Seildurchhang sonst zu gross würde. Als wir dann das Testgelände inspizieren durften, haben wir festgestellt, dass die Umlenkrollen, an denen das Seil angebracht ist, sehr hohe Reibungen verursachen, wir die Gondel also ruhig 5-7kg schwer machen könnten. Ein tiefes Gewicht ist dennoch besser, da man damit mit einem schwächeren Motor wesentlich schneller ist, weniger schwere Akkus braucht, weniger Durchhang hat etc.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von eggy » 22.10.2017 14:11:50

Schau Dir mal einfache Lichtschranken an, falls Du die noch nicht auf dem Schirm hast, für ne Enderkennung (oder auch grobes "in welchem Abschnitt ist die Gondel") ne simple Lösung.

BenutzerGa4gooPh

Re: Kleincomputer für Bilderkennung, Distanzerkennung und Motorensteuerung

Beitrag von BenutzerGa4gooPh » 22.10.2017 14:16:50

paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.10.2017 13:27:05
Der Auftrag: eine autonome "Laufkatze" (eine Gondel) entwickeln, die an einem stehenden Seil mit 15kg Gegengewicht eine Last (Holzwürfel) erkennt, aufnimmt, über Hindernisse transportiert, in einem Zielbereich möglichst präzis ablegt und zum Schluss bis hoch zum Endmasten fährt; und das ganze so schnell wie möglich.
Würde vom Portalkran und von Seilbahn für eine "Kreuzung" untereinander "spicken". Gibt beides wohl schon seit Anbeginn der industriellen Revolution.
paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.10.2017 13:27:05
Grundsätzlich sind die Informatiker in diesem Projekt ganz hinten an der Nahrungskette: eigentlich müssten sie mit den anderen Disziplinen Schritt halten, müssen aber zuerst deren Designentscheidungen und bei der Umsetzung deren Ergebnis abwarten.
So isses. Schrittmotoren können für diese Gruppe etwas vereinfachen. Ein Drucker z. B. benötigt keine Lageerkennung und keine Drehzahl regelung, nur Steuerung und zu Beginn (einmalig) Nullpunktabgleich des Druckkopfes. Zahnriehmen sind leicht und übertragen Drehmomente ohne Schlupf. Lochscheiben mit Gabellichtschranken von alten Mäusen sind auch interessant. Aus bestimmten Gründen werden Lochscheiben mit 2 versetzten Kreisen verwendet ... :wink:

Antworten