Page 100 - 《软件学报》2025年第8期
P. 100

杜德慧 等: 面向自动驾驶系统的场景建模及边缘关键场景生成                                                   3523



                 算法  1. 基于重要性采样的边缘关键场景生成算法.

                 输入: 采样样本数量     N, 变量  x 的安全概率分布     p(x), 标记函数  g(x), 变量  x 提议概率分布  q(x);
                                 cnt
                           ˆ P (x) =
                            ′
                 输出: 估计值            , 边缘关键样本集合     Dataset.
                                  N
                                                                                             p(x)
                 1. 初始化: 满足标记函数的采样点数量          cnt = 0, 边缘关键样本集合    Dataset = ∅, 重要性权重  w(x) =  , 定义新的
                                                                                             q(x)
                         ′
                 标记函数   g (x) = g(x)·w(x);
                 2. for  i = 1,...,N do
                 3.  对变量   x 的提议概率分布    q(x) 进行一次采样得到      sample ;
                                                                i
                 4.  代入   sample  计算标记函数值  g(x i );
                              i
                 5.  if  g (x i ) 为真 then
                       ′
                 6.    cnt ← cnt +1;
                                      {
                                            }
                 7.    Dataset ← Dataset ∪ sample ;
                                            i
                 8.  end if
                 9. end for

                 4   案例展示及分析
                    本节将通过一个较为复杂的变道超车场景, 展示自动驾驶场景建模语言                         SML4ADS2.0  的场景建模能力、场
                 景模型测试以及安全关键场景生成支持. 该研究建模实现了超车场景、跟车场景等多种复杂                              ADS  场景, 其中超车
                 场景来源于文献      [20] 中提到的变道场景. 本节将应用         SML4ADS2.0  对超车场景进行抽象建模, 并基于          UPPAAL-
                 SMC  对逻辑场景验证分析和重要性采样实现边缘关键场景生成. 我们所设计和实现的                          SML4ADS2.0  建模工具可
                 参见: https://github.com/D-Sketon/SML4ADS.js.

                 4.1   场景建模
                    图  7  为变道超车的功能场景示意图, 其中, Ego        车将根据场景中其他车辆的情况进行变道超车, 为了保证两车
                 之间不会碰撞, 需要满足纵向距离公式: 若            a  车位于  b  车之前, 则   x a − x b ⩾ c+1.5×v b . 其中  x a  和  x b  分别表示  a  车
                 以及  b  车的纵向距离,   v a  表示  a  车的速度,  v b  表示  b  车的速度,  c 为常数. 因此, Ego  车在选择变道到  lane1  时, 需要
                                            c
                 满足   x Ego − x B1 ⩾ c+1.5×v B1 , 其中    设置为常量  2. 同理, Ego  车在选择变道返回  lane2  时, 需要满足   x Ego −
                 x F1 ⩾ c+1.5×v F1 . 该公式的引用是为了模拟车辆变道后, 需要给后方车辆留有一定的反应空间. 而位于                    Ego  车同车
                 道的前方则没有这种反应空间的需求, 因此本案例中设计为                    Ego  车在选择变道到     lane1  加速超过  F1  的前提条件
                 为  Ego  车与  F1  车距离超过  15 m, 即若在  15 m  内仍然没有满足上述的变道条件, 则认为超车失败, 只好选择跟车
                 行驶.

                                                     Direction of vehicles
                                              B1                  F2
                                lane1
                                            vehicle             vehicle            Junction
                                              Ego                  F1     roadId=0
                                lane2
                                             vehicle              vehicle
                                                图 7 变道超车的功能场景描述

                    根据以上的场景描述, 我们使用          SML4ADS2.0  进行逻辑场景建模, 并根据       Ego  车及  F2  车的行为规划, 设计了
                 相应的行为规划树模型如图          8  所示, 其中, 每个圆圈表示车当前的状态信息, 例如, “keep”状态表示车子保持车速
                 行驶, 并持续   2  个时间单位   (duration=2). F2  车的行为轨迹树中虚线箭头表示离散的概率选择, 50%           的概率保持车
   95   96   97   98   99   100   101   102   103   104   105