在本节,我们将向您介绍Carla的Python API

Carla中有几种类型的对象。首先,您当然拥有world(世界),这就是你的环境。这样,您便拥有了这个世界中的actors(角色)。角色诸如汽车、汽车上的传感器、行人等之类的东西。最后,我们有blueprints(蓝图)。蓝图是我们角色的属性。

有了这些信息,让我们开始编写一些实际的代码。让我们制造一辆可以生成汽车并简单地向前行驶的汽车。

1. 导入carla及其他依赖包

代码的前几行,我只是从examples目录中的其他脚本之一复制并粘贴的,下面还将在目录examples中编写我们的代码。

import glob
import os
import systry:# 由相对路径导入carla包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:passimport carla

上面的代码非常简单,在这里所做的所有工作就是找到carla.egg文件,这就是我们在Carla包本身中使用的文件。为了实际导入carla,我们需要找到它,这也是为什么我们现在只是将文件扔到examples目录中的原因。您也可以只将所需的Carla文件移动到site-packagesPython中,然后也以这种方式导入。

接下来,我们将再进行一些导入:

import random
import time
import numpy as np  # numpy
import cv2          # opencv-python

如果需要,请安装numpy和cv2:

pip install opencv-python numpy

2. 定义actor_list(角色列表),并清理

我们要立即处理的第一件事是actor_list(角色列表),并在完成后清理它们。回想一下,我们既有客户端又有服务器。当我们开始在服务器上运行客户端时,我们在服务器上创建参与者。如果我们只是退出而没有清理,我们的参与者仍然会在服务器上。

actor_list = []
try:finally:print('destroying actors')for actor in actor_list:actor.destroy()print('done.')

3. 创建world(世界)及blueprint(蓝图)

在这里,我们将在尝试/最后中封装大部分代码。我们将尝试所有的逻辑和参与者创建,然后最后一步将为我们清理。

接下来,回想一下我们在Carla有3个主要的“事物”:world(世界),blueprint(蓝图)和actors(角色)。首先,我们将连接到我们的服务器,了解世界,然后访问蓝图。

actor_list = []
try:client = carla.Client('localhost', 2000)  # 连接端口号2000client.set_timeout(2.0)  # 连接超时2秒world = client.get_world()blueprint_library = world.get_blueprint_library()

请注意,您需要运行CarlaUE4.exe(或CarlaUE4.sh)才能进行连接。

4. 创建特斯拉model3,并进行控制

现在我们有了蓝图,我们可以进行筛选。例如:

    bp = blueprint_library.filter('model3')[0]   # 创建特斯拉model3

这将为我们提供特斯拉model3的默认蓝图。既然有了蓝图,我们就可以生成这辆车,但是在哪里?Carla带有大约200个生成点,因此我们可以随机选择其中之一:

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

现在我们可以生成那辆车了:

    vehicle = world.spawn_actor(bp, spawn_point)

我们通过以下方式控制汽车:

    vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0.0))  # 油门1.0,方向盘0.0

最后,别忘了将此车辆添加到我们需要跟踪和清理的actor_list列表中:

    actor_list.append(vehicle)

太好了,我们有汽车,我们可以实际运行。让我们运行5秒钟,然后清理:

    time.sleep(5)
  • 完整的代码如下
# control.py
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 carlaimport random
import time
import numpy as np
import cv2im_width = 640
im_height = 480def process_img(image):i = np.array(image.raw_data)i2 = i.reshape((im_height, im_width, 4))i3 = i2[:, :, :3]cv2.imshow("", i3)cv2.waitKey(1)return i3/255.0actor_list = []
try:client = carla.Client('localhost', 2000)client.set_timeout(2.0)world = client.get_world()blueprint_library = world.get_blueprint_library()bp = blueprint_library.filter('model3')[0]print(bp)spawn_point = random.choice(world.get_map().get_spawn_points())vehicle = world.spawn_actor(bp, spawn_point)vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0.0))actor_list.append(vehicle)# sleep for 5 seconds, then finish:time.sleep(5)finally:print('destroying actors')for actor in actor_list:actor.destroy()print('done.')

(1) 执行CarlaUE4.exe(或CarlaUE4.sh)
(2) 运行 python3.7.exe control.py

现在,可能很难在5秒钟内找到您的汽车,但是可以去服务器上查看一下carla环境,使用鼠标往下看,然后s开始放大。例如:

我们可以将脚本运行到现在为止,并且从上方看,我们可能可以看到:

很难看到,但是当它移动时,很容易发现。请注意,汽车可能会在隧道中产生。如果您没看到车辆,只需再次运行脚本即可。

