首页 > 其他分享 >【论文阅读】RISE: 3D Perception Makes Real-World Robot Imitation Simple and Effective

【论文阅读】RISE: 3D Perception Makes Real-World Robot Imitation Simple and Effective

时间:2024-09-25 13:19:23浏览次数:11  
标签:Real Perception 动作 Effective rise 机器人 任务 policy 3d

Abstract

在模仿学习中,精确的机器人操作需要丰富的空间信息。基于图像的policies模型对象位置来自固定摄像头,对摄像头视图变化很敏感。利用3d点云的策略通常预测关键帧而不是连续动作,这在动态和联系人丰富的场景中造成了困难。为了有效地利用3d感知,我们提出了rise,这是一个用于现实世界模拟学习的端到端基线,它直接从单个视点云预测连续的动作。它使用稀疏3d编码器将点云压缩到tokens。在添加稀疏位置编码后,使用transformer对tokens进行特征化。最后,特征被扩散头解码为机器人动作。rise针对每个真实世界的任务进行了50次演示,远远超过了目前具有代表性的2d和3d policies,在准确性和效率方面都显示出显著的优势。实验还表明,与之前的基线相比,rise对环境变化更具通用性和鲁棒性。项目网站:rise-policy.github.io。

I. INTRODUCTION

端到端policy学习框架在机器人操作中发挥着越来越重要的作用。随着机器人技术的进步,研究人员认识到将感知、计划和执行整合到持续学习过程中的重要性。最近的研究在end to end的模仿学习方面取得了重大进展[1,4,9,10,59]。这些方法允许机器人直接从感知数据中学习,绕过了繁琐的手工特征工程或规划步骤的需要,这为解决复杂的操纵任务开辟了新的可能性,并推动了操纵领域的研究和进步[39]。

空间信息对于精确操作至关重要。例如,要倒一杯水,机器人需要了解杯子的位置和方向,以便仔细调整其运动,防止水溢出。基于图像的模仿学习倾向于从固定的相机视图中学习隐含的空间表示[1,4,9,15,47,59]。其中许多方法为每个视图使用不同的图像编码器,并增加摄像机的数量以提高稳定性和精度,从而增加了网络参数的数量和计算开销。此外,这些方法容易受到相机姿态变化的影响,给现实世界场景中的有效模型部署带来了重大挑战。

空间信息也可以使用3D点云来表示,这在一般抓取等机器人任务中显示出了显著的优势[8,46]。最近,基于点云的模仿学习在我们的社区中引起了越来越多的兴趣[2,11,12,14,19,43,52,55,57]。大多数基于3D的方法学习预测下一个关键帧,而不是连续动作,连续动作通常难以应对涉及频繁接触和突然环境变化的任务。同时,解决现实世界数据中关键帧的大规模注释需要额外的人工工作。他们难以预测连续动作的原因在于难以实现实时性能,这在很大程度上依赖于高效的3D特征编码,对于基于点云的方法来说仍然是一个挑战

在这项工作中,我们提出了一种端到端的模仿基线rise,这是一种利用3d感知使现实世界的机器人模仿简单有效的方法。rise直接将点云作为输入,并为不久的将来输出连续的动作轨迹。它采用稀疏卷积构建的shallow 3d编码器[5],有效地利用了传统卷积架构的优点,避免了在空3d空间上的冗余计算。这种设计使rise能够用单个相机获得精确的空间信息,从而降低了硬件积累的额外成本。然后,编码的点特征通过transformer映射到动作空间。考虑到三维点的无序特性,我们使用稀疏位置编码(一种坐标函数)来帮助transformer掌握三维空间中不同点tokens之间的相对关系。尽管点tokens不像语言或图像tokens那样分布在连续的位置,但我们仍然可以在具有可变对象位置的场景中观察到稳定的结果。通过稀疏位置编码,点特征可以很容易地用transformers建模,并自然地嵌入到多模态输入中。为了展示3d感知的好处,我们在这项工作中只考虑了具有点云输入的rise。最后,动作特征被扩散头解码为连续的轨迹[4](Diffusion Policy: Visuomotor Policy Learning via Action Diffusion)

我们在6个真实世界的任务中测试rise,包括拾取和放置、6自由度pouring、(用工具)推向目标和长距离任务。为了验证policy对对象位置的泛化能力,所有对象都随机排列在整个工作空间中。rise针对每项任务进行了50次演示训练,其表现明显优于其他代表性方法,并且在对象数量增加时保持稳定。我们还发现,rise对环境干扰更具鲁棒性,例如改变相机视角和增加桌子高度。这种泛化增强了现实世界部署的容错性。

