@Override
  public void update() {
    if (output.getCarriedObject() == null) {
      if (carryId != null) {
        carryId.destroy();
        carryId = null;
      }
    } else {
      if (carryId == null) carryId = IntWme.newInstance(getRoot(), IOConstants.CARRY);

      carryId.update(output.getCarriedObject().getId());
      logger.trace(carryId);
    }

    AreaDescription a = output.getAreaDescription();
    areaId.update((a != null) ? a.getId() : -1);
    headlight.update(output.isHeadlightOn() ? IOConstants.ON : IOConstants.OFF);
    battery.update(output.getBatteryLife() * 100);
    logger.trace(areaId);

    Pose p = output.getPose();
    p.translate(properties.get(AgentProperties.TRANSLATION));
    for (int i = 0; i < xyz.size(); ++i) {
      xyz.get(i).update(p.getPos().get(i));
      logger.trace(xyz.get(i));

      xyzVelocity.get(i).update(p.getVel().get(i));
      logger.trace(xyzVelocity.get(i));
    }

    yaw.update(p.getYaw());
    logger.trace(yaw);

    yawVelocity.update(p.getRotationRate().get(2));
    logger.trace(yawVelocity);
  }