Carla仿真三:Traffic Manager交通管理器详解

news2024/11/29 22:36:52

CARLA Traffic Manager

  • 一、什么是Traffic Manager
      • 1、Traffic Manager简介
      • 2、Traffic Manager框架
      • 3、Traffic Manager模块
  • 二、Traffic Manager控制方法
      • 1、TM控制交通参与者的自动驾驶的规则
      • 2、TM控制交通参与者行为的API摘要
      • 3、TM控制交通参与者行为的API
  • 三、Traffic Manager 使用方法
      • 1、创建Traffic Manager实例
      • 2、配置车辆的自动驾驶行为
      • 3、设置车灯自动更新
      • 4、停止运行TM
      • 5、设置TM同步模式
      • 6、设置参与者睡眠与重生
  • 四、TM车辆路径规划

一、什么是Traffic Manager

1、Traffic Manager简介

交通管理器 (TM) 是在模拟中以自动驾驶模式控制车辆的模块。其目标是使用真实的城市交通状况填充模拟,按照规则控制车辆的行为。

2、Traffic Manager框架

carla框架图

3、Traffic Manager模块

模块作用
ALSM 代理生命周期和状态管理ALSM为TM的第一步,扫描Carla世界存在的车辆以及行人,并清理不存在的条目,并且是唯一调用Carla服务器的模块。
Vehicle Registry 车辆登记从ALSM获取到所有车辆及行人更新到存储中,并在存储中不断迭代状态。
Simulation state 仿真状态存储所有交通参与者的信息,如交通参与者的位置、速度及交通灯影响及状态等。
Contorl Loop 控制回路控制回路管理所有车辆的下一个命令的计算,以便它们同一帧更新。控制回路由五个不同的阶段组成;定位,碰撞,交通灯,运动规划和车辆灯。
In-Memory Map 存储地图将地图转换成离散路径点网格,并提供更多信息来连接路点和识别道路、路口等。通过识别这些建筑物的ID来快速定位附近区域的车辆,是PBVT的辅助模块,用于定位。
PBVT 路径缓冲和车辆跟踪PBVT 是一种包含每辆车预期路径的数据结构,允许在控制回路中轻松访问数据。
PID Controller 闭环控制器在运动规划阶段执行计算,计算油门、刹车、方向盘等需求。
Command Array 命令数组命令数组是 TM 逻辑周期的最后一步。它接收所有已注册车辆的命令并应用它们,会等待所有参与者计算完成之后才会将命令发出,确保同步。

二、Traffic Manager控制方法

1、TM控制交通参与者的自动驾驶的规则

a)车辆遵循动态生成的轨迹,在接近路口时随机选择路径。
b)车辆的默认目标速度为当前道路速度限制的70%。
c)TM优先使用自己的控制系统而不是交通规则。

2、TM控制交通参与者行为的API摘要

主题描述
常规- 创建连接到端口的 TM 实例。
-检索连接 TM 的端口。
安全条件- 设置停止车辆之间的最小距离(单辆车或所有车辆)。这将影响最小移动距离。
- 将所需速度设置为当前速度限制的百分比(对于单个车辆或所有车辆)。
- 重置交通信号灯。
碰撞管理- 启用/禁用车辆与特定参与者之间的碰撞。
- 使车辆忽略所有其他车辆。
- 使车辆忽略所有步行者。
- 使车辆忽略所有交通信号灯。
变道- 强制变道,忽略可能的碰撞。
- 启用/禁用车辆的车道变换。
混合物理模式- 启用/禁用混合物理模式。
- 更改启用物理的半径。

2.1 混合物理模式介绍:

Hybrid physics mode使用了两种不同的物理引擎:经典物理引擎和连续物理引擎。

a)在Hybrid physics mode中,车辆被建模成经典力学中的质点,使用经典物理引擎来计算车辆的动力学行为。这种建模方法可以提高计算效率,提高运行帧率。

b)在Hybrid physics mode中,使用了连续物理引擎来模拟车辆的轮胎和悬架系统。这样做可以确保车辆在高速行驶和弯道驾驶时的物理行为和真实情况相符合。

c)Hybrid physics mode的优点是可以在保持较高物理精度的同时提高计算效率,使得用户可以更快速地迭代和测试自动驾驶算法。

