PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SRF10 an RPI und Raspi Robot Board



Zappelmann
07.05.2014, 12:30
Hallo Zusammen,

zu allererst mal ein Kompliment an pinsel120866 für seine Projekte die ich hier in den letzten Tagen gelesen habe.

Wir Ihr sicherlich gerade feststellt bin ich ziemlich neu in diesem Forum und habe kaum Erfahrung mit Roboterbau bzw. Entwicklung.
Dennoch fasziniert mich diese Materie so sehr das ich selber ein kleines Projekt angefangen habe.

Ich habe damit begonnen ein kleinen Raspirobot Rover aufzubauen.

bisherrige Komponenten.
Raspberry Pi Rev. B + (CAM)
Raspi Robot Board (http://www.exp-tech.de/Shields/RaspiRobot-Board.html)
SFR10 (http://www.exp-tech.de/Sensoren/SRF10-The-World-s-Smallest-Dual-Transducer-Ultrasonic-Ranger.html)

Mein Ziel ist es ein autonomen Fahrmodus zu erarbeiten.
Bisherrige Erfolge.

Ansteuerung des Rovers per Tastatur Steuerkreuz (Pfeiltasten)
Videoübertragung mit der RPI CAM und einer Webcamsoftware.
Desweiteren habe ich ein MCP23017 IO Expander an den I2C Port des Raspi Robot Board angeschlossen um damit LED´s zu steuern, die an verschiedenen Positionen des Rovers angebracht sind.

Das ganze soll vorläufig in Python programmiert werden.
Meine Programmierkenntnisse sind leider relativ mager.....

So nun komme ich aber jetzt nicht weiter, denn ich kann den Ultraschallsensor SRF10 zwar im Register abrufen (hat die Adresse 0x70),
doch weis ich ehrlich gesagt nicht wie ich jetzt ein Code entwerfen soll der zum einen den Sensor anspricht bzw. eine Distanzmessung durchführt und zum anderen
Wie ich den Rover dann dazu bekomme die Messwerte dann in eine autonome Fahrsteuerung zu nutzen. Also wenn Distanz X erreicht wird, dass der dann ein Stopp einlegt und dann (mittels eines Servos) *1 eine Richtung sucht, die für Ihn von der Distanz her befahrbar ist.

Ich bin mir ziemlich sicher das es für einige von Euch eine Kleinigkeit ist dies umzusetzen. Immerhin habe ich hier reichlich Projekte gesehen wo dies scheinbar umgesetzt wurde und es auch in Videos demonstrieren.
Ich würde mich über eine Hilfe Stellung oder ein Script in Python oder C sehr freuen. Dieser kann auch per Mail oder PM an mich gesendet weden.
Auch ein Script in Python oder C um den Sensor mal generel in Richtung rangefinder zu testen wäre von Vorteil, um zumindest die Programmierung dahinter zu verstehen und zu testen.

Ich hoffe das Ihr mir bei meinem Projekt ein wenig Unterstützung bieten könnt.

MFG

Zappelmann

*1 erstmal ohne Servo da noch keiner vorhanden ist.

Zappelmann
07.05.2014, 21:22
Hallo Zusammen,

also ich möchte das ganze mal für den Anfang etwas eingrenzen denn scheinbar kann mir hier niemand auf meine Anfrage mangels Informationsfluss meinerseits im ersten Post nicht anworten oder mir bei meinem Vorhaben nicht weiterhelfen.

In erster Linie möchte ich mal den SRF10 Ultraschall Sensor über die I2C Schnittstelle mit hilfe eines Python Scriptes Messungen in cm Angabe abfragen können.
Ich hab jetzt schon tagelang nicht in dieser Richtung im Netz gesucht, ohne Erfolg. Es wäre zumindest schon mal ein Anfang damit ich mal ein Schritt voran käme bei meinem Projekt.



Ich hab auch etwas kleines für den Anfang gefunden jedoch wenn ich das script ausführen will dann gibt es eine error Meldung in Zeile 9 und 23
Ich weis zumindest schon mal das der Wert in Zeile 23 0x51 die Bildschrimausgabe einer Messung in cm Maß dasstellen soll.
Und in Zeile 9 wird scheinbar eine Definierung von write gesetzt. Nur weis ich nichts mit dem Fehler anzufangen der mir dort angezeigt wird.

Ok vielleicht bin ich mit dem Script auch total daneben am liegen weil es eigentlich ein Script für ein SFR08 Sensor ist. Jedoch sind die Adresswerte scheinbar die selben wie beim SFR10. Soviel konnte ich dem Datenblatt was mir leider nur in englisch vorliegt entnehmen. Vielleicht ist das auch nur ein totaler Schrottcodeschnipsel den ich im Netz gefunden habe. Wie ich oben schon erwähnt habe. Programmieren ist nicht so ganz meine Stärke jedoch versuche ich bei dem Projekt etwas zu lernen und hoffe das Ihr mir jetzt ein wenig mehr, mit meiner Anfrage weiterhelfen könnt.



import smbus
import time
bus = smbus.SMBus(0)
address = 0x70

#SRF08 REQUIRES 5V

def write(value):
bus.write_byte_data(address, 0, value)
return -1

def lightlevel():
light = bus.read_byte_data(address, 1)
return light

def range():
range1 = bus.read_byte_data(address, 2)
range2 = bus.read_byte_data(address, 3)
range3 = (range1 << 8) + range2
return range3

while True:
write(0x51)
time.sleep(0.7)
lightlvl = lightlevel()
rng = range()
print lightlvl
print rng


Fehlerausgabe:

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
File "<stdin>", line 2, in write
IOError: [Errno 5] Input/output error




Wenn jemand eventuell ein Script in C hat was dafür funzt. Und dies zur Verfügung stellen mag dann bitte mit einer kleinen Anleitung welche Libs ich installieren muss und wie die compilierung der *.c datei dann mit den Befehlen her abgearbeitet werden sollte. Ich hab mich bisher auf Python konzentriert da ich dort weniger mit compilierungsproblemen konfrontiert werde als mit C

Also leute ich zähl auf Euch

Schmeist mal etwas mit Code um Euch damit ich was zum testen bekomme :)


MFG

Zappelmann

Rabenauge
07.05.2014, 23:00
Du könntest richtig googlen. Ich hab nach ner Minute nen Beispiel für _deinen_ Sensor und den Pi gefunden- in C...
Dort: http://www.exp-tech.de/Sensoren/SRF10-The-World-s-Smallest-Dual-Transducer-Ultrasonic-Ranger.html

Ansonsten ists eher üblich, seine Roboter selber zu programmieren hier...

Zappelmann
09.05.2014, 08:57
Also richtig googlen kann ich schon, denn das was du da gefunden hast hatte ich auch schon gefunden. Leider steht dort aber nicht beschrieben, welche Libs für die Compilierung dazugezogen werden müssen. (mangelnde Dokumentation) was leider sehr häufig im Internet vorkommt. Und das ist auch ein grund warum ich mich hier an dieses Forum wende.

Wie ich weiter oben schon erwähnt hatte, finde ich es schwierig für mich als Einsteiger Programmcode zu compilieren wenn dazu keine Angaben gemacht werden. Deswegen suche ich ja auch Programmieransatzpunkte in Python.

So und den Fehler in dem Script hab ich auch selber rausgefunden.



bus = smbus.SMBus(0) //hier musste ja nur die (0) in (1) gesetzt werden da ich ja die B Version des Raspis verwende.

Es ist nur ziemlich schade das Anfängern dieser Materie in diesem Forum scheinbar nicht unterstützt werden.

Und ja klar programmiere ich meinen Roboter selber, immerhin habe ich ihn ja auch selber am aufbauen und möchte dem auch speziele Eigenenschaften hinzufügen. Da sowas ja immer individuel ist kann man es ja nur selber programmieren.
Also was ich damit sagen will, auf klugscheisserkommentare kann ich verzichten.

Ich werde in den nächsten Tagen mal ein paar Screens von dem Roboter hier reinstellen damit man auch sieht das ich nciht einfach nur dumm daher komme wie irgendein Schnössel der hier nur dumm Kommentare in das Forum einbringt sondern das ich wirklich an einem kleinem Projekt arbeite und hier nur ein wenig Hilfeunterstzung suche.

Ich suche hier in dem Forum ein wenig Unterstützung da ich der Meinung bin das hier Profis in dem Bereich unterwegs sind die auch Anfängern eine Chance geben wollen, sich in diese Materie einzuarbeiten.
Und da ich als Anfänger leider kein Plan von der Roboterprogrammierung habe suche ich hier halt Ansatzpunkte die ich analysieren kann. Wie so ein Code auszusehen hat. Ob dieser nun in C oder Python geschrieben wurde soll mir dabei relativ egal sein. Wichtig ist nur das es nachvollziehbar ist. (vernünftig Dokumentiert) Und ich dabei eine Struktur erkennen kann wie verschiedene Module und Eigenschaften ineinander greifen müssen damit einer erfolgreichen Programmierung nichts im Wege steht.

So und nochmal den Aufruf hier ich benötige ein wenig Hilfe bei der Programmierung. Ich möchte wissen wie die Struktur aussehen sollte wie z.B. kann ich einen gemessenen Distanzwert des Ultraschallsensors mit der Steuerung der Motoren verbinden. Ich hab kein Plan wie ich da ansetzen soll. Ich benötige also eine Vorlage oder ein Beispiel wie sowas aussehen kann. Dann kann ich mich zumindestest daran orientieren und meinen Code auch selber weiter erarbeiten.
Von der Logic her weiß ich schon was der machen soll. Bzw. was der mal können soll.

Fahre vorwärts bis ein Distanzmesswert X unterschritten wird.
Stop
dann ein wenig zurück schlage links ein messe lins schlage nach rechts ein und messe dort und anhand der Messung wo eine weitere Distanz ausgemessen wird soll dann in die Richtung weitergefahren werden.
Später möchte ich das dann auch über ein Servo für den Sensor realisieren. So das nur noch der Sensor selber messen soll.

Was mich dabei interessiert ist ein Beispiel wie diese beiden Punkte der Steuerung der Motoren und des Messwertes aussehen soll.

so ich hoffe das ich hier doch noch einige finde, die auch Anfängern ein Chance geben und Ihr Wissen nicht nur stumpf für sich behalten und irgendwann mit ins Grab nehmen und dieses dann verloren geht.
Also lasst mich ein Teil dieser Community werden sodass auch ich irgendwann auf solche Fragen mein Wissen weitergeben kann, um Anfängern das Programmieren von Robotern näher zu bringen.


MFG

Zappelmann

piggituX
09.05.2014, 10:25
hi,

schau dir mal diesen Link an http://wirmachenroboter.com/node/36155 ist glaub ich genau dein Aufbau.

Zum Scripting, ob am Ende ein Roboter gesteuert wird, oder was anderes passiert , sind Grundlagen in der Programmier-Sprache hilfreich. Dafür gibt es genug Tutorials. Fertigen Code wirst du kaum bekommen, weil eben du den Lerneffect bekommen sollst.

ob das nun Python, C oder was anders ist, ist dann erstmal egal.

Gerade die ersten Schritte sind die Schwierigsten, da helfen eben nur Grundlagen.

cya

Zappelmann
09.05.2014, 11:00
Hi piggituX,

danke für deinen Link, genau der hat mich überhaupt dazu gebracht sowas mal aufzubauen. ^^
Wie ich schon erwähnte fertigen Code will ich ja auch garnicht haben. Nur es gibt doch hier schon einige leute die sowas umgesetzt haben und die zumindest ein Beispiel Code anbringen können damit man sich an irgendwas orientieren kann. Klar soll der Lerneffekt dabei nicht zu kurz kommen. Der kann aber auch kommen wenn man ein Beispiel mal analysiert. Ich mein es gibt ja nun nicht gerade unbedingt viele Tutorials einen Roboter zu programmieren. Meistens sind das nur irgendwelche print Tuts die mir hier aber nicht wirklich weiter helfen. Na gut ich werde mal weiter machen und schauen wie ich voran komme. Ich schau später wieder rein ob sich hier noch was regt in dieser Gemeinde.

bis später

MFG

Zappelmann

Rabenauge
09.05.2014, 13:15
Wenn du dich da mal bei meinem Link durch die Beispiele gewühlt hättest stösst du auf eines, was genau deinen Sensor aufm Pi ausliest und das Ergebnis ausgibt...in C. Ich frage mich, was du noch brauchst-es ist fertig zum compilieren?
http://www.robot-electronics.co.uk/htm/raspberry_pi_examples.htm
Offenbar (ich werd das nicht weiter studieren, denn _ich_ brauchs nicht) gibts da noch mehr zum Thema Pi, I2C allgemein usw.

Bisschen was muss man schon mal selber machen.
Und nein: ich glaub eher nicht, dass hier viel in Python programmiert wird- mag sicherlich auch gehn, aber effektiv dürft das nun nicht gerade sein (wie auch der Pi nun nicht grad erste Wahl für sowas ist). Das ist halt das Problem, wenn man mit exotischer Hard-oder Software arbeitet (ich weiss, der Pi ist toll, aber für nen kleineren Roboter einfach nicht die beste Wahl), da findet man dann nicht viel zu.
Da du nun aber ein Beispiel hast, was wohl auch läuft, dürftest du ja weiter kommen.

Zappelmann
17.05.2014, 05:15
http://img4web.com/tbnl/SQG96R.jpg (http://img4web.com/view/SQG96R) http://img4web.com/tbnl/MF9WN7.jpg (http://img4web.com/view/MF9WN7) http://img4web.com/tbnl/81KYQR.jpg (http://img4web.com/view/81KYQR) http://img4web.com/tbnl/ZLHUV.jpg (http://img4web.com/view/ZLHUV) http://img4web.com/tbnl/U46JEV.jpg (http://img4web.com/view/U46JEV) http://img4web.com/tbnl/GWNMDF.jpg (http://img4web.com/view/GWNMDF) http://img4web.com/tbnl/9G28XX.jpg (http://img4web.com/view/9G28XX) http://img4web.com/tbnl/4E56FT.jpg (http://img4web.com/view/4E56FT) http://img4web.com/tbnl/QU3RA4.jpg (http://img4web.com/view/QU3RA4) http://img4web.com/tbnl/S6UA7.jpg (http://img4web.com/view/S6UA7) http://img4web.com/tbnl/FJYHHN.jpg (http://img4web.com/view/FJYHHN) http://img4web.com/tbnl/FS62D1.jpg (http://img4web.com/view/FS62D1) http://img4web.com/tbnl/2AP9UX.jpg (http://img4web.com/view/2AP9UX) http://img4web.com/tbnl/4825Y8.jpg (http://img4web.com/view/4825Y8) http://img4web.com/tbnl/3SGM8F.jpg (http://img4web.com/view/3SGM8F) http://img4web.com/tbnl/XP2G85.jpg (http://img4web.com/view/XP2G85) http://img4web.com/tbnl/XXRTU.jpg (http://img4web.com/view/XXRTU) http://img4web.com/tbnl/FG54MK.jpg (http://img4web.com/view/FG54MK) http://img4web.com/tbnl/XLPDKU.jpg (http://img4web.com/view/XLPDKU)

Rabenauge
17.05.2014, 10:43
Na siehste. Sieht ja schon recht nett aus- pass bloss auf dass der mit seinen Strippen nirgends hängenbleibt.\\:D/
Was ist die dunkelgraue Kiste?
Nen Bleiakku?

Zappelmann
17.05.2014, 18:07
jo das ist ein Bleiakku, 6V 4,5 Ah

Rabenauge
17.05.2014, 19:12
Ups- meinst nicht, dass der ein klitzekleines bisschen schwer ist für das kleine Ding?
Ich hab zwar den Pi-Bot noch nicht in den Händen gehabt, aber zu dem Chassis ist doch auch nicht mehr zu wie bei Asuro&Co....das machen die Antriebe dann nicht lange.

Zappelmann
17.05.2014, 23:28
ja leider hat der Akku ein großes Gewicht. Jedoch auf glatten Böden geht das. So lange der nicht auf Teppich herumdüsen muss.
Ansonsten es ist ein Testprojekt bevor ich mich daran setze einen Robo vollständig selber aufzubauen. Also auch Chassie bau selber machen. Dann werden auch stärkere Motoren zum Einsatz kommen. Aber erstmal ist das egal bisher funzt der ja soweit was das fahren angeht.

Rabenauge
18.05.2014, 12:49
Geht nicht so sehr um die Motoren. Schau dir mal die Getriebe an-sowas wurd früher in Taschenuhren verbaut. ;)
Die sind nicht drauf ausgelegt, ernsthaft Leistung zu übertragen, wenn du die Fuhre mal aus voller Fahrt plötzlich bremst, könnts Karies geben.

