基于carla和python的自动驾驶仿真系列2

写在前面

有关于本文目的的说明和一些代码的链接已经放在系列1中,可以进我的主页进行查看。
废话不多说,开淦。

欢迎来到卡拉自动驾驶汽车教程系列的第二部分。在本教程中,我们将向你介绍Carla的Python API。
首先,在Carla中有几种类型的对象。首先,你当然有“世界”。这是你的环境。然后,你有这个世界的演员。演员是你的车,你车上的传感器,行人,等等。最后,我们有了蓝图。蓝图是参与者的属性。
有了这些信息,让我们开始编写一些实际的代码。首先,让我们做一辆车,生成并简单地向前行驶,然后我们想要看到信息从一个常规RGB摄像头,我们将放置在汽车的引擎盖。
在前几行代码中,我将复制并粘贴示例目录中的其他脚本,我也将在示例目录中编写这段代码。

import glob
import os
import sys

try:
    sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % (
        sys.version_info.major,
        sys.version_info.minor,
        'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])
except IndexError:
    pass

import carla

上面的代码非常简单,除了try/except部分。这里要做的就是找到卡拉蛋文件,这就是我们用来制作卡拉包的文件。为了导入carla,我们需要找到它,这也是为什么我们现在把文件放到example目录中。您还可以通过Python站点包移动所需的Carla文件并以这种方式导入。
接下来,我们将做更多的导入:

import random
import time
import numpy as np
import cv2

如果你需要,你可以安装numpy和cv2:

pip install opencv-python
pip install numpy

我们要立即处理的第一件事是actor列表,并在完成时清理它们。回想一下,我们同时拥有客户机和服务器。当我们开始在服务器上运行客户机时,我们在服务器上创建actor。如果我们只是退出,而不清理,我们的actors仍将在服务器上。

actor_list = []
try:


finally:

    print('destroying actors')
    for actor in actor_list:
        actor.destroy()
    print('done.')

在这里,我们将在try/finally中封装主要代码块。我们将把所有的逻辑和角色创建放在try中,然后最后一点将为我们清理它。
接下来,回忆一下我们在卡拉有三个主要的“东西”:世界、蓝图和演员。首先,我们将连接到服务器,获取世界,然后访问蓝图。

actor_list = []
try:
    client = carla.Client('localhost', 2000)
    client.set_timeout(2.0)

    world = client.get_world()

    blueprint_library = world.get_blueprint_library()

注意,您需要运行carla (shell或.exe)才能进行连接。
现在我们有了蓝图,我们可以过滤一些东西。例如:

     bp = blueprint_library.filter('model3')[0]

这将为我们提供特斯拉model 3的默认蓝图。现在我们有了蓝图,我们可以造出这辆车,但是在哪里呢?卡拉拥有大约200个衍生点,所以我们可以随机选择其中一个:

    spawn_point = random.choice(world.get_map().get_spawn_points())

现在我们可以衍生汽车:

    vehicle = world.spawn_actor(bp
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值