(四)carla中创建小车、采集数据

更新时间:2023-07-29 15:56:36 阅读: 评论:0

(四)carla 中创建⼩车、采集数据
(四) Carla 中创建⼩车、连接相机、采集图像
carla 中放置⼩车、控制过程
参考安装包⾥⾯的  中给出的⼀些学习程序,总结在  中放置⼩车、控制⼩车步骤。
1.⾸先,添加  包
#找到carla 包的路径
try :
sys .path .append (glob .glob ('../carla/dist/carla-*%d.%' % (
sys .version_info .major ,
sys .version_info .minor ,
'win-amd64' if  os .name == 'nt' el  'linux-x86_64'))[0])
except  IndexError :
pass
import  carla
将  定位到的dist⽂件夹中的  添加到  的路径当中,使得可以导⼊  包。
2.将  添加到路径后,开始创建客户端,与  进⾏相连。
#创建client 连接到Carla 中
舞蹈图片client = carla .Client ('localhost', 2000)
#conds,设置连接超时时间
client .t_timeout (2.0)
3.然后获取世界,获取世界的⽅法有两种,⼀种直接加载当前  仿真环境中的地图所对应的 ;另⼀种是加载⾃⼰想要的地图,更改当前  中的仿真环境地图。
#⽅法⼀
#world = _world()
#⽅法⼆
world = client .load_world ('Town05')
4.获取 中可⽤的 ,从  中选取要创建的  模型。这⾥⽐如要创建⼀辆车。
#通过world 获取world 中的Blueprint_Library
blueprint_library = world .get_blueprint_library ()
#通过find()和filter()函数以及random.choice 随机选择⼀个车辆模型
my_vehicle_bp = random .choice (blueprint_library .filter ("vehicle.lincoln.mkz2017"))
5.通过  创建车辆的⽣成位置,这⾥有两种⽅法,⼀种是⼈为⼿动设置⽣成点,但是这种情况经常因为选取不合理导致发⽣碰撞。另⼀种是从地图上随机选择⼀个不发⽣碰撞的点作为车辆的⽣成点。
#⽅法⼀,⼿动设置⽣成点
location = carla .Location (0, 10, 0)
新生儿干呕
rotation = carla .Rotation (0, 0, 0)
transform_vehicle = carla .Transform (location , rotation )
#⽅法⼆,⾃动选择⽣成点
#transform_vehicle = random._map().get_spawn_points())
6.使⽤  在仿真环境中⽣成车辆
my_vehicle = world .spawn_actor (my_vehicle_bp , transform_vehicle )
7.在仿真环境中⽣成车辆以后,控制车辆⾏驶。控制车辆⾏驶可以选择⼿动控制,也可以选择调⽤⾃动驾驶模式。
PythonAPI /examples /carla carla sys .path .append glob carla −0.9.4−py 3.5−linux −x import carla carla carla carla world carla world Blueprint Blueprint actor transform spawn ctor a
#⽅法⼀,⾃动驾驶模式合作合同范本
my_vehicle .t_autopilot (enabled =True )
#⽅法⼆,⼿动控制模式
#my_vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0.0))
⾄此,完成了⼩车的创建、控制。
整个代码如下:
#找到carla 包的路径
try :
sys .path .append (glob .glob ('../carla/dist/carla-*%d.%' % (
sys .version_info .major ,
sys .version_info .minor ,
'win-amd64' if  os .name == 'nt' el  'linux-x86_64'))[0])
except  IndexError :
pass
import  carla
>>>>>>>>>>>>##
#创建client 连接到Carla 中
client = carla .Client ('localhost', 2000)放屁垫
#conds,设置连接超时时间
client .t_timeout (2.0)
>>>>>>>>>>>>##
#⽅法⼀
#world = _world()
#⽅法⼆
world = client .load_world ('Town05')
>>>>>>>>>>>>##
#通过world 获取world 中的Blueprint_Library
blueprint_library = world .get_blueprint_library ()
#通过find()和filter()函数以及random.choice 随机选择⼀个车辆模型
my_vehicle_bp = random .choice (blueprint_library .filter ("vehicle.lincoln.mkz2017"))
>>>>>>>>>>>>##
#⽅法⼀,⼿动设置⽣成点
location = carla .Location (0, 10, 0)
rotation = carla .Rotation (0, 0, 0)
transform_vehicle = carla .Transform (location , rotation )
#⽅法⼆,⾃动选择⽣成点
#transform_vehicle = random._map().get_spawn_points())
>>>>>>>>>>>>##
my_vehicle = world .spawn_actor (my_vehicle_bp , transform_vehicle )
>>>>>>>>>>>>##
#⽅法⼀,⾃动驾驶模式
my_vehicle .t_autopilot (enabled =True )
#⽅法⼆,⼿动控制模式
#my_vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0.0))
carla 中安装相机、采集图⽚过程
⼀般情况下,  中相机都是在车辆上附着的。因此,接下来就在上述车辆创建、控制的基础上进⾏增添相机处理过程。
1.获取 中可⽤的 ,从  中选取要创建的  模型。这⾥创建⼀个  相机。
#通过world 获取world 中的Blueprint_Library
blueprint_library = world .get_blueprint_library ()
#选择相机模型
my_camera_bp = blueprint_library .find ("b")
2…设置  中相关传感器参数
这⾥设置相机采集图像的宽、⾼以及相机前⽅视⾓
carla world Blueprint Blueprint actor RGB actor
深圳租房合同IM_WIDTH = 640
IM_HEIIGHT = 480
# t the attribute of camera
my_camera_bp .t_attribute ("image_size_x", "{}".format (IM_WIDTH ))
my_camera_bp .t_attribute ("image_size_y", "{}".format (IM_HEIIGHT ))
my_camera_bp .t_attribute ("fov", "90")
3.设置相机安装位置,这⾥是设置相机相对于附着物,在附着物坐标系下的位置。
transform_camera  = carla .Transform (carla .Location (x =2.5, z =0.7))
4.⽣成相机,将相机安装在车上
my_camera = world .spawn_actor (my_camera_bp , transform_camera , attach_to =my_vehicle )
5.⾄此,相机安装完成。下⾯监听相机数据
想要读取相机实时采集的图⽚,⼀般通过传感器的  函数进⾏获取数据,同时,还可以使⽤回调函数对数据进⾏相应处理。例如:#⽅法⼀,这⾥直接使⽤lambda 进⾏处理,将图像进⾏存储
my_camera .listen (lambda  image : image .save_to_disk ('output/%06d.png' % image .frame_number ))
#⽅法⼆,
def  callback (event ):
#event 就是时时刻刻采集的image,可以对图⽚进⾏各种处理,然后存储
......
event .save_to_disk ('_out/%08d' % event .frame )
my_camera .listen (callback )
整体代码
将相机这⼀部分加⼊刚才⼩车控制程序中。
记得在程序末尾加上运⾏时间以及运⾏结束销毁前⾯所有的  这个步骤,为了销毁⽅便,使⽤⼀个列表将添加过的  存起来。整个代码如下:
#找到carla 包的路径
try :
sys .path .append (glob .glob ('../carla/dist/carla-*%d.%' % (
sys .version_info .major ,
sys .version_info .minor ,
'win-amd64' if  os .name == 'nt' el  'linux-x86_64'))[0])
except  IndexError :
pass
import  carla
def  callback (event ):
#event 就是时时刻刻采集的image,可以对图⽚进⾏各种处理,然后存储
......
大惊失色的意思
event .save_to_disk ('_out/%08d' % event .frame )
#存创建的actor
actor_list = []
try :
>>>>>>>>>>>>##
#创建client 连接到Carla 中
client = carla .Client ('localhost', 2000)
#conds,设置连接超时时间
client .t_timeout (2.0)
>>>>>>>>>>>>##anticipate
#⽅法⼀
#world = _world()
#⽅法⼆
world = client .load_world ('Town05')
>>>>>>>>>>>>##
#通过world 获取world 中的Blueprint_Library
blueprint_library = world .get_blueprint_library ()
#通过find()和filter()函数以及random.choice 随机选择⼀个车辆模型
listen ()actor actor
#通过find()和filter()函数以及random.choice随机选择⼀个车辆模型
my_vehicle_bp = random.choice(blueprint_library.filter("vehicle.lincoln.mkz2017"))
#选择相机模型
my_camera_bp = blueprint_library.find("b")
能饮一杯无
>>>>>>>>>>>>##
#⽅法⼀,⼿动设置⽣成点
location = carla.Location(0,10,0)
rotation = carla.Rotation(0,0,0)
transform_vehicle = carla.Transform(location, rotation)
#⽅法⼆,⾃动选择⽣成点
#transform_vehicle = random._map().get_spawn_points())
>>>>>>>>>>>>##
my_vehicle = world.spawn_actor(my_vehicle_bp, transform_vehicle)
actor_list.append(my_vehicle)
>>>>>>>>>>>>##
IM_WIDTH =640
IM_HEIIGHT =480
# t the attribute of camera
my_camera_bp.t_attribute("image_size_x","{}".format(IM_WIDTH))
my_camera_bp.t_attribute("image_size_y","{}".format(IM_HEIIGHT))
my_camera_bp.t_attribute("fov","90")
>>>>>>>>>>>>##
transform_camera  = carla.Transform(carla.Location(x=2.5, z=0.7))
>>>>>>>>>>>>##
my_camera = world.spawn_actor(my_camera_bp, transform_camera, attach_to=my_vehicle)
actor_list.append(my_camera)
>>>>>>>>>>>>##
#⽅法⼀,⾃动驾驶模式
my_vehicle.t_autopilot(enabled=True)
#⽅法⼆,⼿动控制模式
#my_vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=0.0))
>>>>>>>>>>>>##
#⽅法⼀,这⾥直接使⽤lambda进⾏处理,将图像进⾏存储
my_camera.listen(lambda image: image.save_to_disk('output/%06d.png'% image.frame_number)) #⽅法⼆,
#my_camera.listen(callback)
time.sleep(1000)
finally:
for actor in actor_list:
actor.destroy()
print("All cleaned up!")

本文发布于:2023-07-29 15:56:36,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1100995.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:车辆   创建   控制   选择
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图