Ohnehin sind 6V-Akkus meist wenig geeignet, viele Spannungswandler wollen 2V mehr haben, als sie rausgeben sollen. Bei 6V bekommst du aus denen _keine_ 5V sicher raus.

Was das Chassis angeht: gibts schon Pläne (im Kopf, mein ich)?
Ich frag, weil ich selber an einem Plan sitze für ein outdorrtaugliches Roboter-Chassis, wo man auch bisschen was reinbekommt.

Zappelmann
19.05.2014, 08:08
Guten Morgen,

tja die Motoren und das kleine Plastikgetriebe, na ja reden wir nicht darüber, das die nicht der Hit sind ist mir leider auch bewusst.
Ja das 6V Akku ist soweit eigentlich ganz gut,es ist nur megaschwer und sie haben anfangs ca. 6,4 V und nehmen dann mit der zeit leider schnell ab. Somit läst sich der Robot ca. 2 Stunden sauber betreiben. Ich hatte schon mit einem Lipo Akku geliebäugelt die ca. 7,2V raushauen, jedoch bin ich mir nicht so ganz sicher ob der damit sauber funktioniert. Sicherlich werde ich in meinem nächsten Projekt eher daran denken mir mal diese Akkus inklusive Ladegerät zuzulegen.
Tja was ein neues Chassi angeht, ja es gibt schon Pläne für ein neues Chassi, aber wirklich nur im Kopf, denn dafür müsste ich mir dann auch noch weitere Motoren zulegen. Jedoch würde ich dann stärkere Motoren mit Getriebe wählen wollen. Leider weis ich jedoch noch nicht was es da so noch als Alternativen so gibt. Vielleicht hast du da ja ein Rat oder Tipp für mich.
Da ich noch 2 große Plexischeiben mit 5mm Stärke liegen habe werde ich mir darauf wohl ein chassi bauen. 5 mm sind ziemlich robust und halten auch mal ein Schlag aus und Gewicht kann man da auch drauf bringen. Wie gesagt ich mache mir auch mehr den Kopf darüber über stärkere Motoren. Denn bisher kriecht der vor sich hin besonders mit dem Gewicht. Teppich ist im Moment garnichts für den. Nur noch glatte Oberfläschen sind im Moment möglich.
Na ja aber im Moment bin ich ja noch in der Softwarentwicklung. Ich mache langsam auch Fortschritte. Ich hatte mir mal ein anderen Sensor zugelegt den HC-SR04. Dazu habe ich jetzt ein Script angefangen wo ich kleine Fortschritte mache in Richtung autonomes fahren. Gestern Abend hatte ich dann den ersten druchbruch. Jedoch bricht der seine Fahrt dann irgendwann ab und er dreht sich nur im kreis. Wenn man dann die Distanz vom Sensor verkürzt ändert er zwar jedesmal seine Richtung. Aber er fährt halt immer nur im Kreis. Ich weis das es an meiner Programmierung liegt. Jedoch mache ich kleine Fortschritte. Na gut ich werde über meine Fortschritte hier weiter berichten.

