carla--使用python进行carla交互仿真

python进行CARLA仿真

1. CARLA简介

CARLA是一个开源的自动驾驶仿真工具,CARLA以Unreal Engine为基础来运行模拟,并使用OpenDRIVE标准来定义场景,可以使用Python API进行CARLA的调用。

Carla的仿真架构是由服务器和客户端组成的:
服务器:即为仿真环境本身,负责图像渲染、物理计算等,服务器的启动需要打开CalaUE4.exe
客户端:使用Carla的API进行车辆及其动作、天气环境等设定
在这里插入图片描述

2.QuickStart

2.1 创建Client和World

进行仿真前需要先创建客户端并与服务器连接:
对于windows版本,需要先打开CalaUE4.exe,并且设置一个timeout

client = carla.Client("localhost", 2000)
client.set_timeout(5.0)

现在客户端已经与服务端连接上了,即为一个虚拟的世界,接下来需要创建一个地图,可以加载carla内置的地图

world = client.load_world('Town02')

2.2 添加一些环境参数:天气

现在可以通过python api (set_weather)设置所加载场景的环境,比如天气:

weather = carla.WeatherParameters(
    cloudiness=0.2,
    precipitation=0.2,
    sun_altitude_angle=80.0)
world.set_weather(weather)

2.3 创建一个Actor

接下来需要在所创建的场景中添加物体,包括:车辆、行人、传感器等。这些统称为Actor,不同的Actor有不同的属性。calar中有创建Actor的模板,叫做Blueprints。
下面为定义一个白色的特斯拉:

model3_bp = world.get_blueprint_library().find('vehicle.tesla.model3')
model3_bp.set_attribute('color', '255,255,255')

2.4 Actor的生命周期

生成Actor

使用world对象的spawn_actor可以生成一个actor,可以定义车辆产生的地点:

transform = Transform(Location(x=100, y=300, z=40), Rotation(yaw=180))
actor = world.spawn_actor(blueprint, transform)
定义Actor的动作
model3.set_autopilot(True)

也可以自定义车的位置

location = model3.get_location()
location.x += 10.0
model3.set_location(location)
回收Actor

当我们不在需要某个Actor的时候,可以将其销毁,释放计算资源。

destroyed_sucessfully=actor.destory()

3. 添加传感器

Calar中已经支持了很多传感器,例如:
摄像头: Depth, RGB , Semantic segmentation
探测器: Collision , Lane invasion , Obstacle
其他: GNSS , IMU , LIDAR raycast , Radar
传感器跟其他的Actor最大的不同是,它们需要被安装在车上,因此在生成传感器的时候,需要将其附着到一个车辆类型的Actor上,而出生点是针对于这台车本身的坐标系给定的。

camera_bp = world.get_blueprint_library().find('sensor.camera.rgb')
camera = world.spawn_actor(camera_bp, 
                           carla.Transform(carla.Location(x=-5.5, z=2.5), carla.Rotation(pitch=8.0)), 
                           model3,
                           carla.AttachmentType.SpringArm
                           )
camera.listen(lambda image:image.save_to_disk('output/%06d.png' % image.frame)

设置观察者

即为观察仿真的视角

while True:
    spectator = world.get_spectator()
    transform = model3.get_transform()
    spectator.set_transform(carla.Transform(transform.location + carla.Location(z=50),
    carla.Rotation(pitch=-90)))
    time.sleep(5)

5. 仿真效果

请添加图片描述

  • 1
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值