Merkwürdigkeiten bei set_focus

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Merkwürdigkeiten bei set_focus

Beitragvon BigDaddy » 23.09.2009, 12:47

Hallo,

schlage mich hier mit einem merkwürdigen Verhalten von "set_focus" herum. Würde mich sehr interessieren, ob andere dazu schon Erkenntnisse haben. Habe mit der SuFu zunächst nichts gefunden.

Hintergrund war mein Wunsch, das minimale SD, welches eine Kamera kann, in meinen Scripts (z.B. Focus Brackets) automatisch zu bestimmen, statt manuell im Code vorzugeben. (Hätte auch den Vorteil, dass es auch stimmt, wenn man eine andere Brennweite, d.h. Zoomstufe, gewählt hat.) Die Idee basiert schlicht darauf, wiederholt ein bestimmtes SD versuchen zu setzen und auszulesen, ob die Kamera das auch annimmt.

Teste mit folgendem Code:

Code: Alles auswählen
rem TestFocus
@title TestFocus
@param f SD (mm)
@default f 500
@param d Delay (ms)
@default d 300

print "Old: "; get_focus
print "Set: "; f
set_focus f
sleep d
get_focus g
print "Get: "; g

end


Stelle nun fest, dass das mit dieser Abfrage (die des weiteren in den Scripts einfach mit "if g=f ..." usw. gehen sollte) nicht so funktioniert, wie ich mir das dachte.

Ich hatte erwartet, dass - wenn ich nur d notfalls lang genug mache - g immer gleich f sein sollte, sofern der SD-Wert erreichbar ist.

Mache aber nun folgende Beobachtungen (A620, Modus M, MF), immer mit f=500:

d ganz kurz (z.B. d = 0):
Start von SD=inf aus (also worst case sozusagen):
Old: 65535
Set: 500
Get: 448
Interpretation: hat nicht genügend Zeit gehabt, ganz bis 500 zu fahren. (*)

Zweiter Aufruf unmittelbar danach:
Old: 448
Set: 500
Get: 498

Alle weiteren Aufrufe danach:
Old: 498
Set: 500
Get: 498

Die Kamera liefert also nie 500 zurück, egal wie "nahe dran" ich starte.
Das lustige: selbst wenn ich nun d erhöhe, sogar auf 500 oder so, ändert sich daran nichts. (Kann sogar sein, dass der "get-Wert" noch ein klein wenig falscher wird.) Also auch mit sleep 500 folgendes:
Old: 496
Set: 500
Get: 496
usw. usf. bis in alle Ewigkeit.

Scheint als ob die Kamera set-Werte, die "zu nahe dran" sind am aktuellen SD-Werte, einfach ignoriert.
[Zunächst vermutete ich, vielleicht sind die zulässigen SD-Werte ja auch nicht kontinuierlich und einen Wert von 500 gibt's gar nicht, wohl aber 498 und 496. Stimmt aber auch nicht, denn bei späteren Tests habe ich durchaus get-Werte von exakt 500 schon gesehen.]

Noch verwirrender: auch die Interpretation (*) oben stimmt irgendwie nicht:
Habe Tests mit extrem langem delay gemacht, d = 1000. Ergebnis:
Old: 65535
Set: 500
Get: 443
, also fast dasselbe Ergebnis wie bei d=0!

Sieht also fast so aus, als ob die Kamera es überhaupt nicht kann, "in einem Rutsch" von inf auf 500 zu gehen, egal wie lange man wartet.

Bin nun ganz verwirrt und verstehe meine Kamera nicht. ](*,)

Hat irgend jemand eine Idee, was hier vor sich geht??
Grüße
BigDaddy
__________________
A620 Firmware v100f
CHDK v0.9.8-794
BigDaddy
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 04.09.2009, 16:05
Wohnort: München

Re: Merkwürdigkeiten bei set_focus

Beitragvon gehtnix » 23.09.2009, 13:11

Hi BigDaddy,