Rabenauge
19.05.2014, 12:44
Hm-Pauschaltipps zu Chassis geb ich nicht- da weiss man zu wenig. Da du von Plexiplatten redest, meinst du wohl was für Indoor.
Tipp dazu: leichter ist eigentlich (fast) immer besser. Also eher dünner und ggf. mit Winkelprofilen verstärken.
In der RN-Wiki gibts einige gute Tipps...

Wenn deiner mit dem fetten Akku wirklich nur zwei Stunden geht, würd ich sagen, da ist einiges mehr als am Limit- oder aber, eben die Spannungsregler mögen das nicht. Ein 6V-Bleiakku kann bis etwa 4.5V runter entladen werden-da reicht dann wohl die Spannung längst nicht mehr.
Du musst mal schauen, was für Spannungsregler du auf deiner Technik hast, meist sind die perfekt für 2s-LiPo, da dann ohne weiteres die 2V Differenz da sind, die sie brauchen.
Allerdings: LiPo niemals ohne Überwachung! Ein einziges Mal zu tief entladen und du brauchst nen neuen!
Ist aber kein grosses Problem, die Akkuspannung nebenbei zu überwachen.

Was den HC-SR04 angeht: hab auch so ein Ding. Der tut seinen Job-so, wie mans von nem 1.50-Teil erwarten kann. Nicht weniger, aber mehr auch nicht so wirklich. Meiner sitzt grade auf nem Roboter-Auto (war mal RC-Spielzeug) und soll da Kollisionen vermeiden.
Meiner ist schwenkbar, per Servo- das Ding kann ja rechts und links nicht unterscheiden, und nen zweiten (wär definitiv die bessere Lösung) hab ich grade nicht da..
Genau misst er, wenn man ihm gute Bedingungen schafft: Vibrationen mag er nicht, und auch während der Messung muss man ihn still halten-aber das ist relativ logisch.

