Swift Player视频播放库完整使用指南
2026/5/26 14:53:54
PythonAPI/examples/vehicle_physics.py
carla_vehicle_physics
这是一个车辆物理特性演示示例,用于展示 CARLA 中两种施加外力的方式——冲量(Impulse)与力(Force)——对车辆运动状态的影响,并验证二者在特定条件下的等效性。
print_step_info(world, vehicle):实时打印车辆状态wait(world, frames=100):同步等待工具函数frames),每帧调用world.tick()。settings.fixed_delta_seconds=0.1settings.synchronous_mode=Trueworld.apply_settings(settings)vehicle_bp=blueprint_library.filter(arg.filter)[0]--filter参数(默认"model3")选择车辆;vehicle_transform.location.z+=3spectator_transform.location+=vehicle_transform.get_forward_vector()*20impulse=10*car_mass# 单位:N·s(牛·秒)vehicle.add_impulse(carla.Vector3D(0,0,impulse))force=impulse/delta# = (10 * mass) / 0.1 = 100 * mass (单位:N)vehicle.add_force(carla.Vector3D(0,0,force))
add_force本应用于持续作用的力,但此处为演示等效性,
将冲量I等效为在单个仿真步长Δt内施加的恒力:F = I / Δt
每次测试后执行:
vehicle.set_transform(vehicle_transform)# 重置位置/朝向vehicle.set_target_velocity(carla.Vector3D(0,0,0))# 清零速度wait(world)# 等待稳定--host:CARLA 服务器 IP(默认localhost)--port:端口(默认2000)--filter:车辆筛选关键字(默认"model3",实际应为"vehicle.*model3*",但脚本取第一个匹配项)try...finally确保退出时恢复原始仿真设置并销毁车辆| 方法 | API | 物理定义 | 适用场景 |
|---|---|---|---|
| 冲量(Impulse) | add_impulse(vector) | 瞬时动量变化I = Δp = F·Δt | 碰撞、爆炸、瞬间推力 |
| 力(Force) | add_force(vector) | 持续作用力F = dp/dt | 引擎推力、风阻、持续外力 |
💡 本脚本通过
F = I / Δt在单步内模拟等效冲量,直观展示二者关系。
该测试用例是 CARLA车辆物理控制 API 的教学范例,重点演示:
add_impulse与add_force的使用区别与联系适用于开发者理解 CARLA 的底层物理交互机制。