笔记18:Carla官方文档阅读 -- 1st【World and Client】

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



#(1)世界和客户端
################################################################################################################################################################
client = carla.Client("localhost", 2000)      #两个TCP通信端口,一个是2000一个是2001
                                              #     【作用:用于将客户端连接到运行在同一台机器上、端口号为 2000 的 CARLA 服务器】
                                              #     【解释:客户端(client)所在的机器的IP地址/主机名为 "loaclhost" ,即client所在的这个计算机的主机(本地主机/本地服务器)的IP为 "localhost"】
client.set_timeout(10.0)                      #连接不上模拟器的时候,报错:RuntimeError: time-out of 10000ms while waiting for the simulator, make sure the simulator is ready and connected to localhost:2000
                                              #     【作用:当客户端链接不上本地服务器,超过这个时间限制,报错】
                                              #     【解释:本地服务器(IP为"loaclhost")】连接不上【carla模拟器(即客户端) -- client】
client_version = client.get_client_version()
server_version = client.get_server_version()
print("client_version = ", client_version)    #输出:0.9.10
print("server_version = ", server_version)    #输出:0.9.10
################################################################################################################################################################



#(2)地图
################################################################################################################################################################
world = client.get_world()                    #默认得到的世界地图是【Town03】
print(world.id)
client.reload_world()                         #在客户端更新世界地图时【可以先关闭原世界地图再创建新的世界地图】【也可以直接创建新世界地图】
                                              #     【注:每当客户端调用load_world()或者reload_world()时,前一个世界被销毁,一个新的世界从头开始创建】
world = client.load_world("Town01")
print(world.id)
################################################################################################################################################################



#(3)天气
################################################################################################################################################################
print("天气情况 :\n", world.get_weather())                      #注:get_weather()函数返回一个【类 WeatherParameters()】的实例化对象,这个对象在实例化出来world的时候由系统默认创建出来了,用户可以通过这个函数来获取world对象中的weather对象

world.set_weather(carla.WeatherParameters.WetCloudySunset)      #注:【WetCloudySunset】是【类 WeatherParameters()】已经包含的【天气预设】
                                                                #     【作用:不用进行自定义了,直接使用carla预设的天气】

weather_params = carla.WeatherParameters(
        precipitation=100,            # 降雨强度 (0-100)
        precipitation_deposits=50,    # 湿度 (0-100)
        wind_intensity=100,           # 风力 (0-100)
        sun_azimuth_angle=20,         # 太阳方位角 (0-360)
        sun_altitude_angle=-10,       # 太阳高度角 (0-90)        当 sun_altitude_angle < 0 时,夜间模式开始,这被认为是日落,这是灯光变得特别重要的时候
        fog_falloff=100               # 雾的浓度 (0-无穷)
)
world.set_weather(weather_params)                               #注:函数【set_weather()】的参数应该是一个【类 WeatherParameters()】的实例化对象
                                                                #     【作用:可以利用WeatherParameters()】自定义天气
################################################################################################################################################################



#(4)其他灯光
################################################################################################################################################################
#注 ;carla的【Light类】【LightManager类】【LightGroup类】【LightState类】是不包含车灯的,只管理路灯/建筑物灯光...
#     车灯的管理是在【Vehicle类】中的,是和车辆的其他属性一起进行管理的
l_manager = world.get_lightmanager()                           #函数【get_lightmanager()】:属于【类World】
                                                               #                      作用:函数【get_lightmanager()】:【类carla.LightManager】实例可以通过【carla.World.get_lightmanager()】检索,得到建立的世界对象world里面由系统自动创建的【类carla.LightManager】的实例化对象
                                                               #                        注:carla官网使用的示范是错误的,World类中没有函数get_light_manager(),而是函数get_lightmanager()
mylights = l_manager.get_all_lights()                          #函数【get_all_lioghts()】:属于【类carla.LightManager】
                                                               #                     作用:返回包含特定组中的灯光的【列表】,默认情况下该组是None(即整个组)
print("灯光情况:\n", mylights)
print(type(mylights))


#定制1个灯
light_01 = mylights[0]                                                                     #这个列表中的每个元素的类型都是【类carla.Light】的【实例化对象】
print(type(light_01))                                                                      #<class 'carla.libcarla.Light'>
light_01.turn_on()
light_01.set_intensity(100.0)

state_01 = carla.LightState(200.0, carla.Color(255, 0, 0), carla.LightGroup.Building, True)  #【类carla.LightState】:这个类代表除了标识符和位置之外的所有灯光变量,它们应该是静态的
                                                                                             #                  作用:使用此类可以在一次调用中管理灯光的【所有参数】
light_01.set_light_state(state_01)                                                           #函数【set_light_state()】


#定制一组灯  --  [这一部分的第一行程序一直报错,因为LightGroup类返回的内容同都是枚举对象,而不是可迭代对象(不含方法__iter__),而函数get_light_group()需要接受一个可迭代对象,我试了很多方法都不行,也许是carla在这一块的代码还没有完善,存疑]
# lights_02 = l_manager.get_light_group(list(carla.LightGroup.Building))
# print(type(lights_02))                                                     #注:是list,里面装的元素都是【carla.Light】对象
# print(lenth(lights_02))
# l_manager.turn_on(my_lights)                                               #注:对一个灯进行操作的时候,用【类carla.Light】中的方法,这些方法也只能控制一个灯
# l_manager.set_color(my_lights, carla.Color(255,0,0))                       #    但是【类carla.LightManager】中的方法可以控制一组灯,所以这里要用【l_manager.~~】
# l_manager.set_intensities(lights_02, list_of_intensities)
################################################################################################################################################################



#(5)车灯
################################################################################################################################################################
#注:可以使用【类Vehicle】中的【carla.Vehicle.get_light_state()】和【carla.Vehicle.set_light_state()】方法检索和更新车辆的灯光

################################################################################################################################################################




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值