当前位置: 首页 > article >正文

STM32单片机GUI系统1 GUI基本内容

目录

一、GUI简介

1、emWin

2、LVGL (Light and Versatile Graphics Library)

3、TouchGFX

4、Qt for Embedded

5、特性对比总结

二、LVGL移植要求

三、优化LVGL运行效果方法

四、LVGL系统文件


一、GUI简介

        在嵌入式系统中,emWin、LVGL、TouchGFX 和 Qt 是四种常见的图形用户界面(GUI)框架。它们各自具有不同的特性和优势,适用于不同类型的嵌入式开发需求。以下是这四种框架的详细比较,涵盖它们的特性、优缺点以及应用场景。

1、emWin

  • 特性

    • 图形用户界面(GUI):emWin 是一个高效、功能强大的图形库,专为嵌入式应用设计,广泛用于高性能嵌入式显示器中。
    • 任务特性:emWin 本身不具备任务调度的功能,它只是一个图形库,通常需要与实时操作系统(RTOS)结合使用。可以在多任务环境中运行,配合 RTOS 进行任务调度。
    • 内存管理:emWin 允许开发者根据系统需求来调整内存分配,包括屏幕缓存、字体和资源。内存的使用可以进行配置,以适应不同的嵌入式设备。
    • 字符与字体:支持多种字体,用户可以选择内置字体或自定义字体,字符集支持广泛,可以根据需要选择存储方式(如动态或静态)。
    • 性能:在性能方面,emWin 可以针对硬件优化,支持硬件加速(如 GPU 渲染)。
  • 适用场景

    • 适用于需要较高性能、丰富 GUI 功能且硬件资源有限的嵌入式设备,尤其是在需要精细控制内存的场景中,如医疗、工业和消费类电子产品。

2、LVGL (Light and Versatile Graphics Library)

  • 特性

    • 图形用户界面(GUI):LVGL 是一个开源的图形库,设计上轻量、灵活、适用于各种嵌入式设备,尤其是资源有限的设备。支持触摸屏、按钮、滑块、图形、动画等 GUI 控件。
    • 任务特性:LVGL 本身没有内置任务调度系统,但可以与 RTOS 或单任务系统集成。在使用 RTOS 时,LVGL 可以运行在一个任务中,通过实时调度和事件驱动来进行界面更新。
    • 内存管理:LVGL 支持内存配置,可以根据需要选择不同的内存管理方式,适应不同的嵌入式系统。开发者可以控制内存池的大小、使用方式等。
    • 字符与字体:支持自定义字体,字符集支持较广,可以选择字体大小、字形以及是否启用抗锯齿等。
  • 适用场景

    • 适用于低功耗、资源有限的嵌入式设备,特别是对于有触摸屏需求的系统(如智能家居、汽车仪表盘、便携设备等)。

3、TouchGFX

  • 特性

    • 图形用户界面(GUI):TouchGFX 是一个专为嵌入式系统设计的高性能图形框架,支持丰富的图形界面元素,如图标、按钮、滑块、动画等。
    • 任务特性:TouchGFX 支持与 RTOS 集成,通过任务调度器进行任务分配。TouchGFX 可以在 RTOS 上的任务中运行,并通过事件驱动来更新显示内容。
    • 内存管理:TouchGFX 提供灵活的内存管理方式,可以根据应用需求调整内存池的大小。它支持图形硬件加速(如 GPU 和 DMA2D),使得图形渲染更加高效。
    • 字符与字体:支持自定义字体,内置了多种字符集和字体格式,且提供了图形界面元素的个性化定制。
  • 适用场景

    • 适用于中高端嵌入式显示应用,特别是要求高性能和精美动画效果的设备,如智能仪表、嵌入式消费电子产品、汽车显示屏等。

