Lumière:开创性的视频生成模型及其应用
视频内容创造领域迎来了突破性进展,但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素,模型必须确保视频中的运动在时间上是连贯和平滑的,避免出现不自然的跳跃或断裂。空间关系的准确性也至关重要,因为视频的每一帧都需要与前后帧在空间布局上保持一致性。计算资源的限制也是一个重大挑战,视频数据的高维度要求大量的计算力和内存,这限制了模型的规模和复杂度。训练数据的需求量巨大,因为只有通过大量的训练样本,模型才能学习到生成逼真视频所需的丰富特征和模式。
视频生成领域普遍采用的是一种串行方法,其中包括一个基础模型用于生成稀疏的关键帧,随后通过一系列时间超分辨率(TSR)模型来生成关键帧之间的数据。这种方法虽然在内存效率上有优势,但在生成全局一致性运动方面存在固有的限制。
基础模型生成的关键帧数量有限,这导致快速运动在时间上出现混叠,造成歧义。TSR模块受限于固定且较小的时间上下文窗口,无法在整个视频时长内一致地解决混叠歧义。串行训练机制通常面临域差距问题,即TSR模型在训练时使用的是真实下采样的视频帧,但在推理时却用于插值生成的帧,这会导致误差累积。
这些局限性导致了视频生成的质量受限,包括视频时长、整体视觉质量和生成的现实运动程度。Lumière模型通过引入全新的扩散框架,一次性生成整个视频的时序长度,从而克服了这些限制,为视频生成领域带来了显著的改进。Lumière模型通过其创新的空间时间U-Net(STUNet)架构,有效地应对了这些挑战。该架构通过同时进行空间和时间的下采样与上采样,能够在保持计算效率的同时生成具有全局一致性的视频。Lumière模型的另一个显著优势是其多扩散(MultiDiffusion)技术,它允许模型在时间轴上处理视频片段,并通过优化问题平滑地合并各片段的预测结果,从而避免了时间边界处的不连贯现象。Lumière模型利用预训练的文本到图像扩散模型,这为其提供了强大的生成先验,并能够通过微调少量参数来适应视频生成任务。这些优势使得Lumière模型在生成逼真、多样化和连贯运动的视频方面表现出色,为视频内容创造领域带来了新的突破。

Lumière模型

Lumière模型的生成管线(pipeline)是其创新的核心,它与以往的视频生成方法有显著的不同。这一管线的设计允许模型一次性处理所有帧,而不是依赖于串行的关键帧生成和后续的帧填充。
在传统的视频生成方法中(如图3(a)所示),一个基础模型首先生成稀疏的关键帧,然后通过一系列时间超分辨率(TSR)模型来填充这些关键帧之间的帧。这种方法虽然内存效率较高,但存在无法生成全局一致运动的问题。此外,空间超分辨率(SSR)模型通常在不重叠的窗口上应用,以获得高分辨率的结果。
与此相反,Lumière模型(如图3(b)所示)采用了一个基础模型,该模型能够一次性处理所有的帧,而不是依赖于TSR模型的串行处理。这种设计允许模型学习到全局一致的运动,从而生成更加自然和连贯的视频内容。
通过一次性处理所有帧,Lumière模型能够捕捉到整个视频序列的动态变化,这有助于生成具有高度连贯性的视频。这种处理方式避免了传统方法中由于关键帧独立生成而可能出现的运动不连贯或时间上的歧义问题。
为了从基础模型生成的低分辨率视频获得高分辨率视频,Lumière模型采用了SSR模型,并在重叠的窗口上应用它。这样,每个窗口的预测结果不仅考虑了当前帧,还考虑了邻近帧的信息。
Lumière模型进一步利用了MultiDiffusion技术来整合重叠窗口上的SSR预测结果。通过优化问题的形式,模型能够将这些预测结果融合为一个全局一致的高分辨率视频。这一步骤确保了视频在空间和时间上的连贯性,同时避免了由于窗口划分而可能产生的边界伪影。
Lumière模型的创新之处在于其核心架构——空间时间U-Net(STUNet)。这一架构突破了传统视频生成模型的限制,通过集成空间和时间维度的处理能力,实现了对视频内容的全局理解和生成。STUNet的设计允许模型一次性生成整个视频的全帧率,即便是低分辨率,也能够保持运动的连贯性和一致性。