Was dien Fahrproblem angeht: hm..müsste man wissen, wie es im Programm abläuft. Bei mir derzeit ungefähr so: er schaut gradeaus. Wenn er nun ein Hindernis entdeckt, wird erstmal die Fuhre runter gebremst, und dann nach rechts und links geschaut, so kann man einigermassen rausfinden (klappt nicht in jedem Fall, ist halt echt ne Primitivlösung), wo der Weg eher frei ist.
Du bist im Vorteil: deine Kutsche kann auf der Stelle wenden- mein Auto hat nen abartigen Wenderadius- war halt grad nix anderes da..

Hast du ne Regelung für die Lenkung? PID für gradeaus und Kurven oder so?
Die kann dir schonmal aus dem Ruder laufen..

Zappelmann
19.05.2014, 15:32
Spannungsregler ist der hier 1 x LM2940 Voltage Regulator auf dem Motorshield wenn ich das richtig gelesen habe kann ich den mit maximal 12V belasten. Aber ob das wirklich funzt keine Ahnung da ich Anfänger bin will ich im Moment keine Experimente mit größeren Spannungen testen. Da mir vor 2 Wochen schon einmal der L293DNE Treiber abgeraucht war. (Wobei dies bei mit einer fehlpolung des Akkus einherging). ^^

