2009-06-18 63 views
1

我創建了一個基於braitenberg車輛的兩輪機器人。我們的機器人有兩個輪子和一個PolygonDisk主體(非常像kepera和e-puck機器人)。我想在機器人的前部添加一個攝像頭。然後,問題就變成了如何控制攝像機以及如何保持指向正確的方向(與機器人相同的方向)。你如何使攝像機指向與機器人相同的方向?如何將相機添加到Breve Simulator中的機器人?

回答

1

經過多次嘗試和失敗,我終於使它的工作。 因此,這裏是我是如何做的:

的總體思路是有一個鏈接或鏈接到車輛的對象,然後測量以 其旋轉和位置,找出在哪個方向的相機應該瞄準。

1)添加鏈接到所述機器人的對象:

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)加入此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) 
相關問題