carla中在斑马线附近的指定位置生成车辆
Posted 想游泳的鱼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了carla中在斑马线附近的指定位置生成车辆相关的知识,希望对你有一定的参考价值。
在carla中,车辆位置的生成一般都是在可以生成车辆的点的地方随机分配一个,这就导致生成的车辆的位置不固定。目前有个需求,就是要在固定位置生成车辆,而且还是斑马线附近,解决办法如下(使用的场景是Town03)。
1. 首先找到carla场景中可以生成的点的做坐标。
在carla中使用
spaw_points=world.get_map().get_spawn_points()
get_spawn_points()函数为carla.Map模块中的函数,用来获得地图中所有车辆生成点。返回值是一个包含carla.Transform的list。
把生成的点进行升序排序,然后放到一个txt文件中,命名为spawn_points.txt
2. 找到carla场景中所有斑马线的坐标
在calar中使用
crosswalks_list =world.get_map().get_crosswalks()
get_crosswalks()函数为carla.Map模块中的函数,用来获得地图中所有斑马线的长方形区域四个点的坐标。其中第一个点的坐标会重复,标志长方形的开始和结束点。
x=92.76921081542969,y=-257.09197998046875,z=0.0
x=94.82572174072266,y=-258.790283203125,z=0.0
x=91.5273666381836,y=-268.68878173828125,z=0.0
x=89.21411895751953,y=-267.7293395996094,z=0.0
x=92.76921081542969,y=-257.09197998046875,z=0.0
返回值是一个包含carla.Location的list。
把生成的点放到一个txt文件中,命名为cross_points.txt
3.查找斑马线附近的点,并生成车辆
查找spaw_points.txt文件中和cross_points.txt文件中相邻的点
例如,在cross_points.txt中找到了一个斑马线的位置
x=9.167159080505371,y=124.02804565429688,z=0.0
x=9.19526195526123,y=121.52638244628906,z=0.0
x=-17.256269454956055,y=120.25283813476562,z=0.0
x=-17.7617130279541,y=122.73088836669922,z=0.0
x=9.167159080505371,y=124.02804565429688,z=0.0
然后在spawn_points.txt文件中找9.16附近的点
x=9.284539222717285,y=-105.3431625366211,z=0.27530714869499207 pitch=0.0,yaw=-88.58641815185547,roll=0.0
使用这个点来生产车辆
location = carla.Location(x=9.284539222717285,y=-105.3431625366211,z=0.27530714869499207)
rotation = carla.Rotation(pitch=0.0, yaw=-88.58641815185547, roll=0.0)
transform = carla.Transform(location,rotation)
self.player = self.world.try_spawn_actor(blueprint,transform)
1650440807888692
4 在地图中获得车辆实时的位置
上面的方法是获得所有的点,但是并不知道车实时在地图上的位置。如果能获得车在地图上实时位置,再去上面获得的文本文件中去找,就能对应起来。
实时获得车位置的代码如下。
def get_car_location(self):
if self.player is not None:
return self.player.get_location()
return None
get_location()函数就是实时获得actor的位置。返回值是location.有了这个值然后再去上面的表中去查靠近这个点的斑马线或者生成点,就能更精确的知道生成点在地图上位置。
参考资料
https://carla.readthedocs.io/en/latest/python_api
以上是关于carla中在斑马线附近的指定位置生成车辆的主要内容,如果未能解决你的问题,请参考以下文章
Python-基于卷积神经网络斑马线识别分类,准确率高达99%
三线表是什么?R语言使用table1包绘制(生成)三线表使用单变量分列构建三线表通过topclass参数自定义三线表表格的显示形式(显示为类似斑马线)
三线表是什么?R语言使用table1包绘制(生成)三线表使用单变量分列构建三线表通过topclass参数自定义三线表表格的显示形式(显示为类似斑马线并添加表格网格)