自动驾驶模拟器Carla之python编程-(2)控制汽车相关推荐

  1. 自动驾驶模拟器Carla之python编程-(3)获取汽车摄像头数据

    在上节我们已经创建了一个可以形式的特斯拉model3,在本节,我们将给汽车上添加摄像头. 了解更多有关各种传感器以及如何使用它们的信息:Carla Sensors.现在,我将仅展示如何使用RGB相机. ...

  2. 自动驾驶模拟器Carla之python编程-(1)简介

    欢迎来到涵盖Carla的系列教程,这是一个开放源代码的自动驾驶环境,还附带了与之交互的Python API. Carla拥有环境(服务器),然后具有代理(客户端). 这种服务器/客户端架构意味着我们可 ...

  3. Carla自动驾驶模拟器使用教程Python编程 #最全最源

    本文来自转载,学习了很多篇Carla相关的博客,都是源自这两个系列教程,所以看着一篇足够了(入门) 一.Carla入门 Carla的基本架构与介绍 Carla安装 基础Python API的使用 Ca ...

  4. CARLA Simulator——开源自动驾驶模拟器

    文章目录 安装教程 使用方法 ROS 车载传感器配置 相机 Lidar 参考文章 GitHub:CARLA Simulator 安装教程 CARLA--基于Ubuntu18.04安装CARLA Sim ...

  5. 可能是最全的|适合决策AI研究的自动驾驶模拟器评测(下篇)

    原创不易,大家多多鼓励呦,OpenDILab继续出精品.错过上次评测推送的,可戳如下链接. 可能是最全的 | 适合决策AI研究的自动驾驶模拟器评测(上篇)_m0_55289267的博客-CSDN博客本 ...

  6. 【自动驾驶模拟器AirSim快速入门 | 01】自动驾驶模拟器AirSim实战演练

    这是机器未来的第15篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125285472 @toc 1. 项目简介 博主基于微 ...

  7. 【自动驾驶模拟器AirSim快速入门 | 02】数据预处理:数据挖掘与准备

    这是机器未来的第16篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125321082 开源项目: 项目地址:https:/ ...

  8. 【自动驾驶模拟器AirSim快速入门 | 04】推理预测及模拟器运行

    这是机器未来的第21篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125388747 开源项目: 项目地址:https:/ ...

  9. UE4中使用自动驾驶模拟——Carla

    UE4中使用自动驾驶模拟--Carla 1.简述 2.简单配置使用 3.编译的步骤&坑 4.深入理解 Tips 1.简述 在之前的文章里,使用了Airsim来仿真模拟无人机飞行,UE4中使用飞 ...

最新文章

  1. Vue.js 学习路线
  2. SMO学习笔记(二)——还原(恢复)篇之完整恢复
  3. Spring boot的Spring MVC自动配置原理
  4. C++连接mysql的两种方式(ADO连接和mysql api连接)
  5. HttpServletRequest类用途
  6. 猪八戒玉华王:老码农的7项灵魂思考
  7. [Ext JS 4] 实战之Chart 坐标控制(单坐标,双坐标)
  8. 给Android SDK设置环境变量
  9. 项目运行报‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件“
  10. 年底将至 怎么向国外客户开口催单 附话术模板
  11. RB-PEG2000-Pyrene,含有芘丁酸和罗丹明的PEG,Pyrene-PEG2000-Rhodamine
  12. wifi连接一段时间才能上网_家里的WiFi老是突然断网,WiFi还是连着的,但是关WiFi又连不上去,必须重启路由器才能上网...
  13. android 开源fc模拟器_安卓FC模拟器NESemu
  14. cortex m3 开源_开源增强现实耳机,Steam的125M有效帐户等
  15. java long型数据做余数运算_Java数据类型与运算符
  16. linux驱动学习的磕磕碰碰
  17. 扫地机器人划伤地板_使用扫地机器人地板会被破坏吗
  18. python2 出现\xef\xbb\xbf…的问题
  19. 广东二本计算机专业大学排名及分数线,2021年广东二本大学排名及分数线(完整版)...
  20. Android Studio页面跳转共享参数

热门文章

  1. 树莓派智能小车python_人工智能-树莓派小车(1)——DuerOS语音唤醒
  2. 理解交换机通过逆向自学习算法建立地址转发表的过程_交换机与 VLAN 到底是怎么来的...
  3. Array.prototype.slice.call 将伪数组转成真数组的原理是什么?
  4. Java读写Excel之POI超入门(转)
  5. 美国纽约拟将电话亭变WiFi热点
  6. unity 打包AssetBundle
  7. php 长整型转字符串 (convert long to string)
  8. VMware中的三种网络模式-----Host-only模式
  9. 双线路接入时IPSec数据不通问题
  10. iPhone的Socket编程使用开源代码之AsyncSocket