4、Qt for Embedded

  • 特性

    • 图形用户界面(GUI):Qt 是一个功能非常强大的跨平台 GUI 框架,Qt for Embedded 版本专为嵌入式系统设计,支持全面的 GUI 功能,如窗口管理、复杂的控件、动画等。
    • 任务特性:Qt 是一个完整的应用程序框架,内建有事件循环和任务调度系统,可以在多任务环境下运行。因此,它可以直接处理任务调度,不需要依赖外部的 RTOS,尽管它也可以与 RTOS 配合使用。
    • 内存管理:Qt for Embedded 相对较重,对于资源有限的嵌入式设备,可能会面临内存占用较高的问题。它需要较大的内存空间(通常为几 MB 到几十 MB)。
    • 字符与字体:支持多种字体格式,并且可以通过 Qt Creator 自定义和优化字体和字符集。Qt 提供的字体库非常丰富,可以通过字体渲染引擎来优化显示效果。
  • 适用场景

    • 适用于需要丰富 GUI 功能、复杂交互、以及较高性能要求的嵌入式系统,尤其是在大屏幕显示、用户界面复杂、需要丰富视觉效果的应用中,如智能家居、工业控制、医疗设备等。

5、特性对比总结

特性/框架emWinLVGLTouchGFXQt for Embedded
图形界面(GUI)强大,支持各种控件和图形元素轻量,支持基础控件和动画强大,支持复杂图形和动画全功能,支持复杂控件和动画
任务调度无内建任务调度,需与 RTOS 配合无内建任务调度,需与 RTOS 配合支持 RTOS,内建任务调度自带任务调度系统
内存管理可配置内存使用,支持硬件加速内存配置灵活,适合低资源设备灵活内存管理,支持 GPU 加速高内存需求,适合较大内存设备
字符与字体自定义字体和字符集,支持抗锯齿支持自定义字体和字符集支持自定义字体和字符集支持多种字体格式和优化
硬件加速支持支持 GPU 渲染加速支持 GPU 加速支持 GPU 加速支持 GPU 加速
资源需求非常低中等较高
应用场景中低端嵌入式设备,特别是资源受限的设备低资源设备,触摸屏应用高性能、高端嵌入式显示高端嵌入式设备,复杂 UI 设计

总结

  • emWin 适用于硬件资源有限且需要较低内存消耗的嵌入式系统,特别是工业控制、医疗设备等。
  • LVGL 是一个开源且灵活的图形库,适用于资源有限的嵌入式系统,尤其是需要触摸屏支持的低功耗设备。
  • TouchGFX 适合高性能嵌入式显示应用,支持动画和硬件加速,适用于需要复杂界面的中高端嵌入式设备。
  • Qt for Embedded 适用于需要复杂图形界面和较高硬件资源支持的系统,适合大屏幕、复杂界面的嵌入式设备。

二、GUI重要结合内容

1、触摸与DMA2D

        触摸屏和图形渲染是嵌入式系统中常见的输入输出方式,特别是在基于显示器的交互界面中。DMA2D(Direct Memory Access 2D)是一个图形加速器,用于提高图形绘制的效率,尤其是在有触摸输入的应用中。

  • 触摸屏:嵌入式系统的触摸屏通常使用 ADCI2C/SPI 接口与微控制器进行通信,获取用户触摸坐标。这些坐标会传递给图形库(如 LVGLTouchGFX),并用来驱动 UI 元素的更新。

  • DMA2D:DMA2D 主要用于加速 2D 图形处理,如图像缩放、旋转、色彩填充、图形绘制等。通过 DMA 通道,数据可以直接在内存中传输,减少 CPU 的负担,提升图形的渲染速度。对于触摸屏应用,DMA2D 可以帮助加速 UI 渲染,尤其是当需要频繁更新 UI(如滑动、动画效果等)时。

    例如,TouchGFXLVGL 都可以通过 DMA2D 实现高效的图形绘制,尤其是在 STM32 等具有硬件加速的微控制器上。通过结合 DMA2D,系统可以实现更平滑的 UI 更新和更低的延迟。

