1
我創建了一個基於braitenberg車輛的兩輪機器人。我們的機器人有兩個輪子和一個PolygonDisk主體(非常像kepera和e-puck機器人)。我想在機器人的前部添加一個攝像頭。然後,問題就變成了如何控制攝像機以及如何保持指向正確的方向(與機器人相同的方向)。你如何使攝像機指向與機器人相同的方向?如何將相機添加到Breve Simulator中的機器人?
我創建了一個基於braitenberg車輛的兩輪機器人。我們的機器人有兩個輪子和一個PolygonDisk主體(非常像kepera和e-puck機器人)。我想在機器人的前部添加一個攝像頭。然後,問題就變成了如何控制攝像機以及如何保持指向正確的方向(與機器人相同的方向)。你如何使攝像機指向與機器人相同的方向?如何將相機添加到Breve Simulator中的機器人?
經過多次嘗試和失敗,我終於使它的工作。 因此,這裏是我是如何做的:
的總體思路是有一個鏈接或鏈接到車輛的對象,然後測量以 其旋轉和位置,找出在哪個方向的相機應該瞄準。
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)