物理被禁用的战车将通过传送移动。保持线性加速度的基本计算,以确保位置更新和车速保持真实。

2.2 混合物理模式半径触发:

红色标签的是主车,绿色标签是启动混合物理模式的车辆(主车触发范围内),蓝色标签是禁用物理模式的车辆(主车触发范围外),通过设置混合物理模式的半径可以设定主车的触发范围

在这里插入图片描述

3、TM控制交通参与者行为的API

a)Carla官方Traffic Manager API链接:

https://carla.readthedocs.io/en/latest/python_api/#carlatrafficmanager

b)Carla常用的Traffic Manager API介绍:

– 常用的方法:

- distance_to_leading_vehicle(self, actor, distance)

设置车辆与其他车辆必须保持的最小距离(以米为单位)。距离以米为单位,会影响最小移动距离。它是从车辆对象的前到后计算的。

  • Parameters:
    • actor (carla.Actor) - 正在更改其最小距离的车辆。
    • distance (float - meters) - 两车之间的最小距离。

- force_lane_change(self, actor, direction)

强制车辆改入其左侧或右侧的车道(如果存在)。无论如何,此方法都会应用变道,而不考虑可能的碰撞。

  • Parameters:
    • actor (carla.Actor) - 需要执行变道的车辆。
    • direction (bool) - 目的地车道。True 是右边车道,False 是左边车道。

- ignore_lights_percentage(self, actor, perc)

在每帧运行一次的红绿灯阶段,此方法设置车辆忽略交通信号灯的几率。

  • Parameters:
    • actor (carla.Actor) - 需要忽略交通灯的对象。
    • perc (float) -介于 0 和 100 之间。交通信号灯将被忽略的次数。

- ignore_vehicles_percentage(self, actor, perc)

在每帧运行一次的碰撞检测阶段,此方法设置了与车辆忽略另一辆车碰撞的百分比几率。

  • Parameters:
    • actor (carla.Actor) - 将忽略其他车辆的车辆。
    • perc (float) -介于 0 和 100 之间。交通信号灯将被忽略的次数。

- shut_down(self)

关闭Traffic Manager


- update_vehicle_lights(self, actor, do_update)

设置交通管理器是否负责更新车辆指示灯。默认为False。交通管理器不会更改车辆的车灯状态,除非其自动更新状态为True。

  • Parameters:
    • actor (carla.Actor) - 灯光状态正在更改的车辆。
    • perc (float) - 如果为 True,则交通管理员将管理指定车辆的车辆灯。

- vehicle_lane_offset(self, offset)

设置离中心线的车道偏移量。正值表示向右偏移,负值表示向左偏移。默认为0。

  • Parameters:
    • offset (float) - 车道偏移偏离中心线的位移。

- vehicle_percentage_speed_difference(self, actor, percentage)

设置车辆的预期速度与其当前道路速度限制的差值。通过将percentage设置为负值,可以超出速度限制。 默认值为 30。

  • Parameters:
    • offset (float) - 车道偏移偏离中心线的位移。

– 常用的查询:

- get_all_actions(self, actor)

返回Traffic Manager将在后续步骤中执行的所有已知操作(即道路选项和航点)

  • Parameters:
    • actor (carla.Actor) - 要查询的演员。
  • Return:
    • 返回每个元素的列表如下 - [道路选项(字符串,例如“左”,“右”,“直”),下一个航点(carla.Waypoint)]

- get_next_actions(self, actor)

返回Traffic Manager将在后续步骤中执行的下一个已知道路选项和航点

  • Parameters:
    • actor (carla.Actor) - 要查询的演员。
  • Return:
    • 返回两个元素的列表 - [道路选项(字符串,例如“左”,“右”,“直”),下一个航点(carla.Waypoint)]

– 常用的设置:

- set_desired_speed(self, actor, speed)

将车辆的速度设置为指定值。

  • Parameters:
    • actor (carla.Actor) - 需要设置速度的演员。
    • speed (float) - 车辆的行驶速度。

- set_global_distance_to_leading_vehicle(self, distance)

设置车辆必须与其余车辆保持的最小距离(以米为单位)。距离以米为单位,会影响最小移动距离。它是从车辆对象的中心到中心计算的。

  • Parameters:
    • distance (float - meters) - 车辆最小距离。