2、系统配合

        GUI 在嵌入式系统中的实现通常需要与其他系统组件(如 RTOS、硬件、输入设备等)配合工作。系统配合主要是指 GUI 与系统其他部分的协同工作。

  • RTOS(实时操作系统):在多任务的系统中,RTOS 提供了任务调度和资源管理。GUI(如 LVGLTouchGFX 等)通常与 RTOS 配合,作为一个或多个任务存在,定期更新屏幕,处理用户输入事件等。RTOS 会负责调度这些任务的执行,确保系统响应及时。通常,GUI 会有一个或多个定时任务,用来定时刷新界面,处理触摸输入等。

  • 硬件配合:嵌入式系统中的 GUI 通常需要与显示控制器、图形加速器、触摸控制器等硬件组件配合。不同的显示屏(如 TFTOLEDLCD 等)会与不同的硬件接口(如 SPIParallel 等)配合,GUI 库会利用这些硬件资源来实现图形渲染。

    • 显示控制器:GUI 系统通过显示控制器(如 ST7789ILI9341 等)进行屏幕输出。GUI 库会将渲染的图像数据发送到显示控制器进行显示。
    • 触摸控制器:触摸输入会通过触摸屏控制器(如 FT5x06XPT2046)获取,GUI 库需要通过触摸控制器的接口获取输入坐标,并更新相应的 UI 元素。

3、SRAM与内存

        在嵌入式系统中,GUI 的渲染需要大量的内存来存储图形数据和 UI 元素。内存的管理和分配对于 GUI 性能至关重要。

  • SRAM(静态随机存取存储器):SRAM 是嵌入式系统中的主要内存类型之一,通常用于存储屏幕缓冲区、图形资源等。由于 SRAM 速度较快,适用于图形渲染过程中需要频繁读写的区域。

    • 内存分配:GUI 库(如 emWinLVGLTouchGFX 等)会根据系统的内存限制,分配相应的缓冲区用于存储图形数据。例如,显示缓冲区存储完整的图像数据,通常分为前缓冲区和后缓冲区(双缓冲),以避免屏幕闪烁。

    • 图形库优化:有些图形库(如 TouchGFX)允许开发者配置内存使用策略,比如在 SDRAM 中存储图形数据,而在 SRAM 中存储关键 UI 元素。这样可以优化内存的使用,避免 SRAM 的不足问题。

  • 外部内存:如果系统的内部内存(SRAM)不足,常常需要使用外部 SDRAMFlash 来存储图形数据。图形库可以通过 DMA 控制器将数据从外部内存传输到显示控制器进行显示。为了提高性能,开发者通常会选择使用高带宽的内存接口(如 FSMCQuad SPI)。

4、字符与图片

图形库的功能不仅限于绘制基本图形(如矩形、圆形、线条等),还包括字符和图片的显示。字符和图片的渲染是 GUI 的重要组成部分,尤其是在显示文本信息或图标时。

  • 字符显示:大多数图形库(如 emWinLVGL)提供了字符渲染的功能,可以通过字体库来显示不同的字符。字符的渲染通常依赖于位图字体(如 MonospaceTrueType 字体),并通过算法将字符的形状绘制到屏幕上。字体的大小、颜色、样式等可以根据需求配置。

    • 内存管理:字符渲染时,需要将字符数据从内存读取到显示缓冲区。在内存不足的情况下,开发者可以选择通过外部 Flash 或 SRAM 存储字体资源,并动态加载显示需要的字符。
  • 图片显示:图形库还支持图片的显示,通常通过 BMPJPEGPNG 等格式来存储和显示图片。不同的库对图片格式的支持不同,但基本上都提供了将图片解码并显示到屏幕上的功能。

    • 图片解码:有些图形库提供了图片解码器,可以直接解码并显示图片。比如 LVGL 支持 BMP、PNG、JPEG 等格式的解码,并能够将解码后的图片显示在屏幕上。

    • 内存管理:图片通常需要更大的内存来存储。例如,显示一张 320x240 分辨率的 24 位 RGB 图片,需要约 230 KB 的内存空间。对于内存有限的嵌入式系统,开发者需要优化内存管理,例如只在需要时加载图片,或者使用低分辨率图像来节省内存。

5、GUI配置

(1)、emWin

  • 特性:专为嵌入式设备设计,适合在内存和计算资源有限的环境中运行。支持多种显示接口,能够有效管理内存和图形资源。
  • 任务调度:不具备内建的任务调度,需要依赖外部的 RTOS。
  • 配置:支持动态内存管理、字体和图像的配置。开发者可以根据硬件资源配置字体大小、图像分辨率等。
  • 内存管理:允许开发者灵活配置显示缓冲区、字体库等内存使用策略。