STUNet架构的关键组成部分是空间和时间的下采样模块。这些模块使得模型能够在一个压缩的时空表示中进行计算,大幅降低了计算复杂度。空间下采样通过减少视频帧的分辨率来减少数据的空间维度,而时间下采样则通过减少帧率来降低时间维度的数据量。这种双管齐下的方法让模型能够在更低维的表示中高效地处理视频数据。
STUNet架构支持多尺度处理,这是实现全局一致性运动生成的另一个关键因素。模型不仅在原始分辨率上工作,还通过下采样和上采样在多个分辨率尺度上进行计算。这种多尺度策略使得模型能够捕捉到从局部细节到全局动态的丰富信息,从而在生成视频中实现更加精细和连贯的运动。
与先前模型不同,STUNet架构能够直接生成全帧率的视频。这意味着模型在生成过程中考虑了整个视频序列,而不是依赖于后续的插值或超分辨率步骤来填充帧。这种端到端的方法简化了生成流程,并有助于生成更加自然和逼真的视频内容。
STUNet的设计还特别考虑了计算效率。通过在粗略的时空表示上执行大部分计算,模型能够以较低的计算成本生成视频。这使得STUNet架构不仅适用于研究环境,也能够在实际应用中实现高效视频生成。
在视频生成过程中,高分辨率视频所需的计算资源和内存通常是限制模型性能的主要瓶颈。为了克服这一挑战,Lumière模型引入了MultiDiffusion技术,这是一种创新的方法,用于在保持内存效率的同时实现高质量的空间超分辨率(SSR)。
MultiDiffusion技术的核心在于它将SSR计算分布在时间轴上。这意味着模型不是一次性处理整个视频,而是将视频分割成多个较短的片段,并对这些片段分别进行SSR处理。这种方法显著减少了任何单一时间点所需的内存和计算量。
为了实现片段之间的平滑过渡并保持视频的连贯性,MultiDiffusion采用了重叠窗口的技术。在每个生成步骤中,模型会考虑当前片段以及与其重叠的前后片段的信息。这种设计确保了视频片段之间的过渡自然,没有明显的接缝或不连续性。
一旦每个片段独立完成SSR,MultiDiffusion技术通过一个优化过程将这些片段的预测结果聚合起来。这个过程涉及到计算整体视频的一致性,确保整个视频序列的全局一致性,即使在片段边界处也是如此。
通过在时间轴上对视频片段进行SSR并聚合结果,MultiDiffusion技术有效减少了时间边界伪影。这些伪影通常在传统的视频生成模型中出现,因为它们在片段之间进行插值或融合时可能会产生不连贯的运动或视觉错误。
应用
Lumière模型的应用范围广泛,包括风格化视频生成、图像到视频的转换、视频修复以及电影静态图(cinemographs)的创作。这些应用展示了Lumière模型如何轻松适应多样化的视频内容创作任务。

在Figure 5中,Lumière模型的视频生成能力通过文本到视频(text-to-video)和图像到视频(image-to-video)的示例得到了展示。这些示例不仅证明了模型对复杂文本提示的理解和转换能力,还展示了它如何根据给定的静态图像生成连贯的视频内容。
每个示例下方都提供了文本提示,这些提示直接指导了视频内容的生成。文本到视频的生成展示了模型如何将文本描述转化为视觉场景,而图像到视频的生成则展示了模型如何以提供的图像为起点,创造出动态的故事。
对于图像到视频的生成,最左侧的帧作为条件提供给模型。这意味着模型必须理解并利用这一帧中的视觉信息,以此为基础生成后续的视频帧,确保生成的视频不仅在视觉上连贯,而且在逻辑上与给定的图像相符。
为了更全面地评估Lumière模型的性能,读者被引导至补充材料(SM)中查看完整的视频结果。这提供了一个更深入的视角,以评估模型生成的视频在时间上的连贯性和细节上的丰富性。
风格化生成是一个挑战,因为它需要在保持视频运动连贯性的同时融入特定的艺术风格。Lumière模型通过一种创新的方法解决了这一问题,即通过在预训练的文本到图像(T2I)模型权重和特定风格的T2I模型权重之间进行线性插值,实现了风格和运动之间的平衡。