II. RELATED WORK

A. Imitation Learning for Robotics

模仿学习是一种机器学习范式,机器人通过观察和模仿专家演示来学习操作。行为克隆(BC)[35]是模仿学习的最直接形式,旨在在给定演示的监督下,确定从观察到相应机器人动作的映射。尽管简单,BC在学习机器人操作方面显示出了巨大的潜力[1,4,21,28,43,47,59]。

2D Imitation Learning.

2d图像数据通常用于模仿学习。一种直观的方法是利用图像的预训练表示模型[24,25,26,31,38]将其转换为1d表示,并通过bc policy[56]或非参数最近邻[34]将这些转换后的观测值映射到动作空间。不幸的是,当前的预训练表示模型不够通用,无法处理不同的实验环境,在现实环境中难以获得令人满意的结果。因此,许多研究人员以端到端的方式学习这种映射[1,4,21,28,32,40,47,59,63],并在许多任务中表现出令人印象深刻的性能。具体而言,act[59]采用具有transformer骨干网[48]和resnet图像编码器[17]的cvae方案[44]来模拟人类数据的可变性,而扩散策略[4]直接利用扩散过程[18]来生成多模态动作分布。尽管如此,这些policies对相机位置很敏感,往往无法捕捉到环境中物体的3d空间信息。

3D Imitation Learning.

将3d信息纳入模仿学习框架的公式正在积极探索中。最直接的方法是应用投影将3d点云转换为多个2d图像视图,并将任务转移到基于多视图图像的policy学习[12,14],这需要仔细设计虚拟视点以确保性能。此外,由于稀疏和嘈杂的点云,[12]在现实世界的实验中无法捕捉到像记号笔这样的细长物体。[19,43,55]将点云处理为密集的体素网格,并应用3d卷积。由于高分辨率3d特征图需要昂贵的计算,这些方法必须在性能和成本之间进行权衡。[62]提出了一种以对象为中心的学习表示方法,该方法需要额外的分割过程。[11,52]通过将多视图图像特征投影到3d世界来避免密集的卷积,从而使点云具有特征。然而,这种特征融合技术很难准确地从不同的视图中捕获一致的3d表示。最近,一项并行工作dp3[54]也利用了机器人操纵policies中的3d感知,但我们在§ivf中的真实世界评估表明,它无法处理受其网络容量限制的各种表示的演示。dexcap[49]还提出了一种具有扩散头架构的pointnet[36],用于灵巧操作。

如前所述,目前大多数3D机器人模仿学习方法预测关键帧而不是连续动作,这使得很难注释并限制了它们的能力。此外,许多方法仅在RLBench[20]和CALVIN[29]等仿真环境中显示结果。在这项工作中,我们的目标是在更具挑战性的环境中评估我们的方法:在现实世界中具有噪声的单视图部分点云的连续动作控制。

B. 3D Perception

3D感知受到了计算机视觉和机器人界研究人员的广泛关注。大致可分为以下三类:

Projection-based.

这种方法最初将3D点云投影到不同平面上的多个图像上,然后采用传统的多视图图像感知技术。由于其简单性,它被广泛应用于形状识别[16]、物体检测[3,23]和机器人操作[12,14]。然而,投影可能会导致3D数据的几何信息丢失,对投影平面选择的敏感性可能会导致较差的性能[58]。

Point-based.

早期的研究人员直接利用3D卷积神经网络(CNN)来处理基于密集体积表示的3D点云数据[6,51,61]。尽管如此,3D数据的稀疏性使得vanilla方法效率低下且内存密集。为了解决这个问题,研究人员探索了使用八叉树来减少内存占用[41,50],利用稀疏卷积来最小化非活动区域中的不必要计算,以提高效率和有效性[5,13],并使用不同的网络架构直接聚合点集的特征[33,36,37,58]。

NeRF-based.

神经辐射场(NeRFs)[30]在高保真3D场景合成和场景表示提取方面表现出了令人印象深刻的性能。近年来,一些研究[7,42,53,55]将从预训练的2D基础模型中提取的特征作为NeRF训练中的额外监督信号,用于场景特征提取和蒸馏 extraction and distillation。然而,NeRF训练需要来自多个视图的图像数据,这对在现实世界环境中扩展造成了障碍。此外,它与我们的单视图设置不一致。

