Как вы можете добавить камеру к роботу в симуляторе Breve? - PullRequest
1 голос
/ 18 июня 2009

Я создал двухколесного робота на базе машины Брайтенберга. Наши роботы имеют два колеса и корпус PolygonDisk (очень похоже на роботов kepera и e-puck). Я хотел бы добавить камеру на передней части робота. Тогда возникает проблема, как управлять камерой и как направлять ее в правильном направлении (в том же направлении, что и робот). Как сделать так, чтобы камера указывала в том же направлении, что и робот?

1 Ответ

1 голос
/ 22 июня 2009

После долгих попыток и неудач я наконец заставил это работать. Вот как я это сделал:

Общая идея состоит в том, чтобы иметь ссылку или объект, связанный с транспортным средством, а затем измерять его вращение и местоположение для определения направления камеры.

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) Добавить эту записьIterate:

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)
...