Nvidia Isaac Sim搭建仿真环境 入门教程 2024(4)

Nvidia Isaac Sim 入门教程 2024

版权信息

Copyright 2023-2024 Herman Ye@Auromix. All rights reserved.This course and all of its associated content, including but not limited to text, 
images, videos, and any other materials, are protected by copyright law. 
The author holds all rights to this course and its contents.Any unauthorized use, reproduction, distribution, or modification of this course 
or its contents is strictly prohibited and may result in legal action. 
This includes, but is not limited to:
Copying or distributing course materials without express written permission.
Reposting, sharing, or distributing course content on any platform without proper attribution and permission.
Creating derivative works based on this course without permission.
Permissions and InquiriesIf you wish to use or reproduce any part of this course for purposes other than personal learning, 
please contact the author to request permission.The course content is provided for educational purposes, and the author makes no warranties or representations 
regarding the accuracy, completeness, or suitability of the course content for any specific purpose. 
The author shall not be held liable for any damages, losses, 
or other consequences resulting from the use or misuse of this course.Please be aware that this course may contain materials or images obtained from third-party sources. 
The author and course creator diligently endeavor to ensure that these materials 
are used in full compliance with copyright and fair use regulations. 
If you have concerns about any specific content in this regard, 
please contact the author for clarification or resolution.By enrolling in this course, you agree to abide by the terms and conditions outlined in this copyright notice.

学习目标

  • 熟悉Isaac Sim中物理场景的创建与处理
  • 熟悉Isaac Sim中仿真对象的创建与处理
  • 熟悉Isaac Sim中USD文件的创建与处理

难度级别

初级中级高级

预计耗时

50 mins

学习前提

对象类型状态
Ubuntu22.04操作系统软件已确认
Isaac Sim环境软件已配置
Isaac Sim基本概念知识已了解
Isaac Sim基本使用知识已了解

在进行机器人仿真时,搭建一个相对真实的仿真环境是很重要的。一个完整的仿真环境不仅能提高仿真的精确度,还能提供更为直观的可视化效果。
接下来,我们将讨论如何创建这样一个场景。

物理环境

添加物理场景

在仿真中,物体通常受到各种物理力,时间也在不断地流逝,通常来说,世界需要一般的物理模拟属性,例如重力和物理时间的步进,依次点击Create->Physics->Physics scene来添加物理场景
在这里插入图片描述

随后,在Property->Physics里修改这个物理环境的基本属性,因为这是简单的测试,所以不需要GPU的强大能力,取消选中Enable GPU Dynamics,并将Broadphase Type改为MBP

注意:如果你对这些概念感到疑惑,可以参考相关知识章节。

在这里插入图片描述

添加地面

与其他仿真软件类似,Isaac Sim 也需要在仿真场景中添加地面。即使设置了重力等物理环境参数,并在开始仿真前将物体置于合适的位置,如果场景中缺乏地面,物体将会穿过地平面持续坠落。

依次点击Create->Physics->Ground Plane来添加一个地面
在这里插入图片描述

可以看到地面被添加了,通过鼠标中间缩放,发现地面只有一部分,这是因为超出范围的地面不需要渲染,以此减少性能开销,但即使是在不可视的地面,依然会有碰撞属性,物体在坠落到地面时不会再继续向下坠落。
在这里插入图片描述

添加光照

每个Stage都带有默认的环境光照(defaultLight),否则看不见东西。
此时我们来尝试添加另一个光照,来感受光照对于环境和物体的影响。
依次选择Create->Light->Dome Light来添加一个均匀环境光
DomeLight 模拟了从所有方向照射到场景中的均匀光源,类似于天空光。
DomeLight 通常用于创建自然的、全方位的环境照明效果,以提升场景的真实感。

在这里插入图片描述

因为默认光照较强,此时在属性面板中将新添加的均匀环境光的颜色更改为浅绿色,这样可以使得测试对比更清晰明了。
在这里插入图片描述

仿真对象

添加仿真物体

在菜单中创建一个普通的立方体(Cube Mesh)作为搭建仿真环境中的测试仿真对象。

在这里插入图片描述
再添加一些其他的物体,并且将这些物体随意放置,可以让其中一些悬空,方便观察在重力作用下从初始位置坠落到地面,和地面发生接触的过程。

