Aus RN-Wissen.de
Wechseln zu: Navigation, Suche


Mobotsim

Die Software 'Mobotsim' von der Firma MobotSoft stellt eine sehenswerte Umgebung bereit, in der man durch ein Basicdialekt der Firma SaxSoft - ähnlich dem allseits vertauten Viasualbasic - einen oder mehrere Roboter programmieren und testen kann. Die Bots haben Sensoren und werden mittels Antriebsbefehlen gesteuert. Die Bots bewegen sich in einer Welt aus diversen selbst erstellbaren Hindernissen. Im Web wird dertzeit die Version 1.03 als Shareware Version angeboten, man hat 30 Tage Laufzeit oder 100 Programmstarts.

Die Umgebung hat 3 Bots und 3 Welten vorgefertigt in der Installation, dabei auch ein Bot mit Neuronalem Netzwerk mit immerhin 4 input Neuronen, 40 hidden Neuronen und 2 output Neuronen, der auf einem Oval selbstständig seine Runden dreht. Weitere eigene Bots können programmiert und mit den anderen Bots in die Umgebung platziert werden oder man baut sein Zimmer nach und kann schon mal testen, wie der zukünftige Bot sich zwischen den Stuhlbeinen verhält. Grade für Versuche ohne große Erfahrung bietet diese Umgebung auch als Shareware genügend Raum für eigene Ideen. Wer "mal eben" was ausprobieren möchte oder sich am Löteisen nur laufend die Finger verbrennt, kommt seinem Traum nach einem eigenen Bot damit ein bischen näher. Mit einem ausgetestetem und für gut befundenem Entwurf in VBA fällt auch das spätere umcoden auf den eigenen Bot nicht ganz so schwer.

Hier die eindrucksvolle Featureliste aus deren Webseite:

  • Unlimited number of robots and obstacles.
  • Several obstacle shapes (line, rectangle, round rectangle, arc, ellipse, sector, chord) and free-hand drawing.
  • Mobots are differential drive.
  • Simulation of Ranging Sensors (typically ultrasonic sensor)
  • Flexible Configuration of Mobots – Platform diameter, wheels diameter, distance between wheels, number of ranging sensors, angle between sensors.
  • Configuration of ranging sensors – radiation cone, range, misreading percentage.
  • Each mobile robot has a configurable grid to map the environment. Automatic Certainty Grid method available with use of Ranging Sensor functions.
  • Development of simulation through quick and easy BASIC macro writing. Fully Visual Basic for Applications - compatible.
  • Control program flow and set breakpoints, step-over, step-into, and step-out.
  • View debug info such as watch variables, view the call-stack and loaded modules.
  • Easy integration of third parties ActiveX controls and dll files. You can add specific tools to the BASIC editor developed to make use of Fuzzy Logic, Genetic Algorithms, Neural Networks, etc.

Wenn im realen Leben erst mal so schwierige Dinge gelöst sind wie "wie steuere ich mit einer PWM Modulation eine H-Bridge an" oder "wie muss ich die Spulen eines Steppers ansteuern damit der Motor nicht nur brummt", stellt sich schnell die Frage "Wie hauche ich dem Monster nun Leben ein". Die meisten Bots kommen dabei nicht über die Intelligenz eines Regenwurms hinaus da sie als "Lienenfolger/Wandläufer" oder als "oh ein Hindernis, also andere Richtung" enden. (Wobei ein Regenwurm sogar noch die Möglichkeit hat ein Hindernis zu beklettern!) Hier kann man nun z.B. Ideen testen.. räumliche Orientierung oder Sensorergebnisse auf Plausibilität testen .. Bots fangen und verstecken spielen lassen.. den Bot die Ladestation suchen lassen usw. usw. Alles in allem ein geniales Hilfsmittel für Leute deren Bots schon bis 8 zählen und ihre H-Bridges bereits ansteuern können - und für den Fall das man noch Platz im Speicher seines Bots hat.

Hier z.B. der simpele Code eines solchen Wandfolge/Hindernisausweich-Regenwurms incl. Debug Ausgabe. In RL müsste man hinter dem Bot her rennnen und versuchen, die vibrierende LCD Anzeige zu entziffern - wenn der Bot denn sowas hat.

Sub Main
    SetTimeStep 0.1
    SetMobotPosition(0,13,12.5,0)
    For t = 1 To 5000
        s = MeasureRange(0,4,0)  'Read sensor 4
        Debug.Print s
	'calculate wheels speed adjustment based on sensor
        If s < 0.7 Then            'wall too close turn left
            SetWheelSpeed(0,0,10)
        ElseIf s > 0.9 Then        'loosing wall, adjust right
            SetWheelSpeed(0,10,0)
        Else                       'go straight ahead
            SetWheelSpeed(0,10,10)
        End If
        StepForward   ' Dynamics simulation progresses one time step
    Next
End Sub

Weblinks