(2)、LVGL

  • 特性:开源的图形库,支持多种显示和输入设备。具有高度可配置性,支持动画、事件驱动、触摸输入等功能。
  • 任务调度:与 RTOS 集成,利用 RTOS 的任务调度来管理 GUI 的更新。支持自定义任务周期和优先级。
  • 配置:支持动态和静态内存管理,字体、图片、屏幕分辨率、触摸屏配置等都可以自定义。
  • 内存管理:可以根据系统配置存储图形资源(如图片、字体等)到外部存储器。

(3)、TouchGFX

  • 特性:专为高性能嵌入式图形应用设计,支持硬件加速(DMA2D)。适合于 STM32 系列微控制器。
  • 任务调度:与 RTOS 集成,支持任务和定时器管理。
  • 配置:支持丰富的图形界面设计,能够根据硬件特性配置图形资源、动画等。
  • 内存管理:支持外部 SDRAM 存储图形资源,可以动态加载和显示图像。

(4)、Qt

  • 特性:功能强大的跨平台图形框架,支持多种嵌入式系统。支持复杂的 GUI 设计,拥有丰富的控件和工具。
  • 任务调度:内建的事件调度系统,支持信号与槽机制。通常与嵌入式 RTOS 配合使用,支持多任务调度。
  • 配置:提供详细的图形界面和控件配置。支持字体、图片、动画、触摸输入等多种功能。
  • 内存管理:需要较大的内存资源,不太适用于低内存的嵌入式系统,但在高性能系统中表现出色。

相关文章:

STM32单片机GUI系统1 GUI基本内容

目录 一、GUI简介 1、emWin 2、LVGL (Light and Versatile Graphics Library) 3、TouchGFX 4、Qt for Embedded 5、特性对比总结 二、LVGL移植要求 三、优化LVGL运行效果方法 四、LVGL系统文件 一、GUI简介 在嵌入式系统中,emWin、LVGL、TouchGFX 和 Qt 是…...

从零开始学习three.js(21):一文详解three.js中的矩阵Matrix和向量Vector

一、三维世界的数学基石 在Three.js的三维世界里,所有视觉效果的实现都建立在严密的数学基础之上。其中向量(Vector) 和矩阵(Matrix) 是最核心的数学工具,它们就像构建数字宇宙的原子与分子,支…...

应届本科生简历制作指南

一、找一个专业的简历模板 首先,你需要访问 Overleaf 的官方网站,也就是Overleaf, Online LaTeX Editor,进入页面后,点击注册按钮,按照提示填写相关信息来创建一个属于自己的账号,通常需要填写用户名、邮箱…...

VUE3+TS实现图片缩放移动弹窗

完整代码 使用VUE3、TS&#xff0c;实现将图片通过鼠标拖拽缩放以及选择缩放比例。 <template><div><el-dialogv-model"dialogVisible"title"查看图片":close-on-click-modal"false":close-on-press-escape"false"fu…...

大语言模型训练数据格式:Alpaca 和 ShareGPT

在大规模语言模型&#xff08;LLM&#xff09;的开发中&#xff0c;训练数据的质量和格式起着至关重要的作用。为了更好地理解和构建高质量的数据集&#xff0c;社区发展出了多种标准化的数据格式。其中&#xff0c;Alpaca 和 ShareGPT 是两种广泛使用的训练数据格式&#xff0…...

实现动态增QuartzJob,通过自定义注解调用相应方法

:::tip 动态增加Quartz定时任务&#xff0c;通过自定义注解来实现具体的定时任务方法调用。 ::: 相关依赖如下 <!-- 用来动态创建 Quartz 定时任务 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-start…...

PyTorch可视化工具——使用Visdom进行深度学习可视化

文章目录 前置环境Visdom安装并启动VisdomVisdom图形APIVisdom静态更新API详解通用参数说明使用示例Visdom动态更新API详解1. 使用updateappend参数2. ~~使用vis.updateTrace方法~~3. 完整训练监控示例 Visdom可视化操作散点图plot.scatter()散点图案例线性图vis.line()vis.lin…...

Qt无边框界面添加鼠标事件

在Qt中实现无边框窗口的鼠标事件处理&#xff0c;主要涉及窗口拖动和调整大小功能。以下是分步实现的代码示例&#xff1a; 1. 创建无边框窗口 首先&#xff0c;创建一个继承自QWidget的自定义窗口类&#xff0c;并设置无边框标志&#xff1a; #include <QWidget> #in…...

