第一种方法

通过carla.Worldget_actor或者get_actors函数查找Actor的id,此种方法简单方便,但是局限性大,因为Actor的id都是由Carla的Server端生成,无法事先知道

第二种方法

  1. 在生成Actor的时候设置carla.ActorBlueprintrole_name属性,将role_name的值设置为你想要查找的值
  2. 通过carla.Worldget_actors函数获取当前所有的actor,其role_name的值是否是你想要的

spawn_vehicle.py 放在PythonAPI\examples目录下

import glob
import os
import sys
from turtle import Vec2Dtry: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
import randomdef main():client = carla.Client('localhost', 2000)client.set_timeout(20.0)world = client.get_world()spectator = world.get_spectator()vehicle_blueprints = world.get_blueprint_library().filter('vehicle')blueprint = random.choice(vehicle_blueprints)blueprint.set_attribute('role_name', '9527')         # 设置role_name的值location = random.choice(world.get_map().get_spawn_points()).locationtransform = carla.Transform(location)vehicle = world.spawn_actor(blueprint, transform)try:while True:transform = vehicle.get_transform()location = transform.location + carla.Location(0, 0, 15)rotation = transform.rotation# 避免万向锁rotation.pitch += -89if rotation.pitch >= 90: rotation.pitch = 89elif rotation.pitch <= -90:rotation.pitch = -89spectator.set_transform(carla.Transform(location, rotation))     # 将视角设置在车辆上方world.wait_for_tick()finally:print('end')if __name__ == '__main__':main()

PythonAPI\examples目录下的manual_control.py文件复制一份,改名为manual_control_actor.py

修改restart函数,同时新增find_player函数

def find_player(self):actor_list = self.world.get_actors()for actor in actor_list:if 'role_name' in actor.attributes and actor.attributes['role_name'] == '9527':return actorreturn Nonedef restart(self):self.player_max_speed = 1.589self.player_max_speed_fast = 3.713# Keep same camera config if the camera manager exists.cam_index = self.camera_manager.index if self.camera_manager is not None else 0cam_pos_index = self.camera_manager.transform_index if self.camera_manager is not None else 0# Spawn the player.if self.player is not None:spawn_point = self.player.get_transform()spawn_point.location.z += 2.0spawn_point.rotation.roll = 0.0spawn_point.rotation.pitch = 0.0self.destroy()self.player = self.find_player()self.show_vehicle_telemetry = Falseself.modify_vehicle_physics(self.player)while self.player is None:if not self.map.get_spawn_points():print('There are no spawn points available in your map/town.')print('Please add some Vehicle Spawn Point to your UE4 scene.')sys.exit(1)spawn_points = self.map.get_spawn_points()spawn_point = random.choice(spawn_points) if spawn_points else carla.Transform()self.player = self.find_player()if self.player is None:print("Can't find id %d" % (self.vehicle_id))sys.exit(1)# self.player.set_transform(spawn_point)self.show_vehicle_telemetry = Falseself.modify_vehicle_physics(self.player)# Set up the sensors.self.collision_sensor = CollisionSensor(self.player, self.hud)self.lane_invasion_sensor = LaneInvasionSensor(self.player, self.hud)self.gnss_sensor = GnssSensor(self.player)self.imu_sensor = IMUSensor(self.player)self.camera_manager = CameraManager(self.player, self.hud, self._gamma)self.camera_manager.transform_index = cam_pos_indexself.camera_manager.set_sensor(cam_index, notify=False)actor_type = get_actor_display_name(self.player)self.hud.notification(actor_type)if self.sync:self.world.tick()else:self.world.wait_for_tick()

运行方式:

  1. 启动Carla
  2. 运行spawn_vehicle.py文件,python spawn_vehicle.py
  3. 运行manual_control_actor.py文件, python manual_control_actor.py --sync,以同步模式运行

