- LiFePO4 Speicher Test         
Seite 34 von 39 ErsteErste ... 243233343536 ... LetzteLetzte
Ergebnis 331 bis 340 von 390

Thema: Rasenrobo mit Induktionsschleife, Schaltbilder, Hallsensor

  1. #331
    Erfahrener Benutzer Roboter-Spezialist Avatar von Bernd_Stein
    Registriert seit
    19.09.2008
    Ort
    Deutschland : Nordrhein-Westfalen ( NRW )
    Alter
    53
    Beiträge
    407

    Bregrenzungsdrahtsignalaufnehmer und Mähstrategie

    Anzeige

    Praxistest und DIY Projekte
    Zitat Zitat von Christian H Beitrag anzeigen
    ...
    Ich denke mir das Funktionsprinzip ist folgendes: Durch den Phasensprung in der Mitte der Sinuswelle, hat man einen definierten Zeitpunkt in dem Signal. Geht man z.b. x ganze Phasen nach vorne erhält man eine positive oder negative Halbwelle je nachdem ob der Sensor innerhalb oder außerhalb der Schleife ist. Der Zeitpunkt des Phasenwechsels müßte dabei ganz genau bestimmt werden, was ich mir andererseit schwer vorstelle, aber wie soll´s denn sonst funktionieren.
    Zu aller erst : " Im Posting #320 ist der PDF-Schaltplan unvollständig ". Bei dem Schaltplan des Begrenzungsdrahtsignalaufnehmers fehlt die Ansteuerung der ICs 4 und 5 ( 4051 ). Außerdem geht es noch weiter mit Verstärkerstufen. Ich vermute Patte 4 de U453 wird gleich sein mit Patte de U454. Da es hierzu kein Schaltplan gibt.
    Hier mal die Schaltpläne des oder der Franzosen :

    Klicke auf die Grafik für eine größere Ansicht

Name:	Begrenzungsdrahtsensoren.jpg
Hits:	103
Größe:	65,0 KB
ID:	25506 Klicke auf die Grafik für eine größere Ansicht