- set_hybrid_physics_mode(self, enabled=False)

启用或禁用混合物理模式。在这种模式下,距离自我车辆超过一定半径的车辆将被禁用其物理特性。不计算车辆动力学将降低计算成本。车辆将被传送。

  • Parameters:
    • enabled (bool) - 如果为True则启用。

- set_hybrid_physics_radius(self, r=50.0)

启用混合物理的情况下,更改启用物理的影响区域的半径。

  • Parameters:
    • r (float - meters) - 半径长度。

- set_path(self, actor, path)

设置车辆在Traffic Manager控制时要遵循的位置列表。

  • Parameters:
  • actor (carla.Actor) - 需要设置位置的演员。
  • path (list) - 演员要跟踪的位置(carla.Locations )。

- set_route(self, actor, path)

设置车辆在Traffic Manager控制时要遵循的路线指令列表。可能的路线说明是“左”,“右”,“直”。

  • Parameters:
  • actor (carla.Actor) - 必须遵循给定路由说明的参与者。
  • path (list) - 车辆要遵循的路线指令(string)列表如,‘Left’, ‘Right’, ‘Straight’。

- set_synchronous_mode(self, mode_switch=True)

设置Traffic Manager为同步模式。

  • Parameters:
  • mode_switch (bool) - 如果为 True,则启用 TM 同步模式。。

三、Traffic Manager 使用方法

1、创建Traffic Manager实例

a)创建Traffic Manager实例
注意:TM 设计为在同步模式下工作。在异步模式下使用 TM 可能会导致意外和不良结果。

tm = client.get_trafficmanager(port)

b)设置一组车辆的自动驾驶

  • 要启用一组车辆的自动驾驶,检索TM实例的端口并将set_autopilot设置为True,同时通过TM端口。如果没有提供端口,它将尝试连接到默认端口(8000)中的TM。如果TM不存在,它将创建一个。
tm_port = tm.get_port()
 for v in vehicles_list:
     v.set_autopilot(True,tm_port)

2、配置车辆的自动驾驶行为

  • 下面的示例将相同的车辆列表设置为自动驾驶仪,但将它们配置为适度的驾驶行为。车辆的行驶速度比当前限速慢 80%,与其他车辆之间至少留出 5 米的距离,并且从不进行变道:
tm = client.get_trafficmanager(port)
tm_port = tm.get_port()
for v in my_vehicles:
  v.set_autopilot(True,tm_port)
tm.global_distance_to_leading_vehicle(5)
tm.global_percentage_speed_difference(80)
for v in my_vehicles: 
  tm.auto_lane_change(v,False)

3、设置车灯自动更新

  • 默认情况下,TM 管理的车辆的车辆灯(制动、转向指示灯等)永远不会更新。可以使用 TM 来更新给定车辆参与者的车灯:
tm = client.get_trafficmanager(port)
for actor in my_vehicles:
  tm.update_vehicle_lights(actor, True)

4、停止运行TM

  • TM不是需要销毁的演员;当创建它的客户端停止时,它将停止。这由 API 自动管理,用户无需执行任何操作。但是,当关闭TM时,用户必须摧毁由它控制的车辆,否则它们将在地图上保持不动。脚本会自动执行此操作:
client.apply_batch([carla.command.DestroyActor(x) for x in vehicles_list])

5、设置TM同步模式

  • TM 设计为在同步模式下工作。CARLA 服务器和 TM 都应设置为同步才能正常运行。在异步模式下使用 TM 可能会导致意外和不希望的结果,但是,如果需要异步模式,则模拟应至少以 20-30 fps 的速度运行。

下面的脚本演示了如何将服务器和 TM 设置为同步模式:

...
# 设置仿真方式为同步模式
init_settings = world.get_settings()
settings = world.get_settings()
settings.synchronous_mode = True

# 设置Traffic Manager为同步模式
my_tm.set_synchronous_mode(True)

...

# 并在同一个客户端中模拟一帧物理时间
world.apply_settings(init_settings)
world.tick()
...

# 在脚本结束之前总是禁用同步模式,以防止服务器在等待tick时阻塞
settings.synchronous_mode = False
my_tm.set_synchronous_mode(False)