具体来说,Lumière模型采用了一种“即插即用”的方法,通过调整预训练模型的权重来适应不同的风格。这种方法涉及计算两组权重的线性组合:一组是针对特定风格微调过的T2I模型权重(Wstyle),另一组是原始的预训练T2I模型权重(Worig)。通过这种方式,模型可以根据需要生成具有特定风格特征的视频,同时保持运动的自然流畅。
在实际应用中,插值系数(α)的选择是至关重要的。它决定了两种权重对最终生成视频的影响程度。Lumière模型允许用户根据具体需求手动选择插值系数,α的取值范围通常在0.5到1之间。当α接近1时,生成的视频更倾向于展示特定风格;而当α接近0.5时,原始的T2I模型权重影响更大,视频将更注重运动的真实性和连贯性。
通过这种方法,Lumière模型能够生成多样化的风格化视频。无论是现实主义风格,如水彩画或油画效果,还是更抽象的风格,如卡通或线条画,Lumière都能够通过调整插值系数来适应不同的风格需求,创造出既符合艺术风格又具有合理运动的视频内容。
Lumière模型的一个显著特点是其能够处理条件生成任务,即根据附加的输入信号生成视频。这种能力极大地扩展了模型的应用范围,允许用户通过提供特定的图像或掩码作为条件来引导视频内容的生成。
在图像到视频的生成场景中,Lumière模型能够将用户提供的静态图像作为起点,生成一个动态视频序列。模型利用输入图像作为视频的第一帧,并在此基础上展开,创造出具有连贯运动和场景发展的完整视频内容。
视频修复是条件生成的另一个重要应用。Lumière模型可以接受一个视频以及一个定义了需要修复区域的掩码作为输入。模型学习在保持视频其余部分不变的同时,对遮罩区域进行动画化或填充,从而实现对原始视频的无缝编辑和修复。
为了实现条件生成,Lumière模型对输入进行了特别的修改,以整合附加的输入信号。模型的输入不仅包括带噪声的视频帧,还包括一个被遮罩的视频帧以及相应的二进制掩码。这种整合允许模型区分哪些部分需要生成新内容,哪些部分应该保持原样。
为了使模型能够处理条件生成任务,Lumière团队对基础的文本到视频模型进行了微调。在微调过程中,模型学习如何根据附加的图像或掩码来生成视频,同时保持与原始视频的一致性。

Lumière模型的基础版本能够生成全帧率的视频,这一点与传统的依赖于时间超分辨率(TSR)模型串行生成关键帧和填充帧的方法不同。这种设计的优势在于它提供了一个直观的接口,便于用于下游应用,包括视频编辑和风格化。由于Lumière模型不依赖于TSR级联,它能够生成具有全局一致性的视频内容。这意味着视频的每一帧都是在考虑了整个视频序列的情况下生成的,从而避免了在编辑过程中可能出现的不连贯问题。
为了展示Lumière模型在视频编辑中的应用,研究者们采用了SDEdit(由Meng等人于2022年提出)这一工具。SDEdit是一个用于指导图像合成和编辑的随机微分方程工具,它能够与Lumière模型结合使用,实现一致的视频风格化。
在Figure 9中,研究者们展示了使用Lumière模型和SDEdit进行视频编辑的过程。图的上方展示了给定输入视频的几个帧,而下方则展示了经过编辑后的对应帧。通过这种方式,研究者们证明了Lumière模型能够与现有的视频编辑工具无缝集成,实现高质量的视频风格转换。
评估和比较

在评估Lumière模型的性能时,研究者们开展了一项用户研究,将该模型的文本到视频(text-to-video)和图像到视频(image-to-video)生成能力与多个基线方法进行了比较。这项研究通过收集用户对视频生成结果的偏好来评估不同方法的优劣。
在Figure 10中,每个基线方法与Lumière模型的比较结果都通过柱状图展示,其中蓝色部分代表用户投票支持Lumière模型的比例,橙色部分代表用户投票支持基线方法的比例。这种直观的展示方式允许快速识别用户偏好。
根据用户研究的结果显示,Lumière模型在文本到视频和图像到视频的生成任务中都获得了用户的偏好。这意味着与基线方法相比,用户更倾向于选择Lumière模型生成的视频,这可能是因为Lumière模型生成的视频在视觉质量、运动连贯性或者与文本描述的匹配度方面更胜一筹。
这项用户研究不仅验证了Lumière模型在技术层面的优势,更重要的是,它反映了用户对生成视频的实际感受和偏好。用户研究的结果为Lumière模型的实际应用和进一步的改进提供了宝贵的反馈。
研究者采用定性评估和定量评估的方式通过与现有T2V扩散模型的比较,Lumière在生成具有复杂运动和连贯相机运动的视频方面表现出色。
定性评估涉及将Lumière模型生成的视频与几个领先的T2V扩散模型进行对比。这些模型包括但不限于ImagenVideo、AnimateDiff、StableVideoDiffusion等。评估的焦点在于视频的视觉质量和运动的连贯性。
Lumière模型在生成具有复杂运动的视频方面表现出色,这包括精确捕捉和再现物体的运动轨迹以及相机视角的流畅转换。与传统方法相比,Lumière能够更好地处理全局运动的一致性,避免了因关键帧独立生成而导致的时间上的不连贯性。
在视觉检查中,评估者特别关注视频的视觉质量和运动的连贯性。Lumière模型生成的视频在细节表现、色彩还原以及场景的逼真度方面均展现出高水平。模型能够维持运动的连贯性,即使是在长时间序列中也能保持一致性。
Lumière模型在UCF101数据集上进行了零样本评估,这是一种在没有针对特定数据集进行训练的情况下测试模型泛化能力的方法。评估使用了两个主要的定量指标:Fréchet Video Distance (FVD)和Inception Score (IS)。