Ja das mit den Servos schwenken also rechts links werde ich heute Abend in angriff nehmen. Ich muss nochmal vorher die GPIO Motor Pins Settings überprüfen ob die richtig gesetzt sind.
Bei dem Motorshield gab es eine Libary dabei die ich bisher genutzt hatte um den Rover mit der Tastatur in alle vier Richtungen zu steuern. Jedoch habe ich dort schon bei den ersten Tests bemerkt das die Libary fehlerhaft geschrieben wurde, da dort die False True Settings der einzelnen Richtungen nicht sauber war. Da ich die Libary nicht nutzen möchte (fehlkauf mit dem Rapsirobotboard) das nächste mal kaufe ich direkt nen doppel H Motorshield treiber. Bin ich gerade dabei die Definition der einzelnen Richtungen und der richtigen Pinansteuerung selber in die Software einzuarbeiten. Das wird heute Abend nochmal überprüft. Wenn die dann auch mit den Tastatur Kommandos dann sauber funktionieren. Werde ich weiter an der SensorSteuerung arbeiten.
Da ich ja Anfänger in diesem Bereich bin und für mich eigentlich nur die Erfahrungen bei dem Projekt wichtig sind, ist für mich eine Primitivlösung auch erstmal ausreichend. Wenn der mal das macht was ich mir vorstelle dann geht es an das Feintuning.

So nun zu Deiner Lenkungsregelung. ?????????? Ich hab mir mal den Link dahinter angeschaut was du verlinkt hattest. Ich muss dir ganz ehrlich sagen ich hab kein Plan von dem was da steht. Hardwaretechnisch habe ich vorne zwei Lenkrollen drunter gesetzt damit der bei dem hohen Gewicht nicht umkippen kann. Der kann sich zwar auf der Stelle drehen jedoch wenn der geradeaus fährt dann hat der immer ein links oder rechtsdrall. Was ziemlich nervig ist. Ich hatte schon darüber nachgedacht die Lenkung über ein Servo zu steuern oder direkt 2 weitere Motoren zu nutzen. Jedoch ist dieses Chassi nicht dafür ausgelegt für 2 weitere Motoren.

Daher ist beim nächsten Projekt auch eine größere Fläche mit eingeplant. Das die Plexischeiben schwer sind, ja ist richtig 5 mm ist aber dann auch im outdoor Bereich denke ich mal ausreichend. Generell soll der aber nur im indoor Bereich genutzt werden. Mal abgesehen davon da es nur ein Projekt ist um Erfahrung zu sammeln. Desweiteren möchte ich halt auch stärkere Motoren mit besseren Getrieben einsetzen, Und genau dazu würde ich gern Tipss annehmen die eventuell mit anderen Motoren schon Erfahrung gesammelt haben.

Die Lipo Akkus hmmm ja Tiefenentladung, ne hab ich natürlich nicht vor damit. Aber ich wüste jetzt nicht wie ich da nen Ladestandwächter einbauen kann. Ich bin mir aber sicher das es für sowas auch Module gibt die man da einfach zwischen Akku und Roboter klemmen kann. richtig ? oder wie soll das funzten ? Das die 6V Bleiakkus auf 4,5 V runter gehen habe ich schon bemerkt. Dann sind die auch ziemlich leergelutscht. :rolleyes: Ich merk das immer dann wenn auf einmal die Verbindung von Putty zum Rover abbricht. Dann weis ich ok das Akku muss wieder geladen werden.
Da fällt mir aber gerade ne Idee ein das Akku benötige ich ja nur wenn ich den herumfahren lassen will. Für die Programmierung könnte ich doch auch genauso gut ein Netzteil an die Ladebuchse klemmen, die genug Power also mindestens 6V oder etwas drüber meinetwegen 9V mit sagen wir mal 2-3 A dahinter hat, oder ? Denn der Raspberry Pi benätigt von Grund her 700 mAh mit den GPIOs kommt der auf knapp über 1000 mAh Wen nich jetzt noch die Sensoren die Servos und die LED´s dazurechne dann kommt der ja schon locker auf 1,2 -1,5 A wen ich dsa also zusammenrechne dann sollte ich mit 3 A gut dabei sein und er hätte immer noch Luft.
Kann ich das so machen oder ratet Ihr mir eher davon ab?

