笔记10:Carla官方文档阅读 -- 2nd【Actors and Blueprints】/【(3)Types of Actors】/【5)Walkers】

import sys
try:
    sys.path.append('D:\work_software\Carla\Carla_0.9.10\CARLA_0.9.10\WindowsNoEditor\PythonAPI\carla\dist\carla-0.9.10-py3.7-win-amd64.egg')
except IndexError:
    pass


import carla
import random
import time

# 创建 client
client = carla.Client("localhost", 2000)
client.set_timeout(5.0)
# 创建 world
world = client.get_world()




#(3)Types of actorss
# ------------------------------------------------------------------------------------------------------------------------
# 5.行人 -- Walkers
#               注1:有配套的蓝图,可以使用函数spawn_actor()生成
#               注2:生成对象的类型是【carla.Walker】,属于类【carla.Actor】的子类
#               注3:行人的控制通过两个类实现 --  【carla.WalkerControl】      --  以一定的方向和速度移动行人,还允许他们跳跃
#                                               【carla.WalkerBoneControl】  --  提供对3D骨架的控制
# ------------------------------------------------------------------------------------------------------------------------




# ------------------------------------------------------------------------------------------------------------------------
# 创建 -- Walker
blueprint_library = world.get_blueprint_library()
walker_blueprint = blueprint_library.filter("walker.*.*")[0]
walker_transform = carla.Transform(carla.Location(x = 100, y = 200 , z = 10), carla.Rotation(yaw = -180))
walker_actor = world.spawn_actor(walker_blueprint, walker_transform)
print("\n", walker_actor)       # 输出:Actor(id=86, type=walker.pedestrian.0007)
print(type(walker_actor))       # 输出:<class 'carla.libcarla.Walker'>

# 创建 -- 对 Walker 的控制器(即:人工智能控制器)
walker_ai_blueprint = world.get_blueprint_library().find('controller.ai.walker')
walker_ai_actor = world.spawn_actor(walker_ai_blueprint, carla.Transform(), attach_to = walker_actor)
print("\n", walker_ai_actor)    # 输出:Actor(id=87, type=controller.ai.walker)
print(type(walker_ai_actor))    # 输出:<class 'carla.libcarla.WalkerAIController'>

# 注意1:人工智能控制器是无形的,没有物理特性。它不会出现在现场
#        这里定义的 walker_ai_actor 其实是对步行者进行 AI 控制的类,而不是一个参与交通的 actor
# 注意2:控制器被定义为参与者,但它们与其他控制器有很大不同,它们在创建过程中需要附加到父 Actor,这是它们将控制的步行者
#        他们还需要一个特殊的蓝图(已在carla.BlueprintLibrary中定义为“controller.ai.walker”),这是一个空的蓝图,因为人工智能控制器在模拟中是不可见的,但会跟随其父控制器来指示每一步
# ------------------------------------------------------------------------------------------------------------------------




# ------------------------------------------------------------------------------------------------------------------------
# 注:每个【人工智能控制器】都需要初始化 + 目标 + 可选的速度
walker_ai_actor.start()                                                         # 函数【carla.WalkerAIController.start()】:为其父步行者启用AI控制
walker_ai_actor.go_to_location(world.get_random_location_from_navigation())     # 函数【carla.WalkerAIController.go_to_location(参数类型 carla.Location)】:设置行人将到达的目的地
walker_ai_actor.set_max_speed(1 + random.random())                              # 函数【carla.WalkerAIController.set_max_speed(参数类型 float)】:设置步行者的速度(以米每秒为单位)

time.sleep(10.0)    # 注:没有这一行行人就动不起来

walker_ai_actor.stop()                                                          # 函数【carla.WalkerAIController.stop()】:禁用其父步行者的 AI 控制
# ------------------------------------------------------------------------------------------------------------------------

注:my_test_script_8.py

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值