III. METHOD

给定点云作为时间t的观测值,RISE旨在预测下一步机器人动作,其中Ai包含抓取器的平移、旋转和宽度。由于点云和机器人动作之间存在较大的域差距,直接学习近似值具有挑战性。为了对该过程进行建模,RISE被分解为三个函数:稀疏3D编码器、transformer  和动作解码器,其中分别表示点云和动作的特征。 

A. Modeling Point Clouds using Sparse 3D Encoder

点云数据和图像之间最显著的区别是点云稀疏且无组织,这使得CNN不适合应用于点。对于不同尺度的输入,应考虑模型的计算效率和灵活性。我们采用基于稀疏卷积的3D编码器[5]。它保留了大部分标准卷积,而只计算预定义坐标上的输出。这种算子节省了计算量,并继承了传统卷积的核心优势。

稀疏3D编码器h_E采用浅ResNet架构[17]。它由一个初始卷积层、四个残差块和一个最终卷积层组成,每两个分量之间有五个2×稀疏池化层。层数可以自由增加,而评估结果表明,浅编码器足以满足我们的实验需求。

通过h_E,体素化点云被高效地编码为稀疏点特征,避免了在巨大的空白空间上进行冗余计算。然后将作为稀疏tokens馈送到transformer-ht中。对于在1×1×1m^3空间中裁剪的仅包含60∼80 tokens。尽管token的数量小于act[59]中的数量(每张图像300个),但§iv-f中的实验表明,基于点云的act仍然优于原始实现。

B. Transformer with Sparse Point Tokens

我们采用transformer[48]来实现点特征到动作特征的映射。虽然图像tokens的位置编码是密集和自然的,但稀疏点tokens不能以相同的方式进行处理。我们转而为点tokens引入稀疏位置编码。设(x,y,z)为点token P的坐标,其中P的位置定义为

其中c和v是固定偏移量,[·]代表向量级联 concatenation。沿每个轴的编码维度。P的位置编码由计算得出,其中

在稀疏位置编码的帮助下,我们有效地捕获了无序点之间复杂的3d空间关系,这使得3d特征能够无缝嵌入到传统的transformers中。transformer-h_T采用编码器-解码器架构,将点特征作为输入tokens,而无需其他本体感觉信号。在transformer解码步骤中,我们使用一个readout token来查询动作特征

C. Diffusion as Action Decoder

动作解码器h_D通过扩散实现为去噪过程[4,18,22]。在条件下,h_D迭代地将高斯噪声表示为动作。步骤k的去噪过程为:

其中εθ是一个预测噪声的网络,参数θ、α、γ和σ是噪声调度中与k相关的超参数。目标函数是[18]中的简化目标。我们使用DDIM调度器[45]来加速现实世界实验中的推理速度。

回归头也因其简单性而经常使用[11,14,21,59],而扩散头在处理具有多个目标的场景方面表现出色。此外,扩散会对同一目标产生不同的轨迹,而不是平均学习轨迹[4]。

对于我们实验中的所有任务,RISE在相机坐标系中采用统一的动作表示,该坐标系由平移、旋转和夹具宽度组成。考虑到连续性,我们选择绝对位置进行平移,6D表示[60]进行旋转

IV. EXPERIMENTS

A. Setup

在实验中,我们使用配备Dahuan ag-95夹具的flexiv rizon机器人手臂与物体进行交互。安装了两个intel realsense d435 rgbd摄像头3,用于场景感知。一个全局摄像头位于机器人前方,而另一个手持摄像头安装在手臂的末端执行器上。对于3d感知,仅使用全局相机来生成嘈杂的单视图局部点云;而对于基于图像的policies,这两个相机都用于更好地理解空间几何。所有设备都连接到具有intel core i9-10900k cpu和nvidia rtx 3090 gpu的工作站,用于数据收集和评估。

我们为实验精心设计了4种类型的6个任务,如图3所示:拾取和放置任务(收集杯子和收集钢笔)、6-dof任务(倒球)、推进目标任务(推块和推球)和长期任务(堆叠块)。数据收集设置和过程与[9]相同,即使用触觉设备进行末端执行器远程操作。除非特别说明,否则我们为每项任务收集了50个专家演示作为policy的训练数据,并对每个policy进行了20次连续试验,以评估其性能。在评估过程中,任务中的对象在大约50cm×70cm的机器人工作空间内随机初始化。