Carla控制指定Actor(四)相关推荐

  1. 三菱四节传送带控制梯形图_四节传送带PLC控制课程设计.doc

    四节传送带PLC控制课程设计 四节传送带PLC控制课程设计 一 设计背景和功能概述 二 电气原理图与功能详细分析说明 三 部分元件的说明 四 软件流程图 五 总结 六 源程序清单 七 参考文献 四节传 ...

  2. 请问各位如何用Delphi控制U盘的安全拔出????已经有源代码,但是不知道如何控制指定的U盘...

    请问各位如何用Delphi控制U盘的安全拔出????已经有源代码,但是不知道如何控制指定的U盘 Delphi / Windows SDK/API http://www.delphi2007.net/D ...

  3. 【控制control】四足机器人动力学模型-SLIP

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.动力学建模构型方法 二.四足机器人SLIP(弹簧加载倒立摆)模型 ...

  4. 【从零开始的ROS四轴机械臂控制】(四)- ros、gazebo与opencv,图像处理节点

    [从零开始的ROS四轴机械臂控制(四)] 七.图像处理节点 1.节点功能与实现方法 2.iamge_process 相关程序 部分程序解释 3.节点运行与测试 七.图像处理节点 1.节点功能与实现方法 ...

  5. 如何控制四轴飞行器四个方向飞行

    四旋翼飞行器通过调节四个电机转速来改变旋翼转速,实现升力的变化,从而控制飞行器的姿态和位置.四旋翼飞行器是一种六自由度的垂直升降机,但只有四个输入力,同时却有六个状态输出,所以它又是一种欠驱动系统. ...

  6. carla创建地图(四)基于ue4创建地图

    对于carla这其实是一种没有完成的方法,因为没有办法产生xodr文件,但是其实可以通过采集的道路经纬度通过脚本生成osm文件(已经补充了相关脚本).这种方法的优势是自由度高,因为在ue4里其实什么都 ...

  7. 西门子S7-200SMART控制步进电机(四)

    一.运动控制指令使用准则 运动控制向导配置完成后,可以看到在程序块-向导中看到生成了以"AXISx_"为前缀的运动指令,如图1所示,其中x代表轴通道编号,11条运动指令使用了11个 ...

  8. 进程控制和通信(四)

    在前面的文章中, 我们学习了进程通信的几种方式, 并且也接触到了内核控制进程的结构块task_struct, task_struct的内容主要会分为以下几个部分, 通过这一篇文章可以学习这些部分的大体 ...

  9. U盾简易版——控制指定U盘才能被插上电脑识别

    u盘插上会被识别(下面switch下有两个case做了操作,u盘插上电脑偶尔被识别U盘插入但偶尔也会被识别为一种设备插入,所以需要两种情况都判断),并检查其中含有指定文件,不含则被移除. #regio ...

最新文章

  1. AI产品经理入门手册(下)
  2. 2.2. php://stdin php://stdout
  3. __name__ ==“ __main__”怎么办?
  4. jump game java_Jump Game II leetcode java
  5. oracle 00966,oracle错误代码一览表
  6. 数据库的数据类型及运算符
  7. 进程相关概念与多线程的基本使用
  8. 怒怼腾讯加班的应届生本人回应:已找到新工作
  9. aop java 接口_Spring AOP实现接口验签
  10. Oracle asm aix盘,AIX添加ASM的裸盘,存储底层硬盘迁移
  11. 表或视图不存在 Hibernate Oracle
  12. 敏感词过滤/字符编码
  13. 小米路由插件二维码2020_入门级Mesh首选?华来小方Mesh路由深度解析
  14. 坐标转换-换带计算(附软件下载)
  15. 工具类官网Web原型制作分享-Adobe
  16. HTML制作简单课程表
  17. SVN的介绍、搭建和使用
  18. css实现分割线功能,各种各样的分割线(附效果图)
  19. 占书明:win7系统微信突然提示“微信运行错误:当前版本需在windows xp sp3以上系统运行,请安装可用版本或升级系统。点击确认下载安装可用版本”。
  20. 常见HTML符号转换整理

热门文章

  1. 70句凄美伤感的爱情感悟
  2. JS解析提取LRC格式的歌词
  3. dagger android,Dagger-Android使用手册
  4. HTML5期末大作业:水果网站设计——水果介绍-橙子之家(6页) HTML+CSS+JavaScript 学生dreamweaver网页设计作业成品
  5. Linux常用语句总结
  6. cocos2dx 植物大战僵尸 17 路障僵尸
  7. 【Unity植物大战僵尸】搭建基本场景(一)
  8. BandLab Cakewalk v28.02 WiN 老牌音乐制作软件
  9. 万亿OTA市场进入新爆发期,2025或迎中国汽车软件付费元年
  10. oracle中submit,Oracle中DBMS_JOB.SUBMIT的用法说明