看官方的文档加晚上的一些博主的教程,动手写了一个小车直线跑动的例子。官方最新的文档比较全面,但是东西太多了,本垃圾不知道从哪里学起,慢慢来吧。。。。

导入Carla包

在编写自己的客户端时,我们首先需要导入Carla包,利用下面这段固定的代码:

try:sys.path.append(glob.glob('../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

sys.path.append将glob定位到的dist文件夹中的carla-0.9.4-py3.5-linux-x86_64.egg添加到impot的路径当中,使得可以导入carla包。

获取世界

 # 创建client连接到Carla当中client = carla.Client('localhost', 2000)# seconds,设置连接超时时间client.set_timeout(10.0)# 获取世界,之后不再使用clientworld = client.get_world()

创建actor的blueprint

    # 通过world获取world中的Blueprint Libraryblueprint_library = world.get_blueprint_library()# 通过carla.BlueprintLibrary的find()和filter()方法查找特定ID的bpcollision_sensor_bp = blueprint_library.find('sensor.other.collision')vehicle_bp = random.choice(blueprint_library.filter('vehicle.bmw.*'))camera_bp = blueprint_library.find('sensor.camera.rgb')

设置传感器的相关参数

   # carla.ActorBlueprint的get_attribute(key)和set_attribute(key, value)方法获取/设置actor的属性# 设置RGB相机的分辨率和视野camera_bp.set_attribute('image_size_x', '480')camera_bp.set_attribute('image_size_y', '640')camera_bp.set_attribute('fov', '110')# 设置传感器捕捉数据时间间隔秒camera_bp.set_attribute('sensor_tick', '1.0')

创建车辆的transform,这里指的是车辆的坐标和旋转坐标,分为手动设置和自动获取两种方式

# 生成actors# 生成车辆,手动设置生成点'''location = carla.Location(230, 195, 40)rotation = carla.ratation(0, 0, 0)transform_vehicle = carla.Transform(location, rotation)'''# 自动选择生成点transform_vehicle = random.choice(world.get_map().get_spawn_points())

同样的设置相机的相对于车辆的坐标

   # 设置RGN相机相对依附对象位置transform_RGB = carla.Transform(carla.Location(x=0.8, z=1.7))

生成actor

    # 生成车辆和RGB摄像机my_vehicle = world.spawn_actor(vehicle_bp, transform_vehicle)my_camera = world.spawn_actor(camera_bp, transform_RGB, attach_to=my_vehicle)actor_list.append(my_camera)actor_list.append(my_vehicle)

简单的设置车辆一直向前行走,20s的时间,这里RGB相机数据还没有设置函数function处理:

    # 设置车辆运动参数my_vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0))# 设置相机监听函数#my_camera.listen(lambda image: function(image))time.sleep(20)

运行结束后,销毁所有生成的actor:

    for actor in actor_list:actor.destroy()print(actor.id, "is destroyed.")

完整代码如下:

# 找到Carla包的路径
import glob
import os
import systry:sys.path.append(glob.glob('../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
import time
import random
import cv2
import numpy as np# 存储生成的actor,方便后续销毁获取
actor_list = []
try:# 创建client连接到Carla当中client = carla.Client('localhost', 2000)# seconds,设置连接超时时间client.set_timeout(10.0)# 获取世界,之后不再使用clientworld = client.get_world()# 通过world获取world中的Blueprint Libraryblueprint_library = world.get_blueprint_library()# 通过carla.BlueprintLibrary的find()和filter()方法查找特定ID的bpcollision_sensor_bp = blueprint_library.find('sensor.other.collision')vehicle_bp = random.choice(blueprint_library.filter('vehicle.bmw.*'))camera_bp = blueprint_library.find('sensor.camera.rgb')# carla.ActorBlueprint的get_attribute(key)和set_attribute(key, value)方法获取/设置actor的属性# 设置RGB相机的分辨率和视野camera_bp.set_attribute('image_size_x', '480')camera_bp.set_attribute('image_size_y', '640')camera_bp.set_attribute('fov', '110')# 设置传感器捕捉数据时间间隔秒camera_bp.set_attribute('sensor_tick', '1.0')# 生成actors# 生成车辆,手动设置生成点'''location = carla.Location(230, 195, 40)rotation = carla.ratation(0, 0, 0)transform_vehicle = carla.Transform(location, rotation)'''# 自动选择生成点transform_vehicle = random.choice(world.get_map().get_spawn_points())# 设置RGN相机相对依附对象位置transform_RGB = carla.Transform(carla.Location(x=0.8, z=1.7))# 生成车辆和RGB摄像机my_vehicle = world.spawn_actor(vehicle_bp, transform_vehicle)my_camera = world.spawn_actor(camera_bp, transform_RGB, attach_to=my_vehicle)actor_list.append(my_camera)actor_list.append(my_vehicle)# 设置车辆运动参数my_vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0))# 设置相机监听函数#my_camera.listen(lambda image: function(image))time.sleep(20)
finally:for actor in actor_list:actor.destroy()print(actor.id, "is destroyed.")

Carla学习(一) 小车简单直线行走相关推荐

  1. ROS小车-上位机代码:两驱小车直线行走校准

    前言 要想实现对小车的精准控制.定位精度的准确,那必然前提就是找到小车速度控制的数学逻辑. 本文实现的目的是:通过teleop_twist_keyboard键盘速度控制节点,给小车下发速度指令,希望在 ...

  2. 【深入浅出强化学习-编程实战】 7 基于策略梯度的强化学习-Cartpole(小车倒立摆系统)

    [深入浅出强化学习-编程实战] 7 基于策略梯度的强化学习-Cartpole 小车倒立摆MDP模型 代码 代码解析 小车倒立摆MDP模型 状态输入:s=[x,x˙,θ,θ˙]s = [x,\dot{x ...

  3. 强化学习训练Agent走直线

    Pytorch深度强化学习训练Agent走直线 问题提出 最近在学强化学习,想用强化学习的方法做一个机器人的运动路径规划,手头刚好有一个项目,问题具体是这样:机器人处在一个二维环境中,机器人的运动环境 ...

  4. 简洁版轮式小车走直线

    关键词:Arduino 霍尔编码器 PWM 中断 轮速 硬件:12V直流电源(或电池).直流电机(带霍尔编码器).Arduino UNO板 简单原理:设定一定目标左右轮速,Arduino板根据车轮电机 ...

  5. WebGL(三)——学习Canvas及简单图形绘制

    WebGL(三)--学习Canvas及简单图形绘制 Canvas简介 canvas是HTML5新增的一个可以使用javascript脚本在其中绘制图像的HTML元素(容器),它可以用来制作图像.动画, ...

  6. python自训练神经网络_tensorflow学习笔记之简单的神经网络训练和测试

    本文实例为大家分享了用简单的神经网络来训练和测试的具体代码,供大家参考,具体内容如下 刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第 ...

  7. 学习了下简单的光照模型

    博客园 闪存 首页 新随笔 联系 管理 订阅 随笔- 50  文章- 53  评论- 57  学习了下简单的光照模型 龙书和SDK光照的例子也看到几个了,今天看<GPU 编程与CG 语言之阳春白 ...

  8. VC学习笔记:简单绘图

    VC学习笔记:简单绘图 SkySeraph Oct.29th 2009  HQU Email-zgzhaobo@gmail.com  QQ-452728574 Latest Modified Date ...

  9. 如何学习解剖学的简单方法

    如何学习解剖学的简单方法 我相信人体解剖学和生理学是掌握最困难的课题之一.它不仅是因为条款的巨大数量很难甚至背诵英语术语更不用说他们的拉丁文学名.我不得不学习解剖自己.我知道有多么痛苦,才有掌握一切. ...

最新文章

  1. viewer vue 文档_vue中使用viewerjs
  2. Delphi中的各种路径
  3. 怎么安装python3.7 setuptools与pip_如何安装python到setuptools、pip工具安装
  4. Java 面试高频提问知识点一
  5. 软考信息系统项目管理师_管理科学(运筹学)2---软考高级之信息系统项目管理师034
  6. 把文化全交给HR,是管理者最大的过失
  7. 微信可直接转账到 QQ;小米联合中国联通推出当前最便宜 5G 套餐;Git 2.25.0 发布 | 极客头条...
  8. linux脚本 exe,Powershell下载并运行exe文件
  9. hp服务器修改bios设置密码,HP服务器的BIOS密码
  10. 结构体Sqlist L与Sqlist L的区别
  11. 收盘:用友软件跌10.02%报13.2元 换手3.26%
  12. 第二章 Python数据类型和运算符
  13. 抖音很火的小程序表白html,最近抖音很火的表白小程序写法C#版
  14. AI开发者大会,李彦宏成“宏颜获水”?
  15. Excel怎么把横排变竖排,一键转换表格格式
  16. 三菱PLC N:N 通讯
  17. 华为android系统是什么意思,华为HarmonyOS与安卓系统有什么区别?一文了解
  18. 面试官:你能说说Ribbon的负载均衡策略及原理嘛?
  19. python 中引入lxml:from lxml import etree报错解决
  20. [slurm] CentOS7/Ubuntu18上Slurm部署步骤(单机版)

热门文章

  1. R包中文文本挖掘chinese.misc的中文说明
  2. 达人评测 i711800h和i711375h选哪个好
  3. win32API网址
  4. 赶时间发布 ChatGPT 竞品后,Google 遭员工反讽:太仓促、拙劣、非 Google Style
  5. 常用的CSS属性列表汇总
  6. 闲人闲谈PS之三十——新收入准则中的合同资产和合同负债
  7. python中的抽象类
  8. 揭秘苹果回收实验室:87%的旧iPhone被翻新重售
  9. win10专业版2020下载链接
  10. 骨传导耳机工作原理是什么、为什么骨传导耳机塞住耳朵声音变大?