2009-06-18 6 views
1

Ich habe einen zweirädrigen Roboter basierend auf dem Braitenberg-Fahrzeug erstellt. Unsere Roboter haben zwei Räder und einen PolygonDisk-Körper (ähnlich wie Kepera- und E-Puck-Roboter). Ich würde gerne eine Kamera an der Vorderseite des Roboters hinzufügen. Das Problem besteht dann darin, die Kamera zu steuern und sie in die richtige Richtung (in die gleiche Richtung wie der Roboter) zu richten. Wie können Sie die Kamera in die gleiche Richtung wie der Roboter richten?Wie können Sie einem Roboter im Breve Simulator eine Kamera hinzufügen?

Antwort

1

Nach viel Mühe und Versagen habe ich es schließlich geschafft. hier ist also, wie ich es tue:

Die allgemeine Idee ist es, einen Link oder ein Objekt mit dem Fahrzeug verbunden zu haben, und dann seine Rotation und Position in Reihenfolge, in der Richtung, um herauszufinden, misst die Kamera ausgerichtet werden soll.

1) In ein Objekt, das mit dem Roboter verbunden:

def addVisualCam(self): 
    joint = None 
    cam = breve.createInstances(breve.Link,1) 
    cam.setShape(breve.createInstances(breve.PolygonCone, 1).initWith(10,0.08,0.08)) 
    joint = breve.createInstances(breve.FixedJoint,1) 
    # So ad-hoc it hurts. oh well... 
    joint.setRelativeRotation(breve.vector(0,1,0), -3.14/2) 
    joint.link(breve.vector(0,1.05,0), breve.vector(0,0,0), cam, self.vehicle.bodyLink, 0) 
    joint.setDoubleSpring(300, 1.01000, -1.01000) 
    self.vehicle.addDependency(joint) 
    self.vehicle.addDependency(cam) 
    cam.setColor(breve.vector(0,0,0)) 
    self.cam = cam 

2) Dieses postIterate:

def postIterate(self): 
    look_at = self.cam.getLocation() + (self.cam.getRotation() * breve.vector(0,0,1)) 
    look_from = -(self.cam.getRotation()*breve.vector(0,0,1)) 
    self.vision.look(look_at, look_from) 
Verwandte Themen