在这里插入图片描述

添加刚体和碰撞体属性

尝试点击Isaac Sim左侧的工具栏中的Play来使仿真开始步进。

在这里插入图片描述

令人疑惑的是,这些物体并没有按预料中的方式下坠,这是因为虽然设置了物理环境,但并没有设置仿真物体自身的物理属性,因此它们并不遵循物理规律。

接下来,为这些物体添加带有预设碰撞体配置的刚体属性(Rigid Body with Colliders Preset)

Stage中批量选中物体,并添加Physics里的Rigid Body with Colliders Preset
在这里插入图片描述

观察添加完刚体和碰撞体的方块的属性面板,在Physics下能够发现新增的RigidBodyCollider属性,可以发现刚体属性所带来的一些更细的如角速度、线速度的新属性,以及以Covex Hull(凸包)等方式进行碰撞体近似的碰撞体属性。
在这里插入图片描述
依次选中GUI界面中的眼睛->Show By Type->Physics->Colliders->All来在视口Viewport中启用碰撞体可见模式,观察绿色线条,这是Isaac Sim对于仿真对象的碰撞体的可视化。
在这里插入图片描述
此时再次点击Isaac Sim左边的Play按钮,将会观察到悬空的物体在时间开始流动时不断下坠,直到撞击地面。
在这里插入图片描述

添加物理材质

对于需要涉及到摩擦力等的问题,例如箱子在斜坡上滑动,机器人夹爪夹取物体,仿真器给定的物理材质在其中起到了重要的作用。

依次点击Create->Physics->Physics Material来创建一个物理材质
在这里插入图片描述

在添加物理材质时会提示不同类型材质的选项,"rigid body material""deformable body material""PBD Particle Material"是可选的三种类型。

  • Rigid Body Material(刚体材质)

    • 刚体材质用于模拟刚性物体,这些物体不会发生形变,其形状在运动过程中保持不变。
    • 刚体通常用于模拟硬物体,如石头、金属、木头等。
    • 物体之间的碰撞会产生弹性反应,而且刚体通常不会发生变形。
  • Deformable Body Material(可变形材质)

    • 可变形材质用于模拟具有弹性的物体,它们可以发生形变,如橡胶、布料、软泥等。
    • 这些物体在受到外部力或碰撞时可以发生形状的变化,通常会遵循弹性和塑性行为。
    • 通常需要更复杂的物理模型来模拟可变形物体的行为,如有限元分析。
  • PBD Particle Material(基于粒子的动力学材质)

    • PBD(Position-Based Dynamics)是一种用于模拟可变形和弹性物体的方法,通常用于模拟细粒度的物体,如液体、布料等。
    • PBD通过在模拟中使用一组粒子来表示物体,并应用基于位置的动力学来模拟其行为,可以处理大变形和复杂物体。
    • PBD通常比传统的有限元分析更高效,但也可能缺少精确性。

在这里插入图片描述

在这里,方块等物体被视作普通的刚体,因此在PhysicsMaterial的资产中选择Rigid Body Material
在新引入的PhysicsMaterialProperty面板里的Physics里将会发现刚体材料相关的一些属性,例如动摩擦力、静摩擦力等,这些属性可以被设置。

在这里插入图片描述

随后我们将新引入的PhysicsMaterial赋予给方块Cube,找到方块Cube的属性面板Physics下的Physics Materials on selected models,并选中新引入的PhysicsMaterial,这样,方块就具备了刚体的物理材质属性。

在这里插入图片描述

添加外观材质

除了物理材质,物体也可以添加用于外观展示的材质
依次选中Create->Material->OmniPBR来添加一个OmniPBR材质,可以理解为普通的外观材质。

注意:类似OmniPBR材质的术语,将在相关知识章节部分补充

在这里插入图片描述

OmniPBR材质的Property里有海量的可调选项,此处就以简单地修改颜色为例。
选中OmniPBR->Property->Albedo->Albedo color修改为你喜欢的颜色。
在这里插入图片描述
随后将Stage中这个材质拖动到场景物体或者通过选中物体并在属性面板的Materials on selected models中选择材质,即可赋予外观的材质。

在这里插入图片描述
同理,你可以利用MDL语言或者现有的Omniverse材质包,为物体添加更为真实的外观材质。

在这里插入图片描述

文件的保存与使用