B. Pick-and-Place Tasks

作为机器人操作的cornerstone,拾取和放置任务强调对物体的精确操作以及机器人policy在工作空间内的有效推广。如图3所示,collect cups任务旨在评估policy在预测动作平移部分的性能,而collect pens任务则用于进一步评估 policy 预测动作计划器旋转部分的能力。我们采用两种具有代表性的基于图像的policies作为我们的基线:act[59]和Diffusion Policy[4]。我们还在实验中评估了基于关键帧的3d policy act3d[11],即rlbench上的当前state-of-the-art policy[20]。对于act3d,我们使用一个简单的动作规划器来执行预测的按键,防止与工作区中的其他对象发生碰撞。对于工作空间中有1、2、3、4和5个对象的五个场景中的每一个,我们收集了10个演示,总共有50个演示用于policy训练。在评估过程中,我们对五种情况分别进行了10次试验,统计了放入大金属杯中的杯子数量或放入碗中的笔数量,并计算了完成率。对于每个对象,我们为基于关键帧的policies设定了20个关键帧的运行时间限制,为连续控制policies规定了300步的运行时间

图3:实验中任务的定义。在评估过程中,每个任务都在机器人工作空间内随机初始化。为了清楚起见,图中仅显示了每个任务的3到5个评估设置。

评估结果如图4所示。在收集杯子任务中,当杯子数量少于3个时,RISE的完成率超过90%。即使在4杯或5杯的复杂环境中,RISE也能保持超过65%的完成率,显示出超越所有基线的能力。在Collect Pens任务中也观察到了类似的趋势:RISE始终优于所有基线,证明了它不仅能够预测翻译部分,而且能够准确预测planner rotation。我们还发现,Act3D的性能与基于图像的基线相当。此外,考虑到Act3D需要专门设计的运动规划器来执行更复杂的动作,并且不能对环境的突然变化提供即时响应,因此我们在随后的实验中只使用ACT和扩散策略作为基线。 

C. 6-DoF Tasks

6-dof pour balls任务旨在测试机器人policies预测具有复杂空间旋转的动作的能力,而不是拾取和放置任务中的简单规划器旋转。如图3所示,机器人手臂需要经历复杂的空间旋转才能完成任务,有时会接近其运动学极限。在评估过程中,杯子中初始化了10个球。除了policy的动作成功率外,还记录了倒入杯中的球的数量,以计算完成率。此任务的运行时间限制设置为1200步。

实验结果如表一所示。从动作成功率来看,与基于图像的policies相比,rise可以更有效地学习具有复杂空间旋转的动作。此外,其 pouring 动作的执行在 pouring 位置方面更加精确,从而提高了任务完成率。这也突显了3d感知的有效性,它可以捕捉到物体之间更准确的空间关系。

D. Push-to-Goal Tasks

机器人policies应能对环境动态产生即时反馈,使其能够适应环境中的物体运动以完成任务。为此,我们设计了两个推进目标的任务——推块和推球,如图3所示。此外,推球任务要求机器人使用工具(记号笔)完成任务,从而测试policy使用工具的能力。在评估过程中,我们计算从目标中心到目标区域的距离d。如果目标中心在目标区域内(d=0),则视为成功,如表ii(左)所示。然后,我们计算任务成功率和平均距离作为指标。此任务的运行时间限制设置为1200步。

评价结果见表二(右)。在push block任务中,rise在成功率方面略高于扩散策略,同时将块推向目标区域。然而,在push ball任务中,rise的表现明显优于扩散策略,证明了其对物体位置变化的有效3d感知以及相应地快速调整policy动作输出的能力。我们还观察到,act在这两项任务中都很困难,经常导致机器人与物体发生硬接触并触发机械紧急停止,这可能是由于其在场景感知方面的不精确。

E. Long-Horizon Tasks

长视野任务在机器人操作中至关重要,因为它们强调了在扩展视野内动作中误差累积的影响,为policy的鲁棒性和适应性提供了见解。因此,我们设计了长期任务堆栈块来评估policy在这方面的能力,因为随着堆栈的增长,块更有可能倒塌。我们强调,这项任务比以前的拾取和放置任务更具挑战性,因为(a)一些块仅略小于夹具宽度,需要精确控制抓取;(b) policy需要识别块的大小并选择合适的堆叠顺序,以确保最终堆叠的稳定性;以及(c)随着堆栈的增长,policy需要动态调整块的放置高度,以确保它们不会与现有块碰撞,并且可以平滑地放置在它们的顶部。