企业级爬虫进阶开发指南

企业级爬虫进阶开发指南 一、分布式任务调度系统的深度设计 1.1 架构设计原理 图表 1.2 核心代码实现与注释 分布式锁服务 # distributed_lock.py import redis import timeclass DistributedLock:def __init__(self, redis_conn):self.redis = redis_connself.lock_key = …...

Ubuntu ping网络没有问题,但是浏览器无法访问到网络

我这边是尝试清楚DNS缓存然后重新访问就可以了。 使用 resolvectl 刷新 DNS 缓存 在 Ubuntu 20.04 及更高版本中&#xff0c;可以使用以下命令来刷新 DNS 缓存&#xff1a; sudo resolvectl flush-caches 使用 systemd-resolve&#xff08;适用于旧版本&#xff09; 如果你…...

网络安全-等级保护(等保) 2-7 GB/T 25058—2019 《信息安全技术 网络安全等级保护实施指南》-2019-08-30发布【现行】

################################################################################ GB/T 22239-2019 《信息安全技术 网络安全等级保护基础要求》包含安全物理环境、安全通信网络、安全区域边界、安全计算环境、安全管理中心、安全管理制度、安全管理机构、安全管理人员、安…...

数据结构实验10.1:内部排序的基本运算

文章目录 一&#xff0c;实验目的二&#xff0c;实验内容1. 数据生成与初始化2. 排序算法实现&#xff08;1&#xff09;直接插入排序&#xff08;2&#xff09;二分插入排序&#xff08;3&#xff09;希尔排序&#xff08;4&#xff09;冒泡排序&#xff08;5&#xff09;快速…...

C#:多线程

一.线程常用概念 线程&#xff08;Thread&#xff09;&#xff1a;操作系统执行程序的最小单位 进程&#xff08;Process&#xff09;&#xff1a;程序在内存中的运行实例 并发&#xff08;Concurrency&#xff09;&#xff1a;多个任务交替执行&#xff08;单核CPU&#xff0…...

基于Zynq SDK的LWIP UDP组播开发实战指南

一、为什么选择LWIP组播? 在工业控制、智能安防、物联网等领域,一对多的高效数据传输需求日益增长。Zynq-7000系列SoC凭借其ARM+FPGA的独特架构,结合LWIP轻量级网络协议栈,成为嵌入式网络开发的理想选择。本文将带您实现: LWIP组播配置全流程动态组播组切换技术零拷贝数据…...

c#将json字符串转换为对象数组

在C#中&#xff0c;将JSON字符串转换为对象数组是一个常见的需求&#xff0c;特别是在处理来自Web API的响应或需要反序列化本地文件内容时。这可以通过使用Newtonsoft.Json&#xff08;也称为Json.NET&#xff09;库或.NET Core内置的System.Text.Json来完成。以下是如何使用这…...

机器学习在智能水泥基复合材料中的应用与实践

“机器学习在智能水泥基复合材料中的应用与实践” 课程 内容 机器学习基础模型与复合材料研究融合 机器学习在复合材料中的应用概述机器学习用于复合材料研究的流程复合材料数据收集与数据预处理 实例&#xff1a;数据的收集和预处理 复合材料机器学习特征工程与选择 实例&a…...

wps编辑技巧

1、编辑模式 2、图片提取方法&#xff1a;右键保存图片 可以直接右键保存下来看看是否是原始图&#xff0c;如果歪着的图&#xff0c;可能保存下来是正的&#xff0c;直接保存试下 3、加批注...

开放世界RPG:无缝地图与动态任务的拓扑学架构

目录 开放世界RPG:无缝地图与动态任务的拓扑学架构引言第一章 地图分块系统1.1 动态加载算法1.2 内存管理模型第二章 任务拓扑网络2.1 任务依赖图2.2 动态可达性分析第三章 NPC行为系统3.1 行为森林架构3.2 日程规划算法第四章 动态事件系统4.1 事件传播模型4.2 玩家影响指标第…...

【图像处理入门】1. 数字图像的本质:从像素到色彩模型