was isst Du, dass Du in so kurzer Zeit all die alten Leichen ausgräbst? :lol:

Schau mal im Bugtracker nach

Hier gibt es auch einen Fred dazu, der war von Hamster.78... bin gerade auf dem Sprung..

BigDaddy hat geschrieben:Bin nun ganz verwirrt und verstehe meine Kamera nicht. ](*,)

Hat irgend jemand eine Idee, was hier vor sich geht??
Idee habe ich keine, ausser

geschmeidig bleiben

gruss gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon BigDaddy » 23.09.2009, 13:24

Hi,

oops, tut mir leid, hatte ich vorher nicht gesehen!
(Natürlich keineswegs meine Absicht, olle Kamellen aufzuwärmen ohne Neuigkeitswert.)

OK, kann man diesen Thread also schliessen! Sorry.
Grüße
BigDaddy
__________________
A620 Firmware v100f
CHDK v0.9.8-794
BigDaddy
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Registriert: 04.09.2009, 16:05
Wohnort: München

gehtscho!

Beitragvon gehtnix » 28.09.2009, 15:22

Hi,

nachdem das hier letzte Beitrag zu dem Thema get_focus ist, hänge ich mal die Lösung hierein.

set_focus/get_focus, und es geht doch!

Es gab ja vielfach Meldungen dass es Differenzen zwischen dem set_focus und unmittelbarer Abfrage mit get_focus gab.

Ich habe ein kleines Skript dazu geschrieben.
Von 62mm bis 100mm, jeden mm angefahren und keinen einzigen Fehler mehr Bild

Der Unterschied ist folgender, die Positionen 62, 63, 63 usw. werden nicht mehr jeweils nur um 1mm verstellt sondern nach 62 wird um 50mm auf 112mm gefahren und erst von hier werden die 63mm angefahren. Ein Zwischenschritt eingefügt und schon ist die Differenz weg und zwar bei beiden Positionen, also bei 62 und den 112mm.

Also bitte reichlich testen. Oben im Skript steht worauf zu achten ist, Susi2Stack-Nutzer wissen wie es geht. Für die A-Serie geht es auf Anhieb.
Man kann sicherlich auch andere Bereich damit testen, einfach "i=62 to 100" entsprechend abändern. Vielleicht auch mal die 50mm reduzieren.

Und wenn das jetzt bei Allen fehlerfrei läuft, dann kann man das mit dem Hinweis auch aus dem Bugtracker rausnehmen.

gruss gehtnix
Dateianhänge
Fokus Test.bas
(738 Bytes) 88-mal heruntergeladen
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon msl » 28.09.2009, 16:34

Hallo,

das Skript funktioniert für die A720 so wie es soll inkl. Einstellung "MF".

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4507
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Beitragvon gehtnix » 28.09.2009, 19:08

Hallo,

nun, nach einer gehaltvollen Runde mit dem Radl und weiteren Tests, rudere ich ein bisschen abgeklärter zurück.

Aber, war gut dass ich mich aus dem Fenster gelehnt habe.

Da Skript habe ich noch mal aktualisiert.
Mit "Start bei X x 50mm" kann man jetzt verschiedene Bereich ablaufen lassen. "Verstellung um Xmm" ist für die Zwischenposition.

Aber siehe da, die Fehler treten wieder auf, und zwar, je größer man den Fokus wählt.

Also bis 200mm ist wohl alles OK, aber bei 500mm gibt es Abweichungen.
Bei 2000 werden diese immer größer.

Aus jetztiger Sicht der Dinge muß ich auch sagen, das ist OK so.

Denn, jetzt meine optisch laienhafte Erklärung, bewege ich die Optik bei 70mm Fokus um 1mm verstelle ich im Fokus z.B. 5mm, also auf 75mm. Verstelle ich aber bei Fokus 2000mm die Optik um 1mm dann kann sich das im Fokusbereich um (ca. ?) 300mm verändern, also Fokus steht nun bei 2300mm.
Um diese Differenz bei den hohen Fokuswerten abzufangen müsste die Kamera überirdisch genau positionieren, sprich baulicher Aufwand=Kosten.