So jetzt hab ich fast den Feierabend vertippst. ^^ Ich hau hier wieder ab. Ich melde mich später wieder wenn ich weiter gekommen bin.

MFG

Zappelmann

Rabenauge
19.05.2014, 18:32
Naja: Strom kann man eigentlich nie wirklich zu viel haben.
Glaubs mal: man rechnet es durch, gibt bisschen was zu (vorsichtshalber), und es funktioniert auch...dann läuft einem ein schnuckeliges LCD (oder TFT, mit LCD`s geb ich mich nur noch selten ab) über den Weg und-sollte eh jeder Roboter haben, also rauf damit. Dann reichen die Sensoren doch noch nicht, man baut noch was ran und- Mist. Irgendwas geht nicht....während man darüber grübelt, fängt der Spannungsregler an, per Rauchzeichen zu signalisieren, dass es nun mehr als genug sei...

Was ich nun nicht weiss, ist, wie deine Technik (Pi...was fürn Motorshield..usw.) mit Strom versorgt wird, also was da reingetan werden muss. Spiele zumeist mit Arduinos, die fressen alles zwischen 5V und 12V- die 12V geb ich denen aber nicht mehr direkt rein.

Motoren: Getriebemotoren gibts viele- durchaus geeignet und "billig"-aber kräftig- sind die Getriebe von 1:16er Modellpanzern. Ok-von Tamiya und anderen Anbietern gibts die auch in übertrieben teuer, aber man kann auch das Paar für nen 20er bekommen.
Alternativen dazu gibts aber auch zu Hauf...in etlichen Leistungsklassen. Mit den Panzerantrieben würde ich mal sagen: so bis 3-4Kilo sind die ausreichend, man kann ggf. auch noch etwas stärkere Motoren anbauen, aber dann machts zu den Getriebemotoren, die das Getriebe von angeflanscht haben, kaum noch nen preislichen Unterschied.

Was deine Stützrollen angeht: du hast so Möbelrollen drunter?
Das funktioniert (mehr oder weniger..)wenn man _eine_ benutzt. Bei mehreren kaum noch, die verkanten sich dann schnell mal zueinander. Kann man per Software umgehen, indem man eben so lenkt, dass das nicht passiert (umdrehen statt zurückfahren z.B.), ist und bleibt aber irgenwie Murks.

Den Geradeauslauf aber bekommst du in Griff, wenn die Motoren das Ding überhaupt noch sinnvoll bewegen können, und du ne Möglichkeit hast, Drehungen um die Hochachse _irgendwie_ zu ermitteln (Radencoder, Kompass, was auch immer) und dann eine Regelung für den Geradeauslauf programmierst.
Sprich: wenn eine Seite langsamer läuft als die andere, wird dort mehr Gas gegeben...
Das ist gar nicht so schwer, wie es klingt..

Bevor du anfängst, nen neuen zu bauen, überleg dir _gründlich_, was da alles reingebaut werden soll. Dann kann man schonmal die etwaige Grösse abschätzen, und auch das Gewicht. Dann wird entschieden, welche Motoren da geeignet sind (für Indoor und nen zwei- oder dreirad vielleicht Schrittmotoren?), und _dann_ kann man auch den Stromverbrauch etwas planen.
Das ist dann entscheidend für die Akkuwahl- ich habs gut: durch den RC-Modellbau hab ich so einiges da, auch noch gute NiCd-Zellen, die nahezu beliebige Stromstärken liefern können (mal fix 50A sind gar kein Problem).
Lader hab ich auch für alles, also bin ich sehr flexibel.

Auch beizeiten wichtig: welche Räder sollen drunter und: wie kriegt man die an die Motoren...das ist eine Sache, die mich, ohne wirkliche Werkstatt, immer einiges Nachdenken kostet.

Zappelmann
20.05.2014, 23:13
So da bin ich wieder, ich habe in der Programmierung endlich einen Durchbruch erreicht.
Hier mal ein kleines Video (https://www.youtube.com/watch?v=hN7qRw3E0Gk)

Es ist noch viel Feinabstimmung in der Programmierung notwendig, bis der akkurat funktioniert. Jedoch mache ich endlich Fortschritte.

MFG

Zappelmann

Rabenauge
21.05.2014, 00:37
Gratuliere.
Sieht doch schon recht gut aus- wirkt niedlich, wenn auch ein bisschen nervös...


Eventuell erreichst du noch was, wenn du kurz wartest, nach jedem Schwenk (kenn nun dein Programm nicht, vielleicht tust du es ja auch) und _dann_ erst den Impuls sendest: so lange der Sensor sich bewegt, kriegst du nie ein genaues Ergebnis. Oder aber gar nicht mit genauen Ergebnissen arbeiten, diese Taktik hab ich damals beim NiboBee angewendet: einfach den Motor, auf dessen Seite ein Hindernis entdeckt wurde, schneller laufen lassen..das Ganze kann man auch noch proportional zur gemessenen Entfernung machen, dann kullert das Teil seidenweich durch die Bude.

Muss mir meinen Buggy auch mal wieder vornehmen...der ist bisschen ins Hintertreffen geraten die Tage.

Zappelmann
21.05.2014, 08:36
Ja nervös ist ein guter Ausdruck. ^^

na ja wie gesagt die Feinabstimmung wird in den nächsten Tagen erfolgen.
Er ist in dem Modus auf jedenfall lustig drauf. Irgendwie merkt der dass wenn man ihm sein Programm beenden will. Gestern Abend, ich teste Ihn im Badezimmer hab nur dort und in der Küche ne glatte Oberfläche, auf Teppich kommt der nicht voran, will ich zurück zum Rechner und ihn anhalten da trennt der mir bevor ich am Rechner bin die Putty Verbindung. :confused: Na gut dachte ich gibste im ein Reset direkt auf dem Raspi. Da war der gerade voll mit seinem Servo am herumzappen wie ein Wilder, meinste er hört damit auf. Ne er macht mit seinem gezappel fröhlich weiter. Und ignoriert mal eben den Reset. ^^

Na ja lustiges Teil, ich hab mein fun dran. Aber diese Maken werde ich ihm schon noch austreiben. ;)

Wenn die Feinabstimmung durch ist, dann gehts an die LED Steuerung. Das wird denke ich mal schon etwas kniffliger, Da ich ein MCP23017 über I2C nutze um 15 LED´s anzusteuern. Der soll bei jedem Manöver nacher die richtigen LED´s schalten. also beim Rückwärtsfahren Rückfahr LED´s wenn der link oder rechts fährt die Blinker LED´s Bremslicht wenn der stopt. usw.. so wie bei nem richtigen Auto.

Na ja ich meld mich wieder mit neuen Ergebnissen wenn ich soweit bin.

MFG

Zappelmann

Rabenauge
21.05.2014, 10:37
Hm, wäre, glaub ich, mit nem Arduino einfacher- mit dem Mega 2560 kannste eine ganze Diskothek programmieren, der hat über 50 _freie_ Pins...
Ich grüble grad, ob ich dem Buggy auch zwei LED`s verpasse, einfach als Richtungsanzeiger (_der_ selber braucht die nich, aber da ich noch kein Display hab, was da raufpasst, wärs mir eventuell ne Hilfe), der Haken ist dabei: ich hab kaum noch Pins frei, weil das Motorshield fast alle belegt.

Allerdings zu deinem Abschalt-Problem kommt mir da eine Ahnung: kann es sein, dass die Servoansteuerung den Pi lahmlegt? Sprich, dass er so beschäftigt ist damit, dass er in der Zeit zu nix anderem kommt?
Es ist nämlich, je nach Vorgehensweise, nicht so trivial, so ein Servo anzusteuern, wie uns oft suggeriert wird-im Grunde brauchen die _ununterbrochen_ ein Signal...wenn das so gemacht wird, ist der Controller damit pausenlos beschäftigt.

Zappelmann
22.05.2014, 09:22
Guten Morgen,

also die Abschaltproblematik habe ich scheinbar gelöst. Ich hab gestern bis tief in die Nacht hinein Feintunning am Script im Servomodul betrieben. Und ich habe es sauber hinbekommen. kein nervöses herumzappeln mehr. Er macht jetzt ganz genau das was er machen soll. Sauber und flüßig. man son mist jetzt hab ich mir hier nen Wolf getippst und wollte das absenden da hat der mich zwischenzeitlich ausgeloggt. Nun muss ich alles von vorn Anfangen zu tipseln. Dazu hab ich jetzt mal kein Bock. Da ich noch ein paar Probleme hab die ich lösen muss. Werde ich mich wieder später melden. Aktuelles Problem 15° Messbereich wenn der bei nem ca 15° Messsichtbereich paralell zu einer Wand fährt. Dann bekommt der kein sauberes ergebnis was im bei distanzunterschreitung zum stopen zwingt. Sondern er schrapt voll gegen die Wand. Mein Ansatz hier ist eine weiche permanente Servo links rechts Bewegung ca. 50° wobei der aber immer einen permanenten sich in der Anfangsschleife wiederholenden Messvorgang durchführen soll. Vielleicht hat da jemand eine Idee dazu wie man sowas hinbekommt. Zumindest würde er dann nicht mehr voll seitlich gegen die Wand fahren und schon vorher stoppen. besonders wenn das Stopsignal erst unter 15 cm liegt.

also ich melde mich wieder wenn jemand was weis wie man das in der schleife realisieren kann dann bitte hier Statement abgeben.

MFG

Zappelmann

Rabenauge
22.05.2014, 11:56
Hm, du meinst dass das Teil Probleme hat, wenn die Sonarsignale in spitzem Winkel auf ein Hindernis treffen?
Denkbar wärs, da der Schall dann ja vom Sensor weg reflektiert würde..so weit bin ich noch nicht. Wollt mich aber heute mal wieder an den Buggy setzen (muss da erst ne kleine Zusatzschaltung braten und reinfrickeln), dann teste ich das mal.
_Wenn_ dem so ist, kommts drauf an, ob er soche ungünstigen Hindernisse überhaupt erkennt. Falls ja, kann man ja mal in die andere Richtung gucken, ob da frei ist..

Zappelmann
22.05.2014, 12:13
Ja genau sowas befürchte ich.
Und genau deswegen ja auch so mein Denkansatz:
eine weiche permanente Servo links rechts Bewegung ca. 50° wobei der aber immer einen permanenten sich in der Anfangsschleife wiederholenden Messvorgang durchführen soll. und wenn dann der Distanzwert zum Hindernis durch eine saubere Messung den Maxwert unterschreitet, das der dann stoppen soll. Dann sein normalen Linksrechts Scanvorgang starten soll und dann in einer andere Richtung asuweichen und weiterfahren soll.

hmm hab da gerade eine Idee bekommen wie ich das machen kann. WErde mal eben das script daraufhin anpasen und dann heute Abend direkt testen. Wenns funzt melde ich mich wieder.

MFG

Zappelmann

Rabenauge
22.05.2014, 16:35
Du kriegst mit nem US-Sensor keine saubere Entfernungsmessung hin, wenn der sich dabei bewegt, das kannst du vergessen. Das ist ne Laufzeit-Messung, es wird die Zeit gemessen, die das Signal braucht, um zu nem Hindernis zugelangen und als Echo reflektiert zu werden. Wenn sich während dieser Zeit der Sensor bewegt, kannst du allenfalls noch grob schätzen.

Zappelmann
23.05.2014, 07:48
So guten Morgen,

wieder ist eine programmier und testreiche Nacht vergangen. Also den Denkansatz den ich gestern hier hatte, den habe ich dann auch so umgesetzt wie ich mir das vorgestellt habe. Und soweit ich das gesehen habe funzt das soweit ganz gut.
Ich muss nur mal eine Programmiertechnische Frage geklärt wissen. Wo ich gestern keine Lösung atok zur Verfügung hatte.

Ich habe das Script gestern nochmal komplett neu aufgesetzt und sämtliche Programablaufmodule jetzt als 'def' gesetzt. Unter anderem auch den Messvorgang.
Jedoch wenn ich dann im Programmablauf in der while True: Schleife dann die def Messung_vorn_perma(): aufrufe dann macht der zwar sein Messvorgang und gibt mir das Ergebnis auf dem Bildschirm auch aus. Aber wenn ich dahinter eine if Abfrage setze, die den distance Wert aus dem Messmodul der aktuellen Messung abfragen soll, dann bekomm ich eine Error Meldung das der globale name 'distance' nicht definiert wurde. Und somit übergibt der dann den Messwert nicht an die if Abfrage. Jetzt hab ich mir beholfen indem ich das Modul halt doch wieder direkt mit in den Programablauf komplett mit reingesetzt habe anstatt nur den def Namen des Messmoduls selber. Jedoch ist das keine gewünschte Lösung warum ich mir überhaupt die Mühe mache das gesamte Script neuaufzusetzen.



def Messung_vorn_perma():
#Messung Start
print "Messung_vorn_perma_start"
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12,GPIO.OUT)
GPIO.setup(16,GPIO.IN)
GPIO.output(12, False)
time.sleep(0.1)
GPIO.output(12, True)
time.sleep(0.00001)
start = time.time()
GPIO.output(12, False)
while GPIO.input(16)==0:
pass
start = time.time()
while GPIO.input(16)==1:
pass
stop = time.time()
elapsed = stop-start
distance = elapsed * 17500
print "Abstand_vorn: %.1f cm" % distance
print "Messung_vorn_perma_ende
#Messung Ende