作为图像处理的开篇&#xff0c;本文将带你拆解数字图像的底层逻辑&#xff1a;从模拟图像到数字信号的神奇转换&#xff0c;到像素世界的微观构成&#xff0c;再到彩色图像的编码奥秘。通过 Python 代码实战&#xff0c;你将亲手触摸图像的 “基因”—— 像素值&#xff0c;并…...

(已解决:基于WSL2技术)Windows11家庭中文版(win11家庭版)如何配置和使用Docker Desktop

目录 问题现象&#xff1a; 问题分析&#xff1a; 拓展&#xff1a; 解决方法&#xff1a; 1、使用WSL2技术&#xff08;亲测有效&#xff09; 注意&#xff1a; 2、开启Hyper-V功能&#xff08;未经亲测&#xff0c;待研究&#xff09; 问题现象&#xff1a; 今天想在本…...

Ubuntu20.04部署KVM

文章目录 一. 环境准备关闭防火墙&#xff08;UFW&#xff09;禁用 SELinux更换镜像源检查 CPU 虚拟化支持 二. 安装KVM安装 KVM 及相关组件启动 libvirtd 服务验证安装创建虚拟机 一. 环境准备 4C8G&#xff0c;50G硬盘——VMware Workstation需要给虚拟机开启虚拟化引擎 roo…...

OpenCV CUDA 模块图像过滤------创建一个高斯滤波器函数createGaussianFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::createGaussianFilter 是 OpenCV CUDA 模块中的一个工厂函数&#xff0c;用于创建一个高斯滤波器。这个滤波器可以用来平滑图像&#…...

计算机视觉与深度学习 | matlab实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据)

以下是一个基于MATLAB的ARIMA-WOA-CNN-LSTM时间序列预测框架。由于完整代码较长,此处提供核心模块和实现思路,完整源码和数据可通过文末方式获取。 1. 数据准备(示例数据) 使用MATLAB内置的航空乘客数据集: % 加载数据 data = readtable(airline-passengers.csv); data …...

可视化图解算法43:数组中的逆序对

1. 题目 ​牛客网 面试笔试TOP101 描述 在数组中的两个数字&#xff0c;如果前面一个数字大于后面的数字&#xff0c;则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 数据范围&…...

【Python】使用Python实现调用API获取图片存储到本地

使用Python实现调用API获取图片存储到本地 目录 使用Python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现5、结果查看 1、项目概述 开发一个自动化工具&#xff0c;用于从JSON数据源中提取图像ID&#xff0c;通过调用指定API获取未经压缩的原始…...

腾讯2025年校招笔试真题手撕(一)

一、题目 有n 把钥匙&#xff0c;m 个锁&#xff0c;每把锁只能由一把特定的钥匙打开&#xff0c;其他钥匙都无法打开。一把钥匙可能可以打开多把锁&#xff0c;钥匙也可以重复使用。 对于任意一把锁来说&#xff0c;打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…...

Vue3 与 Vue2 区别

一、Vue3 与 Vue2 区别 对于生命周期来说&#xff0c;整体上变化不大&#xff0c;只是大部分生命周期钩子名称上 “on”&#xff0c;功能上是类似的。不过有一点需要注意&#xff0c;组合式API的Vue3 中使用生命周期钩子时需要先引入&#xff0c;而 Vue2 在选项API中可以直接…...

java集合详细讲解

Java 8 集合框架详解 Java集合框架是Java中最重要、最常用的API之一&#xff0c;Java 8对其进行了多项增强。下面我将全面讲解Java 8中的集合框架。 一、集合框架概述 Java集合框架主要分为两大类&#xff1a; Collection - 单列集合 List&#xff1a;有序可重复Set&#xf…...

嵌入式学习笔记 - STM32 U(S)ART 模块HAL 库函数总结

一 串口发送方式&#xff1a; ①轮训方式发送&#xff0c;也就是主动发送&#xff0c;这个容易理解&#xff0c;使用如下函数&#xff1a; HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout); ②中断方式发送&#xff…...

【VLNs篇】04:SayNav-为新环境中的动态规划到导航进行大型语言模型的基础构建

栏目内容论文标题SayNav: 为新环境中的动态规划到导航进行大型语言模型的基础构建 (SayNav: Grounding Large Language Models for Dynamic Planning to Navigation in New Environments)研究问题自主代理在未知环境中执行复杂导航任务&#xff08;如MultiON&#xff09;时&…...