Hi NumberFive,
das mit der Benachrichtigung dur das Capture Programm an SciLab ist bestimmt nicht schlecht.
Aber mit meinem Vergleich vo altem Bild und neuem BIld funktioniert es auch schon gut.
MfG Jeffrey
Druckbare Version
Hi NumberFive,
das mit der Benachrichtigung dur das Capture Programm an SciLab ist bestimmt nicht schlecht.
Aber mit meinem Vergleich vo altem Bild und neuem BIld funktioniert es auch schon gut.
MfG Jeffrey
jeffrey,
wie schnell läuft Dein System? Bei mir hat die Aufnahme eines Bildes und die Steuerung des Roboters für einen Schritt etwas unter 1 Sekunde gebraucht.
Das ist eigentlich etwas langsam, für eine flüssige Bewegung des Roboters sollte sich das ganze im 1/10 Sekunden Bereich bewegen. Der Flaschenhals bei meinem System ist aber nicht die Bildverarbeitung, sondern die langsame Bildaufnahme.
Gruss,
stochri
Hi,
die Installation lief eigentlich problemlos, man muss diese imagemagic auch installieren. Aber das stört ja nicht wirklich, allerdings ist die Bildausgabe darüber sehr langsam, hat da jemand eine bessere Lösung?
Ich hab nen AthlonXP2400, mit 512 ram.
Je nach Bildauflösung ist das Bildeinlesen schon langsam, allerdings benötigt meine Bildverarbeitung je nach Aufwand auch einiges an Zeit. Ich denk unter 1s wird schwer. Allerdings halte ich eine Sekunde für ausreichend. Wenn der Roboter jede Sekunde seine Position erfährt, muss das doch reichen, er hat ja auch ne eigene Intelligenz, mit der er dann den Weg von der Ist- zur Sollposition berechnen kann, und eine Korrektur der Istposition jede Sekunde reicht da glaube ich. Ich weiß ja nicht wie schnell dein Robotr ist, aber mehr wie 10-20cm wird er in der Zeit doch nicht schaffen, vorallem wenn er nicht an der richtigen Position ist, und er korrigieren muss, dann bremst man ja sowieso. Und wenn die Position stimmt ist es ja egal, wenn die nächste Positionsbestimmung erst ne Sekunde später kommt.
MfG Jeffrey
Hi,
hab mir jetzt doch mal Scilab 4.0 runtergeladen(ging eigentlich ziehmlich schnell). Hab auch schon das Siptool.
Jetzt brauche ich nur noch dieses imagemagic Ding. Aber wo kann ich mir das runterladen? Ich war zwar schon auf der Seite von image aber hab keinen Downloadlink gefunden.(bin ich zu blöd oder warum krieg ich das nicht hin???)
Wo oder wie habt ihr das runergeladen. Denn meine alte Version von imagemagic geht ja bestimmt nicht.
MfG Mike
@ Mike:
Hi,
ich habe das von der Seite, die du angegeben hast.
@ alle:
wie ist den aus SciLab heraus ein Zugriff auf die serielle Schnittstelle möglich? Damit ich die ermittelten Daten auch irgendwie an die Ausenwelt übergeben kann.
MfG Jeffrey
Also wenn ihr so weit runter von dem Zeiten wollt ist wohl der weg über die platte der falsche dann müssten wir das mit dem speicher hin bekommen den laden und schreiben braucht zeit noch dazu im jpeg format da das gepackt und wieder entpackt werden muß.
es gibt dieses rsh von dem ich noch nicht verstanden habe wie es tut aber das scheint genau dafür gemacht worden zu sein. dann kann ich nämlich daten von rechner zu rechner oder lokal zwischen programmen austauschen.
So weit
gruß
hi,
ich denke nicht, dass das speichern die meiste zeit benötigt, da die bilder doch von der größe her überschaubar sind. ich denke es ist eher die ladefunktion von scilab die zu langsam ist.
mfg jeffrey
Hast Du das ganze projekt runtergeladen ? https://www.roboternetz.de/phpBB2/ze...ag.php?t=15537Zitat:
wie ist den aus SciLab heraus ein Zugriff auf die serielle Schnittstelle möglich? Damit ich die ermittelten Daten auch irgendwie an die Ausenwelt übergeben kann.
Dort befinden sich die Script-Files asuro_vor usw.
#!/bin/bash
echo 2 > /dev/ttyUSB0
( Linux-Version )
Mike hat die für Dos umgeschrieben ( findet sich hier im Thread ). Aus scilab kann man einen Dos-Kommandos mit
unix Kommandoname
aufrufen.
Ich gebe zu, das ist etwas murksig, aber es funktioniert und es war die Lösung, die ich ohne zu viel Aufwand realisieren konnte. Man muss allerdings vorher die serielle Schnittstelle initalisieren, z.B. einmal Hyperterminal aufrufen. Es gibt auch ein Dos-Kommando, hab aber den Syntax nicht mehr gefunden.
Gruss,
stochri
@Number5
Mike hat ja schon herausgekriegt, das man auch BMP-s laden kann. Es wäre natürlich sehr viel praktischer, die Bildaufname direkt in Scilab zu machen.Zitat:
Also wenn ihr so weit runter von dem Zeiten wollt ist wohl der weg über die platte der falsche dann müssten wir das mit dem speicher hin bekommen den laden und schreiben braucht zeit noch dazu im jpeg format da das gepackt und wieder entpackt werden muß.
Hast Du Scilab schon installiert ?
Gerade eben habe ich ein Kommando gefunden
folgendes eingeben:
help link
Mit der Funktion "link" läst sich eine C-Routine direkt an Scilab anbinden. Ich denke mal es wird auch eine Möglichkeit geben, eine DLL-direkt anzusprechen, wenn man Dein Programm also in eine DLL umwandeln könnte ...
Gruss,
stochri
Nachtrag: hier ist beschrieben, wie eine VisualC++ DLL an Scilab angebunden wird:
http://www.cs.aueb.gr/users/yiannisk...bot/x6087.html
( Punkt 6.2.2.6. ziemlich weit unten )
Es gibt tatsächlich eine viel bessere Möglichkeit die serielle Schnittstelle mit Scilab anzusprechen:Zitat:
wie ist den aus SciLab heraus ein Zugriff auf die serielle Schnittstelle möglich? Damit ich die ermittelten Daten auch irgendwie an die Ausenwelt übergeben kann.
http://www.scilab.org/contrib/displa...php?fileID=295
die sip habe ich jetzt auch für die 4 version gefunden und runter geladen leider lässt sie sich nicht installieren weil die verwendete graphic treiber neuer ist und die alte finde ich nicht zum runter laden.
So ein m... jetzt hänge ich hier schon den ganzen nach mittag rum und habe kein zeil code hin gebracht ich habe nämlich eine Idee wie wird sehr schnell werden können. nur muß ich hier was zu testen haben.
Gruß
hi,
liegt das am Treiber deiner Graka oder an dem ImageMagick, weil davon könnte ich dir die richtige Version schicken.
MfG Jeffrey
PS: Ich hab mal ein eigenes Thema zur Formenerkennung aufgemacht https://www.roboternetz.de/phpBB2/viewtopic.php?t=18184
Hi jeffrey,
ich habe mir jetzt imagemagick runtergeladen aber ich kann Sip immer noch nicht installieren. Ich denke es ist die falsche Version imagemagick.
Könntest du mir vielleicht auch die richtige Version schicken?
MfG Mike
hi mike,
wenn du deine mail adresse angibst gern. du brauchst version 6.2.5-5
mfg jeffrey
so jetzt habe ich mal das zip file updatet.
jetzt müsst ihr nicht mehr auf das bild warten sonder könnt es euch holen.
Init() gibt ein zahl zurück merken !
die braucht ihr am ende
Mit GetBitmap() holt ihr ein neues bild auf die Platte wenn da 1 zurück kommt
Deinit(Zahl von vorher) räumt ihr wieder auf
Also da init und deinit immer nur einmal am anfang und am ende im sci file müsst ihr natürlich pfad angabe an passen. die dll's müssen ins selbe verzeichnis wie die exe.
Gruß
hää???
irgendwie versteh ich net was des bedeuten soll
Hallo Irgend wie hat mich gestern wohl das Forum durch einander gebraucht sehe erst heute deine Beiträge Komisch !?!?!
6.2.5-5 jo die Bräuchte ich auch.
Habe nämlich nur was neueres gefunden.
So es geht Auch Komplett Ohne Platte.
Bild hier
Was verstehts du nicht ?
In dem sci file sind drei Funktionen drin Init GetBitmap und Deinit.
Init lädt die DLL
Deinit entlädt die DLL
GetBitmap() holt ein neues Bitmap
das ist dein Code Oder ?
while(1)
x=imread
if x=xalt
else
programm
xalt=x
end
den mußt du jetzt nur so ändern
Init()
while(1)
GetBitmap()
x=imread
programm
end
hi,
brauchst du die version 6.2.5-5 noch, dann aknn ich sie dir per mail schicken.
ich hab nur nicht verstanden um was es geht, weil du als gast geschrieben hast, und ich dann nicht wußte von welchen files du überhaupt redest.
mfg jeffrey
Ja die Brauche ich noch
Super Number5,Zitat:
So es geht Auch Komplett Ohne Platte.
mit Deinem Programm duerfte sich der Roboter jetzt wesentlich schneller steuern lassen.
Wie ist denn die Bildwiederholrate, die man so hinkriegen kann ?
Gruss,
stochri
P.s.: koenntest Du das Programm in diesem Thread
https://www.roboternetz.de/phpBB2/ze...ag.php?t=15537
posten ?
Bei dem langen Thread hier ist es etwas schwierig, die richtige Seite zu finden, wenn man Deine Routinen herunterladen moechte. Der andere Thread ist sehr kurz und man kann ihn immer als Querverweis angeben.
hi number5,
irgendwie funktioniert das bei mir nicht. ich habe alle dateien nach d:\videocapture kopiert, und den vwérweis in get it geändert.
wenn ich init ausführe bekomme ich immer -1 zurück. wenn ich danach getbitmap mache kommt ein schwarzes bild heraus. muss die videocapture software laufen?
mfg jeffrey
ja das programm muß laufen sonst klappt das nicht. die dll unterhält mit dem Programm.
Rein Theoretisch sollten 20 - 40 FPS möglich sein je nach dem wie schnell die Platte ist. Komplett ohne Platte habe ich es noch nicht gemacht. bild auf der platte war immer die Kontrolle.
Ich müsste jetzt noch wissen wie das Graphic Tool das Bild in scilab ablegt das habe ich noch nicht so ganz kapiert.
Wie messe ich zeiten im scilab ?
@stochri
hast du auch ne windows kiste mit der du testen kannst ?
wenn jemand die Readme schreibt können wir ds gerne auch in dem Anderen Thread ablegen aber so ohne text wird es schwer es zu verstehen.
Gruß
Komme erst naechste Woche wieder an meinen Rechner.Zitat:
hast du auch ne windows kiste mit der du testen kannst ?
Was mir aufgefallen ist:
- Dein Bad liegt neben dem Wohnzimmer O:)
- und das Bild ist schwarz/weis
Wird bei Deinen Routinen auch die Farb-Matrix mit uebertragen ? Warum brauchst Du eigentlich imread() ? Kann man das Bild nicht direkt mit GegBitmap() reinholen ?
@Mike
Halle Mike, wie sieht´s aus? was machen Deine Versuche ?
das geht wegen dem ablauf nicht den die Exe muß erstmal das Bild machen das stösst das GetBitmap an.
dann werden die daten in die dll kopiert und dann kann ich sie holen.
Wegen der daten menge habe ich erstmal mit scharzweiß gearbeitet.
True Color ist die nächste wenn ich mal verstanden habe wie der andere die daten ablegt. damit die funktionen weiter tun.
das imread brauche ich nicht mehr in der dll ist einfunktion die heist getGrayBitmap. nur die dll ist noch nicht stabil genung für den feld versuch.
gruß
hi,
bei mir funktioniert das ganze irgendwie nicht.
ich habe es jetzt so versucht:
a=Init();//bit immer -1 zurück
b=GetBitmap();//gibt immer 0 zurück
c=imread('stillcap.bmp');//allerdings wird stillcap garnicht erzeug, wenn ich die funktion BitMap() aufrufe
was mache ich falsch? ist es schlimm, wenn init öfters als einmal ausgeführt wird?
mfg jeffrey
nicht schlim aber verbraucht unnötig speicher.
wenn es funktioniert hat gibt GetBitamp 1 zurück.
Oh was vergessen zu schreiben inder INI gibt es eine neuen Parameter
USESCI=1 der sollte so aus sehen
immer erst das VideoCap starten dann init auf rufen dann sollte es gehen
Gruß
hi,
bei der neuen zip datei ist garkeine ini mit dabei. kann ich den einterag einfach bei der alten hinzufügen?
mfg jeffrey
der eintrag solte von allein erzeugt werden wenn du richtige version der exe hast
hi numberfive,
bei mir gibt es diesen eintrag nicht, und er wurde auch nicht erzeugt. wenn ich zuerst das programm und danach erstr scilab starte funktioniert es mit dem oben angegebenen code nicht, es wird immer -1 bei init u8nd 0 bei getbitmap zurückgegeben.
@mike
hi,
funktioniert das programm von number5 bei dir?
mfg jeffrey
habe zur sicher heit das zip file auf dem server noch updatet geht das jetzt ?
hi,
jetzt geht es, aalerdings benötigt der getbitmap befehl ca 20s für die ausführung. geht das bei dir schneller?
mfg jeffrey
bei mir ist die Zeit nicht war nehmbar die der befehl dauert hört sich so an als würde die Rückmeldung nicht klappen vom VideoCapture das Timeout zum warte ist 30 sec.
Komisch und der Parameter in der INI ist auf 1 ?
Gruß
Hi,
@Jeffrey, danke, danke für imagemagick. Hab jetzt alles installiert. Bin aber noch nicht zum testen gekommen. (Hoffe das es geht. Sonst müssen wir halt doch noch mal die 20mb Datei probieren)
@Stochri, hab noch keine Zeit gefunden weitere Versuche zu machen.Und Abends hab ich dann auch keine Lust mehr. Am Wochende versuche ich dann alles über Scilab4.0 zum laufen zu kriegen. Wenn ich vorher schon weiter mache melde ich mich natürlich.
MfG Mike
hi,
der parameter usesci ist 1, jpg und laufend sind 0, vielleicht funktioniert es nur mit jpg und nicht mit bmp, werde es bald mal testen.
mfg jeffrey
@Number5
Probiere malZitat:
Wie messe ich zeiten im scilab ?
help realtime
da koennte es einen Querverweiss auf Zeitmessfunktionen geben.
Gruss,
stochri
hi,
ich habe es nochmal gestoppt. du hast recht. der befehl dauert genau 30s zur ausführung. das bild ist aber schon nach ca 1s auf der festplatte gespeichert. sowohl bei jpg als auch bei bmp.
vielleicht liegt es daran, dass ich eine farbkamera verwende.
mfg jeffrey
hi,
zeitmessen geht mit dem befehl
tic();
programm;
toc()
gibt die zeit zwischen tic und toc aus(in s).
deswegen so arg schnell wird es nie werden, weil nur um ein 640x480 bil einzulesen benötigt scilab schon 0.35s
mfg jeffrey
wenn die funktion so lange braucht dann klappt die rück meledung nicht und der Parameter ist wirklich auf 1 in dem INI file ?
function Demo
tic();
a=GetBitmap();
disp(a);
ColorArray = GetGrayBitmap(ColorArray,240,320);
t= toc();
disp(t);
endfunction
Das nenn ich schnell oder ?
-->Demo()
1.
0.047
Ok jetzt muß ich das noch für die farben machen.
das Bild wurde zur sicher heit aber noch auf der Platte
ab gelegt aber nicht geladen. Ich denke mit den Zeiten kann man was anfangen.
Kann jemand von euch gut englisch ?
Und kann mal die Jungs von sip was fragen ?
Mir Fehlt die definition von MaxRGB.
double factor = 1.0 / MaxRGB;
Damit ich die Bilder compatible in den speicher von scilab legen kann.
damit die Funktion weiter nutzen könnt auch wenn das bild von mir kommt.
wenn das geschafft ist. sollten wir viel schneller sein.
Reicht die Auflösung von 240X340 nicht ?
Gruß
Die Geschwindigkeit waere super !Zitat:
Das nenn ich schnell oder ?
-->Demo()
1.
0.047
Wenn man ein Farbild mitZitat:
Mir Fehlt die definition von MaxRGB.
double factor = 1.0 / MaxRGB;
x=imread("bild.jpg");
laedt und danach den groessten vorkommenden Wert mit
max(x)
ueberprueft, erhaelt man 1.
D.h. die maximal vorkommenden Farbwerte sind auf 1 normiert. Du musst also den Faktor so waehlen, dass bei den hellsten Punkten eine 1 fuer die entsprechenden Farben uebergeben wird.
Bei Scilab ist die Matrix fuer ein Bild NxMx3 gross. Hier waere es von Vorteil, wenn man die Werte nicht als Fliesskomma, sondern als Byte Werte uebergeben koennte, dadurch wuerde sich die Speichergroesse gleich um den Faktor 4 reduzieren.
Bei Matlab gab es die Moeglichkeit 8Bit-Matrizen zu uebergeben. Weiss aber nicht, ob das bei Scilab auch geht und verkompliziert natuerlich die Programmierung etwas.
Meine Tests habe ich mit dieser Bildgroese gemacht, das spart auch Rechenzeit beim Auswerten.Zitat:
Reicht die Auflösung von 240X340 nicht ?
Gruss,
stochri
hi,
das klingt ja echt gut. damit kann man echt einige bilder sdchaffen.
den befehl disp(a) und disp(t) brauchst du eigntlich nicht, lass einfach den strichpunkt hinter toc und gezbitmap weg, und das ergebnis wir gleich angezeigt, ist immer so, wenn man den strichpunkt weg lässt.
240x320 habe ich zum testen zum teil auch verwendet, sobald man aber dann die entfernung zur kamera erhöht wird das objekt zu klein. allerdings ist es schon mal ein riesen vortschritt, wenn es für 240x320 funktioniert.
mfg jeffrey