Wir müssen wohl auch so Denken. Die Kamera soll auf 700mm positionieren, sie fährt aber nur auf 680mm weil sie nicht genauer positionieren kann. Und da kann uns ein get_focus auch nur 680mm liefern!

Aber, und das ist in der Betrachtung wohl viel wichtiger, was spielt es für eine Rolle wenn bei diesen Distanzen der Fokus sich um 30mm oder 50mm daneben befindet?

Ich denke wir können die Sache tiefer hängen.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon gehtnix » 29.09.2009, 23:54

Hallo,

jetzt habe ich mir das noch mal über einen größeren Bereich angesehen. Und das ist dann schon ernüchternd.

Man beachte aber die Werte 2000, 4000, 6000, 8000 und 10000, die werden mehrmals angefahren. Auch wenn falsch, werden sie dann konstant immer mit dem selben Wert angefahren.

Besonders Auffällig, bei 5,5m bis 8m nur eine Fokusstellung!

    Soll 1.Lauf 2.Lauf 3.Lauf Diff 1zu2 Diff 1zu 3Diff 2 zu 3
    2000= 2067 2031 2031 36 36 0
    2250= 2402 2354 2354 48 48 0
    2500= 2402 2354 2354 48 48 0
    2750= 2866 2798 2798 68 68 0
    3000= 2866 2798 2798 68 68 0
    3250= 3537 3438 3438 99 99 0
    3500= 3537 3438 3438 99 99 0
    3750= 3537 3438 3438 99 99 0
    4000= 4589 4425 4425 164 164 0
    4250= 4589 4425 4425 164 164 0
    4500= 4589 4425 4425 164 164 0
    4750= 4589 4425 4425 164 164 0
    5000= 4589 4425 4425 164 164 0
    5250= 4589 6205 6205 -1616 -1616 0
    5500= 6534 6205 6205 329 329 0
    5750= 6534 6205 6205 329 329 0
    6000= 6534 6205 6205 329 329 0

    6000= 6534 6205 6205 329 329 0
    6500= 6534 6205 6205 329 329 0
    7000= 6534 6205 6205 329 329 0
    7500= 6534 6205 6205 329 329 0
    8000= 6534 10383 10383 -3849 -3849 0
    8500= 11337 10383 10383 954 954 0
    9000= 11337 10383 10383 954 954 0
    9500= 11337 10383 10383 954 954 0
    10000= 11337 10383 10383 954 954 0

    2000= 2067 2031 2031 36 36 0
    4000= 4589 4425 4425 164 164 0
    6000= 6534 6205 6205 329 329 0
    8000= 6534 10383 10383 -3849 -3849 0
    10000= 11337 10383 10383 954 954 0
    12000= 11337 10383 10383 954 954 0

Für mich ist der Kaas gespitzt, den können wir nach meiner Meinung als gelöst, besser damit müssen wir leben, schließen.

Für den Interessierten Skript anbei.

gruß gehtnix
Dateianhänge
Fokus Test5.bas
(594 Bytes) 78-mal heruntergeladen
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Beitragvon rudi » 09.02.2010, 21:16

Hallo gehtnix,

ich habe mit meiner Kamera mehrere Versuche durchgefüht. Mit Verschieben des Fokus vor der Messung und ohne, beim kleinem Fokus begonnen und umgekehrt, ganz egal.

Das Ergebnis der Mühen: Die A590 besitzt nur 146 Fokuswerte!

Diese Tatsache erklärt zumindest die Differenzen bei set_focus und get_fokus.

Gruß rudi
Dateianhänge
test_fl2.bas
benutztes Script für die A590 mit automatischem MF und LOG-Datei
(1.7 KiB) 72-mal heruntergeladen
A590_set_focus.txt
gültige Fokuswerte der A590
(899 Bytes) 75-mal heruntergeladen
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste