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

news2024/11/28 8:29:19

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 Inquiries

If 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.coloradmin.cn/o/1844876.html

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

相关文章

【b站-湖科大教书匠】1 计算机网络概述-计算机网络微课堂

课程地址:【计算机网络微课堂(有字幕无背景音乐版)】 https://www.bilibili.com/video/BV1c4411d7jb/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1 概述 1.1 计算机网络在信息时代的作用 1.2 因特网概述…

PPT可以转换成Word吗?归纳了三种转换方式

PPT可以转换成Word吗?在当今快节奏的工作和学习环境中,不同格式文件之间的转换变得日益重要。PPT作为演示文稿制作的首选工具,广泛应用于会议演讲、教育培训等多个场景,而Word则是文档编辑与编排的基石。为了便于进一步编辑、分享…

ssh远程连接vps

打开ssh服务 sudo vi /etc/ssh/sshd_config查看是否好了 systemctl status sshd生成ssh私钥 生成在C:\Users\baozhongqi\.ssh 然后可以用自己密码登录或者用私钥登录 密码登录 ssh私钥登录 我使用的是tabby tabby下载 setup是Windows使用的版本 如果这样子不能ssh链接只能…

Redis通用命令详解

文章目录 一、Redis概述1.1 KEYS:查看符合模板的所有 key1.2 DEL:删除一个指定的 key1.3 EXISTS:判断 key 是否存在1.4 EXPIRE:给一个 key 设置有效期,有效期到期时该 key 会被自动删除1.5 TTL:查看一个 ke…

基于FPGA的Cordic向量模式原理及设计

目录 一、向量模式 1、向量模式原理 1.1 1.2 2、向量模式的MATLAB仿真 3、向量模式的FPGA实现 3.1 预处理 3.2 迭代 3.3 结果计算 一、向量模式 1、向量模式原理 已知直角坐标下一点(x,y),如何求该点在极坐标系的坐标&a…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] API集群访问频次统计(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 &#x1f…

多路h265监控录放开发-(4)完成摄像机管理的数据的增删改模型层代码(单例模式)

xcamera_config.h #pragma once #include <vector> #include <mutex> struct XCameraData {char name[1024] { 0 };char url[4096] { 0 }; //摄像机主码流char sub_url[4096] { 0 }; //摄像机辅码流char save_path[4096] { 0 }; //视频录制存放目…

RX8025/INS5T8025实时时钟-国产兼容RS4TC8025

该模块是一个符合I2C总线接口的实时时钟&#xff0c;包括一个32.768 kHz的DTCXO。 除了提供日历&#xff08;年、月、日、日、时、分、秒&#xff09;功能和时钟计数器功能外&#xff0c;该模块还提供了大量其他功能&#xff0c;包括报警功能、唤醒定时器功能、时间更新中断功能…

基于EKF算法估计电动汽车蓄电池的SOC

电动汽车&#xff08;EV&#xff09;作为未来汽车的一大发展方向&#xff0c;其动力源——动力锂电池组的荷电状态&#xff08;SOC&#xff09;估计显得尤为重要。SOC直接反应了电池组剩余容量的多少&#xff0c;是预测EV行驶里程、使用和维护电池组的重要依据。 然而&#xf…

读AI新生:破解人机共存密码笔记07概念和理论

1. 全球层面的智能 1.1. 仅仅为了阅读完当前世界上所有的出版物&#xff08;更不用说过去所有的书面材料&#xff09;就需要20万名全职人员&#xff0c;收听当前的广播则还需要6万名全职人员 1.1.1. 监听世界上所有的电话也是可能的&#xff08;这项工作需要大约2000万人&…

深度学习之计算机视觉

神经网络简介 全连接层和卷积层的根本区别在于权重在中间层中彼此连接的方式。图5.1描述了全连接层或线性层是如何工作的。 在计算机视觉中使用线性层或全连接层的最大挑战之一是它们丢失了所有空间信息&#xff0c;并且就全连接层使用的权重数量而言复杂度太高。例如&#xf…

电商爬虫API的定制开发:满足个性化需求的解决方案

一、引言 随着电子商务的蓬勃发展&#xff0c;电商数据成为了企业决策的重要依据。然而&#xff0c;电商数据的获取并非易事&#xff0c;特别是对于拥有个性化需求的企业来说&#xff0c;更是面临诸多挑战。为了满足这些个性化需求&#xff0c;电商爬虫API的定制开发成为了解决…

Spring Boot集成tensorflow实现图片检测服务

1.什么是tensorflow&#xff1f; TensorFlow名字的由来就是张量(Tensor)在计算图(Computational Graph)里的流动(Flow)&#xff0c;如图。它的基础就是前面介绍的基于计算图的自动微分&#xff0c;除了自动帮你求梯度之外&#xff0c;它也提供了各种常见的操作(op&#xff0c;…

使用 jQuery 选择器获取页面元素,然后利用 jQuery 对象的 css() 方法设置其 display 样式属性,从而实现显示和隐藏效果。

在页面中显示电影排行榜 当单击“&#xff08;收起&#xff09;”链接时&#xff0c;排行榜中后三项的电影名称隐藏而且链接的文本更改为“&#xff08;展开&#xff09; ” 当单击“&#xff08;展开&#xff09;”的链接时&#xff0c;后三项的电影名称重新显示且链接的文本…

基于微信共享充电桩小程序毕业设计作品成品(3)开发技术文档_充电桩小程序前端技术栈

后台管理系统文件 所在路径&#xff1a;后台源码ht目录是后台 绿色显示的是系统框架&#xff0c;不要动 位置程序名说明源码根目录login.php后台登录页面源码根目录check_u_login.php后台登录处理程序ht 后台根目录index.php后台首页left.php后台左侧菜单u_logout.php退出登…

2024广东省职业技能大赛云计算赛项实战——OpenStack搭建

OpenStack搭建 前言 搭建采用双节点安装&#xff0c;即controller控制节点和compute计算节点。 CentOS7 系统选择 2009 版本&#xff1a;CentOS-7-x86_64-DVD-2009.iso 可从阿里镜像站下载&#xff1a;https://mirrors.aliyun.com/centos/7/isos/x86_64/ OpenStack使用竞赛培…

【NCBI】SRA toolkit安装及使用-WindowsLinux版本

文章目录 Windows版本下载安装- 设置环境变量使用下载SRA Linux版本下载安装使用 由于市面上的文章介绍SRA toolkit基本上都是基于Linux&#xff0c;而在windows下运行SRA toolkit基本上可以达到相同的效果且更为方便&#xff0c;故本文将分别阐明在Windows和Linux环境下SRA to…

【DAO】DAOS在后傲腾时代的发展策略

视频&#xff1a;DAOS在后傲腾时代的发展策略_哔哩哔哩_bilibili 代替方案 WAL &#xff08;write ahead log&#xff09; 在架构上用DRAM 代替PMEM&#xff0c;如图 变化是&#xff1a; 傲腾方案&#xff1a; PMEM 数据写到内存就完成"落盘"&#xff0c;是一个原…

10年265倍!动态展示全球第一股英伟达10年股价走势

英伟达在过去十年的股价走势展示了其在市场上的强劲表现和显著增长。自1999年上市以来&#xff0c;英伟达的股价经历了多次显著的涨幅&#xff0c;并在2024年达到了历史新高。 从2023年6月的数据来看&#xff0c;英伟达的股价为386.54美元/股&#xff0c;市值为9548亿美元。然…

探寻Scala的魅力:大数据开发语言的入门指南

大数据开发语言Scala入门 一、引言1.1 概念介绍1.2 Scala作为大数据开发语言的优势和应用场景1.2.1 强大的函数式编程支持1.2.2 可与Java无缝集成1.2.3 高性能和可扩展性1.2.4 大数据生态系统的支持 二、Scala基础知识2.1. Scala简介&#xff1a;2.1.1 Scala的起源和背景2.1.2 …