保存/打开USD文件

在菜单的File->Save可以保存和打开USD文件,现在试试保存刚才所创建的仿真场景。

在这里插入图片描述

保存地址可以放在诸如本地Nucleus服务器上或者本机的其他位置。
在这里插入图片描述

对于使用了多个外部素材的USD文件,建议将它所涉及的素材全部打包到一个文件夹内
通过右键USD文件并选中Collect Asset来收集相关素材并打包,以免在迁移时发生部分素材的缺失,这方便了在其他机器环境下使用情况。

在这里插入图片描述

使用USD文件

在这里插入图片描述

在Nvidia Isaac Sim中,官方提供了许多USD资产,将其他USD文件作为引用的步骤如下图所示:

  • 选择菜单栏中的 File
  • 在下拉菜单中选择 Add Reference 选项
    添加引用图片
    一旦加载完成,引用的USD文件将以与文件名相同的Prim名称加载到舞台上。这意味着整个USD文件的内容,包括PhysicsScene、defaultLight和GroundPlane等内容,都会被加载到新的舞台上。
    使用 Reference 的主要优势在于文件的可复用性和场景的模块化管理。多个场景可以引用同一个 USD 文件,当引用的 USD 文件被更新时,所有引用它的场景都会自动反映这些变化。

注意: 这可能导致混淆,特别是当您需要加载多个USD引用时,每个引用包含自己的PhysicsScenes和defaultLights。由于这些内容是通过Add Reference加载的,被视作是一个整体,您不能直接在新的Stage上删除它们。
同时,在原始USD文件中删除PhysicsScene、defaultLight和GroundPlane等内容也不是一个理想的解决方案,因为这可能会导致在创建USD文件时更加复杂。

为了更好地管理加载的USD文件和避免加载原始世界的环境内容,USD中存在名为defaultPrim的概念,在一个USD文件被其他USD文件引用时,只有defaultPrim部分会被拉取。
因此,在制作USD时,可以考虑当它被引用时,您希望它的哪些内容被引出(例如机器人本体),哪些内容不被引出(例如测试机器人本体时所用的周遭环境),具体的步骤类似:

  1. 创建一个名为 my_robot 的新 Xform,用于容纳机器人的相关组件。
  2. 将所需的机器人的所有组件拖动到 my_robot 这个 Xform 下。
  3. 在舞台中点击对象,右键将 my_robot 设置为新的defaultPrim

这样,当您在其他舞台上将机器人作为引用导入时,只会导入机器人的主体,而不会包含原始世界的环境内容。这一步确保了您只加载了所需的机器人部分,而不会混淆或加载多余的内容。

在这里插入图片描述

结尾语

恭喜你,已经学习了Isaac Sim的仿真场景的相关内容,了解了如何创造一个带有物理环境、材质、光照之类的更加真实的世界,并能够自主搭建一个简单的物理仿真场景。
在下一章节,你将学习Isaac Sim的机器人和传感器组装。
本章在后面的部分还提供了可选的个人练习和相关知识小章节,如果你希望更深入地掌握本章节学习的内容,请查看后面的内容。

如需企业内训定制、项目开发合作或个人学习支持,请联系:hermanye233@icloud.com

个人练习(可选的)

练习目标

制作出一个简单的两轮机器人,由一个Cube通过拉伸操作得到身体,两个Cylinder作为左右轮,并为这个机器人制作出简单的测试环境,并将他们保存作为USD文件
在这里插入图片描述

练习参考

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

相关知识(可选的)