FVD是一种衡量生成视频与真实视频之间差异的度量,它通过比较特征空间中的距离来工作。较低的FVD值表明生成的视频在视觉特征上与真实视频更为接近。而IS是一个衡量生成样本多样性和质量的指标,较高的IS值表明生成的视频不仅质量高,而且展现了良好的多样性。
Lumière模型在FVD和IS两个指标上都取得了有竞争力的成绩,这表明其生成的视频在视觉质量和多样性方面与现有的顶尖模型相当。这些定量结果为Lumière模型的有效性提供了统计学上的证据。
除了定量指标之外,用户研究也被用于评估Lumière模型。在用户研究中,参与者被要求对Lumière生成的视频与其他基线方法生成的视频进行比较,并表达他们的偏好。用户研究的结果表明,用户更倾向于选择Lumière模型生成的视频,这进一步证实了Lumière在视觉质量和运动连贯性方面的优势。
Lumière以出色的FVD和IS成绩证明了其生成视频的高质量和多样性。而在用户研究中,用户对Lumière生成视频的偏好更是对其优势的直观认可。这些评估结果不仅彰显了Lumière模型的强大性能,也为其未来的应用提供了坚实的基础。
面向未来,Lumière模型的应用前景广阔。无论是在娱乐、教育、设计还是新闻制作等领域,Lumière都有望成为内容创作者的强大助手。随着技术的不断进步和优化,我们可以期待,Lumière将激发出更多的创意火花,推动视频内容生成的边界不断扩展。
论文链接:https://arxiv.org/pdf/2401.12945
相关文章:

Lumière:开创性的视频生成模型及其应用
视频内容创造领域迎来了突破性进展,但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素,模型必须确保视频中的运动在时间上是连贯和平滑的,避免出现不自然的跳…...
MySQL:MySQL的EXPLAIN各字段含义详解
在MySQL中,EXPLAIN是一个强大的工具,用于获取关于SELECT语句执行计划的信息。当你对查询性能有疑问时,使用EXPLAIN可以帮助你理解MySQL如何执行你的查询,并可能揭示性能瓶颈。 以下是EXPLAIN输出中各个列的详细解释: …...

域内路由选择协议——RIP
例题 RIP(Routing Information Protocol)是一种基于距离向量的路由协议,使用跳数作为度量标准来决定最优路径。下面我们详细分析为什么RIP协议要这样设计。 RIP协议的基本工作原理 距离向量算法: 每个路由器维护一张路由表&…...

JVM学习-MAT
MAT(Memory Analyzer Tool) 基本概述 Java堆内存分析器,可以用于查找内存泄漏以及查看内存消耗情况MAT是基于Eclipse开发的,不仅可以单独使用,还能以插件方式嵌入Eclipse中使用,是一款免费的性能分析工具 获取堆dump文件 dump…...
高通Android 12/13实现USB拔出关机功能
思路流程 1、监听广播->接受USB断开或者USB不充电广播->执行关机逻辑 涉及类 UsbManager/UsbDeviceManager \frameworks\base\services\usb\java\com\android\server\usb\UsbDeviceManager.java \frameworks\base\services\com\android\hardware\usb\UsbManager.java 2…...
用Python打造你的微博热搜追踪器
简介 在当今信息爆炸的时代,获取最新、最热门的信息成为了许多人的日常需求。微博热搜榜作为反映社会热点和公众关注焦点的重要窗口,其信息价值不言而喻。本文将介绍一个实用的Python爬虫程序,它能够自动爬取微博热搜榜的信息,并…...
TypeScript 在前端开发中的应用
TypeScript 在前端开发中的应用非常广泛。以下是一些常见的应用场景: 类型检查:TypeScript 是 JavaScript 的超集,它引入了静态类型检查。在开发过程中,TypeScript 编译器可以帮助开发者捕捉潜在的类型错误,提前发现并…...
【ArcGIS微课1000例】0115:字段数据类型案例详解
文章目录 一、ArcGIS数据类型概述二、案例1. 数字2. 文本3. 日期4. BLOB5. 对象标识符6. 全局标识符一、ArcGIS数据类型概述 创建要素类和表时,需要为各字段选择数据类型。可用的类型包括多种数字类型、文本类型、日期类型、二进制大对象 (BLOB) 或全局唯一标识符 (GUID)。选…...
ABC318-D
问题陈述 给你一个加权无向完整图,图中有 𝑁N 个顶点,编号从 11 到 𝑁N 。连接顶点 𝑖i 和 𝑗j 的边 (𝑖<𝑗)(i<j) 的边的长度与 (𝑖<𝑗)(i<j) …...
Java实现线程安全的单例模式
单例模式:保证某个类在程序中只存在唯⼀⼀份实例,而不会创建出多个实例,单例模式的类一般是构造器私有,通过一个方法返回唯一实例; 点这里查看线程安全的详细讲解; 常见的单例模式分为饿汉式和懒汉式 一…...