Name:	capteurs-electromagnetiques-carte2.jpg
Hits:	79
Größe:	42,8 KB
ID:	25507

    Thema : " Funktionsprinzip des Begrenzungsdrahtsignalgebers von FriendlyRobotics "

    Ehrlich gesagt, weiß ich nicht wie das Funktionsprinzip ist. Die Seite ist in englisch und meine Englischkenntnisse reichen da nicht aus. Und meine Elektronikkenntnisse reichen auch nicht um aus den aufgenommen Signalverläufen zu erkennen was das Prinzip ist.
    Und wo ich mich gerade mit den Schaltplänen des Begrenzungsdrahtsignalaufnehmers befasse, merke ich das ich auch noch mal das Thema Operationsverstärkerschaltungen ganz nötig habe.

    Das entlangfahren am Begrenzungsdraht macht der RoboMow RL500 sehr gut. Auch 90° Kurven meistert er perfekt ( obwohl davon - glaube ich - abgeraten wird ). Er fährt wirklich schnurstracks gerade dem Begrezungsdraht nach. Wenn man sich anhand der Schaltpläne bzw. der aufgenommen Signale den Aufwand ansieht, scheint eine vernünftige Fahrt entlang des Bergrenzungsdraht nur mit soch einem Aufwand möglich. Natürlich spielt auch die Reglung der Antriebsmotoren dabei eine wesentliche Rolle.


    Thema : " WebCam "

    Der Thread ist nun schon sehr lang, aber das ist doch der Thread wo per Software bzw. Visualisierung das Mähfeld in kleine Quadrate aufgeteilt wurde um zu sehen wo der RMR bereits gemäht hat oder ?

    Gerade die Mähstrategie ist ja der ganze Knackpunkt bei den RMR. Der Bosch INDEGO, RoboMow RS630 und all die anderen aktuellen RMR die zur Zeit wie Pilze aus dem Boden schießen, haben für mich immer noch kein vernüftiges Mähkonzept. Der INGEGO hörte sich von der Mähstrategie sehr viel versprechend an, aber in der Realität mäht er nicht so systematisch wie in den Animationsfilmen dargestellt.

    Mit der WebCam in Kombination mit anderen Orientierungshilfen scheint ein sehr effizientes Mähen möglich.
    Die anderen Kombinationen die mir spontan einfallen wären der Bergrenzungsdraht selber, Odometrie und ein Kompass.
    Die WebCam könnte grob feststellen im welchem Quadranten sich der RMR befindet, mittels Begrenzungsdrahtsignalstärke wäre es möglich den Abstand bis zu diesem im Zentimeterbereich zu bestimmen und per Kompass und Odometrie könnte man gezielt den RMR zu einem Quadranten fahren lassen wo noch gemäht werden muß.
    Die Mährstrategie stelle ich mir so vor, das erstmal entlang des Begrenzungsdraht gemäht wird. Jedes abbiegen stellt einen besonderen Punkt dar. Also so eine Art " Leuchtturm ", dessen Koordinaten als Bezungspunkt dienen kann. Nun wird beim erneuten erreichen des ersten Leuchtturms , die Schleife mit halber Mähbreite enger bzw. mit einem größeren Abstand zum Begrenzungsdraht gefahren. Also ein spiralförmiges Mähen von Außen nach innen. Auch feste Gegenstände gegen die der RMR stößt könnten als Leuchturm dienen. Mittels WebCam weiß man wieder in welchem Quadranten sich der RMR befindet und der feste Gegenstand bietet wieder die Möglichkeit einen Fixpunkt innerhalb dieses Quadtranten zu bestimmen. Dieser befindet sich ja wieder in einem bestimmten Winkel und Abstand zu einem anderen Fixpunkt ( Leuchturm ). Um so mehr Fixpunkte um so besser die Orientierung des RMR.


    Bernd_Stein
    Geändert von Bernd_Stein (16.05.2013 um 10:08 Uhr) Grund: Die Schaltpläne sind zu unscharf. Füge sie als Anhang an. Aber wo sind die Anhänge geblieben ?
    CRS Robotics A255, TRONXY X3A, TinkerCAD, c´t-Lab, ProfiLab Expert, AVR8 Assembler

  2. #332
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260
    Hallo,

    in dem Beitrag wird auch nicht erklärt wie die Unterscheidung innen/außen zustandekommt. Er beschreibt das Signal, erklärt letztlich aber auch nicht die Funktion. Meine Frage wäre diesbezügl, ob der RoboMow RL500 absolut feststellen kann, ob er sich innen oder außen befindet denn nur den Wechsel innen nach außen (oder außen nach innen) zu detektieren, ist natürlich wesentlich einfacher. Sprich, stellt man den RoboMow RL 500 außerhalb der Schleife auf und startet ihn dann, denkt er dann dass er innen ist??

    Webcam: der Thread mit den kleinen Quadraten war ein anderer. Hoffentlich komme ich am Wochenende dazu nochmal einen Beitrag zum webcam-Theam zu machen

    Muß jetzt wieder meine Brötchen verdienen. Viele Grüße

    Christian

  3. #333
    Erfahrener Benutzer Roboter-Spezialist Avatar von Bernd_Stein
    Registriert seit
    19.09.2008
    Ort
    Deutschland : Nordrhein-Westfalen ( NRW )
    Alter
    53
    Beiträge
    407

    Außerhalb,- Innerhalb des Begrenzungsdrahtes

    Zitat Zitat von Christian H Beitrag anzeigen
    ...
    Meine Frage wäre diesbezügl, ob der RoboMow RL500 absolut feststellen kann, ob er sich innen oder außen befindet denn nur den Wechsel innen nach außen (oder außen nach innen) zu detektieren, ist natürlich wesentlich einfacher. Sprich, stellt man den RoboMow RL 500 außerhalb der Schleife auf und startet ihn dann, denkt er dann dass er innen ist??
    Habe die Wetterlage genutzt um dies zur überprüfen.

    Vorab : Im 90° Winkel und größer darf der Begrenzungsdraht verlegt werden, nur nicht kleiner.

    Also, lasse ich den RMR außerhalb seiner Schleife auf diese zufahren, positioniert er sich so das er diese im Uhrzeigersinn abfährt. D.h. richte ich ihn außerhalb seiner Schleife so aus, das er gegen den Uhrzeigersinn fahren müsste, korriert er sich so lange bis er seine Fahrtrichtung im Uhrzeigersinn ausgerichtet hat.

    Innerhalb seiner Schleife macht er alles um gegen den Uhrzeigersinn zu fahren.
    Setz man den RMR zu nahe an den Begrenzungsdraht, so gibt er dies als Fehlermeldung an und rührt sich nicht.

    Somit würde ich mal behaupten, er erkennt definitiv ob er sich außerhalb oder innerhalb der Schleife befindet, nachdem er eine Richtung eingeschlagen hat. Er besitzt vier Sensoren ( Festinduktivitäten ). Vorne Links, Vorne Rechts, Hinten Links, Hinten Rechts.

    Was zufällig aufgefallen ist, ist das es an einigen Stellen ein Problem mit dem Abstand zum Rand hin gibt, wenn er - ich sage mal - verkehrt herum fährt. Da ich wie in der Bedienungsanleitung vorgegeben, den RMR immer innerhalb der Schleife positioniert habe und dementsprechend dieser gegen den Uhrzeigersinn gefahren ist und ich den Begrenzungsdraht so nah wie möglich am Zaun verlegt bzw. korriert habe bis dies so genau wie möglich passte. Dies bedeutet das er nicht oder nicht immer genau mittig auf dem Begrenzungsdraht fährt. Ich meine dies auch zu Anfang beim verlegen des B-Drahtes so beobachtet zu haben, das der RMR nahe am Begrenzungsdrahtsignalgeber mittig über diesen fuhr und weiter entfernt stark aussermittig.


    Bernd_Stein
    CRS Robotics A255, TRONXY X3A, TinkerCAD, c´t-Lab, ProfiLab Expert, AVR8 Assembler

  4. #334
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260
    Hallo,

    noch mal zur Wahl vom Netzteil, insb. an jguethe, dass das 36 V 12 A nicht ausreichend sein sollte und das 24 V 20 A Netzteil besser wäre. Das kommt mir sonderbar vor. Nimmt man den Aufbau aus RN-Wissen wird ein 1mF Kondensator über einen Widerstand von 23 Ohm geladen. Bei einer Puls-Frequenz von 5 Hz wird der Kondensator für etwa 2 ms an die Schleife, sagen wir mal von 3 Ohm, gelegt. Dann fließt in der Schleife kurzzeitig ein Strom von etwa 10A. Im Schnitt macht das bei dem Pulsverhältnis von 1:100 einen Strom von 100 mA. Was wiederum einer mittleren Leistung von etwa 3 bis 4 W entspricht. Zum Aufladens des Kondesators fließen wegen des 23 Ohm Widerstandes maximal 1 bis 2 A, wobei der Kondensator bereits nach 20 ms fast voll geladen ist. 36V 12 A sollten insofern sogar günstiger sein als 24 V 20 A. Eigentlich könnte sogar ein kleineres 5V-Neztteil reichen, wenn man über einen DC-DC step up Konverter (z.B. den Max643) den Kondensator auflädt.

    Ein besonders hoher Verbrauch ist das somit nicht. Der Stromverbrauch der Anlage für den RoboMow ist offensichtlich besser. Die Umsetzung aber doch komplizierter. (Der Trick ist wohl, in der Sinusschwingung zu detektieren ob die letzte Halbwelle unmittelbar vor dem Phasenwechsel positiv oder negativ ist).


    Mit freundlichen Grüßen

    Christian
    Geändert von Christian H (19.05.2013 um 09:09 Uhr)

  5. #335
    Benutzer Stammmitglied
    Registriert seit
    12.04.2005
    Ort
    Hamburg
    Alter
    85
    Beiträge
    64
    Hallo Christian,
    in meiner Schaltung liegt ein Widerstand R von 1,1 Ohm in Reihe mit C von 10000µF (=10 mF). Bei meinem Puls-Verhältnis von 5ms AN / 195ms AUS sollte C in der Pause (195ms) immer wieder so gut wie voll aufgeladen werden. Die Zeitkonstante von R/C ist deutlich geringer als 195ms. Die Schleife wird über R aus dem Netzteil u n d gleichzeitig ohne Vorwiderstand aus C gespeist. Der Schleifenwiderstand selbst dürfte deutlich unter 1 OHM liegen. Wenn ich mein Meßgerät anlege, erhalte ich nicht einmal ein eindeutiges Ergebnis. Wenn ich insgesamgt mit 1,5 OHm rechne (Vorwiderstand + Schleifenwiderstand), beträgt I bei dem 24V/20A-Netzteil rechnerisch 16A. Bei meinem "alten Netzteil "lieferte" nur das ohmsche Gesetz rechnerisch 24A, das Netzteil konnte jedoch nur 12A. Aber jenseits aller Theorie steht fest, dass ich mit dem neuen Netzteil keine Probleme mehr habe. Der Strom-Impuls ist deutlich größer geworden.

    Zum Torcman-Motor / Jeti-Contoller
    Was sagst Du denn zu meiner Ansteuerung im geregelten Heli-Modus. Ich hatte es früher nicht gewagt, diesen Modus einzustellen, weil dann das Timing 0 Grad beträgt. Torcman empfiehlt ja 24 Grad. Nun habe ich es einfach gemacht und es funktioniert ganz toll. Über die Jeti-Box kann man das Timing dann doch wieder auf 24 Grad setzen. Ich habe bisher keinen Unterschied feststellen können (ob 0 oder 24 Grad Timing).

    gruss
    jguethe

  6. #336
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260
    Hallo jguethe,

    na Hauptsache es funktioniert. Durch den geringen Vorwiderstand ist die Zeitkonstante ja nur um 10 ms. Der mittlere Stromverbrauch wird dadurch auch nur bei 1 A sein. Durch das kräftige Netzteil bricht die Spannung nicht ein. Es gibt halt unterschiedliche Anforderungen je nach Länge der Schleife. Schade ist nur, dass man extra ein so starkes Netzteil braucht.

    Die Ansteuerung mit Heli-Modus ist natürlich clever. Bei meinem Regler habe ich zu Beginn die PWM-Frequenz nach oben stellen müssen, da der Motor ansonsten einen unangenehmen hohen Summton von sich gegeben hat. Zum Geschwindigkeitsregel habe ich einen dunklen Streifen auf der Glocke und den optischen Sensor CNY70. Darauf kannst Du dann wohl verzichten. Heli-Modus kann ich bei meinem leider nicht einstellen.

    Viele Grüße

    Christian
    Geändert von Christian H (19.05.2013 um 15:31 Uhr)

  7. #337
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260

    Objekterkennung mit webcam, Navigation

    Hallo,

    vor einiger Zeit ist noch mal nach Bildverarbeitung/webcam gefragt worden. Da ich vor Kurzem von VB6 auf vb.net umgestiegen bin, stelle ich hier noch mal meine Erfahrungen und Codeschnipsel zusammen. Vielleicht ist es ja dem einen oder anderen hilfreich Als erstes ein kurzes Video, vom Monitor mitgeschnitten:



    Die webcam ist im 2.Stockwerk angebracht. Die Videoüberwachung besteht im wesentlichen aus:
    1. Erstellen von bitmaps aus dem laufenden mjpg-stream
    2. Korrektur der schrägen, verzerrten Bildern in eine Aufsicht von oben
    3. Objekterkennung des Rasenrobo
    4. Steuerung des Rasenrobo entlang eines vorgezeichneten Kurses

    Für Objekterkennung könnte man auch OpenCV einsetzen. Ginge sicher flotter, wollte mir aber mal alles zu Fuß erarbeiten. Aforge habe ich kurz angetestet. Nachdem es eine gefühlte Ewigkeit dauerte, bis der live-stream auf dem Monitor war, habe ich auch das gelassen und alles nur mit vb.net Bordmittel programmiert.

    zu 1.: Habe eine Klassenbibliothek "streamtoimage.dll" gestrickt (in OpenCV gibt´s dafür sicher fertige .dll):
    Code:
    Imports System.Drawing, System.Drawing.ImagingImports System.Net, System.IO
    Imports System.Net.Sockets
    Public Class Streamtoimage
        Shared img As Bitmap, flag As Integer = 0, flag2 As Integer = 0
        Shared flag3 As Integer = 0, z As Integer = 0, z5 As String, ii As Integer = 0
        Shared tcpclient As TcpClient
        Shared enc As System.Text.Encoding = System.Text.Encoding.Default
        Shared st As String 
        Shared buffer5(400000) As Byte, buffer6(200000) As Byte, remotehost2 As String = "", schnipsel2 As String = ""
        Shared WithEvents t1 As Timers.Timer
    
        Public Shared Function zeit()
            Return z
        End Function
    
        Public Shared Sub starten()
            If flag3 = 1 Then Exit Sub
            flag3 = 1 : ii = 0 : flag = 0 : flag2 = -200
            tcpclient = New Net.Sockets.TcpClient()
            tcpclient.ReceiveBufferSize = 100000
            tcpclient.Client.Connect(remotehost2, 80)
            st = "GET /" + schnipsel2 + " HTTP/1.1" + vbCrLf + "Host: 192.168.1.15" + vbCrLf + "Connection: keep-alive" + vbCrLf + vbCrLf ' + "Referer: http://" + "192.168.1.35/live.asp?r=20121005" + vbCrLf + vbCrLf
            tcpclient.Client.Send(enc.GetBytes(st))
            t1 = New Timers.Timer : t1.Interval = 30 : t1.Enabled = True
            flag3 = 0
        End Sub
    
        Public Shared Function streamtoimage(ByVal remoteHost As String, ByVal schnipsel As String)
            remoteHost2 = remoteHost : schnipsel2 = schnipsel
            If IsNothing(tcpclient) = True Then starten()
            If tcpclient.Connected = False Then starten()
            Return (img)
        End Function
    
        Protected Overrides Sub Finalize()
            t1.Enabled = False
            tcpclient.Close()
            MyBase.Finalize()
        End Sub
    
        Private Shared Sub t1_Elapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs) Handles t1.Elapsed
            If flag > 0 Then Exit Sub
            flag = 1 : flag2 = flag2 + 1 : If flag2 = 50 Then starten()
            Dim data As String, i As Integer = 0, iii As Integer
            Dim länge As Integer, anf As Integer
            If tcpclient.Client.Available > 0 Then
                i = tcpclient.Client.Receive(buffer6)
                If ii + i >= 400000 Then ii = 0
                    Array.Copy(buffer6, 0, buffer5, ii, i) : ii = ii + i
                    data = enc.GetString(buffer5, 0, ii)
                    iii = InStr(data, "Content-Length")
                    If iii > 0 And ii > iii + 50 Then
                        länge = (Val(Trim(Mid(data, iii + 15, 7))))
                        anf = InStr(iii + 18, data, vbCrLf + vbCrLf)
                        If anf + 3 + länge <= ii Then
                            Array.Copy(buffer5, anf + 3, buffer6, 0, länge)
                            img = Bitmap.FromStream(New MemoryStream(buffer6))
                            z = Now.Second * 1000 + Now.Millisecond
                            ii = 0 : flag2 = 0
                        End If
                    End If
            End If
            flag = 0
        End Sub
    End Class
    Aus dem Programm können dann laufend mit img=streamtoimage("IPwebcam","Anfrage") Bilder aus dem web-stream geladen werden. Tricky ist der Ausdruck für "Anfrage". Der ist von der webcam abhängig und z.B. für meine Edimax IC-3115W: snapshot.cgi Gibt man z.B. im webbrowser
    http://IPwebcam/snapshot.cgi
    ein, kommt sofort der livestream. Für andere webcam läßt sich der Ausdruck aus dem Quellcode rausfischen.

    2. das image packt man in ein array (buffer1):
    Code:
            Dim bd1 As BitmapData
            Dim rect As New Rectangle(0, 0, img.Width, img.Height)
            bd1 = img.LockBits(rect, ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb)
            dim max as integer =   bd1.Stride * bd1.Height - 1
            dim buffer1(max) as integer
            Copy(bd1.Scan0, buffer1, 0, max) : img.UnlockBits(bd1)
    dann verschiebt man die Pixel im Array buffer um eine Aufsicht von oben zu erhalten. Stichwort Koordinatentransformation,Projektion

    Code:
    matrix()
    .
    .
    .
    For i = 1 To max : Bildneu(i) = buffer1(matrixxy(i)) : Next
    .
    .
    .
     Sub matrix()
            Dim x1 As Integer, y1 As Integer, x2 As Integer, y2 As Integer
            Dim a As Integer, b As Integer, f As Single, yschräge As Integer
            a = 1400 : b = 800 : yschräge = 70
            For k = 0 To img.Height - 1 : For i = 0 To img.Width - 1
                x1 = img.Height - k : y1 = i - yschräge * (x1 / img.Height) '- d
                f = (a * b - x1 * a - y1 * b) : If f < 1 Then f = 1
                f = a * b / f
                y1 = (f * y1 * 0.5) : x1 = (f * x1 * 0.5)
                x1 = img.Height - x1
                 if x1 >= 0 And y1 >= 0 And x1 < img.Height And y1 < img.Width Then
                    For a1 = 0 To 2 : For a2 = 0 To 2 : For a3 = 0 To 2
                      y2 = y1 + a1 : x2 = x1 + a2
                      If k*stride + i*3 + a3 <= max And x2*stride + y2*3 + a3 <= max Then
                           matrixxy(x2 * stride + y2 * 3 + a3) = k * stride + i * 3 + a3
                      End If 
                     Next : Next : Next
                  End If
            Next i : Next k
     End Sub
    Die Unterseite des Videobildes kann man bereits durch Ausrichten der webcam parallel zur x-Achse einstellen. Dann sind noch 3 Parameter einzustellen, die man am besten durch probieren ermittelt. Mit yschräge wird die y-Achse senkrecht zu x-Achse ausgerichtet. a und b entsprechen dem Abstand der Fluchtpunkte (Horizont) in x und y Richtung vom Nullpunkt.

    3. Erkennung des rasenrobo: Der Robo hat einen roten Fleck. Grob gesagt wird zu jedem Pixel der Wert 3 * rot - blau - grün bestimmt. Dann bestimmt man die größte positive und negative Änderung dieses Parameters von einem Bild zum nächsten und mittelt noch über mehrere benachbarte Pixel. Wer´s genauer wissen will, muss sich leider durch folgenden Code arbeiten:
    Code:
    schritt=2 ' um´s etwas zu beschleunigen 
    
    For k = 0 To img.Height - 1 Step schritt 
       For i = 0 To (img.Width - 1) Step schritt
               blau = Bildneu(k * stride + i * 3) 
               grün = Bildneu(k * stride + i * 3 + 1) 
               rot = Bildneu(k * stride + i * 3 + 2)
               blaualt = Bildalt(k * stride + i * 3) 
               grünalt = Bildalt(k * stride + i * 3 + 1) 
               rotalt = Bildalt(k * stride + i * 3 + 2)
            S5(i, k) = 3 * rot - blau - grün - 3 * rotalt + blaualt + grünalt
    Next i : Next k
    
    Bildneu.CopyTo(Bildalt, 0)
    
    'als nächstes Mittelung mit benachbarten Pixel
    For k = 1 To img.Height - 1 Step schritt 
      For i = 1 To (img.Width - 1) Step schritt
         If S5(i, k) <> 0 Then 
                 S1(i, k) = S5(i, k) + (S1(i - 1, k) + S1(i, k - 1)) / 9 * 4
         Endif
         ii = img.Width - i - schritt : kk = img.Height - k - schritt
         If S5(ii, kk) <> 0 Then 
                S2(ii, kk) = S5(ii, kk) + (s2(ii + 1, kk) + s2(ii, kk + 1)) / 9 * 4
         endif
    Next i : Next k
    
    '   Maximum- und Minimumwerte suchen
    For k = 0 To img.Height - 1 Step schritt 
       For i = 0 To (img.Width - 1) Step schritt
               S1(i, k) = S1(i, k) + s2(i, k)
               If smax < S1(i, k) Then smax = S1(i, k) : xmax = i : ymax = k
               If smin > S1(i, k) Then smin = S1(i, k) : xmin = i : ymin = k
    Next i : Next k
    If smax < 200 Then xmax = -100 : ymax = -300       'nichts gefunden
    If smin > -200 Then xmin = -200 : ymin = -400        'nichts gefunden
    
    
    xmit = 0 : ymit = 0  
     '    nur wenn max und min nahe beieinander liegen auswerten
    '    Mittelpunkt zwischen Maximum und Minimum ermitteln (Schwerpunkt)
    If abs(ymax - ymin) < 40 And abs(xmax - xmin) < 40 Then
           ymit = (ymax + ymin) / 2 : xmit = (xmax + xmin) / 2
           If ymit Mod 2 = 1 Then ymit = ymit + 1
           If xmit Mod 2 = 1 Then xmit = xmit + 1
           x = 0 : y = 0 : m1 = 0
           For i = xmit - 30 To xmit + 30 Step schritt 
              For k = ymit - 30 To ymit + 30 Step schritt
                 If i > 0 And k > 0 Then
                   x = x+i*abs(S1(i, k)): y = y+k*abs(S1(i, k)): m = m+abs(S1(i, k))
                 End If
            Next : Next 
    xmit = x / m : ymit = y / m
    End If
    xmit und ymit sind dann die gesuchten Koordinaten. Anschließend kann man noch evtl. Ausreißer von xmit und ymit verwerfen. Die Werte machen ja keine großen Sprünge.

    Dann braucht man noch etwas an Krimskrams für ne GUI drumrum. Uff, das war´s dann. Von denen die sich mit Objekterkennung auskennen, hätte ich natürlich gerne gewußt, ob´s z.B. mit OpenCV wesentlich besser und einfacher geht.

    Beste Grüße

    Christian
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken Original.JPG   Korrigiert.JPG  
    Geändert von Christian H (05.06.2013 um 11:07 Uhr)

  8. #338
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    06.08.2008
    Ort
    Graz
    Beiträge
    521
    Danke für die Info über die Bilderkennung. Jetzt muss ich noch ein Tutorial für vb.net für dummies suchen
    Wäre ein rotes Licht nicht einfacher/zuverlässiger zu erkennen?

    LG!
    alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)

  9. #339
    Erfahrener Benutzer Roboter-Spezialist Avatar von Bernd_Stein
    Registriert seit
    19.09.2008
    Ort
    Deutschland : Nordrhein-Westfalen ( NRW )
    Alter
    53
    Beiträge
    407

    Aus zwei mach eins

    Zitat Zitat von Christian H Beitrag anzeigen
    ...
    Webcam: der Thread mit den kleinen Quadraten war ein anderer.
    Ja, jetzt fällt es mir auch wieder ein.

    Das ist das Projekt von Damfino.

    https://www.roboternetz.de/community...l=1#post464466

    Hoffe ihr tut euch mal zusammen und bastelt aus euren beiden Projekten ein gemeinsames.


    Bernd_Stein
    CRS Robotics A255, TRONXY X3A, TinkerCAD, c´t-Lab, ProfiLab Expert, AVR8 Assembler

  10. #340
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.05.2006
    Beiträge
    260
    Hallo,


    an damfino. Könnte man mal ausprobieren. Denke aber nicht, dass es besser geht. So funktioniert´s tasächlich relativ zuverlässig auch bei Sonne mit und ohne Schatten. Zumindest bei Sonnenschein wird eine Lampe doch von der Umgebung überstrahlt. Außerdem nuckelt die den Akku schneller leer. Zu vb.net: Einfach mal Visual Studio Express 2012 installieren und ausprobieren. Ein Tutorial ist mit dabei. Erst mal mit einfachen Windows Applikationen anfangen. Mir macht´s Spaß. Hat einen gewissen Suchtfaktor. Bei Fragen kannst mir auch eine PN schicken. So ganz einfach ist´s mit dem kompletten Programm zur Bilderkennung auch wieder nicht. Visual Basic ist für mich einfacher als C++. In der Performance gibt´s da keine Unterschiede mehr. Die ganze Struktur von Visual Basic ist wie die von C++.


    Christian

Seite 34 von 39 ErsteErste ... 243233343536 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress