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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值