这段代码npc_speed = npc_speeds[i] npc_acceleration = npc_accelerations[i] physics_control = blueprint.get_physics_control() physics_control.max_speed = npc_speed / 3.6 # convert km/h to m/s physics_control.max_acceleration = npc_acceleration blueprint.set_physics_control(physics_control)报错AttributeError: 'ActorBlueprint' object has no attribute 'get_physics_control'
时间: 2024-04-03 11:36:24 浏览: 44
这个错误是因为`ActorBlueprint`类没有`get_physics_control`方法,导致调用该方法时出现了属性错误。你需要检查一下代码,确认是否正确地导入了相关类,并且该类中是否真的有这个方法。如果没有该方法,你需要查找其他途径获取精灵的物理控制,或者修改代码以使用其他方法来控制精灵的物理属性。
相关问题
请帮我说明这段代码并未成功创建出8个npc车辆的原因 batch = [] npc_blueprints = ["vehicle.nissan.micra", "vehicle.audi.a2", "vehicle.tesla.model3", "vehicle.bmw.grandtourer", "vehicle.toyota.prius", "vehicle.nissan.patrol", "vehicle.audi.etron", "vehicle.toyota.prius"] npc_speeds = [20, 25, 30, 35, 40, 35, 30, 20] # in km/h npc_accelerations = [1.0, 1.5, 2.0, 2, 2.0, 1.5, 1.0, 1.5] # in m/s^2 npc_waypoints = [[-8871.099609, -11956.523438, 27.530716], [-8504.081055, -5407.712402, 27.530716], [6426.287598, 741.497681, 45.0], [10597.994141, -339.751038, 27.530716], [9715.866211, 430.881317, 27.530716], [17607.03125, -240.132263, 27.530716], [20708.113281, -518.995544, 27.531448], [24519.421875, 2809.513916, 27.530716]] for i in range(8): blueprint = world.get_blueprint_library().find(npc_blueprints[i]) color = random.choice(blueprint.get_attribute('color').recommended_values) blueprint.set_attribute('color', color) if blueprint.has_attribute('driver_id'): driver_id = random.choice(blueprint.get_attribute('driver_id').recommended_values) blueprint.set_attribute('driver_id', driver_id) blueprint.set_attribute('role_name', 'autopilot') transform = carla.Transform( carla.Location(x=npc_waypoints[i][0], y=npc_waypoints[i][1], z=npc_waypoints[i][2]), carla.Rotation(yaw=0)) print('aaaaa') # prepare the light state of the cars to spawn light_state = vls.NONE if args.car_lights_on: light_state = vls.Position | vls.LowBeam | vls.LowBeam # spawn the cars and set their autopilot and light state all together batch.append(SpawnActor(blueprint, transform) .then(SetAutopilot(FutureActor, True, traffic_manager.get_port())) .then(SetVehicleLightState(FutureActor, light_state))) for response in client.apply_batch_sync(batch, synchronous_master): if response.error: logging.error(response.error) else: vehicles_list.append(response.actor_id) print("*********************************************") for vehicle_id in vehicles_list: print('vehicles_list',vehicles_list) print('vehicle_id',vehicle_id) print(world.get_actor(vehicle_id)) print(world.get_actor(vehicle_id).get_location()) print("****")
您提供的代码中,创建车辆的部分看起来是正确的。但是,我注意到您在循环中使用了未定义的变量 `FutureActor`,这可能导致错误。我建议您将 `FutureActor` 替换为 `response.actor_id`,以便在下一步操作中使用正确的车辆ID。
此外,您在循环中打印 `vehicles_list` 的值,这会在每次迭代时将整个列表打印出来。这可能会使输出变得混乱。相反,您可以在循环外打印 `vehicles_list` 的值以查看整个列表。
最后,如果您的代码仍然无法成功创建车辆,请提供更多上下文信息,例如是否有任何错误信息或日志输出。
def move_wobot(self, speeds): left_front = -int(speeds[0]); right_front = int(speeds[1]); left_rear = -int(speeds[2]); right_rear = int(speeds[3]); left_front=self.speed_limit(left_front) right_front = self.speed_limit(right_front) left_rear=self.speed_limit(left_rear) right_rear = self.speed_limit(right_rear) send_data_01_motor = comma_head_01_motor + left_front.to_bytes(1, byteorder='big', signed=True) + comma_trail send_data_02_motor = comma_head_02_motor + right_front.to_bytes(1, byteorder='big', signed=True) + comma_trail send_data_03_motor = comma_head_03_motor + left_rear.to_bytes(1, byteorder='big', signed=True) + comma_trail send_data_04_motor = comma_head_04_motor + right_rear.to_bytes(1, byteorder='big', signed=True) + comma_trail self.serial_t.write(send_data_01_motor) self.serial_t.write(send_data_02_motor) self.serial_t.write(send_data_03_motor) self.serial_t.write(send_data_04_motor)
这段代码定义了一个名为`move_wobot`的方法,用于控制智能汽车的运动。
该方法接受一个参数`speeds`,表示四个轮子的速度。
首先,方法将四个轮子的速度分别赋值给`left_front`、`right_front`、`left_rear`和`right_rear`变量,并将其转换为整数类型。
接下来,方法调用了一个名为`speed_limit`的方法,该方法用于限制速度在一定范围内。
然后,方法使用一些特定格式的数据和指令,将速度数据转换为字节,并构造了四个用于控制电机的数据包。
最后,方法通过串口对象`self.serial_t`将这四个数据包发送给智能汽车。
请注意,代码片段中使用了一些未定义的变量和常量,如`comma_head_01_motor`、`comma_trail`等。如果需要完整的代码或更多相关信息,请提供更多上下文或相关代码。
阅读全文