6、设置参与者睡眠与重生

- 不存在主车:

  • 所有自动驾驶车辆都将被视为休眠演员,休眠的自动驾驶参与者将像在混合模式下一样在地图上移动(物理被禁用的战车将通过传送移动。保持线性加速度的基本计算,以确保位置更新和车速保持真实。)。车辆不会被渲染,因为没有英雄车辆来触发地图图块流。

- 存在主车:

  • 车辆休眠:自动驾驶车辆在超过定义的值时将进入休眠状态。
settings = world.get_settings()

# 距离主车距离超过2km的车辆将睡眠。
settings.actor_active_distance = 2000

world.apply_settings(settings)

  • 车辆重生:在TM中,休眠Actor可以配置为在英雄战车周围持续重生。战车将在英雄战车的用户可定义距离内重生上下限范围。注意,最小下限距离为 20m。

  • 要在英雄战车 25 米和 700 米范围内重生休眠战车:

my_tm.set_respawn_dormant_vehicles(True)
my_tm.set_boundaries_respawn_dormant_vehicles(25,700)

四、TM车辆路径规划

注意:以下例程为官方内容

  • 首先,我们将选择一些航点来构建我们的路径。生成点是方便的航点,与之前一样,我们可以使用 CARLA 的调试工具在地图上绘制生成点的位置。
# 在地图上用数字标出刷出点的位置
for i, spawn_point in enumerate(spawn_points):
    world.debug.draw_string(spawn_point.location, str(i), life_time=10)

# 在同步模式,我们需要设置俯视图的观察者视角
while True:
    world.tick()
  • 我们选择生成点和航点,在城镇内创建两个汇聚的交通流,造成拥堵,这可能是一个有趣的场景,可以呈现给自动驾驶代理。
spawn_points = world.get_map().get_spawn_points()

# 路径一的起点
spawn_point_1 =  spawn_points[32]
# 选择路径一的轨迹点
route_1_indices = [129, 28, 124, 33, 97, 119, 58, 154, 147]
route_1 = []
for ind in route_1_indices:
    route_1.append(spawn_points[ind].location)

# 路径二的起点
spawn_point_2 =  spawn_points[149]
# 选择路径二的轨迹点
route_2_indices = [21, 76, 38, 34, 90, 3]
route_2 = []
for ind in route_2_indices:
    route_2.append(spawn_points[ind].location)

# 将轨迹点打印到地图上面
world.debug.draw_string(spawn_point_1.location, 'Spawn point 1', life_time=30, color=carla.Color(255,0,0))
world.debug.draw_string(spawn_point_2.location, 'Spawn point 2', life_time=30, color=carla.Color(0,0,255))

for ind in route_1_indices:
    spawn_points[ind].location
    world.debug.draw_string(spawn_points[ind].location, str(ind), life_time=60, color=carla.Color(255,0,0))

for ind in route_2_indices:
    spawn_points[ind].location
    world.debug.draw_string(spawn_points[ind].location, str(ind), life_time=60, color=carla.Color(0,0,255))

while True:
    world.tick()

在这里插入图片描述

  • 现在我们已经选择了生成点和航点,现在可以开始生成流量并将生成的载具设置为遵循我们的航点列表。
# 创建生成车辆的间隔时间
spawn_delay = 20
counter = spawn_delay

# 设置生成车辆的上限数量
max_vehicles = 200
# 路径一与路径二点交替生成标志位,alt为True生成路径一
alt = False