对于工作空间中有2、3和4个块的三种情况,我们分别收集了10、20和20个演示,总共50个policy培训演示。在评估过程中,对每种情况进行10次试验,并报告成功堆叠块的平均数量,以衡量policy的性能。我们为每种情况分别将任务的运行时间限制设置为600、1200和1800步。

实验结果如表三所示。在只有两个块的简单场景中,所有policies都产生了类似的结果;然而,随着区块数量的增加,rise逐渐大大超过了基线,展示了其很好地适应长期任务和控制累积误差的能力。此外,我们观察到,与rise相比,基线显示出上述问题(b)和(c)的更高频率,这意味着在3d感知的推动下,rise对场景有了更深入的理解,对行动的预测也更精确。

F. Effectiveness of 3D Perception

在本节中,我们将探讨3d感知如何提高机器人操纵policies在5个杯子的收集杯子任务中的性能。我们用rise中使用的稀疏3d编码器替换了基于图像的policies act和扩散策略的图像编码器。实验结果如表四所示。我们观察到,即使在较少的相机视图下应用3d感知后,act和扩散策略的性能也有显著提高,超过了3d policy act3d,这反映了我们的3d感知模块在操纵policies方面的有效性。

我们还在此实验环境中评估了最近提出的dp3[54]。然而,dp3似乎很难从我们的演示数据中学习到有意义的行动。在与作者沟通后,一个潜在的原因是他们在最初的实验中使用了realsense l515,而我们在实验中采用了realsense d435。d435的点云噪声更大,使网络学习更具挑战性。通过使用稀疏卷积,rise对点云中的噪声更具鲁棒性。此外,在深入研究他们的真实机器人实验后,我们发现他们的演示数据中使用了轴向动作,而不是自然动作,如表五(左)所示。因此,我们收集了50个关于收集杯子任务的演示,其中1个杯子分别使用轴向和自然动作表示。然后,这些演示用于dp3 policy训练。在仔细调整了层位和颜色利用率等超参数后,我们在表v中报告了评估结果,最佳完成率为40%。我们怀疑3d 13cml3的网络容量有限。高度l1。碗l2。灯l4。camviewtrain testtesttrainmethod完成率(%)dp3的原始干扰碗灯高度camview编码器阻止了它对现实世界人类遥操作演示中存在的各种状态动作对进行建模,导致它只能在轴向动作表示下处理一组较小的状态动作对。相反,rise可以处理具有各种动作表示的真实世界演示,并保持令人满意的性能。最后,与dp3论文中的评估设置相比,我们允许将对象放置在整个工作空间中的任何位置。这导致对象位置的变化更大,使任务更具挑战性。

G. Generalization Test

我们评估了不同方法在不同环境干扰水平下对1支笔收集笔任务的泛化能力,如下所示。

L1.概括为形状相似但颜色不同的物体。在这个任务中,我们用粉红色的碗替换原来的绿色碗,在表VI.

L2中表示为碗。概括到环境中的不同光照条件,在表VI.

L3中表示为“光”。推广到环境中的新工作区配置。在这个任务中,我们将工作空间提升13厘米,形成一个新的工作空间配置,在表VI.

L4中表示为高度。推广到新的相机视点,在表VI中表示为CamView。

环境干扰和评估结果的图形说明如表六所示。我们可以观察到,基于图像的policies可以实现相当不错的l1级和一些l2级的泛化,但它们无法达到涉及空间变换的l3级和l4级的泛化。act3d作为一个3d policy,在l3级干扰下表现出良好的泛化能力;然而,它在l4级泛化测试中几乎完全失败。rise在所有级别的测试中都表现出很强的泛化能力,即使在涉及相机视图变化的最具挑战性的l4级别测试中也是如此。

V. CONCLUSION

在本文中,我们提出了rise,这是一种高效的端到端policy,利用3d感知进行真实世界的机器人操纵。rise使用稀疏3d编码器压缩点云,然后进行稀疏位置编码和transformer以获得动作特征。这些特征被扩散头解码为连续的动作。rise在多个任务中明显优于目前具有代表性的2d和3d policies,在准确性和效率方面都显示出巨大的优势。我们的消融验证了3d感知的有效性和rise在不同环境干扰水平下的泛化能力。我们希望我们的基线能够激发将3d感知整合到现实世界的policy学习中。