注意: 限于作者所涉及的领域,以下内容可能存在不准确或者谬误,仅供参考,欢迎指正。

  • Rigid Body 刚体
    刚体(Rigid Body)在物理学和工程学中,是指一种理想化的物体,其内部任意两点之间的距离无论受到什么外力都保持不变。换句话说,刚体不会变形,不会弯曲、拉伸或压缩。刚体是经典力学中的一个基本概念,用于描述和分析物体的运动和力学行为。
    刚体可以由无数个质点组成,每个质点的位置相对于刚体的质心都是固定的,它的运动可以分解为平移运动和旋转运动。平移运动是刚体的所有点都以相同的速度和方向移动;旋转运动是刚体绕着某个固定轴旋转。它的惯性矩描述了其对旋转运动的抵抗能力,取决于刚体的质量分布和旋转轴的位置。
    在游戏引擎中,如Unity或Unreal Engine或者仿真器中,将刚体属性添加到对象,可以使其具备一些物理性质。

  • Collider 碰撞体
    碰撞体(Collider)是一种用于物理模拟的组件,它定义了物体的形状和物理特性,使物体在模拟环境中能够发生碰撞和相互作用。Collider通常用于确保虚拟物体不会互相穿透,并能产生现实中的物理行为,如碰撞、反弹等。
    碰撞体预设(Colliders preset)是预定义的碰撞体配置,包含了常用形状和物理参数设置。使用碰撞体预设可以简化碰撞体的创建过程,让用户快速应用常见的碰撞体类型,比如Box Collider(盒子碰撞体)、Sphere Collider(球形碰撞体)、Mesh Collider(网格碰撞体)等。

  • Collsion Approximation 碰撞体近似
    碰撞体近似指的是使用简化的几何形状来近似物体的实际形状,以便于更高效地进行碰撞检测和物理模拟。直接使用Mesh计算碰撞虽然精度高,但是对于复杂物体开销非常大,碰撞体近似方法通过减少计算复杂度,提高模拟的性能,同时保持合理的物理行为。

  • Convex Hull 凸包近似法
    Convex Hull(凸包)是计算几何中的一个基本概念。它是指一个给定点集的最小凸多边形或多面体,包含了点集中所有的点,并且任何两点之间的连线都在这个凸多边形或多面体的内部或边界上。
    凸形状的碰撞检测算法简单高效,比非凸形状快得多,并且在物理模拟中有较小的误差积累。但凸包仅能提供一个粗略的外部近似,对于复杂形状或内部凹陷较多的物体,精度较低,比如机器人的夹爪,可能会被试做一团夹爪,从而在精细灵巧操作上表现不佳。
    想象一下你有一堆钉子随机地插在平面上的一个木板上,每个钉子代表一个点。然后你用一根橡皮筋围绕这些钉子,把橡皮筋拉紧,使其尽可能地包住所有的钉子。橡皮筋最终形成的形状就是这个点集的凸包。
    在三维空间中,凸包就像是你用一张伸展的薄膜包裹住一堆散落的球(代表点)。薄膜在各个方向上紧紧包住这些球,形成的就是三维点集的凸包。

  • Convex Decomposition 凸分解近似法
    Convex Decomposition (凸分解)是一种将复杂的几何形状分解成一组较小的凸形状的方法。通过将一个复杂的非凸形状分解成多个凸多边形或凸多面体,可以更高效地进行物理模拟和碰撞检测。
    将复杂形状分解为多个凸形状,凸形状的碰撞检测算法简单且高效。
    但对于非常复杂或高度不规则的形状,凸分解可能仍然无法完美近似。
    想象一下你有一块形状复杂的大饼干(复杂的非凸形状),上面有许多凹陷和凸起,它不是一个典型的整体的适合用粗略的凸包解决的三维结构。
    于是你使用小刀持续切割,直到把整个大饼干分解成许多小块,并且使得每一块都是规则的形状(凸形状),这些均为小块凸形状的饼干块能够近似地代表大饼干的复杂形状。

  • SDF 符号距离场近似法
    SDF Mesh的近似方法(Signed Distance Function Mesh Approximation)是一种用于表示复杂几何形状的方法,主要在计算机图形学、物理模拟和碰撞检测中使用。SDF Mesh通过符号距离函数(Signed Distance Function, SDF)来描述几何体的表面和体积信息,使得在处理复杂形状时能够获得更高的精度和效率。
    SDF Mesh可以精确描述复杂几何体的表面和体积,但生成和优化SDF网格需要大量的预处理时间和计算资源,在使用时也有较大的内存占用。
    符号距离函数是一个数学函数,对于三维空间中的每一个点,该函数返回该点到最近表面的有符号距离,通过正/负/零值来代表点在表面的外部/内部/表面上。

  • PCM 碰撞系统算法
    PCM(Persistent Contact Manifold)是一种基于接触持久化的算法,它在物体碰撞时,通过保持接触信息来提高后续碰撞检测的效率。它保留了物体之间的接触信息,后续的碰撞检测可以利用这些信息,从而减少计算量。对于持续接触的物体,如堆叠的物体或滑动接触,能够提供更加稳定的模拟结果。

  • SAT 碰撞系统算法
    SAT(Separating Axis Theorem)是一种基于分离轴的碰撞检测算法,通过检查可能的分离轴来确定两个凸多边形是否发生碰撞。算法相对简单且直观,适合处理凸形物体的碰撞检测。对于复杂场景或非凸多边形,SAT 可能需要更多的计算资源。

  • TGS 求解算法
    TGS(Timewarp Gauss-Seidel)求解器是一种改进的Gauss-Seidel方法,它在处理动力学系统中的时间步进时更为稳定和高效。TGS求解器的核心思想是通过时间扭曲(timewarp)技术来处理时间步长,从而减少数值误差和模拟不稳定性。它适用于需要高精度和高稳定性的模拟,如复杂的刚体动力学系统。它适用于需要高度稳定性和精度的模拟场景,如高精度物理引擎和复杂机械系统的仿真。

  • PGS 求解算法
    PGS(Projected Gauss-Seidel)求解器是一种迭代方法,用于解决带有不等式约束的线性互补问题(LCP)。在刚体动力学中,PGS求解器常用于处理碰撞、摩擦和关节约束等问题。PGS求解器通过迭代逐步逼近解,并在每一步中投影到可行域内,从而满足约束条件。它的优点是简单易实现,且在大多数情况下收敛速度较快。它常用于实时应用和游戏引擎中,因其计算效率较高且实现简单,适合处理大量的碰撞和约束。

  • CCD 连续碰撞检测
    连续碰撞检测(Continuous Collision Detection)是一种方法,用于在仿真中精确检测物体在连续时间步长内是否发生碰撞,而不仅仅是在离散的时间步长上进行检测。这样可以避免快速运动的物体“穿越”其他物体的问题,提供更精确和真实的模拟效果。启用CCD可以大幅提高碰撞检测的准确性,但也可能增加计算开销。

  • Broad Phase 粗略阶段
    在物理引擎和碰撞检测系统中,Broad Phase(粗略阶段)是碰撞检测过程的第一个阶段。其主要目的是快速筛选出可能发生碰撞的物体对,抛弃不可能发生碰撞的情况,减少后续需要进行详细碰撞检测的物体对数量,从而提高整体碰撞检测的效率,这对于处理大量物体的仿真非常重要,因为详细碰撞检测是计算密集型的操作。
    Broad Phase的任务是识别可能碰撞的物体,而不是确认它们是否确实碰撞。
    Broad Phase常见的方法包括基于空间分区的算法(如网格法)、层次包围体法(如八叉树或四叉树)、基于排序和剔除的算法(如 Sweep and Prune)等。
    举例来说,如果你想模拟整个世界的人口,就需要检查每个代表人的对象是否与其他人发生碰撞。但显然,伦敦的人不可能与北京的人发生碰撞,因此没有必要检查这两个城市的所有人之间的碰撞。Broad Phase阶段会尝试将世界分成离散的区域,其中我们知道这些区域不会重叠,因此区域内的物体也不会发生碰撞。这样可以大大减少需要进行详细碰撞检测的对象数量,从而提高性能。
    具体细节可参考Nvidia physX 中的说明。
    对于Broad Phase更深入的理解可参考Newcastle University相关研究。

  • Narrow Phase 精细阶段
    Narrow Phase(精细阶段)是碰撞检测过程的第二个阶段,紧随 Broad Phase(粗略阶段)之后。在 Narrow Phase 中,对在粗略阶段筛选出的可能发生碰撞的物体对进行精确的碰撞检测。其主要目的是计算物体之间的实际接触点、碰撞深度和碰撞响应,由于Broadphase已经大大减少了需要检测的物体对的数量,这一步通常较为高效。
    Narrow Phase使用更复杂和精细的算法,如 GJK(Gilbert-Johnson-Keerthi)算法、EPA(Expanding Polytope Algorithm)、SAT(Separating Axis Theorem)等。

  • GPU 粗略阶段算法
    PhysX 中 GPU 加速的 Broad Phase 算法通常采用的是基于栅格化的策略。这种算法的核心思想是将整个场景划分成多个小的栅格单元,然后在每个栅格单元内进行碰撞检测。
    更细地说,它将三维空间划分成一系列小的栅格单元。每个单元包含一定数量的物体,物体的位置决定了它们被分配到哪个栅格,随后将所有物体根据其位置分配到对应的栅格单元中,并在每个栅格单元内,进行细粒度的碰撞检测。
    对于跨越栅格边界的物体,这些物体可能与多个栅格单元中的物体发生碰撞。需要对这些物体进行额外的检测以确保碰撞检测的准确性。

  • MBP 粗略阶段算法
    MBP (Multi Box Pruning)是一种基于轴对齐包围盒(AABB)的碰撞检测算法,通过多重剔除法进行 Broadphase 处理。
    MBP 将物理世界划分为多个轴对齐的包围盒(AABB,Axis-Aligned Bounding Boxes),并对这些包围盒进行管理和检测。
    它在常规场景中表现良好,特别是在动态场景中,能够快速剔除不可能碰撞的物体。但在极大规模的场景中,例如成百上千机器人与刚体的场景,可能不如 GPU 加速效果好。

  • SAP 粗略阶段算法
    SAP(Sweep and Prune)是一种常用的 Broadphase 碰撞检测算法,通过在各个坐标轴上排序和检查重叠来进行碰撞检测。
    SAP将所有物体的轴对齐包围盒(AABB)的起始和结束点(即最小和最大坐标)分别投影到某个坐标轴上。随后对这些投影点进行排序,通常按 X 轴进行排序。可以对每个轴进行排序以提高精度,但通常一个轴就足够了。然后依次检查排序后的投影点,找出所有重叠区间。
    它在物体移动不频繁或物体分布较为均匀的场景中表现良好。但在物体频繁移动的动态场景中,性能可能不如 MBP 或 GPU。

  • Omni PBR材质
    Omni PBR材质是一种基于物理的渲染(Physically-Based Rendering,PBR)材质,用于实现更逼真的图形渲染效果。PBR是一种图形渲染技术,旨在模拟光线如何与物体表面交互以产生更真实的视觉效果。这种技术考虑了光的物理特性,包括漫反射、镜面反射、折射等,以在虚拟环境中模拟材质的外观和光照交互。

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

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