spawn_points = world.get_map().get_spawn_points()
while True:
    world.tick()

    n_vehicles = len(world.get_actors().filter('*vehicle*'))
    vehicle_bp = random.choice(blueprints)

    # 设置每隔20帧重新生成车辆并赋予自动驾驶行为、行驶轨迹与行为。
    if counter == spawn_delay and n_vehicles < max_vehicles:
        # 在轨迹1和轨迹二起点交替生成车辆
        if alt:
            vehicle = world.try_spawn_actor(vehicle_bp, spawn_point_1)
        else:
            vehicle = world.try_spawn_actor(vehicle_bp, spawn_point_2)

        if vehicle: # 如果车辆成功生成
            vehicle.set_autopilot(True) # TM控制车辆自动驾驶

            #设置自动更新车辆车灯
            traffic_manager.update_vehicle_lights(vehicle, True)
            #设置随机左右变道概率为0
            traffic_manager.random_left_lanechange_percentage(vehicle, 0)
            traffic_manager.random_right_lanechange_percentage(vehicle, 0)
            #关闭自动变道功能
            traffic_manager.auto_lane_change(vehicle, False)

            # 交替生成轨迹路径
            if alt:
                traffic_manager.set_path(vehicle, route_1)
                alt = False
            else:
                traffic_manager.set_path(vehicle, route_2)
                alt = True

            vehicle = None

        counter -= 1
    elif counter > 0:
        counter -= 1
    elif counter == 0:
        counter = spawn_delay

  • 使用上面的代码,我们创建了两个由 TM 功能引导的来自地图两侧的汇聚流量流。这导致镇中心的一条道路拥堵。这种技术可以在更大范围内用于模拟自动驾驶汽车的多个棘手情况,例如繁忙的环形交叉路口或高速公路交叉路口。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣sql中等篇练习(十九)

力扣sql中等篇练习(十九) 1 苹果和桔子的个数 1.1 题目内容 1.1.1 基本题目信息1 1.1.2 基本题目信息2 1.1.3 示例输入输出 a 示例输入 b 示例输出 1.2 示例sql语句 # 没有使用group by也可以使用sum函数,因为默认是所有数据行自成一组 SELECT SUM(b.apple_countIFNULL(c.…

[LeetCode周赛复盘] 第 104 场双周赛20230513

[LeetCode周赛复盘] 第 104 场双周赛20230513 一、本周周赛总结6366. 老人的数目1. 题目描述2. 思路分析3. 代码实现 6367. 矩阵中的和1. 题目描述2. 思路分析3. 代码实现 6369. 最大或值1. 题目描述2. 思路分析3. 代码实现 6423. 英雄的力量1. 题目描述2. 思路分析3. 代码实现…

C:sh: 总是爆出:1: pause: not found

在linux平台下应该使用&#xff1a;pause() 导入&#xff1a;#include unistd.h 也就是unix下的标准函数&#xff0c;而不是代码不跨平台&#xff0c;从其他语言转来的新手很不舒服 参考&#xff1a;sh: 1: pause: not found_yjyn1的博客-CSDN博客

mysql数据库的表约束

表的约束 5.1&#xff1a;表的约束的概念 定义&#xff1a; 数据库表约束是用于定义和实施数据完整性的规则或条件。它们被应用于数据库表中的列&#xff0c;以确保数据的一致性、有效性和准确性。表约束可以强制执行特定的规则&#xff0c;限制数据的插入、更新或删除操作&…

ChatGPT的诞生和发展

ChatGPT的诞生和发展 ChatGPT是一种基于GPT模型的聊天机器人。GPT模型是一种基于深度学习的自然语言处理模型&#xff0c;由OpenAI团队开发&#xff0c;可以生成与输入文本相关的连续文本。ChatGPT的诞生和发展&#xff0c;可以追溯到GPT模型的开发与应用。 一、GPT模型的开…

jdk与tomcat的安装-----linux软件的安装与配置

安装方式 jdk的安装 上传jdk压缩包解压 tar -zxvf jdk压缩包名字 -C 解压地址配置环境变量 vi /etc/profileJAVA_HOMEjdk解压地址 PATH$JAVA_HOME/bin:$PATY重新加载profile文件&#xff0c;使更改的配置生效 source /etc/profile 查看是否安装成功 java -verisontomcat的…

Android MMKV - 性能强悍的存储工具(腾讯出品)

MMKV 是基于 mmap 内存映射的 key-value 组件&#xff0c;底层序列化/反序列化使用 protobuf 实现&#xff0c;性能高&#xff0c;稳定性强。从 2015 年中至今在微信上使用&#xff0c;其性能和稳定性经过了时间的验证. 起源 微信作为一个即时通讯项目,需要记录数据比较多.需…

基于Android studio学生考勤签到系统app