while True:
Messung_vorn_perma()
if distance < 20: #Und hier bekommt der dann die Meldung das Distance nicht als Globaler Name definiert wurde. Jedoch wenn ich den Namen definiere bringt mir dsa nichts da der mir das Messergebniss nicht mit übergibt.
Stop_anhalten()



ich hab wie schon erwähnt dann das Messmodul direkt mit in die Schleife gepackt und dann funktioniert auch die Übergabe des Messwertes.
Hat da jemand eine Idee wie die Definierung mit einer sauberen Übergabe geschrieben werden kann, ohne gleich das komplette Modul, in die whiles True Schleife reinzukopieren. Das ganze soll natürlich der Übersichtlichkeit dienen, damit der Programmablauf kurz gehalten wird und ich schneller nur an einer Stelle mal ne Code Anpassung durchführen kann.


MFG

Zappelmann

Rabenauge
23.05.2014, 10:24
Hm-soweit ich deises Kauderwelch verstehe, funktionierts so wirklich nicht, eben _weil_ distance nicht global definiert ist.
Distance "lebt" da wohl nur innerhalb #Messung

Zappelmann
23.05.2014, 10:55
ja und genau darum gehts ja wie kann ich distance als globalen namen definieren ?

Rabenauge
23.05.2014, 13:15
Das musst du schon die Doku deiner Programmier-Zeichensprache fragen.
In C macht mans so, vorzugweise oberhalb des eigentlichen Programms:

int distance;
oder eben
float distance=0.0;

Damit sind die Variablen global, das heisst, jedes Unterprogramm kann drauf zugreifen, und sie auch verändern.
Eventuell (ich erinnere mich dunkel, dass es _irgendwo_ so war) musste man "public" benutzen...

public distance; -> oder so in der Art...