osg库的下载和安装
下载 下载地址:https://github.com/openscenegraph/OpenSceneGraph 安装 打开Cmake.exe,将上述下载的osg文件下的CMakeLists.txt文件拖入Cmake界面中。 在其路径下新建一个build文件 并配置cmake,点击Configure 修改如下几个选项 ACTUAL_3RDPARTY_DIR BUILD_OSG_EXAM…...
HTML、ASP.NET、XML、Javascript、DIV+CSS、JQuery、AJax的起源与简介
目录 HTML简介: 起源: ASP.NET简介: 起源: XML简介: 起源: JavaScript简介: 起源: DIVCSS简介: 起源: JQuery简介: 起源: AJax简介: HTML简介: HTML(Hyper Text Markup Language,超文本标记语言…...

SpringCloud微服务远程接口调用
一、概念 使用springcloud将项目拆分成一个一个微服务之后,微服务之间的接口调用就需要通过远程的方式实现,这里将介绍springcloud提供的两个微服务组件来介绍如何进行微服务间的远程接口调用。 1、使用RestTEmplate LoadBalanced来实现远程接口调用及…...
MySQL优化器的SQL重写规则
MySQL优化器的SQL重写规则 MySQL优化器的SQL重写规则:MySQL优化器会根据一定的规则对输入的SQL在保证含义不变的情况下进行SQL的优化重写。 1. 条件简化 1.1 移除不必要的括号 例如: ((a 5 AND b c) OR ((a > c) AND (c < 5))); --优化后 (a…...
57.void指针(万能指针)
目录 一.什么是void指针 二.视频教程 一.什么是void指针 在定义变量的时候,需要用到变量的类型,变量的类型在表示在内存中的大小,而void是空,表示的是无类型。所以如果用void来定义一个变量会发生错误(无法在内存中挖…...
国科大-智能计算系统(AICS)期末试题(2024春)
国科大-智能计算系统期末试题(2024春) 填空题简答题最后一道大题 部分题目记录 填空题 卷积层中,input维度为16322020,filter维度为1283233,stride2,pad_left pad_top 0,pad_right pad_bottom 1,outpu…...

训练Pytorch深度学习模型出现StopIteration
训练一个深度学习检测模型,突然出现: 是因为next(batch_iterator),可能迭代器读出来的数据为空。 # load train data# 原先代码images, targets next(batch_iterator)# 更改为:try:images, targets next(batch_iterator)except…...

windows上安装MongoDB,springboot整合MongoDB
上一篇文章已经通过在Ubuntu上安装MongoDB详细介绍了MongoDB的各种命令用法。 Ubuntu上安装、使用MongoDB详细教程https://blog.csdn.net/heyl163_/article/details/133781878 这篇文章介绍一下在windows上安装MongoDB,并通过在springboot项目中使用MongoDB记录用户…...
python_04
37、列表推导式 # 作用:快速生成列表 # 列表变量名 [x for x in range(开始值,结束值,步长) if 条件] # 注意:左闭右开 list1 [i for i in range(0,100)] print(list1) # list1 [i for i in range(0,100)] # print(list1)list…...
音视频视频点播
视频点播是集音视频采集,编辑,上传,自动化转码处理,媒体资源管理,高效云剪辑处理,分发加速,视频播放于一体的一站式音视频点播解决方案 阿里云视频点播基于阿里云强大的基础设施服务,…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...