功能详细介绍 客户端 签到&#xff1a;用户再登录软件后&#xff0c;可以点击签到&#xff0c;进行在线签到&#xff0c;以记录当天的考勤信息。 请假&#xff1a;用户点击请假后&#xff0c;可以在线申请请假&#xff0c;等待教师的查看审核。 我的班级&#xff1a;可以查看个…

软考A计划-真题-分类精讲汇总-第七章(项目管理)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

解决爬虫工程师的烦心事,【淘宝1688京东】API接口封装系列,商品详情页的采集,可高并发运行

API是应用程序的开发接口&#xff0c;在开发程序的时候&#xff0c;我们有些功能可能不需要从到到位去研发&#xff0c;我们可以拿现有的开发出来的功能模块来使用&#xff0c;而这个功能模块&#xff0c;就叫做库(libary)。比如说&#xff1a;要实现数据传输的安全&#xff0c…

手写自己的Springboot-2-从Servlet容器选择彻底理解自动配置

文章目录 在Springboot工程中怎样对Servlet容器进行切换底层原理猜想,需要做哪些事情1.pom依赖2.判断注入哪个bean3.让使用者能够加载到自动配置类目前问题及通用处理方式真实Springboot处理方式 进行测试关键点总结 如果还没有看第一篇文章的伙伴,建议先看第一篇文章 手写自己…

C++ OpenMesh拉普拉斯光顺平滑网格模型

程序示例精选 C OpenMesh拉普拉斯光顺平滑网格模型 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<C OpenMesh拉普拉斯光顺平滑网格模型>>编写代码&#xff0c;代码整洁&#x…

【HTML5系列】第一章 · HTML5新增语义化标签

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

面试题打卡30天-day28

1、什么是 Git 的 fork 命令&#xff1f;它和 clone 命令有什么区别&#xff1f; 回答一&#xff1a; 在 Git 中&#xff0c;fork 命令是指将其他用户的代码仓库完全复制一份到当前用户自己的账户下&#xff0c;成为一个新的独立代码仓库。与此相对&#xff0c;clone 命令是指…

【CNN】深度卷积神经网络(AlexNet)是什么?如何实现AlexNet?

系列文章目录 第二章 深度学习 CNN中的深度卷积神经网络&#xff08;AlexNet&#xff09; 目录 系列文章目录 文章目录 前言 一、深度卷积神经网络&#xff08;AlexNet&#xff09;是什么&#xff1f; 二、AlexNet的网络结构 三、实现AlexNet模型 总结 前言 本文主要是…

在autoDL上运行github的代码

大佬们的教程&#xff1a;(249条消息) AutoDL使用教程&#xff1a;1&#xff09;创建实例 2&#xff09;配置环境上传数据 3&#xff09;PyCharm2021.3专业版下载安装与远程连接完整步骤 4&#xff09;实时查看tensorboard曲线情况_孟孟单单的博客-CSDN博客 (227条消息) 「炼丹…

智能的本质人工智能与机器人领域的64个问题

以艾伦纽厄尔&#xff08;Allen Newell&#xff09;和赫伯特西蒙&#xff08;Herbert Simon&#xff09;为代表&#xff0c;他们基本上倾向于智能已经达到数理逻辑的最高形式&#xff0c;并将符号处理作为研究重点&#xff0c;他们共同发表了著名论文《逻辑理论家》&#xff08…

“灵光一现”的动态特征:EEG研究

导读 尤里卡效应(Eureka effect&#xff1b;灵光一现)是指突然解决问题的常见经验。在这里&#xff0c;本文以一种模式识别范式来研究这种效应&#xff0c;该范式要求在格式塔规则和先验知识的基础上分割复杂场景和识别物体。受试者必须在模糊的场景中检测物体&#xff0c;并通…

【刷题】栈与队列:滑动窗口的最大值

题目 首先先来看题目描述&#xff1a; 这是一道栈与队列相关的题&#xff0c;给定我们一个整型数组&#xff0c;有一个长度为k的滑动窗口&#xff0c;让我们计算每次窗口的最大值。 我们的想法可以是得到一队列数据结构&#xff0c;让进入这个队列的第一个数据一定是最大的&a…

使用无线传感器网络进行源定位(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 本文提出了一种用于反狙击应用的源定位过程&#xff1a;​使用广义互相关&#xff08;GCC&#xff09;方法确定到达时间差&…