相关文章

银行数仓项目实战(六)--基础层(完成存款的明细表---宽表)

文章目录 熟悉业务模型设计梳理映射关系加工宽表测试提交 FDM基础层:根据主题(需求),将源数据加工集成,形成业务明细表–宽表 熟悉业务 当我们的工作来到基础层,我们首先要做的是跟甲方沟通,要…

Harmony设计模式-单例模式

Harmony设计模式-单例模式 前言 软件设计模式([Design pattern](https://baike.baidu.com/item/Design pattern/10186718?fromModulelemma_inlink)),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经…

动态网页制作技术

动态网页制作技术是一种利用脚本语言、数据库和服务器端程序来生成动态内容的网页技术。以下是常用的动态网页制作技术: 1.PHP:PHP是一种广泛使用的服务器端脚本语言,可以嵌入到HTML中,用于生成动态网页内容。它可以与各种数据库进…

前端调试技巧

1、利用console打印日志 2、利用debugger关键字,浏览器f12调用到方法debugger处会断点住,可以利用浏览器调试工具查看变量 a.监视表达式可以添加想要观察的变量 b.调用堆栈可以观察方法调用链 3、xhr断点 请求地址包含v1.0/banner_theme/pagelist&a…

中科大和字节AI视频生成CamTrol杀疯了!运动可控,效果惊艳!

大家好,我是阿潘,今年堪称视频生成的爆发的一年,sora 2024年2月15日发布,让全世界都震惊了。openai 有一次成为了行业标杆。从生成的效果来看,比起以往抽象的生成结果,有了巨大的提升。 今天和大家分享中科…

DevExpress WPF中文教程:Grid - 如何将更改发布到数据库(设计时)?

DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

c++设计模式之一创建型模式

1、创建型模式(常见的设计模式) Factory 模式(工厂模式,被实例化的子类) 在面向对象系统设计中经常可以遇到以下的两类问题: 下面是第一类问题和代码示例:我们经常会抽象出一些类的公共接口以…

解决数据丢失问题的MacOS 数据恢复方法

每个人都经历过 Mac 硬盘或 USB 驱动器、数码相机、SD/存储卡等数据丢失的情况。我们中的一些人可能认为已删除或格式化的数据将永远丢失,因此就此作罢。对于 macOS 用户来说,当文件被删除时,垃圾箱已被清空,他们可能不知道如何恢…

pytorch lighting: Trying to resize storage that is not resizable

问题 在用pytorch lighting进行训练时碰到如下错误 即 Trying to resize storage that is not resizable 。 解决方案 在dataloader采样图片以及label时,保证每次采样的图片的分辨率不变。

Mistral AI 发布 Codestral-22B,精通 80+ 编程语言,22B 参数超越 70B Code Llama

前言 大型语言模型 (LLM) 在代码生成领域展现出巨大的潜力,但现有的模型在支持的编程语言数量、生成速度和代码质量方面仍存在局限性。法国 AI 独角兽 Mistral AI 近期发布了其首款代码生成模型 Codestral-22B,宣称在多项指标上超越了 GPT-4 和 Llama3&…

健康与生活助手:Kompas AI的高效应用

一、引言 在现代社会,随着生活节奏的加快和工作压力的增加,人们的健康问题日益凸显。健康管理已经成为每个人关注的重点。Kompas AI作为一款智能助手,通过其先进的人工智能技术,为用户提供全面的健康管理服务,帮助用户…

JavaSE 利用正则表达式进行本地和网络爬取数据(爬虫)

爬虫 正则表达式的作用 作用1:校验字符串是满足规则 作用2:在一段文本中查找满足需要的内容 本地爬虫和网络爬虫 Pattern类 表示正则表达式 Matter类 文本编译器,作用按照正则表达式的规则去读取字符串,从头开始读取&#xf…

【idea】gradle多模块构建项目内存溢出终止问题解决

背景 idea构建多模块项目,构建报错 Daemon is stopping immediately JVM garbage collector thrashing and after running out of JVM memory 解决 进到下图目录下 在文件管理中进入上面目录添加gradle.properties文件,内容如下 org.gradle.jvmargs-…

hive on spark 的架构和常见问题 - hive on spark 使用的是 yarn client 模式还是 yarn cluster 模式?

hive on spark 的架构和常见问题 - hive on spark 使用的是 yarn client 模式还是 yarn cluster 模式? 1. 回顾下 spark 的架构图和部署模式 来自官方的经典的 spark 架构图如下: 上述架构图,从进程的角度来讲,有四个角色/组件&…

【面试干货】抽象类与接口的区别

【面试干货】抽象类与接口的区别 💖The Begin💖点点关注,收藏不迷路💖 在Java编程中,抽象类和接口是两个非常重要的概念,它们都为代码的可扩展性和复用性提供了基础。但是,它们之间也有一些明显…

maxwell源码编译安装部署

目录 1、组件环境 2、maxwell安装前提 3、maxwell安装 3.1、maxwell下载 3.1.1、最新版本下载 ​编辑 3.1.2、历史版本下载 3.2、maxwell安装 3.3、maxwell配置 3.2.1、mysql开启binlog 3.3.2、maxwell元数据配置 3.3.3、maxwell配置任务 4、maxwell部署问题 4.1、utf…

django学习入门系列之第三点《CSS基础样式介绍1》

文章目录 高度和宽度块级标签|行内标签的转换字体和颜色往期回顾 高度和宽度 如果在块级标签内,单独定义高度的话,宽度会默认拉满 使用百分比的时候 如果是块级标签,宽度可以用百分比,高度用不了(使用起来没效果&…

Mac OS 安装frida

安装frida和frida-tools Python是基础,提前装好Python 终端执行 python3 -m pip install frida 如果出现error 按照提示处理 信息提示:brew install pipx 于是终端执行: brew install pipx 安装frida: pipx install frida…

VMware ESXi 8.0U2c macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版

VMware ESXi 8.0U2c macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U2 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电)、Huawei (华为)、xFusion (超聚…

前端vue实战项目结构、常用编辑器vs code 配置

5.Complete JSDoc Tags 6.Custom CSS and JS Loader 7.Debugger for Chrome 8.EditorConfig for VS Code 9.ESLint ☆☆☆ 10.gitignore 11.GitLens — Git supercharged 12.npm 13.PostCSS syntax !important 14.Vetur ☆ 15.vscode-icons 16.vue-i18n 17.Markdow…