Truck Platooning

该场景是一条只有智能卡车的直线公路车道。所有的卡车都有各自的初始公路上的位置、初始速度和目的地。卡车继续随车行驶各自的初始速度,他们只会改变它,以避免与前面的卡车碰撞或和它组成一个排。卡车可以与各自的主卡车动态地形成排,如果我觉得它省油。一次,多个小型排可以在仿真中共存。一辆卡车只是一辆汽车与前面的卡车有关,并试图与它组成一个排。它完全没有意识到这一点就在后面的卡车是否加入了这个排。

模型架构

 该模块是一个封装子系统,用于向场景中添加独立的智能卡车。

 在内部,它包括:平台、规划层和控制层。

plant”层计算智能体的动作,并将更新后的姿势信息提供给规划层。基于姿势信息,计划者执行当前计划或选择新计划(如果没有)计划正在运行,并将输出发送给控制器。然后,控制器通过向

命令加速度和命令角度返回平台,平台再次使用该命令计算智能体的最新位置。

平台:此块模拟智能卡车的移动。基于控制器发送的加速度和指令角度,计算更新后的姿态。

计划器主要由计划推理器和计划库组成。

计划推理机

推理机定期检查计划是否正在运行。如果未运行,则选择要执行的新计划。

否则,继续执行正在进行的计划。选择一个新的计划涉及以优先级排序的方式浏览存储在计划库中的计划,并选择第一个满足其所有输入条件的计划。

计划库

 计划库是独立计划及其各自进入条件的集合。在内部,计划可以由各种子计划组成。上图显示了库中的两个平面图,输入为:计划ID–触发相应的计划

execution Flag–调用plan只是为了检查其可行性(值=0)还是实际的planbody执行(值=1)。

卡车姿势–卡车的当前姿势信息。

一个计划有什么

(1)进入条件–验证计划可行性所需的检查。(2)进入行动-在执行实际计划之前采取的行动。尽管计划可以有一组输入操作,但一个强制操作是将计划程序的状态设置为正在运行,以便reasoner在下次执行时不会尝试选择新计划。(3)正文–计划及其子计划的实际实施情况(如有)(4)退出条件–标志计划完成的条件(4)退出行动–计划结束时采取的一组行动。同样,强制退出行动是为了将计划器状态设置为“未运行”,以便推理机可以选择新计划。

“以排方式移动”计划(两个计划中的第一个)以简化形式描述如下:

 

 计划层发给执行层的信号

 根据从planner(如上所述)接收到的信号,控制器的行动过程是:

1.如果ACC flag=0   控制器只是通过planner发送的指令加速度和指令角度作为输出。

2.如果ACC flag=1  控制器忽略由planner发送的命令加速度和命令角度,并自行计算它们。它通过向其内部的自适应巡航控制系统Simulink模块提供为ACC控制(由planner)发送的信号作为输入来实现。由于只有直线运动,转向角被发送为0。然后,控制器将指令角度和指令加速度反馈给设备。控制器内部有自适应巡航控制(ACC)系统,用于控制卡车和前方卡车之间的间隙。

通过复制此智能角色块,然后配置其掩码参数,可以创建多个此类智能角色。顶层架构图显示了三个这样的卡车。

 

服务

有关参与者的信息存储在数据表服务块中。它提供的服务相当于一个数据库,可以在其中写入/读取信息。它还提供用于查询数据库的自定义查询接口。

 

 它是使用C++ MeX S函数实现的,并具有作为数据表提供的服务注册的功能。数据表的S函数具有维护实际数据的工作。提供的服务是基于键的,每个键都映射到一个唯一的表条目。用户必须使用每个参与者唯一的值作为键。在本例中,参与者是车辆,其唯一ID用作钥匙。

提供的服务包括:

(1)Set entry:写入数据表。键用于将数据映射到表中的唯一条目。(2)获取条目:从数据表中读取。键用于从表中获取所需的条目。(3)查询服务:它允许查询数据表以获得符合某些筛选条件的所需条目。

查询通过调用两个子服务完成:

Init Query Iterator–在数据表中查找与查询条件匹配的条目,并将这些条目的键存储在数据工作中。输入参数为:(1)key–查询参与者的键。(2)queryIndex–映射到Simulink函数的查询枚举,在Simulink函数中实现用于选择符合条件的表条目的筛选逻辑。例如,在驾驶场景中,它可以有逻辑来选择在其车道前方的车辆。它返回此查询调用的查询句柄。迭代查询结果–使用上述调用返回的查询句柄,逐个获取所选的键(每个调用返回1个键)。与键一起返回一个“done”标志,以指示是否已从使用“init query”调用填充的数据工作中读取了所有键。

用户可以将自定义查询定义为枚举,并将其映射到各自实现的Simulink筛选器函数。

搜索服务:它返回与提供的“字段索引–字段值”对匹配的第一个条目的键。字段索引是表项(行)中字段的索引,如下所示。

 此示例使用两个数据表:

演员数据表–包含所有演员的当前姿势信息。每个参与者在数据表中都有一个专用条目,参与者ID是主键。该信息每一步都会更新,以反映所有参与者的最新姿势信息。它表示代理(智能卡车)对其周围环境的信念/知识。可视化数据表包含与可视化相关的排相关统计数据。每个参与者在此表中都有自己的专用条目。

形象化

它包括构建可视化所需的信息,并将其发送到可视化

 可视化信息由三组数据组成:

智能卡车姿势–所有卡车的姿势信息。姿势包含位置和速度

演员的信息。

•道路信息–道路边界信息。

•排统计-对于每辆卡车,它都有排相关信息:卡车ID、排状态

(是或否),通过排实现节油(如果排组成)。

卡车的排状态指示卡车是否以排的形式向前移动。

配置模型

可通过设置上述各种块特定掩模参数来配置模型。除此之外,还可以在“modelParams.m”中配置一些模型参数。可在文件中配置的重要模型参数包括:

传感器范围——它控制着聪明的演员对周围环境的了解,而这反过来又会影响他们的行为

它的决策。

•排燃料节省量–卡车作为一部分移动时节省的燃料百分比

排(由于空气动力阻力减小)。

•安全时间间隔–智能参与者必须保持w.r.t.车辆前方的最小时间间隔。

•排的最小重叠行程–卡车必须至少有这么多重叠

用卡车向前行驶,甚至考虑用它形成排

使用示例场景进行场景可视化

本节显示了卡车不同配置设置的模拟结果。下面的场景显示了两辆卡车及其初始位置。

屏幕截图显示了两辆卡车的初始位置。跟踪卡车在检测到前方的领先卡车时,将其作为候选车辆进行评估,以形成排。

 

运行1(较短的重叠行程)

 

 

 

 

使用这两辆卡车运行模拟时

牵引车不与领头车形成排(如图所示)

可以在中间的模拟屏幕截图中看到,它们是

由其各自的初始值决定的移动距离

位置和速度)。

•主要原因是,他们的寿命较短

重叠行程(x=600至x=1500,即900米)

因此,排燃料节约将适用于

距离更小。因此,在决定成立

排,拖尾卡车预计额外的燃料

它将燃烧以加速与发动机匹配

速度和接近领先者将超过

通过组建排可以节省燃料。

因此决定不这样做。

Run-2 (Longer Overlap Journey)

 

 

 

在这种情况下,由于更大的重叠行程(x=600到x=2500,即1900米)和更小的速度差(仅1米/秒),拖尾卡车决定支持排成一列,因为它预期这是燃料储蓄。如模拟屏幕截图所示,两辆卡车以排的形式相互靠近。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值