标签:Real,Perception,动作,Effective,rise,机器人,任务,policy,3d
From: https://blog.csdn.net/qq_33673253/article/details/142470407

相关文章

  • CerealCode
    GYM105310C题目描述有\(N\)个煎饼店围成一圈,第\(i\)个店中有\(p_i\)个煎饼。接下来两只红熊猫会进行以下操作:两只熊猫分别选择一个不同的店\(a,b\)。第一只先选。接着第一个熊猫选择一个不为\(b\)的店,从\(a\)开始沿着一条不经过\(b\)的路线走到该店,并把路径......
  • Real Estate Is All Around
    网络流的【世界线】模型:在每个时间点,新建三个点分别表示某个助手在该时间点的状态,向下一时间点的对应点连一条流量无穷的边以刻画时间流逝难以求出出售房产的顺序,既然如此,我们就要求当前房产只有在能被出售的前提下才给到某个助手但是我们必须要把某个房产给到一个助手呀?没关系......
  • 音视频生态下Unity3D和虚幻引擎(Unreal Engine)的区别
    技术背景好多开发者跟我们做技术交流的时候,会问我们,为什么有Unity3D的RTMP|RTSP播放模块,还有RTMP推送和轻量级RTSP服务模块,为什么不去支持虚幻引擎?二者区别在哪里?本文就Unity3D和虚幻引擎之间的差异,做个大概的分析,实际上,Unity3D和虚幻引擎(UnrealEngine)在游戏开发及其他相关领域都......
  • C和指针:动态内存分配(malloc,calloc,realloc,free)
     动态内存分配⭐关联知识点:linux动态内存分配为什么使用动态内存分配声明数组必须用一个编译时常量指定数组的长度。但是,数组的长度常常在运行时才知道,由于它所需要的内存空间取决于输入数据。malloc和freemalloc和free,分别用于执行动态内存分配和释放。这些函数维护一个可用......
  • 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
    在EffectiveJava中的第36条中建议用EnumSet替代位字段,在第37条中建议用EnumMap替换序数索引,为什么?EnumSet在EffectiveJava中的第36条中建议用EnumSet替代位字段36、用EnumSet替代位字段如果枚举类型的元素主要在Set中使用,传统上使用int枚举模式,通过不同的2的平......
  • 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
    在EffectiveJava中的第36条中建议用EnumSet替代位字段,在第37条中建议用EnumMap替换序数索引,为什么?EnumSet在EffectiveJava中的第36条中建议用EnumSet替代位字段36、用EnumSet替代位字段如果枚举类型的元素主要在Set中使用,传统上使用int枚举模式,通过不同的......
  • 为什么在EffectiveJava中建议用EnumSet替代位字段,以及使用EnumMap替换序数索引
    在EffectiveJava中的第36条中建议用EnumSet替代位字段,在第37条中建议用EnumMap替换序数索引,为什么?EnumSet在EffectiveJava中的第36条中建议用EnumSet替代位字段36、用EnumSet替代位字段如果枚举类型的元素主要在Set中使用,传统上使用int枚举模式,通过不同的2的......
  • Unreal 配置插件依赖另一个插件
    例如:插件A依赖插件B1、把两个插件都放到项目Plugins文件夹下2、修改插件A的A.uplugin文件,添加如下片段"Plugins":[{"Name":"B","Enabled":true},...]3、修改插件A跟插件B的加载时间设置打开A.uplugin,设置加载时间为Default"Mo......
  • 【Effective Java】多构造器参数使用构建器 (快速上手)
    Java系列文章目录补充内容Windows通过SSH连接Linux第一章Linux基本命令的学习与Linux历史文章目录Java系列文章目录一、前言二、学习内容:2.1为什么引入构建器2.2建造者模式2.2.1书中的例子2.2.2例子加上有效性检查三、问题描述四、解决方案:4.1类层次结构4.2......
  • SG-SLAM: A Real-Time RGB-D Visual SLAMToward Dynamic Scenes With Semantic andGeo
    目录一、引言二、相关工作A.动态场景中的SLAMB.语义建图三、系统概述A.系统框架B.目标检测C.极线约束D.动态特征剔除策略E.动态特征剔除策略四、实验结果A.基于TUMRGB-D数据集的性能评估B.BonnRGB-D数据集的性能评估 C.动态特征剔除策略的有效性D.时间分析......